Построить графики функций - PascalABC.NET (24463)

Узнай цену своей работы

Формулировка задачи:

Построить графики функций (наличие осей, с отмеченным единичным отрезком, подписей обязательно): 1) 2). Помогите! Не получается у самой, смотрела примеры, но под свои функции не смогла подогнать Буду рада, если кто-то объяснит))

Решение задачи: «Построить графики функций»

textual
Листинг программы
  1. uses graphABC;
  2. function F(x:real):real;
  3. begin
  4. F:=sqr(sin(x));
  5. end;
  6. var xn,xk,x,mx,my,dx,max:real;
  7.     x0,y0,i:integer;
  8.     s:string;
  9. begin
  10. x0:=windowwidth div 2;//начало координат
  11. y0:=windowheight div 2;
  12. xn:=-2*pi;
  13. xk:=2*pi;//интервал по Х
  14. x:=xn;
  15. mx:=(x0-30)/xk;//масштаб по Х
  16. my:=y0/2;//max;//по У
  17. line(0,y0,windowwidth,y0);//оси
  18. line(x0,0,x0,windowheight);
  19. for i:=1 to 7 do//максимальное количество засечек в одну сторону
  20.   begin
  21.     line(x0+round(i*pi*mx),y0-3,x0+round(i*pi*mx),y0+3); //засечки на оси Х
  22.     line(x0-round(i*pi*mx),y0-3,x0-round(i*pi*mx),y0+3);
  23.     //подпись оси Х
  24.     textout(x0+round(mx*pi/2)-15,y0+10,'pi/2');
  25.     textout(x0+round(pi*mx),y0+10,'pi');
  26.     textout(x0+round(3*pi*mx/2),y0+10,'3pi/2');
  27.     textout(x0+round(2*pi*mx),y0+10,'2pi');
  28.     textout(x0-round(mx*pi/2)-15,y0+10,'-pi/2');
  29.     textout(x0-round(pi*mx),y0+10,'-pi');
  30.     textout(x0-round(3*pi*mx/2),y0+10,'-3pi/2');
  31.     textout(x0-round(2*pi*mx),y0+10,'-2pi');
  32.     if i<6 then
  33.      begin
  34.       line(x0+3,y0-round(i*my/5),x0-3,y0-round(i*my/5)); //засечки на оси Y
  35.       line(x0+3,y0+round(i*my/5),x0-3,y0+round(i*my/5));
  36.       //одписи по оси Y
  37.       str(i/5:0:1,s);
  38.       textout(x0-25,y0-round(i*my/5),s);
  39.       textout(x0-30,y0+round(i*my/5),'-'+s);
  40.      end;
  41.   end;
  42. //центр
  43. textout(x0+5,y0+10,'0');
  44. //подписи концов осей
  45. textout(windowwidth-15,y0-15,'X');
  46. textout(x0+10,10, 'Y');
  47. {график}
  48. x:=xn;
  49. dx:=0.01;
  50. setpencolor(clBlue);
  51. while x<=xk do
  52.  begin
  53.   if x=xn then moveto(x0+round(x*mx),y0-round(F(x)*my))
  54.   else lineto(x0+round(x*mx),y0-round(F(x)*my));
  55.   x:=x+dx;
  56.  end;
  57. setfontsize(12);
  58. setfontcolor(clBlue);
  59. textout(x0+100,10,'y=sin^2(x)');
  60. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут