Построение графиков элементарных функций - 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.

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

  1. Объявлены переменные и функции:
    • Используется модуль 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; используются для подписей осей.
  2. Задан интервал:
    • xn:=-2;
    • xk:=4;
  3. Заданы начальные координаты:
    • x0:=windowwidth div 3;
    • y0:=windowheight-50;
  4. Заданы масштабы:
    • mx:=(x0-20)/2;
    • my:=(y0-50)/f(xk);
  5. Нарисованы оси:
    • Линия по оси X от (0,y0) до (windowwidth,y0).
    • Текст X в точке (windowwidth-20,y0-20).
    • Линия по оси Y от (x0,0) до (x0,2*y0).
    • Текст 0 в точке (x0+5,y0+10).
  6. Добавлены засечки и подписи по осям:
    • Цикл for i:=1 to trunc(f(xk))+1 do выполняет это действие.
    • Рисуются линии и текст на оси Y.
  7. Нарисован график:
    • Используется синий цвет pen.
    • x:=xn;
    • dx:=0.01;
    • Цикл while x<1 do выполняет это действие.
    • Цикл while x<=xk do выполняет это действие.
    • Переменная x увеличивается на dx после каждой итерации.
    • Используются функции moveto и lineto для построения графика.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

15   голосов , оценка 3.933 из 5