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