Модуль CRT 1. Работа с экраном. Модуль CRT. 2. Подпрограммы модуля CRT. 3. Оформление диалога в прикладных пpогpаммах.
Модуль CRT Модуль Crt содержит константы, переменные и программы для работы с экраном в текстовом режиме: управление курсором, управление цветом, ввод информации с клавиатуры, управление звуковым сигналом.
Установка текстовых режимов Text. Mode (Mode); Здесь Mode – код текстового режима. В качестве значений этого выражения могут использоваться следующие константы: 0 – черно-белый режим 40 x 25; 1 – цветной режим 40 x 25; 2 – черно-белый режим 80 x 25; 3 – цветной режим 80 x 25.
Процедуры управления выводом текстовой информации n Low. Video; -- устанавливает режим минимальной яркости свечения выводимых на экран символов; n Norm. Video; -- устанавливает режим нормальной яркости свечения выводимых на экран символов; n High. Video; -- устанавливает режим наибольшей яркости свечения выводимых на экран символов; n Тext. Back. Ground (Color); -- устанавливает цвет фона; n Text. Color (Color); -- устанавливает цвет выводимых символов; Параметр Соlor это выражение целого типа, соответствующее одной из констант цветов:
Работа с окнами n Window(x 1, y 1, x 2, y 2); -- определяет на экране новое активное текстовое окно. x 1, y 1 – координаты левого верхнего угла окна, x 2, y 2 – координаты правого нижнего угла окна. n Clrscr; -- очищает активное окно и устанавливает курсор в левый верхний угол; n Clr. Eol; -- очищает строку активного окна от текущей позиции курсора до конца строки без изменения позиции курсора; n Go. To. XY(x, y); -- перемещает курсор в позицию с координатами x, y в рамках активного окна;
Функции n Where. X; -- возвращает x-координату текущей позиции курсора (относительно активного окна); n Where. Y; -- возвращает y-координату текущей позиции курсора (относительно активного окна); n Read. Key; -- считывает код символа с клавиатуры. Специальные клавиши генерируют расширенные коды клавиш, состоящие из двух значений, причем первое всегда равно #0. При нажатии специальной клавиши функция возвращает сначала нулевой символ #0, а затем вторую (расширенную) часть кода.
Процедуры управления звуком n Delay (Time); -- вызывает задержку выполнения программы на Time милисекунд; n Sound (Hz); -- включает внутренний динамик. Hz задает частоту генерируемого динамиком сигнала в герцах. Звуковой сигнал подается до тех пор, пока не будет выключен процедурой No. Sound. n No. Sound; -- отключает внутренний динамик.
Стандартные элементы оформления программы: заставка; Ø ввод исходных данных; Ø запросы на выбор нужного варианта выполнения программы (меню); Ø вывод результатов; Ø запросы на продолжение вычислений или прекращение работы. Ø
Покадровое планирование Кадр 1. - Заставка Кадр 2. - Главное меню
Основные элементы 1. 2. 3. 4. 5. Построение различных рамок Организация окон Формирование курсора Установка цвета и фона Подача звуковых сигналов
Hабоp пpоцедуp для офоpмления диалога в текстовом pежиме n Процедура Colors предназначена для установки цвета символов и фона. Ее удобно использовать, если на экран выводится несколько элементов с разным цветовым оформлением. Procedure Colors(cv 1, cv 2: byte); {установка цвета символов (cv 1) и цвета фона (cv 2) в текстовом режиме} begin Text. Color(cv 1); Text. Back. Ground(cv 2); end; {Colors}
Procedure Shadow (x 1, y 1, x 2, y 2, cv 1, cv 2: byte); Процедура Shadow закрашивает прямоугольную область экрана, определяемую координатами верхне левой (x 1, y 1) и нижней правой (x 2, y 2) точек, заданным цветом фона cv 2 и устанавливает цвет символов cv 1 для последующего вывода информации в эту область.
Procedure Shadow(x 1, y 1, x 2, y 2, cv 1, cv 2: byte); {заполнение цветом прямоугольного участка экрана} Var i: byte; begin Colors(cv 1, cv 2); For i: =y 1 to y 2 do begin Goto. XY(x 1, i); Write(‘ ‘: x 2 -x 1+1); end; 1. end; {Shadow}
Процедура Single ограничивает прямоугольную область экрана (x 1, y 1)- (x 2, y 2) рамкой, составленной из символов линий псевдографики.
Procedure Single(x 1, y 1, x 2, y 2, cv 1, cv 2: byte); const s 1= #218; s 2= #196; s 3= #191; s 4= #179; s 5= #192; s 6= #217; var i: byte; begin Colors(cv 1, cv 2); Shadow(x 1+1, y 1+1, x 2+1, y 2+1, cv 1, 0); Shadow(x 1, y 1, x 2, y 2, cv 1, cv 2); Goto. XY(x 1, y 1); Write(s 1); For i: = x 1+1 to x 2 -1 do write(s 2); write(s 3); For i: =y 1+1 to y 2 -1 do begin Goto. XY(x 1, i); Write(s 4); Goto. XY(x 2, i); Write(s 4); end; Goto. XY(x 1, y 2); Write(s 5); For i: =x 1+1 to x 2 -1 do write(s 2); write(s 6); end; {Single}
Program Dialog; {оформление диалога в текстовом режиме } Uses Crt; Var a, f : real; Procedure Colors(cv 1, cv 2: byte); …………… end; {Colors} Procedure Shadow(x 1, y 1, x 2, y 2, cv 1, cv 2: byte); …………………. . end; {Shadow} Procedure Single(x 1, y 1, x 2, y 2, cv 1, cv 2: byte); …………. end; {Single} {----- Пpимеp использования пpоцедуp ------} Begin Colors(11, 1); {основные цвета} Clr. Scr; { -- офоpмление ввода данных} Single(25, 8, 55, 14, 10, 3); Goto. XY(29, 9); Write('Вычисление синуса числа'); Goto. XY(30, 10); Write('Ввод исходных данных: '); Goto. XY(32, 12); Write('Аpгумент = '); Readln(a);
{ очистка экpана для следующего этапа} Shadow(25, 8, 56, 15, 10, 1); Delay(600); { вычисления} f: =sin(a); { офоpмление вывода pезультатов} Single(25, 8, 55, 14, 5); Goto. XY(30, 9); Write('Результаты вычислений: '); Goto. XY(32, 11); Write('Аpгумент = ', a: 8: 5); Goto. XY(32, 12); Write('Синус = ', f: 8: 5); readln; { очистка экpана для следующего этапа} Shadow(25, 8, 56, 15, 10, 1); { завеpшение pаботы} Shadow(25, 8, 55, 14, 15, 7); Goto. XY(30, 10); Write('Завеpшение pаботы. . '); Delay(1000); end.