Построение графиков элементарных функций - Pascal ABC
Решение задачи: «Построение графиков элементарных функций»
textual
Листинг программы
uses graphABC; function f(x:real):real; begin if x<=1 then f:=2*x+5 else f:=x*x+7; end; var xn,xk,x,dx,mx,my,x1,x2,x3,y:real; x0,y0,n,i:integer; s1,s2:string; begin //интервал xn:=-2; xk:=4; //начало координат x0:=windowwidth div 3; y0:=windowheight-50; //масштабы mx:=(x0-20)/2; my:=(y0-50)/f(xk); //оси line(0,y0,windowwidth,y0); textout(windowwidth-20,y0-20,'X'); line(x0,0,x0,2*y0); textout(x0+5,0,'Y'); textout(x0+5,y0+10,'0'); //засечки и подписи по осям for i:=1 to trunc(f(xk))+1 do begin line(x0+round(i*mx/2),y0-3,x0+round(i*mx/2),y0+3); line(x0-round(i*mx/2),y0-3,x0-round(i*mx/2),y0+3); textout(x0+round(i*mx/2),y0+10,floattostr(i/2)); textout(x0-round(i*mx/2),y0+10,floattostr(-i/2)); line(x0-5,y0-round(i*my*5),x0+5,y0-round(i*my*5)); textout(x0-25,y0-round(i*my*5)-5,inttostr(i*5)); end; //график setpencolor(clBlue); x:=xn; dx:=0.01; while x<1 do begin if x=xn then moveto(x0+round(x*mx),y0-round(f(x)*my)) else lineto(x0+round(x*mx),y0-round(f(x)*my)); x:=x+dx; end; x:=1+dx; while x<=xk do begin if x=1+dx then moveto(x0+round(x*mx),y0-round(f(x)*my)) else lineto(x0+round(x*mx),y0-round(f(x)*my)); x:=x+dx; end; end.
Объяснение кода листинга программы
- Объявлены переменные и функции:
- Используется модуль graphABC, который позволяет строить графики.
- Функция f(x:real):real; принимает на вход число x и возвращает результат вычисления одной из элементарных функций.
- Переменные xn, xk, x, dx, mx, my, x1, x2, x3, y:real; используются для построения графика.
- Переменные x0, y0, n, i:integer; используются для задания интервала и масштабов.
- Переменные s1, s2:string; используются для подписей осей.
- Задан интервал:
- xn:=-2;
- xk:=4;
- Заданы начальные координаты:
- x0:=windowwidth div 3;
- y0:=windowheight-50;
- Заданы масштабы:
- mx:=(x0-20)/2;
- my:=(y0-50)/f(xk);
- Нарисованы оси:
- Линия по оси X от (0,y0) до (windowwidth,y0).
- Текст
X
в точке (windowwidth-20,y0-20). - Линия по оси Y от (x0,0) до (x0,2*y0).
- Текст
0
в точке (x0+5,y0+10).
- Добавлены засечки и подписи по осям:
- Цикл for i:=1 to trunc(f(xk))+1 do выполняет это действие.
- Рисуются линии и текст на оси Y.
- Нарисован график:
- Используется синий цвет pen.
- x:=xn;
- dx:=0.01;
- Цикл while x<1 do выполняет это действие.
- Цикл while x<=xk do выполняет это действие.
- Переменная x увеличивается на dx после каждой итерации.
- Используются функции moveto и lineto для построения графика.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д