
- •14. Модули
- •14.1. Введение
- •14.2. Форма модульной программы
- •14.3. Стандарты структурного программирования
- •14.4. Модули в турбо-паскале
- •Interface
- •Implementation
- •14.5. Использование модулей
- •14.6. Стандартные модули турбо-паскаля
- •14.7. Пример использования модулей
- •Содержимое базы данных в памяти хранится в массиве
- •Interface
- •Контрольные вопросы
14.5. Использование модулей
При необходимости воспользоваться информацией из других модулей, в программе необходимо поместить специальный оператор Uses (использовать), в котором перечисляются через запятую имена этих модулей. Как уже говорилось выше, необходимо, чтобы имена модулей совпадали с именами файлов, в которых они размещются. Оператор Uses должен располагаться в самом начале раздела деклараций.
Оператор Uses может быть помещен:
в тексте программы непосредственно после заголовка
в разделе Interface модуля Unit
в разделе Implementation модуля Unit.
Пример: Uses CRT, Graph;
14.6. Стандартные модули турбо-паскаля
В Турбо-Паскале имеется некоторый набор модулей, устанавливаемых в процессе инсталяции по умолчанию. Наиболее часто используемые из них: DOS, CRT, GRAPH. Приведем краткие сведения о них.
Модуль DOS содержит информацию, обеспечивающую возможность:
работать с файлами (чтение, поиск и т.д.);
запрашивать из программы текущие время и дату;
узнавать размер свободной памяти на диске.
Модуль CRT обеспечивает управление персональным компьютером при работе:
с экраном монитора,
со звуком,
с клавиатурой и др.
Модуль GRAPH – содержит широкий набор процедур и функций, обеспечивающих вывод информации на экран в графическом режиме.
Во встроенном справочнике системы Турбо Паскаль и в любой книге по Турбо Паскалю приводятся полный перечень «стандартных» модулей и полные сведения о функциях каждого модуля.
Здесь мы рассмотрим несколько более подробно только функции модуля CRT, обеспечивающие вывод на экран информации в текстовом режиме.
Прежде всего, учтем, что с точки зрения стандартного Турбо Паскаля экран монитора при работе в текстовом режиме представляется матрицей знакомест:
В одном знакоместе может быть размещен только один символ (в том числе и символ пробела). Каждое знакоместо характеризуется, кроме символа, еще цветом символа и цветом фона, на котором он выделяется.
По инициативе программы монитор может быть переведен в несколько различных текстовых режимов, которые отличаются количеством знакомест и цветов.
В модуле CRT объявлен ряд констант, определяющих режимы монитора:
константы, определяющие число знакомест (наиболее распространенный режим 25 х 80 – 25 строк по 80 знакомест в строке);
константы, определяющие цветовую палитру: монохромный (черно-белый) режим или цветной (16 цветов – от черного до белого)
и ряд других.
Цвета. В текстовом режиме (для цветного монитора) предусмотрено 16 цветов. Каждому цвету сопоставлена константа, а объявление цветов размещается в интерфейсной части модуля:
const
Black=0;
Blue=1;
. . . .
White=15;
Цвет фона может принимать значения воссьми первых (от 0 до 7) цветов, а цвет символа – всех шестнадцати.
Процедуры определения цвета:
цвета символа:
procedure TextColor(Color:Byte);
цвета фона:
procedure TextBackGround(Color:Byte);
Процедуры яркости вывода символов:
Procedure HighVideo;
Procedure LowVideo;
Procedure NormVideo;
Очистка экрана:
Procedure ClrScr - полностью;
Procedure ClrEol - до конца текущей строки от позиции курсора.
Управление курсором:
Function WhereX:Byte; - вернуть значение Х-координаты курсора
Function WhereY:Byte; - вернуть значение Y-координаты курсора
Procedure GoToXY(X:Byte;Y:Byte); - переместить кусор в (X,Y)
Procedure Window(X1,Y1,X2,Y2:Byte); - объявить окно в виде прямоугольника с координатами (X1,Y1) для верхнего левого знакоместа и (X2,Y2) для правого нижнего знакоместа. После выполнения данной процедуры вывод на экран будет проводиться только внутри данного окна. При этом левое верхнее знакоместо будет иметь координаты (1,1) , а нижнее правое – координат (X2-X1+1, Y2-Y1+1). При этом все знакоместа вне пределов данного окна будут оставаться неизменными.
Клавиатура:
Для обработки нажатой клавиши:
Function ReadKey:Char - если нажата ASCII- клавиша, то функция возвращает символ, а если нажата функциональная клавиша, то функция возвратит значение 0.
Чтобы считать клавишу при повторном вызове существует
Function KeyPressed:Boolean - значение истинно, если нажата какая-либо клавиша.
Звук:
Procedure Sound(Hz:Word); - вывести на встроенный динамик синусоидальный сигнал с частотой Hz (Гц).
Procedure NoSound; – выключить динамик.
Procedure Delay(Ms:Word) - задержка на определенный интервал времени.