За время, прошедшее после создания языка программирования Паскаль, было написано огромное количество вспомогательных подпрограмм, которые можно использовать и в прикладных программах. Такие готовые подпрограммы собраны в библиотеки и оформлены в виде модулей. Модуль – это специальным образом оформленный программный код, который не может быть исполнен самостоятельно, но может быть подсоединен и использован любой программой. Название имеющихся в языке Паскаль модулей, наименования составляющих их подпрограмм, можно найти в литературе.
Необходимость использовать библиотеки подпрограмм возникает, например, при рисовании на экране. При этом необходимо обычно использовать библиотеки Graph и Сrt. Для подключения этих библиотек в начале программы нужно указать их имена в директиве uses, например:
Uses CRT, GRAPH;
Модуль CRT содержит процедуры и функции, обеспечивающие управление текстовым режимом работы экрана, работу со звуком, процедуры очистки экрана и работы с клавиатурой. Модуль GRAPH содержит обширный набор типов, констант, процедур и функций (более 50) для управления графическим режимом работы экрана.
Указанные библиотеки содержат десятки процедур и функций, ниже приведено описание некоторых из них. Более полное описание этих модулей можно найти в литературе. В приведенном ниже описании указаны количество и тип параметров и тип функций, чтобы программист смог сориентироваться, какие данные можно использовать при вызове этих подпрограмм. Однако при написании операторов вызова, типы не указываются, как показано в примерах в следующем параграфе.
putpixel(x, y: integer; color: word) – рисует точку с координатами (х, у) и цветом color.
line(x1, y1, x2, y2: integer) – рисует линию, начинающуюся в точке (х1, у1) и заканчивающуюся в точке (х2, у2).
rectangle(x1, y1, x2, y2: integer) – рисует прямоугольник, (х1, у1) – координаты левого верхнего угла, (х2, у2) – правого нижнего.
bar(x1,y1,x2,y2) - рисует закрашенный прямоугольник, (х1, у1) – координаты левого верхнего угла, (х2, у2) – правого нижнего. Цвет и шаблон закраски устанавливается процедурами SetFillStyle и SetFillPattern.
circle(x, y: integer; R: word) – рисует окружность с центром в точке (х, у) и радиусом R.
arc(x,y:integer; stangle, endangle, R :word); - рисует дугу окружности, из угла stangle к endangle, с радиусом R, используя точку с координатами (х, у), как центр окружности.
ellipse(x, y: integer; stangle, endangle, xr, xy: word) – рисует дугу эллипса с центром в точке (х, у), полуосями xr, yr; stangle и endangle – начальный и конечный углы дуги (описываются от горизонтальной оси против часовой стрелки).
pieslice(x, y: integer; stangle, endangle, R :word) - строит сектор круга, закрашенный текущей штриховкой и цветом заполнения (устанавливается процедурами setfillstyle и setfillpattern). (х, у) — координаты центра сектора круга; stangle и endangle – начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной вправо; R — радиус сектора.
setcolor(color: word) – устанавливает цвет линии, параметр color принимает значения в диапазоне от 0 до 15.
setbkcolor(color :word); -устанавливает цвет фона color, номера цветов фона находятся в диапазоне от 0 до 15.
floodfill(x, y: integer; border : word); -закрашивает замкнутую область, используя стиль и цвет закраски, установленные процедурами setfillstyle и setfillpattern. Точка с координатами (х, у) - начальная точка внутри замкнутой области, с которой начнется закраска. Закрашивается область, ограниченная цветом с номером border.
setfillstyle(pattern :word; color :word); - устанавливает цвет сolor и стиль закраски рattern (целое число 0-12).
setfillpattern(pattern :fillpatterntype; color :word); - устанавливает цвет сolor и шаблон закраски рattern, определенный пользователем через тип fillpatterntype следующим образом:
type fillpatterntype = array [1..8] of byte;
outtextxy(x, y : integer; textstring : string); -отображает строковый параметр textstring с позиции (x,y) графического экрана.
Расшифровка стилей и шаблонов закраски процедуры setfillstyle
Параметр pattern может принимать следующее значения:
0 - EmptyFill - не закрашивать (фон), 1 - SolidFill - сплошная закраска, 2 – LineFill – штриховка горизонтальными линиями, 3 – LtSlashFill – штриховка косыми линиями //////, 4 – SlashFill – утолщенные линии ///////////, 5 – BkSlashFill - утолщенные линии \\\\\\\\\\\\, 6 – LtBkSlashFill – штриховка \\\\\\\\\\\,7 – HatchFill - заполнение ++++++, 8 – XhatchFill – заполнение ХХХХХХХХХ, 9 – InterleaveFill - заполнение ########, 10 - WideDotFill – заполннение редкими точками, 11 – CloseDotFill – заполнение частыми точками, 12 – UserFill – узор, определяемый пользователем. В последнем случае, для определения типа закраски необходимо использовать процедуру setfillpattern.
Задание цветов в графическом режиме можно выполнять различными способами:
· Указание номера цвета цифрами от 0 до 15;
· Указание названия цвета по-английски (без кавычек);
Таблица 6.1. Коды и наименования цветом для программирования в Pascal
Цвет |
Номер цвета |
Название |
Пример |
Черный |
0 |
Black |
|
Синий |
1 |
Blue |
|
Зеленый |
2 |
Green |
|
Циановый |
3 |
Cyan |
|
Красный |
4 |
Red |
|
Фиолетовый |
5 |
Magenta |
|
Коричневый |
6 |
Brown |
|
Светло-серый |
7 |
Ligthgray |
|
Темно-серый |
8 |
Darkgray |
|
Голубой |
9 |
Ligthblue |
|
Светло-зеленый |
10 |
LigthGreen |
|
Светло-циановый |
11 |
LigthCyan |
|
Розовый |
12 |
LigthRed |
|
Малиновый |
13 |
LigthMagenta |
|
Желтый |
14 |
Yellow |
|
Белый |
15 |
White |
|
Более полное описание процедур модуля Graph дано в приложении М.
delay(ms:word); – процедура приостанавливает выполнение программы на ms миллисекунд.
keypressed:boolean; – процедура возвращает значение TRUE, если была нажата какая-либо клавиша на клавиатуре и FALSE – если нет.
readkey:char; – функция считывает символ, соответствующий нажатой клавише. Если нажата функциональная клавиша, в первый раз функция принимает значение #0, во второй раз – значение кода этой клавиши. Если ни одна клавиша не была нажата, то функция приостанавливает работу программы и ожидает нажатия клавиши.
Более полное описание процедур модуля Crt дано в приложении Л.
Другие процедуры данных модулей можно найти в литературе по языку Паскаль, а также в приложениях к данному пособию.