Написать программу, которая выводит на экран график одной или несколько функций - Turbo Pascal
Формулировка задачи:
Написать программу, которая выводит на экран график одной или несколько функций. Программа должна выводить рисунок с использованием модуля Graph. Программа должна содержать по крайней мере подпрограммы:
1)Функцию, график которой нужно вывести. Программа может содержать несколько таких функций.
2)Функцию или процедуру, которая выводит график на экран. Эта подпрограмма должна получать в качестве аргументов координаты области, которая будет отображена на экране и функцию, график которой нужно отобразить (аргумент процедурного типа).
Прошу пожалуйста хотя бы с минимальным объяснением, хочется вникнуть в тему.
Решение задачи: «Написать программу, которая выводит на экран график одной или несколько функций»
textual
Листинг программы
uses graph; {описание функций} type func=function(x:real):real; {$F+} function F1(x:real):real; begin F1:=sin(x); end; function F2(x:real):real; begin F2:=cos(x); end; {$F-} {процедура рисования графиков} procedure grafik(f:func;x1,y1,x2,y2:integer); var x0,y0:integer; xn,xk,mx,my,x,dx:real; begin setcolor(14); setfillstyle(1,14); bar(x1,y1,x2,y2); x0:=(x2+x1) div 2;{центр окна} y0:=(y2+y1) div 2; xn:=-pi;xk:=pi;{интервал по Х} mx:=(x2-x1)/(xk-xn);{масштаб по Х} my:=y0-y1-5;{по У} setcolor(8);{цвет линий} line(x1,y0,x2,y0);{оси} line(x0,y1,x0,y2); x:=xn;{график} dx:=0.001; while x<=xk do begin putpixel(x0+round(x*mx),y0-round(f(x)*my),8); x:=x+dx; end; end; var gd,gm:integer; begin gd:=detect; initgraph(gd,gm,''); grafik(F1,100,100,300,200); grafik(F2,400,100,600,200); readln end.
Объяснение кода листинга программы
- Подключается библиотека graph.
- Определяются две функции-образец: F1 и F2, которые принимают аргумент x типа real и возвращают значение типа real.
- Определяется процедура grafik, которая принимает функцию f в качестве аргумента и координаты x1, y1, x2, y2 для построения графика.
- Вычисляются центр окна (x0, y0) и масштабные коэффициенты mx и my для оси X и Y соответственно.
- Строятся оси графика линией от (x1, y0) до (x2, y0).
- Строится график функции f с помощью цикла while, который продолжается, пока значение переменной x не станет больше или равно значению xk.
- Внутри цикла вычисляется текущая точка графика (x, y) и рисуется пикселем с помощью функции putpixel.
- Значение переменной x увеличивается на dx на каждом шаге цикла.
- Задаются начальные значения для переменных gd и gm, которые используются при инициализации графического дисплея.
- Инициализируется графический дисплей с помощью функции initgraph.
- Построение графиков для функций F1 и F2 с помощью функции grafik.
- Программа завершается с помощью функции readln.