Пример использования подпрограмм модуля Graph в Turbo Pascal 7
02.09.2018
16.4.80. Пример использования подпрограмм модуля Graph
В качестве примера использования ресурсов модуля Graph рассмотрим программу, которая изображает график функции exp(-Ax)*sin(x) при изменении коэффициента А.
Пример.
program Example29; | |
uses Graph; | |
const ExpBeg =0.1; | {Начальное значение коэффициента показателя экспоненты} |
DeltaExp =0.1; | {Приращение коэффициента показателя экспоненты} |
var X0, Y0: Word; | {Начало координат} |
X, Y: Real; | {Текущие координаты} |
i, j.: Word; | |
GraphDriver: Integer; | {Код драйвера графического утройства} |
GraphMode: Integer; | {Код графического режима} |
Switch: Boolean; | {Переключатель окон} |
begin | |
GraphDriver := Detect; | {Автоматическое определение драйвера граф. устройства} |
InitGraphCGraphDriver, GraphMode, ''); | {Инициализация графического режима. Драйвер - в текущем каталоге} |
if GraphResultogrOk then | |
begin | |
WriteLn('Ошибка при включении графического режима'); | |
Halt | |
end; | |
Х0 := 20; | {Координата в пикселях} |
Y0 := GetMaxY div 2; | {Координата в пикселях} |
Switch := True; | {Исходное состояние переключателя окон} |
for j := 0 to 10 do | {Цикл формирования изображений} |
begin | |
SetActivePage(Ord(Switch)); | {Активная страница видеопамяти} |
SetBkColor(Blue); | {Цвет фона} |
SetColor(White); | {Цвет фигур и текста} |
ClearDevice; | {Очистка активной страницы} |
Line(X0, 20, X0, GetMaxY - 20); | {Горизонтальная ось} |
Line(X0, Y0, GetMaxX - 20, Y0); | {Вертикальная ось} |
MoveTo(X0, Y0); | {Начало координат}; |
for i := 1 to GetMaxX - 40 do | {Формирование графика} |
begin | |
X := i * 4 * Pi / (GetMaxX - 40); | |
Y := Exp(-X * (ExpBeg + DeltaExp * j)) * Sin(X); | |
LineTo(X0 + i,Y0 - Round(Y * 150)) | |
end; | |
SetVisualPage(Ord(Switch)); | {Видимая страница видеопамяти} |
Switch := not Switch | |
end; | |
CloseGraph; | {Завершение работы в графическом режиме} |
ReadLn | |
end. | |
С помощью этой программы на экран выводятся последовательно одиннадцать графиков требуемой функции с изменяющимся коэффициентом А показателя экспоненты. При этом изображение сначала подготавливается на невидимой странице видеопамяти, а затем уже выводится на экран, после чего очередное изображение подготавливается на другой странице. В этой программе используется ряд стандартных процедур и функций модуля Graph (ClearDevice, CloseGraph, GetMaxX, GetMaxY, GraphResult, InitGraph, Line, LineTo, MoveTo, SetActivePage, SetBkColor, SetColor, SetVisualPage) и констант модуля (Blue, Detect, grOk, White). Предусмотрено автоматическое определение драйвера графического устройства и графического режима.
Описание массивов. Введение в Турбо Паскаль. Урок 9