Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [12].pdf
Скачиваний:
111
Добавлен:
02.05.2014
Размер:
1.06 Mб
Скачать

Одесский колледж компьютерных технологий “СЕРВЕР”

Процедуры работы с экраном

ClrEol Удаляет все символы от курсора (включительно) до конца строки, заполняя этот участок текущим цветом фона.

ClrScr Очищает текущее окно заполняя его текущим цветом фона и помещает курсор в его верхний левый угол с координатами (1,1).

DelLine Удаляет строку, в которой находится курсор.

GotoXY(X,Y) Перемещает курсор к элементу окна с заданными координатами. Если хотя бы одна из координат недопустима, процедура не выполняется.

InsLine Вставляет пустую строку на экране в месте расположения курсора и заполняет её текущим цветом фона.

Window(X1,Y1,X2,Y2) Задаёт размеры окна на экране и помещает курсор в левый верхний угол окна с координатами (1,1). Если хотя бы одна из координат недопустима, процедура не выполняется. Чтобы закрасить окно текущим цветом, нужно воспользоваться процедурой ClrScr.

Например, следующий фрагмент программы создаст в центре экрана окно размером 10х10 и закрасит его зелёным цветом:

Window(35,7,45,17);

TextBackGround(2);

ClrScr;

Здесь на экране появиться окно зеленого цвета с 35-той позиции по 45тую и 7-мой строки по 17-тую.

Процедуры управления звуком. Sound(Hz) Запускает источник звука с частотой Hz герц. NoSound Выключает источник звука.

Delay(Ms) Задаёт задержку выполнения программы в Ms миллисекунд.

Графические возможности.

Ранее мы познакомились с модулем CRT, предназначенным для работы с текстом. Сегодня вы узнаете ещё один модуль - GRAPH. Это библиотека, содержащая обширный набор типов, констант, процедур и функции для управления графическим режимом работы экрана. С помощью подпрограмм, входящих в модуль GRAP, можно создавать разнообразные графические изображения и выводить на экран текстовые надписи стандартными или разработанными программистом шрифтами.

Настройка графических процедур на работу с конкретным адаптером достигается за счёт подключения нужного графического драйвера. Фирма Borland разработала графические драйверы практически для всех типов адаптеров. Обычно они располагаются на диске в отдельном подкаталоге BGI в виде файлов с расширением bgi (от англ. Borland Graphics Interface). Например, EGAVGA.BGI - драйвер для адаптеров EGA и VGA.

18

{режим автоопределения типа } {Включить графический режим.
Драйвер в текущем каталоге} {Если режим включился успешно}
{нарисовать отрезок прямой} {выключение графического режима}

Одесский колледж компьютерных технологий “СЕРВЕР”

Графические возможности конкретного адаптера определяются разрешением экрана, то есть общим количеством пикселов, а также количеством цветов (оттенков), которыми может светиться любой из них. В наше время используются адаптеры SVGA с разрешением 800х600 и более, использующие 256 и более цветовых оттенков. Но в библиотеке GRAPH для них нет драйвера. Поэтому приходится использовать драйвер EGAVGA.BGI и довольствоваться его относительно скромными возможностями.

Для того, чтобы компилятор "узнавал" названия процедур и функций, содержащихся в библиотеке GRAPH.TPU, мы должны после заголовка программы разместить строчку следующего вида:

Uses Graph;

(что можно перевести на русский язык как выражение "используется графика", или "модуль GRAPH.TPU подключён"). Формально эта строка разрешает нам использовать процедуры и функции библиотеки GRAPH.TPU.

До сих пор во время нашей работы за компьютером экран всегда находился в текстовом режиме (поэтому на экране можно было видеть только лишь символы). Для рисования прямых, окружностей и пр. необходимо перевести экран в графический режим. Для включения графического режима используется процедура InitGraph. Простейшая программа, использующая графические возможности, может иметь вид:

Uses Graph;

Var Gd, Gm: integer; Begin

Gd:=DETECT;

Initgraph(Gd,Gm,'');

if GraphResult = grOk then begin

line(0,0,639,479);

Readln;

CloseGraph;

end;

End.

У процедуры InitGraph три параметра. В качестве первых двух параметров должны стоять имена целых (integer) переменных. Первый параметр является кодом графического адаптера (т.е. электронной схемы, управляющей выводом информации на экран). По нашей программе можно догадаться, что в используемых нами компьютерах используется адаптер VGA (и компилятор сам "узнаёт" слово VGA и заменяет его на нужное целое число). Каждый графический адаптер позволяет использовать несколько графических режимов, отличающихся количеством цветов и разрешающей способностью. Второй из параметров как раз предназначен для того, чтобы указать, какой из

19

Одесский колледж компьютерных технологий “СЕРВЕР”

режимов следует включить. Третий параметр является строкой, содержащей путь к файлу, который называется egavga.bgi. В этом файле содержится драйвер (такая специальная программа), необходимый для работы мониторов EGA и VGA в графическом режиме. И, как видно из нашего примера, файл этот находится в текущем каталоге.

GraphResult возвращает специальный код (целое число), в зависимости от того, как прошло выполнение любой графической процедуры или функции. Код 0 (grOk) - успешное выполнение. В приведённом выше примере программы, данная функция применяется для проверки того, как прошла инициализация графического режима. Дальнейшая работа этой программы возможна лишь тогда, когда код функции GraphResult равен grOk.

CloseGraph Выключение графического режима.

Как и в текстовом режиме, в графическом начало координат находится

влевом верхнем углу, ось x направлена вправо, ось y - влево. Отличие заключается в том, что начальная точка не (1,1), а (0,0). Каждая точка на экране на самом деле представляет собой очень маленький прямоугольник (и поскольку это не совсем точка, то иногда используют специальный термин - "пиксель"). Количество точек (пикселей), умещающихся на экране по вертикали и горизонтали, называют разрешающей способностью. Разрешающая способность экрана в режиме VGAhi - 640x480. Это означает, что по горизонтали на экране умещается 640 точек, а по вертикали - 480.

Некоторых графические процедуры и функции.

Line(x1,y1,x2,y2) - процедура, рисует на экране отрезок, соединяющий точки (x1,y1) и (x2,y2).

SetColor(Color) - процедура, используется для изменения текущего цвета рисования, т.е. для задания цвета рисования прямых, окружностей, точек и пр. Color - целое число от 0 до 15, являющееся кодом цвета, или название цвета на английском языке.

GetColor - функция, возвращает текущий цвет рисования. SetBkColor - процедура, устанавливает текущий цвет фона. По умол-

чанию текущий цвет фона - чёрный.

ClearDevice - процедура, очищает графический экран, закрашивая его

втекущий цвет фона, устанавливает указатель текущей позиции в точку с координатами (0,0).

PutPixel(X,Y,Pixel) - процедура, рисует точку с координатами (X,Y) цветом Pixel.

GetPixel(X,Y) - функция, возвращает цвет точки с координатами

(X,Y).

Rectangle(x1,y1,x2,y2) - процедура, строит контур прямоугольника из линий текущего цвета.

Circle(x,y,r) рисование окружностей. X, y - координаты центра окружности, r - радиус.

20

Одесский колледж компьютерных технологий “СЕРВЕР”

В изложенных выше графических процедурах указывались точные (абсолютные) координаты фигур. Существуют процедуры, которые рисуют фигуры не в конкретном месте экрана, а относительно текущего положения.

MoveTo(x,y) перемещает текущий указатель координат в точку с координатами (x,y). Точка на экране не высвечивается.

MoveRel(Dx,Dy) перемещает текущий указатель координат на заданное расстояние (Dx, Dy) по отношению к его предыдущему положению (точка на экране не высвечивается).

Процедуры MoveTo и MoveRel выполняют одно и то же действие - перемещение текущего указателя координат. Но аргументами MoveTo - являются абсолютные координаты экрана, а аргументами MoveRel - так называемые относительные координаты, то есть смещение по отношению к предыдущему положению.

LineTo(x,y) - процедура, проводит линию текущего цвета из текущей позиции в точку с координатами (x,y). После этого текущий указатель координат устанавливается в точке (x,y).

LineRel(Dx,Dy) - процедура, проводит линию текущего цвета из текущей позиции в точку, сдвинутую относительно исходной позиции на величины (Dx,Dy). Текущий указатель перемещается относительно предыдущего на величину (Dx,Dy).

Можно рисовать заполненные фигуры. Параметры рисования заполненных фигур задаются процедурой SetFillStyle. С её помощью устанавливаются текущий орнамент рисования и и текущий цвет рисования.

SetFillStyle(p, c) Задаёт стандартный орнамент и цвет заполнения фигур. (p - номер стандартного орнамента; c - цвет заполнения фигур (номер цвета в палитре)).

Bar(x1,y1,x2,y2) Строит прямоугольник, закрашенный текущим орнаментом и цветом заполнения. x1,y1,x2,y2 - координаты левого верхнего и правого нижнего углов прямоугольника. Координаты текущей позиции не изменяются.

Bar3D(x1,y1,x2,y2,Depth, Top) Строит параллелепипед, закрашенный текущим орнаментом и цветом заполнения. x1,y1,x2,y2 - координаты левого верхнего и правого нижнего углов передней грани; Depth - ширина боковой грани (отсчитывается по горизонтали); Top - признак включения верхней грани (если true - верхняя грань вычерчивается, если false - верхняя грань не отображается). Координаты текущей позиции совпадают с координатами правого, дальнего, верхнего угла параллелепипеда. При Depth=0, координаты текущей позиции совпадают с координатами левого верхнего угла.

PieSlice(x,y, stA,endA,r) Строит сектор круга, закрашенный текущим орнаментом и цветом заполнения. x,y - координаты центра сектора круга; stA - начальный угол (в градусах); endA - конечный угол (в градусах); r - радиус сектора. Координаты текущей позиции (x,y).

21

Одесский колледж компьютерных технологий “СЕРВЕР”

FillEllipse(x,y, xr,yr) Строит эллипс, закрашенный текущим орнаментом и цветом заполнения. x,y - координаты центра эллипса; xr,yr - горизонтальная и вертикальная полуоси эллипса. Координаты текущей позиции (x,y).

FloodFill(x,y, Border) Закрашивает область, ограниченную непрерывной линией, текущим орнаментом и цветом заполнения. x,y - координаты любой точки, внутри закрашиваемой области; Border - цвет линии, до которой производится закрашивание.

Добавить команды закраски и пару примеров

Переменные. Оператор присваивания. Управление выводом информации.

На предыдущих занятиях, на примерах простейших программ, Вы научились работать с константами. Теперь Вы понимаете, константа - это неизменяемая величина, например число 5. Для перехода к разработкам более сложных программ Вам придётся познакомиться с важнейшим понятием в программировании - понятием переменных. В процессе выполнения программ различные данные могут многократно изменяться и использоваться для разных целей. Для их хранения, преобразования и использования в компьютере отводятся некоторые области памяти. Для того, чтобы указать какие именно данные будут храниться в той или иной области памяти, этим областям задают имена. Эти области памяти и называют переменными. Таким образом, переменные - это проименованные области памяти, в которых временно хранятся данные программы.

Представьте себе, что программа вычисляет квадрат какого-то числа, а само число может изменяться. При этом в программе используется не само число, а указывается её переменная, которую в программе можно изменять различными способами.

Значение переменной можно сохранить, а потом снова использовать - для этого переменной присваивается имя (индификатор). Значение каждой переменной хранится в определённой ячейке памяти компьютера, которая помечена именем этой переменной.

Кроме имени у каждой переменной должен быть описан её тип. Например, в переменной может хранится целое число(тип integer) или вещественное число(тип real).

Все переменные описываются в разделе описания переменных. Этот раздел располагается непосредственно перед “телом программы” (т.е. перед словом “BEGIN”) и начинается со служебного слова “VAR”

Var

<список переменных 1>: <тип 1>;

22

Одесский колледж компьютерных технологий “СЕРВЕР”

<список переменных 2>: <тип 2>; Например:

VAR

a : integer; b, t1 : real;

Вэтом примере объявлено три переменных: переменная a целого типа, и переменные b и t1 вещественного типа. Объявить целую переменную, это значит зарезервировать в памяти машины ячейку памяти для хранения любого целого числа. Обратиться к этой ячейке можно по имени (идентификатору) которое выбрано Вами в разделе объявления переменных.

Например

VAR

a : integer; BEGIN

Writeln(a)

END.

Врезультате выполнения данной программы на экране распечатается число “0”. Это объясняется тем, что изначально в переменную заносится нулевое значение. Для того чтобы в переменную занести другое значение нужно в теле программы использовать операцию присваивания , которая записывается следующим образом:

<имя переменной> := <выражение>

Рассмотрим следующий пример программы:

Программа

Ячейки памяти

Var

 

 

 

 

A,B,C:integer;

0

0

0

 

A

B

C

 

BEGIN

 

 

 

 

 

 

 

 

 

A:=5;

5

0

0

 

A

B

C

 

 

 

 

 

 

B:=8;

5

8

0

 

A

B

C

 

A:=B;

 

 

 

 

8

8

0

 

 

 

 

A

B

C

 

Пояснения

Описали три переменных целого типа. Им присвоились нулевые значения

Присвоили переменной A новое значение.

Присвоили переменной B новое значение

Присвоили переменной A значение, которое хранится в переменной B

23