Нарисовать график в Паскале, используя модуль GraphABC - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Нужно создать программу, которая будет рисовать график, данный на рисунке, а также вычислять по введенному значению аргумента значение функции. Параметр R задается константой.

Решение задачи: «Нарисовать график в Паскале, используя модуль GraphABC»

textual
Листинг программы
uses graphABC;
var r,x,y,m:real;
    w,h,xc,yc,k,n:integer;
    s:string;
begin
repeat
writeln('Введите радиус от 2 до 10 r=');
readln(r);
until(r>=2)and(r<=10);
repeat
writeln('Введите ',-2*r:0:2,'<x<',4*r,' x=');
readln(x);
until(x>=-2*r-1)and(x<=4*r);
if x<=-r then y:=r
else if x<=r then y:=-sqrt(r*r-x*x)+r
else if x<=2*r then y:=-2*x+3*r
else y:=x-3*r;
h:=300;
m:=(h-40)/2/r;
w:=round(6*r*m)+50;
setwindowsize(w,h);
centerwindow;
clearwindow;
xc:=w div 3;
yc:=h div 2;
line(0,yc,w,yc);
line(xc,0,xc,h);
if r<6 then k:=1
else k:=2;
n:=trunc(4*r);
if frac(r)<>0 then n:=n+1;
for var i:=1 to n do
if i mod k=0 then
 begin
  line(xc+round(i*m),yc-3,xc+round(i*m),yc+3);
  textout(xc+round(i*m)-5,yc+10,inttostr(i));
 end;
n:=trunc(2*r);
if frac(r)<>0 then n:=n+1; 
for var i:=1 to n do
if i mod k=0 then
 begin
  line(xc-round(i*m),yc-3,xc-round(i*m),yc+3);
  textout(xc-round(i*m)-5,yc+10,inttostr(-i));
 end; 
n:=trunc(r);
if frac(r)<>0 then n:=n+1;
for var i:=1 to n do
if i mod k=0 then
 begin
  line(xc-3,yc-round(i*m),xc+3,yc-round(i*m));
  textout(xc-20,yc-round(i*m)-5,inttostr(i));
  line(xc-3,yc+round(i*m),xc+3,yc+round(i*m));
  textout(xc-20,yc+round(i*m)-5,inttostr(-i));
 end;
setpenwidth(2); 
line(xc-round(2*r*m),yc-round(r*m),xc-round(r*m),yc-round(r*m)); 
arc(xc,yc-round(r*m),round(r*m),180,360);
line(xc+round(r*m),yc-round(r*m),xc+round(2*r*m),yc+round(r*m));
line(xc+round(2*r*m),yc+round(r*m),xc+round(4*r*m),yc-round(r*m));
str(y:0:2,s);
textout(20,h-40,'x='+floattostr(x)+'  y='+s);
setpenwidth(1);
setpencolor(clRed);
circle(xc+round(x*m),yc,2);
circle(xc+round(x*m),yc-round(y*m),2);
line(xc+round(x*m),yc,xc+round(x*m),yc-round(y*m));
end.

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

  1. Заголовок: uses graphABC; Описание: Ввод и вывод данных, а также рисование графиков обычно выполняются с использованием модуля GraphABC в языке программирования Pascal.
  2. Заголовок: var r,x,y,m:real; Описание: В этой части кода объявлены четыре переменные типа real: r, x, y и m. Переменная r представляет радиус, x и y - координаты, а m - масштаб.
  3. Заголовок: var w,h,xc,yc,k,n:integer; Описание: Здесь объявлены шесть переменных типа integer: w, h, xc, yc, k и n. Переменные w и h представляют ширину и высоту окна соответственно, xc и yc - координаты центра окна, k - номер рисунка, а n - количество точек для рисования.
  4. Заголовок: var s:string; Описание: Здесь объявлена одна переменная типа string: s. Эта переменная используется для хранения строки, которая будет отображена на графике.
  5. Заголовок: begin Описание: Код в этом блоке выполняет следующие действия:
    • Повторяет запрос на ввод радиуса до тех пор, пока пользователь не введет значение в диапазоне от 2 до 10.
    • Повторяет запрос на ввод координат x до тех пор, пока значение не будет в допустимом диапазоне.
    • Вычисляет значение y на основе введенных значений x и r.
    • Вычисляет значения w и h на основе введенного радиуса r.
    • Устанавливает размеры окна и его положение в центре экрана.
    • Очищает окно.
    • Вычисляет координаты xc и yc центра окна.
    • Рисует горизонтальную и вертикальную линии через центр окна.
    • Если r меньше или равно 6, то рисует горизонтальные линии с интервалом k и отображает соответствующие значения i.
    • Если r больше 6, то рисует вертикальные линии с интервалом k и отображает соответствующие значения i.
    • Вычисляет значения w и h на основе введенного радиуса r.
    • Устанавливает толщину пера на 2.
    • Рисует окружность с центром в точке (xc,yc) и радиусом r.
    • Рисует линию между точками (xc,yc) и (xc,yc-r).
    • Рисует линию между точками (xc,yc) и (xc-r,yc).
    • Рисует линию между точками (xc,yc) и (xc+r,yc).
    • Отображает строку с координатами (x,y) в правом нижнем углу окна.
    • Устанавливает цвет пера на красный.
    • Рисует окружность с центром в точке (xc,yc) и радиусом r.
    • Рисует линию между точками (xc,yc) и (xc,yc-r).
    • Рисует линию между точками (xc,yc) и (xc-r,yc).
    • Рисует линию между точками (xc,yc) и (xc+r,yc).
  6. Заголовок: end. Описание: Код в этом блоке завершает выполнение программы.

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

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