Изобразить кусочный график - Pascal ABC
Формулировка задачи:
Помогите изобразить данный график в паскале. Заранее большое спасибо!
Решение задачи: «Изобразить кусочный график»
textual
Листинг программы
uses graphABC; function F(x:real):real; begin if x<=-5 then F:=-sqrt(4-sqr(x+7))+2 else if x<=-4 then F:=2 else if x<=0 then F:=-x/2 else if x<=pi then F:=cos(x-pi/2) else F:=x-pi; end; var x,max,min,mx,my,dx:real; x0,y0,xn,xk,i:integer; begin setwindowsize(640,160); centerwindow; xn:=-9; xk:=5;//интервал по Х x0:=9*windowwidth div 14; mx:=(x0-40)/-xn;//масштаб по Х y0:=windowheight-50; my:=(y0-20)/2; line(0,y0,windowwidth-10,y0);///оси line(windowwidth,y0,windowwidth-10,y0-5); line(windowwidth,y0,windowwidth-10,y0+5); line(windowwidth-10,y0-5,windowwidth-10,y0+5); floodfill(windowwidth-8,y0,clBlack); setfontsize(10); textout(windowwidth-10,y0-20,'X'); line(x0,10,x0,windowheight); line(x0,0,x0-5,10); line(x0,0,x0+5,10); line(x0-5,10,x0+5,10); floodfill(x0,8,clBlack); textout(x0+10,0,'Y'); for i:=1 to 9 do//максимальное количество засечек в одну сторону begin if i<3 then begin line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));//засечки на оси У textout(x0-20,y0-round(i*my),inttostr(i));//подпись оси У соответственно засечкам end; if i<6 then begin line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); //засечки на оси Х textout(x0+round(i*mx),y0+10,inttostr(i));//подпись оси Х end; line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3); textout(x0-round(i*mx),y0+10,inttostr(-i)); end; //центр textout(x0+5,y0+10,'0'); //график setpenwidth(2); x:=xn; while x<=xk 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+0.01; end; end.
Объяснение кода листинга программы
- В первой строке кода используется библиотека graphABC, которая, вероятно, предназначена для создания графиков в среде Delphi или Lazarus, но может быть и другая среда разработки.
- Функция F(x) вычисляет значение функции для переданного аргумента x. Если x меньше -5, то функция возвращает отрицательный корень из 4 минус квадрат x плюс 2. Если x меньше -4, то функция возвращает 2. Если x меньше или равно 0, то функция возвращает -x/2. Если x больше или равно пи, то функция возвращает cos(x-пи/2). В остальных случаях функция возвращает x минус пи.
- Переменные x, max, min, mx, my, dx определены.
- Строки с 1 по 10 используются для настройки окна: установка размера окна, центрирование, установка размеров осей X и Y.
- Строки с 11 по 19 используются для отображения осей X и Y.
- Строки с 20 по 29 используются для отображения засечек на оси X и Y.
- Строки с 30 по 39 используются для отображения центра графика.
- Строки с 40 по 49 используются для отображения графика. График рисуется линией для каждого значения x в диапазоне от xn до xk с шагом 0.01. Значение функции F(x) используется для определения положения линии на оси Y.
- Код завершается без явных инструкций завершения.