Построить графики функций - 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.

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

  1. Объявлены переменные:
    • xn, xk, x, mx, my, dx, max (реальные)
    • x0, y0, i (целочисленные)
    • s (строковая)
  2. Задаются начальные значения переменных:
    • x0 := windowwidth div 2
    • y0 := windowheight div 2
    • xn := -2*pi
    • xk := 2*pi
    • mx := (x0-30)/xk
    • my := y0/2
  3. Строятся оси X и Y:
    • Линия от (x0, y0) до (windowwidth, y0)
    • Линия от (x0, 0) до (x0, windowheight)
  4. Строятся засечки на оси X:
    • Для i от 1 до 7 выполняется:
      • Строятся линии на уровне -pi/2, -pi, -3pi/2, -2pi
      • Строятся подписи на оси X с шагом i/5
  5. Строятся засечки на оси Y:
    • Для i от 1 до 6 выполняется:
      • Строятся линии на уровне i*my/5
      • Строятся подписи на оси Y с шагом i/5
  6. Строится график функции:
    • x := xn
    • dx := 0.01
    • Последовательно выполняется:
      • Если x = xn, то перемещается перо в точку (x0+round(xmx), y0-round(F(x)my))
      • Иначе, рисуется линия между текущей и следующей точкой x
  7. Выводятся подписи к графикам:
    • textout(x0+100,10,'y=sin^2(x)')
  8. Код завершается

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


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

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

14   голосов , оценка 4.286 из 5