Window (X1, Y1, X2, Y2)

Здесь аргументы — величины типа Byte; (X1, Y1) — координа­ты верхнего левого угла окна; (Х2, Y2) — координаты правого нижнего угла окна.

После определения окна попытки вывода символов за его преде­лы окажутся безрезультатными. Повторное обращение к процедуре Window с новыми параметрами отменяет предыдущее назначение.

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

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

TextBackGround(Color) Процедура назначения цвета фона

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

TextColor(Color) Процедура назначения цвета символа

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

Для примера приведем программу, которая по очереди откро­ет четыре окна, и каждое из этих окон «зальется» разным фоно­вым цветом:

Uses CRT;

Begin

Window(1, 1, 40, 12);

TextBackGround(White); ClrScr;

Window(41, 1, 80, 12);

TextBackGround(Red); ClrScr;

Window(1, 13, 40, 25);

TextBackGround(LightRed); ClrScr;

Window(41, 13, 80, 25);

TextBackGround(Green); ClrScr;

End.

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

Uses CRT;

Var I: Byte;

Begin

TextBackGround(White);

ClrScr;

GoToXY(l, 12);

For I:= 0 To 14 Do

Begin

TextColor(I);

Write (I: 5)

End

End.

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

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

• процедура DelLine — уничтожает всю строку с курсором. При этом нижние строки сдвигаются на одну вверх;

• процедура InsLine — вставляет пустую строку перед строкой, в которой стоит курсор;

• процедуры LowVideo, NormVideo, HighVideo — устанавлива­ют соответственно режимы пониженной, нормальной и повышен­ной яркости символов.

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

Repeat Until KeyPressed;

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

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

Repeat Until KeyPressed;

Window(1, 1, 80, 25);

TextBackGround(Black);

ClrScr;

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

Упражнения

1. Определить, что будет напечатано следующей программой, если в качестве исходных данных заданы числа 1.0 и -2.0:

Program Roots;

Var B, C, D: Real;

Begin

Read(B, C);

D:= Sqrt(Sqr(B) - 4 * C);

WriteLn('xl =', (-B + D)/2,

'x2 =', (-B - D)/2)

End.

2. Определить, что будет напечатано следующей программой при по­следовательном введении значений 3.4 и 7.9:

Program Less;

Var X: Real; T: Boolean;

Begin

Read(X);

T:= X < Round(X);

Read(X);

T:= T And (X < Trunc(X));

WriteLn(T)

End.

3. Определить, что будет напечатано следующей программой при пос­ледовательном введении значений 36, -6 и 2345:

Program ABC;

Var А, В: Integer;

Begin

Read (А, В, А);

WriteLn(А, В: 2, А: 5)

End.

4. Составить программу вычисления суммы двух целых чисел, которая будет вести диалог с пользователем в следующем виде (вместо отточий — вводимые и выводимые числа):



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: