Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет - Pascal ABC
Формулировка задачи:
На турбо Паскаль красивая графика не хочет переходить в ПаскальАВС.Нет
нет функции linerel, как быть?
Решение задачи: «Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет»
textual
Листинг программы
program derevo; uses graphAbc; function cx(length, angle:real):integer; begin cx:=round(length*cos(angle)); end; function cy(length, angle:real):integer; begin cy:=round(length*sin(angle)); end; var i,x,y:integer; t:integer; { kolichestvo vlogennyh procedur } alf:real; { ugol megdu stvolom i koordinatoi x } len:real; { dlina stvola } dx,dy:integer; k,a,l:array[1..3] of real; procedure tree; forward; procedure branch(p:integer); var x1,y1:integer; begin dx:=cx(len*k[p],alf); dy:=cy(len*k[p],alf); x1:=x+round(dx); y1:=y+round(dy); lineto(x1,y1); len:=len*l[p]; alf:=alf+a[p]; x:=x1; y:=y1; tree; len:=len/l[p]; alf:=alf-a[p]; dx:=cx(len*k[p],alf); dy:=cy(len*k[p],alf); x1:=x-round(dx); y1:=y-round(dy); lineto(x,y); x:=x1; y:=y1; end; procedure tree; begin if i>t then exit; inc(i); branch(1); branch(2); branch(3); dec(i); end; begin t:=7; alf:=-pi/2; len:=170; k[1]:=1; a[1]:=pi/16; l[1]:=1/2; k[2]:=1/2; a[2]:=-pi/6; l[2]:=1/2; k[3]:=1/2; a[3]:=pi/6; l[3]:=1/2; clearwindow(clAqua);//просто АВС // clearwindow(clAquamarine);//АВС.net setpencolor(clGreen); x:=320; y:=400; moveto(x,y); i:=1; tree; x:=170; y:=370; moveto(x,y); i:=1; tree; x:=370; y:=370; moveto(x,y); i:=1; tree; end.
Объяснение кода листинга программы
- Создается программа
derevo
. - Используются единицы измерения
graphAbc
. - Определяются функции
cx
иcy
, которые выполняют вычисления длины и угла соответственно. - Определяются переменные
i
,x
,y
,t
,alf
,len
,dx
,dy
,k
,a
,l
. - Определяется процедура
tree
, которая является основной процедурой программы. - В процедуре
tree
выполняется итерация, состоящая из двух частей:- Если значение переменной
i
больше значения переменнойt
, то выход из цикла. - Увеличение значения переменной
i
. - Вызов процедуры
branch
с аргументом1
. - Вызов процедуры
branch
с аргументом2
. - Вызов процедуры
branch
с аргументом3
. - Уменьшение значения переменной
i
. - Обновление значений переменных
x
,y
,len
,alf
. - Выполнение линии с координатами
x
,y
. - Повторение шагов 6-8 для каждого поддерева.
- Если значение переменной
- В процедуре
tree
устанавливается цвет шрифта на зеленый. - Устанавливаются координаты
x
иy
для начала рисования. - Вызывается процедура
tree
с аргументом7
. - Устанавливаются координаты
x
иy
для окончания рисования. - Устанавливается цвет шрифта на зеленый.
- Вызывается процедура
tree
с аргументом170
. - Устанавливаются координаты
x
иy
для начала рисования. - Вызывается процедура
tree
с аргументом370
. - Устанавливаются координаты
x
иy
для окончания рисования.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д