Тема урока: ЦИКЛИЧЕСКИЙ АЛГОРИТМ
Цель урока: — Научить писать программу моделирования движения.
План урока: 1. Постановка задачи
Программа с пояснениями
Набор программ на компьютере
Ход урока:
Задача: Написать программу движение окружности и изменения её движения при
столкновении с границами окна.
Пояснение | |
Uses GraphABC, Crt; |
|
Var x,y,dy,dx: integer; | координаты окружности и приращения |
BEGIN |
|
Rectangle(0,0,640,400); | рамка на экране |
x:=300; y:=200; | начальные координаты центра окружности |
dx:=10; | величина перемещения по x |
dy:=10; | величина перемещения по y |
Repeat | Цикл пост. условие |
SetpenColor(clblack); | цвет окружности черный |
SetBrushColor(clblack); | цвет круга черный |
Circle(x,y,10); | рисование окружности |
if y>=370 then dy:=-10; | нижний край |
if y<=25 then dy:=10; | верхний край |
if x>=620 then dx:=-10; | правый край |
if x<=25 then dx:=10; | левый край |
Delay(100); | пауза |
SetpenColor(clwhite); | цвет окружности белый |
SetBrushColor(clwhite); | цвет круга белый |
Circle(x,y,10); | рисование окружности |
x:=x+dx; y:=y+dy; | расчет новых координат |
Until KeyPressed; | До тех пор пока не будет нажата клавиша |
END. |
|
Задача: Написать программу движения автомобиля с подсветкой дороги фарами.
| |
Var u: integer; | переменная цикла |
BEGIN |
|
floodfill(1,1,clnavy); | темно-синий цвет фона |
setbrushcolor(clsilver); | серебристый цвет |
fillrect(1,305,640,310); | рисование дороги |
u:= 1; | начальное значение |
While u<=640 do | цикл до конечного значения |
begin setbrushcolor(clmaroon); | кирпичный цвет |
rectangle(20+u,230,80+u,270); | кабина машины |
setbrushcolor(clbrown); | коричневый цвет |
fillrect(10+u,255,120+u,285); | кузов машины |
setbrushcolor(cldarkgray); | темно-серый цвет |
circle(30+u,290,15); | колесо заднее (левое) |
circle(90+u,290,15); | колесо переднее (правое) |
setpencolor(clyellow); | желтый цвет |
line(121 + u,260,160 + u,300); | свет фар |
line( 160 + u,300,200 + u,300); | |
line(200 + u,300,121 + u,260); | |
floodfill(180 + u,299,clyellow); | заливка области освещения фарой |
delay(100); | паузы в движении машины |
setbrushcolor(clnavy); | темно-синий цвет |
fillrect(10+u,200,210 + u,305); | очистка места расположения машины |
u:=u+3; end; | изменение шага движения |
END. |
|
Задача: Написать программу управления движением шарика-круга.
| |
Var x,y : Integer; |
|
c: CHAR; | символьная переменная |
BEGIN |
|
x:=300; y:=200; | координаты круга |
Setbrushcolor(clblack);Circle(x,y,20); | черный шарик-круг |
Repeat |
|
c:=readkey; | чтение значения с клавиатуры |
Case c of | выбор |
#72: y:=y-1; | движение вверх |
#80: y:=y+1; | движение вниз |
#75: x:=x+1; | движение вправо |
#77: x:=x-1; | движение влево |
end; |
|
Setpencolor(clwhite); | белый цвет окружности |
Setbrushcolor(clwhite); Circle(x,y,20); | белый цвет круга |
Setbrushcolor(clblack); Circle(x,y,20); | черный цвет круга |
Until c=#27; | Нажатие клавиши ESC |
END. |
|
Задача: Написать программу часов
| |
Const pi=3.14; |
|
Var n,y,x,a,b,i: integer; |
|
BEGIN |
|
For n:=1 To 12 Do |
|
begin a:=trunc(13-6*cos(n/6*pi)*2); |
|
b:=trunc(38+18*sin(n/6*pi)*1.7); |
|
gotoxy(b,a); write(n); end; |
|
repeat |
|
i:=-8; |
|
repeat |
|
SetpenColor(clNavy); |
|
line( 300,200, 300+round(180*cos(i/5)), 200+round(150*sin(i/5))); | |
delay(300); |
|
SetpenColor(clwhite); |
|
line( 300,200, 300+round(180*cos(i/5)), 200+round(150*sin(i/5))); | |
SetpenColor(clNavy); SetBrushColor(clred); |
|
Circle(300+round(180*cos(i/5)), 200+round(150*sin(i/5)), 5); |
|
SetbrushColor(clwhite); | |
i:=i+1; |
|
until i>22; |
|
until keypressed; |
|
END. |
|