Лекция
Тема:
"Использование модуля CRT при написании программ".
План.
1. Понятие модуля в Паскале. Подключение модулей.
2. Процедуры по работе с клавиатурой.
3. Процедуры по работе со звуком.
4. Процедуры по работе с экраном.
1. Понятие модуля в Паскале. Подключение модулей.
При написании программ широкое
распространение получили модули - файлы программ, содержащие набор
процедур и функций, которые
могут быть доступны для
использования в любой программе.
Для
того, чтобы использовать процедуры и функции в
программе, необходимо подключить нужный модуль, а затем просто вызывать нужные
процедуры и функции таким же способом, как если бы они были описаны внутри
самой программы.
Подключение
модулей осуществляется в самом начале программы в блоке подключения модулей.
Для подключения используют оператор вида:
USES
имя модуля1, имя модуля2 ...;
имя модуля - это имя файла,
который содержит новые процедуры и функции. Файлы-
модули в Паскале имеют расширение *.TPU.
Паскаль
имеет стандартный набор модулей, которые можно использовать при написании
программ, и позволяет также создавать свои собственные модули, которые
впоследствии могут быть использованы в программировании.
Одним
из наиболее употребительных модулей Паскаля является модуль CRT.TPU, который
содержит процедуры и функции по работе с клавиатурой, звуком и экраном
компьютера. С помощью этого модуля можно значительно украсить свою программу.
Для подключения данного модуля
в самом начале программы нужно вставить строку
USES
CRT;
2. Процедуры по работе с клавиатурой.
При
работе с клавиатурой используется понятие буфера клавиатуры. Это специальная
область памяти, куда помещаются введенные с клавиатуры символы. Этот буфер
может вместить в себя до 16 символов, а затем постепенно вывести их на или использовать для других целей.
Процедура определения пустоты буфера.
Существует
процедура, которая определяет, была ли нажата клавиша на клавиатуре. Такое
определение бывает очень удобно, когда создают циклы, работающие до нажатия
любой клавиши.
Функция имеет вид:
KEYPRESSED;
данная
функция принимает значение TRUE, если была нажата клавиша, в противном случае
она равна FALSE.
Сам цикл до нажатия любой
клавиши имеет вид:
список
операторов
UNTIL
KEYPRESSED;
Процедура чтения данного из буфера.
Иногда
при написании программ цикл выполняется не просто до нажатия на любую клавишу,
а до нажатия на какую-то определенную клавишу. В этом случае функция KEYPRESSED
не подходит, так как она не позволяет определить введенный символ.
Пример:
USES CRT;
BEGIN
REPEAT
WRITELN
('Для остановки нажмите любую клавишу');
UNTIL
KEYPRESSED;
END.
Для этих целей используют
функцию вида:
READKEY
(символьная переменная);
Данная
процедура присваивает переменной введенный символ и очищает буфер клавиатуры.
Пример:
USES CRT;
VAR CH:CHAR;
A: REAL;
BEGIN
REPEAT
WRITE ('Введите число : ');
READLN (A);
WRITELN ('Ввод окончен? Y - да, иначе - нет');
CH:=READKEY;
UNTIL CH='Y';
END.
Процедуры работы со звуком.
В
любом ПК d системном
блоке находится динамик. Модуль CRT имеет процедуры по использованию динамика.
Каждый
звук - это волна с определенной частотой в герцах. Паскаль позволяет задавать
динамику частоту звука и его продолжительность.
Меняя
частоту и продолжительность, можно заставить ПК проигрывать некоторую мелодию.
Для создания звука используют
процедуру
SOUND
(частота в герцах)
Для задания
продолжительности звука используют
команду
DELAY
(миллисекунды)
Для остановки звука используют
команду
NOSOUND
Пример.
Написать
программу, которая издает звук занятого телефона до тех пор, пока не будет
нажата любая клавиша.
USES CRT;
VAR I:INTEGER;
BEGIN
REPEAT
FOR I:=1 TO 100 DO
BEGIN
SOUND (600);
DELAY(4);
NOSOUND
END;
DELAY
(600);
UNTIL
KEYPRESSED;
END.
Написать программу, которая
издает звук, похожий на звук сирены. Прекращение звука выполняется по нажатию
на клавишу S.
USES CRT;
VAR I:INTEGER;
CH:CHAR;
BEGIN
REPEAT
FOR I:=100 TO 3000 DO
BEGIN
SOUND (I);
DELAY (1);
END;
FOR I:=3000 DOWNTO 100 DO
BEGIN
SOUND (I);
DELAY (1);
END;
UNTIL KEYPRESSED;
UNTIL READKEY = 's';
NOSOUND
END.
4. Процедуры по работе с экраном.
Модуль
CRT содержит процедуры по работе с экраном в текстовом режиме. Это позволяет
создавать на экране окна, раскрашивать фон и символы в разные цвета.
Текстовый
режим работы экрана предполагает посимвольную выдачу информации. При таком
режиме работы экран компьютера разбивается на сетку, состоящую из 25 строк (от
0 до 24) и 80 столбцов (от 0 до 79). Нумерация строк идет сверху вниз (это ось
Y экрана), а нумерация столбцов - слева на право (это ось Х экрана).
В каждой ячейке экрана может находится символ.
Процедура задания цвета фона.
При
работе в Паскале экран ввода и вывода данных имеет черный цвет. Однако Паскаль позволяет
менять цвет фона на другой.
Для этого используется команда
вида:
TEXTBACKGROUND
(номер цвета); где номера цвета имеют следующие значения:
0 -
черный;
1 - синий;
2 - зеленый;
3 - бирюзовый;
4 - красный;
5 - малиновый;
6 - коричневый;
7 - светло-серый.
После
задания данной команды и очистки экрана, экран заполняется указанным цветом.
Цвет
фона будет действовать до тех пор, пока в программе не встретится подобная
команда с установкой другого цвета фона.
Процедура задания цвета символов.
Помимо
задания цвета фона, Паскаль позволяет задавать цвет для символов, вводимых и
выводимых на экран.
Процедура имеет вид:
TEXTCOLOR
(номер цвета); где номер цвета принимает значения:
0 - черный; 8 - темно-серый;
1 - синий; 9 - светло-синий;
2 - зеленый; 10 - светло-зеленый;
3 - бирюзовый; 11 - светло-бирюзовый;
4 - красный; 12 - светло-красный;
5 - малиновый; 13 - светло-малиновый;
6 - коричневый; 14 - желтый;
7 - светло-серый. 15 - белый;
128 -
мерцание.
При этом мерцание задается как
слагаемое к основному цвету.
Пример.
TEXTCOLOR
(2 + 128);
Текст будет вводиться
и выводиться зелеными мерцающими символами.
Цвет символов действует до тех
пор, пока в программе не встретится эта же команда с заданием нового цвета
символов.
Процедура очистки экрана.
Данная
процедура предназначена для стирания информации с экрана или в активном окне.
При стирании экран или окно заполняется цветом фона, установленным в процедуре
TEXTBACKGROUND;
Процедура имеет вид:
CLRSCR;
Процедура позиционирования курсора.
После очистки экрана курсор
становится в левый верхний угол. Вывод или ввод данных производится с этой
позиции, что не всегда приемлемо.
Для установки курсора в нужное
место применяют процедуру вида:
GOTOXY
(координата Х, координата Y);
курсор становится в столбец с
номером Х и строку с номером Y.
Вся
информация выводимая на экран будет выводится с места
установки курсора.
Пример.
USES CRT;
BEGIN
TEXTBACKGROUND (2);
TEXTCOLOR (14 + 128);
CLRSCR;
GOTOXY (34,13);
WRITE ('Доброе утро!');
END.
В результате фраза будет
напечатана по середине экрана.
При
задании координат нужно иметь в виду, что при работе с экраном Х может
принимать значения от 0 до 79, а Y - от 0 до 24.
Если
на экране описано окно, то координаты задаются относительно окна и максимальные
значения координат задаются в зависимости от размеров окна.
Процедура задания окна.
В
текстовом режиме можно на экране описать некоторую область, которая может быть
окрашена в другой цвет и иметь вид окна.
Описание окна производится с
помощью команды:
WINDOW (X1,Y1,X2,Y2);
здесь Х1,
Y1 - координата левого верхнего угла окна;
Х2,
Y2 - координата правого нижнего угла.
После
описания прямоугольной области окно активизируется командой CLRSCR;
Окно окрашивается цветом,
определенным командой TEXTBACKGROUND.
После
активизации окна допустимые координаты курсора для команды GOTOXY меняются и
равны:
для координаты Х = Х2 -1;
для координаты Y = Y2 -1.
Пример.
USES CRT;
BEGIN
TEXTBACKGROUND (1);
TEXTCOLOR (4);
WINDOW (20,5,58,19);
CLRSCR;
GOTOXY (13,7);
WRITE ('Доброе утро');
END.
На
экране может быть описано несколько окон, каждое из которых может иметь свой
цвет.
Замечания:
1.
Если описывается новое окно, то его координаты задаются относительно экрана.
2.
Если позиционируется курсор для ввода или вывода данных, то его координаты
задаются относительно того окна, которое было создано последним.
3.
Если описано новое окно, то для возврата в старое окно, его нужно заново
описывать и очищать.
Пример:
Создать окно с тенью. Это окно должно иметь полосу заголовка с текстом. По центру окна вывести текст разным цветом.