Нарисуем объекты и графики функций в Pascal ABC, используя циклы.
1. Нарисуем случайным цветом 30 окружностей случайного радиуса в пределах от 5 до 50, центры которых лежат в произвольных точках экрана. Раскрасим эти окружности цветом границы.
Будем использовать цикл For, поскольку известно число итераций.
В каждой итерации случайно определяется цвет, радиус и координаты центра каждой окружности.
Program p1;
uses graphABC; { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin {начало основного блока операторов программы}
Randomize; {инициализируем генератор случайных чисел}
{цикл счета 30 окружностей}
for n:=1 to 30 do
begin
c:=clRandom;
SetBrushColor(c); {установка случайного цвета}
SetPenColor(c);
x0:=random(641); {случайная координата х из диапазона 0-640}
y0:=random(321); {случайная координата у из диапазона 0-320}
R:=5+random(46); {случайная величина радиуса от 5 до 50}
Circle(x0,y0,R); {вывод окружности на экран}
end;
End.
2. Изменим программу так, чтобы центры окружностей лежали на одной горизонтальной прямой (у = 200).
program p2;
uses graphABC; { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c : Integer;
Begin {начало основного блока операторов программы}
Randomize; {инициализируем генератор случайных чисел}
y0:=200; { координата у }
{цикл счета 30 окружностей}
for n:=1 to 30 do
begin
c:=clRandom; {выбор случайного цвета для кисти и пера}
SetBrushColor(c); {установка случайного цвета}
SetPenColor(c);
x0:=random(641); {случайная координата х из диапазона 0-640}
R:=5+random(46); {случайная величина радиуса от 5 до 50}
Circle(x0,y0,R); {вывод окружности на экран}
end;
End.
3. Изменим программу так, чтобы центры окружностей лежали на одной вертикальной прямой (х = 300). Раскрасить эти окружности цветом границы.
Program p3;
uses graphABC; { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin {начало основного блока операторов программы}
Randomize; {инициализируем генератор случайных чисел}
x0:=300; {значение x - постоянно}
{цикл счета 30 окружностей}
for n:=1 to 30 do
begin
c:=clRandom; {выбор случайного цвета для кисти и пера}
SetBrushColor(c); {установка случайного цвета}
SetPenColor(c);
y0:=random(421); {случайная координата у из диапазона 0-320}
R:=5+random(46); {случайная величина радиуса от 5 до 50}
Circle(x0,y0,R); {вывод окружности на экран}
end;
End.
4. Выполним последнее задание с помощью циклов с пред- и постусловием.
Цикл с предусловием:
Program p4;
uses graphABC; { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin {начало основного блока операторов программы}
Randomize; {инициализируем генератор случайных чисел}
n:=1;
x0:=300; {значение x - постоянно}
{цикл с постусловием, пока n<=30}
While n <= 30 do
begin
c:=clRandom; {выбор случайного цвета для кисти и пера}
SetBrushColor(c); {установка случайного цвета}
SetPenColor(c);
y0:=random(421); {случайная координата у из диапазона 0-320}
R:=5+random(46); {случайная величина радиуса от 5 до 50}
Circle(x0,y0,R); {вывод окружности на экран}
n:=n+1; {увеличение счетчика}
end;
End.
Цикл с постусловием
Program p5;
uses graphABC; { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin {начало основного блока операторов программы}
Randomize; {инициализируем генератор случайных чисел}
n:=1;
x0:=300; {значение x - постоянно}
{цикл с постусловием, пока n<=30}
Repeat
c:=clRandom; {выбор случайного цвета для кисти и пера}
SetBrushColor(c); {установка случайного цвета}
SetPenColor(c);
y0:=random(421); {случайная координата у из диапазона 0-320}
R:=5+random(46); {случайная величина радиуса от 5 до 50}
Circle(x0,y0,R); {вывод окружности на экран}
n:=n+1; {увеличение счетчика}
until n > 30;
End.
5. Кривая кардиоида
Формула кардиоиды:
x:=320+round(2Rsin(t)+Rsin(2t));
y:=240+round(2Rcos(t)+Rcos(2t));
Program card;
uses graphABC; { подключаем модуль GraphABC для работы }
var R,x,y,t: integer; {объявления переменных}
Begin
R:=25;
t:=0;
Repeat
x:=320+round(2*R*sin(t)+R*sin(2*t)); {вычисление координаты х}
y:=240+round(2*R*cos(t)+R*cos(2*t)); {вычисление координаты у}
PutPixel(x,y,clRed); {вывод точки красного цвета в указанные координаты}
t:=t+1; {увеличение счетчика цикла}
until t>3600; {цикл выполняется, пока значение t не превысит 3600}
End.
6. Кривая астроида
Формула для вывода астроиды:
x:=320+round(Rsin^3(t));
y:=240+round(Rcos^3(t));
Program astr;
uses graphABC; { подключаем модуль GraphABC для работы }
var R,x,y,t: integer; {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(R*sin(t)*sin(t)*sin(t)); {вычисление координаты х}
y:=240+round(R*cos(t)*cos(t)*cos(t)); {вычисление координаты у}
PutPixel(x,y,clRed); {вывод точки красного цвета в указнные кординаты}
t:=t+1; {увеличение счетчика цикла}
until t>3600; {цикл выполняется, пока значение t не превысит 3600}
End.
7. Нарисуем кривую – эпициклоиду за 3600 итераций цикла.
Формула эпициклоиды:
x:=320+round(6.2Rsin(t)+Rsin(6.2t));
y:=240+round(6.2Rcos(t)+Rcos(6.2t));
Program ec;
uses graphABC; { подключаем модуль GraphABC для работы }
var R,x,y,t: integer; {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(6.2*R*sin(t)+R*sin(6.2*t)); {вычисление координаты х}
y:=240+round(6.2*R*cos(t)+R*cos(6.2*t)); {вычисление координаты у}
PutPixel(x,y,clRed); {вывод точки красного цвета в указнные кординаты}
t:=t+1; {увеличение счетчика цикла}
until t>3600; {цикл выполняется, пока значение t не превысит 3600}
End.
8. Нарисуем нефроиду.
Параметры нефроиды:
x:=320+round(6Rcos(t)-4Rcos^3(t));
y:=240+round(4Rsin^3(t));
Program nefr;
uses graphABC; { подключаем модуль GraphABC для работы }
var R,x,y,t: integer; {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(6*R*cos(t)-4*R*cos(t)*cos(t)*cos(t)); {вычисление координаты х}
y:=240+round(4*R*sin(t)*sin(t)*sin(t)); {вычисление координаты у}
PutPixel(x,y,clRed); {вывод точки красного цвета в указнные кординаты}
t:=t+1; {увеличение счетчика цикла}
until t>3600; {цикл выполняется, пока значение t не превысит 3600}
End.
9. Нарисуем синусоиду (y=10sin(x/10)) в системе координат с осями ОХ и ОУ, и началом координат, расположенным в точке (300,200) экрана.
Сначала нарисуем координатные оси, затем в цикле саму синусоиду.
Program s;
uses graphABC; { подключаем модуль GraphABC для работы }
var x,y: integer; {объявления переменных}
Begin
Line(0,200,600,200);{ось х}
Line(300,0,300,400);{ось у}
x:=-300;
Repeat
y:=Round(10*sin(x/10)); {вычисление координаты у}
PutPixel(x+300,200-y,clBlue); {вывод точки синего цвета с учетом начала координат}
x:=x+1; {увеличение счетчика цикла}
until x>300; {цикл выполняется, пока значение x не превысит 300}
End.
Как рисовать различные объекты в Pascal ABC, можно посмотреть здесь.