
- •2. Функции
- •Демонстрационные примеры
- •Задачи для самостоятельного решения
- •3. Стандартные библиотеки подпрограмм в турбо паскале Расширение возможностей Ввода- Вывода. Модуль crt
- •Переменные
- •Процедуры и функции
- •4. Модуль Graph. Графический режим
- •Простейшие графические процедуры и функции
- •5. Численное решение алгебраических и трансцендентных уравнений
- •Метод секущих
- •Пример решения уравнения
- •Задание №1
- •Задание №3
Простейшие графические процедуры и функции
После инициализации графического режима экран очищается и можно использовать процедуры рисования.
Procedure SetBkColor(N: Word); - установить цвет "N" для пикселов фона (по умолчанию установлен черный цвет фона).
Procedure SetColor(N: Word); - установить цвет "N" для выводимых линий (По умолчанию установлен белый цвет).
Procedure PutPixel(X, Y: Integer, N: Word); - высветить цветом "N" пиксел с координатами X, Y.
Function GetMaxColor: Integer; - функция возвращает максимальный номер цвета палитры (цвет задается аналогично цветам текста в модуле Crt).
Procedure Circle(X, Y:Integer, R:Word); - строит текущим цветом окружность с центром X, Y и радиусом R.
Procedure Line(x1, y1, x2, y2: Integer); - строит текущим цветом отрезок прямой линии от точки с координатами x1, y1 к точке с координатами x2, y2.
Procedure Rectangle(x1, y1, x2, y2: Integer); - строит текущим цветом прямоугольник с левым верхним углом в точке с координатами x1, y1 и правым нижним углом в точке с координатами x2, y2.
Function GetPixel(X, Y: Integer): Word; - функция возвращает цвет пиксела с координатами X, Y.
Procedure ClearDevice; - очищает графический экран, закрашивает его цветом фона устанавливает указатель текущей позиции в точку с координатами (0, 0)
Пример 1.
Uses Crt, Graph;
var { раздел описаний}
ch: char;
Gd, Gm, Gx, Gy, xc, yc: integer;
Begin
Gd:=Detect;
InitGraph(Gd,Gm,'C:\tp\bgi'); (* инициализация графики *)
Randomize;
Gx:=GetMaxX; Gy:=GetMaxY;
{----------------------------------------------------------
Фрагмент N 1 программы "небо в алмазах" ( рисование пикселов ).
--------------------------------------------------------------}
SetColor(0);
Repeat
i:= 9 + random(7);
xc:= random(Gx);
yc:= random(Gy);
PutPixel(xc, yc, i);
Circle(xc, yc, 3)
Until KeyPressed;
{----------------------------------------------------}
While KeyPressed do ch:= ReadKey; { очистка буфера клавиатуры }
CloseGraph; { закончить работу в графическом режиме }
End.
После инициализации графики определяются переменные Gx, Gy - максимальные значения координат по осям X, Y. Назначается черный цвет для линий, которые будут выводиться. Затем в цикле повторяется до нажатия любой клавиши высвечивание точек (пикселов) с номерами цвета "i" от 9 до 15 и координатами xc, yc. Значения координат точек и номеров цвета определяются из заданного диапазона функцией Random. Чтобы точки не "забивали" экран, некоторые из них "гасятся" окружностью радиусом 3 пикселя с центром в появившейся точке.
Пример 2. Построение функции Y=Abs(Sin(x)).
program Funk;
uses Graph; (*подключение графической библибтеки*)
var x, y,h,xk,xn:real;
gd,gm:Integer;
function f(x:real):real; (* подпрограмма-функция вычисления abs(sin(x)) *)
begin
f:=abs(sin(x))
end;
Begin (*начало главной программы*)
gd:=Detect;
Initgraph(gd,gm,'c:\bp\bgi'); (*включение графического режима*)
xn:=-10; xk:=10; (*начало и конец по оси абсцисс х*)
h:= (xk-xn)/1000; (*величина шага приращения аргумента*)
x:=xn;
while x<xk do
begin
y:=f(x); (*вычисление функции в точке*)
putpixel(round(x*30+300),round(200-y*200),white); {строим точку на экране}
x:=x+h (*переход к следующей точке*)
end;
readln
end.