Построить графики функций - PascalABC.NET (24463)
Формулировка задачи:
Построить графики функций (наличие осей, с отмеченным единичным отрезком, подписей обязательно):
1)
2).
Помогите! Не получается у самой, смотрела примеры, но под свои функции не смогла подогнать Буду рада, если кто-то объяснит))
Решение задачи: «Построить графики функций»
textual
Листинг программы
uses graphABC; function F(x:real):real; begin F:=sqr(sin(x)); end; var xn,xk,x,mx,my,dx,max:real; x0,y0,i:integer; s:string; begin x0:=windowwidth div 2;//начало координат y0:=windowheight div 2; xn:=-2*pi; xk:=2*pi;//интервал по Х x:=xn; mx:=(x0-30)/xk;//масштаб по Х my:=y0/2;//max;//по У line(0,y0,windowwidth,y0);//оси line(x0,0,x0,windowheight); for i:=1 to 7 do//максимальное количество засечек в одну сторону begin line(x0+round(i*pi*mx),y0-3,x0+round(i*pi*mx),y0+3); //засечки на оси Х line(x0-round(i*pi*mx),y0-3,x0-round(i*pi*mx),y0+3); //подпись оси Х textout(x0+round(mx*pi/2)-15,y0+10,'pi/2'); textout(x0+round(pi*mx),y0+10,'pi'); textout(x0+round(3*pi*mx/2),y0+10,'3pi/2'); textout(x0+round(2*pi*mx),y0+10,'2pi'); textout(x0-round(mx*pi/2)-15,y0+10,'-pi/2'); textout(x0-round(pi*mx),y0+10,'-pi'); textout(x0-round(3*pi*mx/2),y0+10,'-3pi/2'); textout(x0-round(2*pi*mx),y0+10,'-2pi'); if i<6 then begin line(x0+3,y0-round(i*my/5),x0-3,y0-round(i*my/5)); //засечки на оси Y line(x0+3,y0+round(i*my/5),x0-3,y0+round(i*my/5)); //одписи по оси Y str(i/5:0:1,s); textout(x0-25,y0-round(i*my/5),s); textout(x0-30,y0+round(i*my/5),'-'+s); end; end; //центр textout(x0+5,y0+10,'0'); //подписи концов осей textout(windowwidth-15,y0-15,'X'); textout(x0+10,10, 'Y'); {график} x:=xn; dx:=0.01; setpencolor(clBlue); 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+dx; end; setfontsize(12); setfontcolor(clBlue); textout(x0+100,10,'y=sin^2(x)'); end.
Объяснение кода листинга программы
- Объявлены переменные:
- xn, xk, x, mx, my, dx, max (реальные)
- x0, y0, i (целочисленные)
- s (строковая)
- Задаются начальные значения переменных:
- x0 := windowwidth div 2
- y0 := windowheight div 2
- xn := -2*pi
- xk := 2*pi
- mx := (x0-30)/xk
- my := y0/2
- Строятся оси X и Y:
- Линия от (x0, y0) до (windowwidth, y0)
- Линия от (x0, 0) до (x0, windowheight)
- Строятся засечки на оси X:
- Для i от 1 до 7 выполняется:
- Строятся линии на уровне -pi/2, -pi, -3pi/2, -2pi
- Строятся подписи на оси X с шагом i/5
- Для i от 1 до 7 выполняется:
- Строятся засечки на оси Y:
- Для i от 1 до 6 выполняется:
- Строятся линии на уровне i*my/5
- Строятся подписи на оси Y с шагом i/5
- Для i от 1 до 6 выполняется:
- Строится график функции:
- x := xn
- dx := 0.01
- Последовательно выполняется:
- Если x = xn, то перемещается перо в точку (x0+round(xmx), y0-round(F(x)my))
- Иначе, рисуется линия между текущей и следующей точкой x
- Выводятся подписи к графикам:
- textout(x0+100,10,'y=sin^2(x)')
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д