Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет - 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.

Объяснение кода листинга программы

  1. Создается программа derevo.
  2. Используются единицы измерения graphAbc.
  3. Определяются функции cx и cy, которые выполняют вычисления длины и угла соответственно.
  4. Определяются переменные i, x, y, t, alf, len, dx, dy, k, a, l.
  5. Определяется процедура tree, которая является основной процедурой программы.
  6. В процедуре tree выполняется итерация, состоящая из двух частей:
    • Если значение переменной i больше значения переменной t, то выход из цикла.
    • Увеличение значения переменной i.
    • Вызов процедуры branch с аргументом 1.
    • Вызов процедуры branch с аргументом 2.
    • Вызов процедуры branch с аргументом 3.
    • Уменьшение значения переменной i.
    • Обновление значений переменных x, y, len, alf.
    • Выполнение линии с координатами x, y.
    • Повторение шагов 6-8 для каждого поддерева.
  7. В процедуре tree устанавливается цвет шрифта на зеленый.
  8. Устанавливаются координаты x и y для начала рисования.
  9. Вызывается процедура tree с аргументом 7.
  10. Устанавливаются координаты x и y для окончания рисования.
  11. Устанавливается цвет шрифта на зеленый.
  12. Вызывается процедура tree с аргументом 170.
  13. Устанавливаются координаты x и y для начала рисования.
  14. Вызывается процедура tree с аргументом 370.
  15. Устанавливаются координаты x и y для окончания рисования.

Оцени полезность:

12   голосов , оценка 4 из 5