Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ПРОГРАММИРОВАНИЯ_2014.doc
Скачиваний:
391
Добавлен:
12.05.2015
Размер:
5.04 Mб
Скачать

3.7. Управление символьным выводом на экран

Использование для вывода на экран только процедур Write и WriteLn дает программисту очень слабые возможности для управления расположением на экране выводимого текста. Печать текста может производиться только сверху вниз, слева направо. Невозможны возврат к предыдущим строкам, стирание напечатанного текста, изменение цвета символов и т.д.

Дополнительные возможности управления выводом на экран дают процедуры и функции модуля CRT.

Для установления связи пользовательской программы с модулем перед разделами описаний должна быть поставлена строка

Uses CRT

Для работы с модулем CRT необходимо познакомиться со следующими понятиями: режимы экрана, координаты на экране, текстовое окно, цвет фона и цвет символа.

Режимы экрана. Вывод на экран может происходить в текстовом или графическом виде (на графических дисплеях). Мы здесь будем говорить только о текстовом выводе.

Дисплеи бывают монохроматические (черно-белые) и цветные. Монохроматические дисплеи могут работать только в черно-белом режиме; цветные — как в черно-белом, так и в цветном. Кроме того, текстовые режимы различаются по количеству символьных строк и столбцов, умещающихся на экране.

В модуле CRT каждый режим имеет определенный номер, за которым закреплено символическое имя (описанная константа). Для установки режима экрана используется процедура

TextMode(<номер режима>)

При обращении к процедуре номер режима может задаваться как числом, так и именем соответствующей константы. Например, два оператора

TextMode(1);

TextMode(CO40);

эквивалентны.

Как правило, исходный режим экрана, устанавливаемый по умолчанию, — СO80 (на цветных дисплеях).

Координаты позиции. Каждая символьная позиция на текстовом экране определена двумя координатами (X, Y). Координата Х — позиция в строке. Для крайней левой позиции в строке Х = 1.. Координата Y — номер строки, в которой находится символ. Строки нумеруются сверху вниз.

Например, в режиме 80 х 25 символ в верхнем левом углу имеет координаты (1; 1); символ в нижнем правом углу — (80; 25); символ в середине экрана — (40; 13).

Для установления курсора на экране в позицию с координатами (X, Y) в модуле CRT существует процедура:

GoToXY(X,Y)

Здесь координаты курсора задаются выражениями типа Byte.

Вот пример программы, которая очищает экран и выставляет в центре экрана символ *:

Uses CRT;

Begin

CIrScr;

GoToXY(40,13);

Write('*')

End.

Используемая здесь процедура ClrScr производит очистку экрана.

Текстовое окно. Прямоугольное пространство на экране, в которое производится вывод символов, называется текстовым окном. Положение окна определяется координатами верхнего левого угла и нижнего правого угла прямоугольника. Если окно занимает весь экран, то в режиме 80 х 25 его координаты (1; 1) — (80; 25). Таким является исходное окно. Изменить положение и размер текстового окна можно с помощью процедуры

Window(Xl,Yl,X2,Y2)

Здесь аргументы — величины типа Byte; (X1, Yl) — координаты верхнего левого угла, (Х2, Y2) — координаты правого нижнего угла окна. После определения окна попытки вывода символов за его пределы оказываются безрезультатными. Повторное обращение к процедуре window с новыми параметрами отменяет предыдущее назначение.

Управление цветом. На современных цветных дисплеях типа EGA, VGA, SVGA в текстовом режиме экрана можно использовать 16 цветов.

В модуле CRT объявлены константы, имена которых представляют собой английские названия цветов, а соответствующие им значения — порядковые номера этих цветов.

Процедура назначения цвета фона:

TextBackGround(Color)

Здесь аргумент — величина типа Byte, задающая номер цвета.

Процедура назначения цвета символа:

TextColor(Color)

Если цвет фона назначается до очистки текстового окна, то после очистки окно заливается этим цветом. Если фон устанавливается после очистки экрана, то чистое окно будет иметь черный цвет (по умолчанию), а назначенный цвет фона будет устанавливаться в тех позициях, в которые выводятся символы.

Вот пример программы, в которой по очереди откроются четыре окна, и каждое из них будет залито своим фоновым цветом:

Uses CRT;

Begin

Window(1,1,40,12);

TextBackGround(White); CIrScr;

Window(41,1,80,12);

TextBackGround(Red); CIrScr;

Window(l,13,40,25);

TextBackGround(LightRed); CIrScr;

Window(41,13,80,25);

TextBackGround(Green); CirScr;

End.

По следующей программе на белом фоне в середине экрана будут выведены номера первых пятнадцати цветов. Каждый номер будет того цвета, который он обозначает.

Uses CRT;

Var I: Byte;

Begin

TextBackGround(White) ;

CIrScr;

GoToXY(l,12);

For I:=0 To 14 Do

Begin

TextColor(I);

Write(1:5) ;

End

End.

Кратко опишем еще несколько процедур управления текстовым экраном из модуля CRT. Все эти процедуры не имеют параметров.

Процедура ClrEOL. Стирает часть строки от текущей позиции курсора до конца этой строки в окне. При этом положение курсора не меняется.

Процедура DelLine. Уничтожает всю строку с курсором. Нижние строки сдвигаются на одну вверх.

Процедура InsLine. Вставляет пустую строку перед строкой, в которой стоит курсор.

Процедуры LowVideо, NormVideo, HighVideо. Устанавливают режимы пониженной, нормальной и повышенной яркости символов соответственно.

Весьма полезной является функция KeyPressed из модуля CRT. При исполнении этой функции происходит опрос клавиатуры и определяется, не нажата ли какая-нибудь клавиша. В результате функция выдает логическое значение True, если нажата любая клавиша, и значение False в противном случае. Часто эту функцию используют для организации задержки окна результатов на экране (после выполнения программы Турбо Паскаль вызывает на экран окно редактора). Перед концом программы записывается следующий оператор:

Repeat Until KeyPressed;

Это пустой цикл, который «крутится на месте» до нажатия какой-либо клавиши. В это время на экране окно результатов. После нажатия на клавишу значение KeyPressed станет равно True, цикл завершится, будет выполнен переход на метку End и на экран вернется окно редактора. Этот прием можно использовать для задержки выполнения программы в любом ее месте.

В приведенную выше программу получения на экране четырех разноцветных окон внесем следующее дополнение: после установки четырехцветного экрана выполнение программы останавливается и изображение сохраняется; затем после нажатия на любую клавишу экран возвращается в исходный режим (80 х 25, черный фон, белые символы). Для этого перед концом программы нужно добавить следующее:

Repeat Until KeyPressed;

Window(1,1,80,25);

TextBackGround(Black);

CIrScr;

О других процедурах и функциях модуля CRT читайте в книгах по Турбо Паскалю.