Нарисовать синусоиду - Pascal ABC

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

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

Нарисовать синусоиду (y=10sin(x/10)) в системе коордитат с осями ОХ и ОУ, и нача- лом координат, расположенным в точке (300,200) экрана.

Решение задачи: «Нарисовать синусоиду»

textual
Листинг программы
uses graphABC;
function f(x:real):real;
begin
f:=10*sin(x/10);
end;
var xn,xk,x,mx,dx,my:real;
    ox,oy,i:integer;
    s:string;
begin
ox:=300;
oy:=200;
xn:=-100;xk:=100;{интервал по Х}
mx:=(windowwidth-ox-30)/xk;{масштаб по Х}
my:=(oy-40)/10;{по У}
line(0,oy,windowwidth,oy);{оси}
line(ox,0,ox,windowheight);
for i:=1 to 10 do{максимальное количество засечек в одну сторону}
  begin
    line(ox+round(i*mx*10),oy-3,ox+round(i*mx*10),oy+3); {засечки на оси Х}
    line(ox-round(i*mx*10),oy-3,ox-round(i*mx*10),oy+3);
    str(i*10,s);
    {подпись оси Х}
    textout(ox+round(i*mx*10),oy+10,s);
    textout(ox-round(i*mx*10),oy+10,'-'+s);
    line(ox+3,oy-round(i*my),ox-3,oy-round(i*my)); {засечки на оси Y}
    line(ox+3,oy+round(i*my),ox-3,oy+round(i*my));
    str(i,s);
    {подпись оси Y}
    textout(ox-15,oy-round(i*my),s);
    textout(ox-20,oy+round(i*my),'-'+s);
  end;
textout(ox+5,oy+10,'0');
textout(windowwidth-15,oy-20,'X');
textout(ox+10,10, 'Y');
x:=xn;
dx:=0.001;
while x<=xk do
   begin
     x:=x+dx; {наращиваем х}
     setpixel(ox+round(x*mx),oy-round(f(x)*my),clRed);
   end;
end.

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

  1. Заголовок: uses graphABC; Это инструкция для использования модуля graphABC, который предоставляет функции для рисования графиков.
  2. Функция: function f(x:real):real; Это определение функции f(x), которая будет использоваться для построения графика. Она возвращает значение sin(x/10) умноженное на 10.
  3. Переменные: var xn,xk,x,mx,dx,my:real; Эти переменные используются для хранения значений, связанных с графиком.
  4. Переменные: ox,oy,i:integer; Эти переменные используются для хранения целочисленных значений, связанных с графиком.
  5. Переменная: s:string; Эта переменная используется для хранения строковых значений, связанных с графиком.
  6. Инструкции: begin Это начало блока инструкций для программы.
  7. Оси: line(0,oy,windowwidth,oy); Эта инструкция рисует горизонтальную линию, представляющую ось Y.
  8. Ось Y: line(ox,0,ox,windowheight); Эта инструкция рисует вертикальную линию, представляющую ось X.
  9. Засечки: for i:=1 to 10 do Эти инструкции рисуют засечки на оси X и подписи для них.
  10. Подписи: textout(ox+5,oy+10,'0'); Эта инструкция добавляет подпись 0 к оси X.
  11. Подписи: textout(windowwidth-15,oy-20,'X'); Эта инструкция добавляет подпись X к оси Y.
  12. Подписи: textout(ox+10,10, 'Y'); Эта инструкция добавляет подпись Y к оси Y.
  13. Цикл: x:=xn; Эти инструкции представляют цикл, который генерирует точки для графика.
  14. Цикл: while x<=xk do Эти инструкции проверяют, что значение x не превышает xk, и если это так, то выполняют следующие инструкции.
  15. Цикл: begin Эти инструкции представляют внутренний блок цикла.
  16. Цикл: x:=x+dx; Эта инструкция увеличивает значение x на dx.
  17. Цикл: setpixel(ox+round(xmx),oy-round(f(x)my),clRed); Эта инструкция рисует точку на графике, используя функции f(x) и mx.
  18. Цикл: end; Эти инструкции завершают внутренний блок цикла.
  19. Цикл: end; Эти инструкции завершают цикл.
  20. Конец программы: end.

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


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

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

13   голосов , оценка 4.154 из 5