Программирование на Pascal / Delphi / Лекции по Паскалю1 / O_Стандартные модули
.docСтандартные модули
Модули представляют собой средство для создания библиотек стандартных подпрограмм и данных. Модуль может быть заранее оттранслирован и храниться в каталоге модулей файловой системы MS DOS. В среде Turbo-Pascal 7.0 имеется большое количество стандартных подпрограмм и данных, объединенных в несколько стандартных модулей. Здесь мы рассмотрим лишь некоторые из них, более подробно см.[4, 5, 11, 13, 14].
При необходимости использования процедур и функций стандартных модулей, в программе первой строкой должно быть указано следующее предложение:
Uses <список имен модулей>;
<список имен модулей> включает перечисленные через запятую имена
стандартных модулей, подключаемых к программе.
Модуль System - включает наиболее часто употребляемые стандартные процедуры и функции (типа Sqrt, Sqr, Sin, Cos и др.). Он автоматически подключается к любой программе, поэтому не требует указания в списке Uses.
Модуль Crt - обеспечивает доступ в к возможностям экрана монитора в текстовом режиме, когда весь экран рассматривается как совокупность отдельных символов, в отличие от графического режима, когда доступна каждая точка экрана (пиксела).
Модуль Graph - включает программные средства, управляющие графическим режимом работы монитора.
Процедуры и функции модуля Crt
-
Процедура ClrScr
Очищает экран и перемещает курсор в левый верхний угол.
-
Процедура TextMode
Процедура задания текстового режима монитора:
Режим |
Количество строк |
Количество символов |
Установка режима |
Значение параметра |
Черно-белый |
25 |
40 |
TextMode(BW40) |
0 |
Черно-белый |
25 |
80 |
TextMode(BW80) |
2 |
Цветной |
25 |
40 |
TextMode(CO40) |
1 |
Цветной |
25 |
80 |
TextMode(CO80) |
3 |
Примечание: TextMode без параметров обеспечивает выход на исходный режим умолчания из любых других режимов.
-
Процедура TextColor(X)
Обеспечивает выбор цвета символов. Где X:byte - параметр установки цвета из диапазона 0..15 или константа, согласно приведенной ниже цветовой шкале.
X |
Константа |
Цвет |
X |
Константа |
Цвет |
|
|
|
7 |
LightGray |
светло-серый |
0 |
Black |
черный |
8 |
DarkGray |
темно-серый |
1 |
Blue |
синий |
9 |
LightBlue |
светло-синий |
2 |
Green |
зеленый |
10 |
LightGreen |
светло-зеленый |
3 |
Cyan |
голубой |
11 |
LightCyan |
светло-голубой |
4 |
Red |
красный |
12 |
LightRed |
светло-красный |
5 |
Magenta |
фиолетовый |
13 |
LightMagenta |
светло-фиолетовый |
6 |
Brown |
коричневый |
14 |
Yellow |
желтый |
|
|
|
15 |
White |
белый |
Примечание: Использование дополнительной константы Blink обеспечивает мерцание.
Например TextColor(Red);{красные символы}
TextColor(Red+Blik);{красные мерцающие символы}
Высокая яркость обеспечивается процедурой HightVideo;
Низкая яркость обеспечивается процедурой LowVideo;
-
Процедура TextBackGround(X)
Процедура обеспечивает выбор цвета фона экрана. X:byte, устанавливает цвет фона из диапазона 0..7 согласно приведенной выше цветовой шкалы .
Пример
Turbo-Pascal
Uses Crt;
...
CtrScr;{очистка экрана}
TextBackGround(7);{цвет фона светло-серый}
TextColor(Red);{цвет символов красный}
Write(‘Turbo-‘);
TextColor(Blue);{цвет символов голубой}
Write(‘Pascal’);
-
Процедура GoToXY(X,Y)
Перемещает курсор в точку экрана с координатами X,Y:byte , при этом
не разрушая ранее выведенной информации. С этой процедурой связаны две функции определяющие текущие координаты курсора:
WhereX - функция возвращает значение типа byte, текущую
Х координату курсора;
WhereY - функция возвращает значение типа byte, текущую
Y координату курсора.
-
Процедура Delay(Ms)
Процедура обеспечивает задержку выполнения программы на Ms:word
миллисекунд.
-
Процедура Window(X1,Y1,X2,Y2)
Служит для установки размеров активного окна c координатами
X1,Y1,X2,Y2:byte.
X1,Y1
X2,Y2
Пример
Window(1,1,80,25); {максимальное окно}
Window(19,7,59,16);{центр}
Window(1,1,2,2);{минимальное окно}
-
Функция KeyPressed
Анализирует нажатие либой символьной клавиши на клавиатуре, тип функции : boolean.
True, если клавиша на клавиатуре нажата
KeyPressed =
False, в противном случае.
Пример
...
repeat
< выполнение действий до нажатия любой клавиши на клавиатуре>
until KeyPressed;
-
Процедуры Sound(Hz) и Nosound
Процедура Sound(Hz) заставляет встроенный динамик звучать с частотой Hz герц, а процедура Nosound выключает динамик.
Пример
Uses Crt;
begin
Sound(500);{динамик включен с частотой 500 Гц}
Delay(5000);{продолжительность звучания 5 с}
Nosound
end.
Пример
{Программа конструирует мелодии из 50 звуков на основе трех
исходных значений базы: A,B,X}
Uses Crt;
Var I,A,B,X : integer;
M :array[1..8] of integer;{массив для записи частот звуков}
begin
M[1]:=262; M[2]:=294; M[3]:=330; M[4]:=349;
M[5]:=392; M[6]:=440; M[7]:=494; M[8]:=523;
ClrScr;
Writeln(‘Введите базу: A,B,X’); Readln(A,B,X);
for I:=1 to 50 do
begin
X:=(A*X+B+(I+Random(8))) mod 8;
Sound(M[X]);
Delay(200);
Nosound
end
end.
Процедуры и функции модуля Graph
Модуль Graph включает процедуры и функции, которые обеспечивают возможность работы монитора в графическом режиме.
-
Процедура инициализации графического режима InitGraph
InitGraph(GraphDriver,GraphMode,DriverPath);
GraphDriver - целая переменная, в которую записывается код требуемого графического драйвера, например:
GraphDriver:=EGA;{монитор EGA}
GraphDriver:=Detect;{автоопределение типа драйвера}
GraphMode - целая переменная, в которую процедура помещает код графического режима работы, определяя размер графического поля и палитру цветов (подробно см.[5]);
DriverPath - строка, содержащая путь к драйверу, или пустая строка, если драйвер находится в текущем каталоге.
Для очистки графического экрана используется процедура ClearDevice.
Для завершения работы в графическом режиме и переходе в текстовый режим, используется процедура CloseGraph.
Пример
Uses Graph;
Var Gd,Gm: integer;
begin
Gd:=Detect;{автоопределение драйвера}
InitGraph(Gd,Gm,’D:BP\BIN’);
if GraphResult <> grOK then Halt(1);
{если результат инициализации не соответствует стандартной
константе grOK, то программа завершается}
<область использования процедур и функций модуля Graph>
CloseGraph {процедура закрытия графического режима}
end.
-
Процедура PutPixel(X,Y,Pixel)
Закрашивает точку с заданными координатами X,Y:integer цветом Pixel:word.
-
Процедура Line(X1,Y1,X2,Y2)
Проводит линию текущего цвета между двумя точками с координатами X1,Y1,X2,Y2:integer.
-
Процедура LineTo(X,Y)
Проводит линию текущего цвета из текущей позиции курсора в позицию с координатами X,Y:integer.
-
Процедура MoveTo(X,Y)
Перемещает курсор в точку с координатами X,Y:integer , при этом точка на экране не высвечивается. С этой процедурой связано также действие функций:
GetX - получение значения текущей координаты X;
GetY - получение значения текущей координаты Y.
А также значений GetMaxX максимальное значение координаты Х и GetMaxY - максимальное значение координаты Y.
-
Процедура Rectangle(X1,Y1,X2,Y2)
Строит контур прямоугольника текущим цветом, X1,Y1,X2,Y2:integer.
X1,Y1
X2,Y2
0<=X1<X2<=GetMaxX; 0<=Y1<=Y2<=GetMaxY
-
Процедура Circle(X,Y,Rad)
Строит окружность текущим цветом, с центром в точке с координатами X,Y:integer; радиуса Rad:word.
Rad
X,Y
-
Процедура OutText(Tx)
Выводит на экран последовательность символов Tx:string, начиная с текущей позиции курсора. Для вывода текста с заданной позиции курсора X,Y:integer - используется процедура OutTextXY(X,Y,Tx).
Пример
Uses Crt, Graph;
{Заполнение экрана прямоугольниками со
случайными координатами вершин}
Var GraphDriver,GraphMode:integer;
X1,X2,Y1,Y2:integer;
Begin
GraphDriver:=Detect;
InitGraph(GraphDriver,GraphMode,’ ‘);
if GraphResult <> grOK then Halt(1);
Randomize;
repeat
X1:=Random(GetMaxX);
Y1:=Random(GetMaxY);
X2:=Random(GetMaxX-X1)+X1;
Y2:=Random(GetMaxY-Y1)+Y1;
Rectangle(X1,Y1,X2,Y2)
until KeyPressed;
CloseGraph
end.
Для более полного ознакомления с процедурами и функциями стандартных модулей Crt, Graph и других следует обратиться к [4,5, 11,13, 14].