Построение графика функции - PascalABC.NET (24905)
Формулировка задачи:
Дорогие программисты прошу у вас помощи, нужно построить универсальный график функции(т.е можно построить любой график).
Надеюсь на вашу помощь.
Желательно под Pascal ABC Net.
Решение задачи: «Построение графика функции»
textual
Листинг программы
- uses graphABC;
- function F1(x:real):real;
- begin
- F1:=sqr(sin(x));
- end;
- function F2(x:real):real;
- begin
- F2:=0.5-sqr(cos(x));
- end;
- var xn,xk,x,mx,dx:real;
- x0,y0,my,i:integer;
- s:string;
- begin
- x0:=windowwidth div 2;{центр экрана}
- y0:=windowheight div 2;
- xn:=-2*pi;xk:=2*pi;{интервал по Х}
- mx:=(x0-30)/xk;{масштаб по Х}
- my:=y0-40;{по У}
- line(0,y0,windowwidth,y0);{оси}
- line(x0,0,X0,windowheight);
- line(x0-3,y0+my,x0+3,y0+my);
- textout(x0-15,y0+my,'-1');
- line(x0-3,y0-my,x0+3,y0-my);
- textout(x0-15,y0-my,'1');
- for i:=1 to trunc(xk)+1 do{максимальное количество засечек в одну сторону}
- begin
- line(x0+round(i*mx),y0-3,x0+round(i*mx),Y0+3); {засечки на оси Х}
- line(x0-round(i*mx),y0-3,x0-round(i*mx),Y0+3);
- str(i,s);
- {подпись оси Х}
- textout(x0+round(i*mx)-15,y0+10,s);
- textout(x0-round(i*mx),y0+10,'-'+s);
- end;
- {центр}
- textout(x0+5,y0+10,'0');
- {подписи концов осей}
- textout(windowwidth-10,y0-10,'X');
- textout(x0-10,10, 'Y');
- {графики}
- x:=xn;
- dx:=0.001;
- while x<=xk do
- begin
- x:=x+dx; {наращиваем х}
- setpixel(x0+round(x*mx),y0-round(F1(x)*my),clBlue);
- setpixel(x0+round(x*mx),y0-round(F2(x)*my),clRed);
- end;
- end.
Объяснение кода листинга программы
- Объявление функций F1 и F2, которые принимают аргумент x типа real и возвращают значения функций соответственно.
- Объявление переменных xn, xk, x, mx, dx, x0, y0, my, i, s типа real и переменных windowwidth, windowheight типа integer.
- Задание начального значения x0, y0, my, i, s, mx и dx.
- Отображение осей X и Y на экране с помощью функции line.
- Отображение подписей концов осей X и Y с помощью функции textout.
- В цикле for от 1 до trunc(xk)+1 происходит построение засечек на оси Х с помощью функции line.
- С помощью функции textout отображаются подписи на оси Х.
- С помощью цикла while от xn до xk происходит наращивание значения x на dx и вызов функции setpixel для отображения точек графика функций F1 и F2 на экране.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д