Основы программирования на языке Паскаль

end.

Обратите внимание на последний оператор writeln. Если его убрать, режим мерцания символов сохранится после завершения программы, несмотря на то, что перед ним стоит оператор

TextColor (lightgray);

Дело в том, что все цветовые определения предварительно заносятся в специальную переменную TextAttr модуля CRT и используются для нас

тройки адаптера только при обращении к процедурам write/writeln.

Процедура ClrScr очищает экран или окно (см. ниже процедуру window). после обращения к ней экран (окно) заполняется цветом фона и курсор устанавливается в его левый верхний угол. например:

uses CRT;

Var

с: char

Begin

textbackground (red);

clrscr; {заполняемэкранкраснымцветом}

writeln ("нажмителюбуюклавишу .");

с:= ReadKey, {ждемнажатиялюбойклавиши}

textbackground (black);

clrscr {восстанавливаемчерныйфонэкрана}

end.

Процедура Window определяет текстовое окно – область экрана, которая в дальнейшем будет рассматриваться процедурами вывода, как весь экран. Сразу после вызова процедуры курсор помещается в левый верхний угол окна, а само окно очищается (заполняется цветом фона). По мере вывода курсор, как обычно, смещается вправо и при достижении правой границы окна переходит на новую строку, а если он к этому моменту находился на последней строке, содержимое окна сдвигается вверх на одну строку, т.е. осуществляется «прокрутка» окна. Заголовок процедуры:

ProcedureWindow (xi, yi, х2, y2: byte);

Здесь x1 .y2 – координаты левого верхнего (х1, y1) и правого нижнего (х2, y2) углов окна. Они задаются в координатах экрана, причем левый верхний угол экрана имеет координаты (1,1), горизонтальная координата увеличивается слева направо, а вертикальная – сверху вниз.

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

uses CRT;

Var

k: integer;

Begin {создать левое окно – желтые символы на синем фоне:}

textbackground (blue);

window (5, 2, 35, 17);

textcolor (yellow);

for k:= i to 100 do

write ("нажатьклавишу enter . ");

readln, {ждемнажатия enter}

clrscr; {очищаемокно}

{создать правое окно – белые символы на красном фоне:}

textbackground (red);

textcolor (white);

window (40, 2, 70, 17);

for k:= i to 100 do

write ("нажатьклавишу enter . ");

readln;

TextMode (Co8o) {сбросить все установки}

end.

Обращение к процедуре Window игнорируется, если какая-либо из координат выходит за границы экрана или если нарушается одно из условий: Х2>Х1 или Y2>Y1. Каждое новое обращение к Window отменяет предыдущее определение окна. Границы текущего окна запоминаются в двух глобальных переменных модулях CRT: переменная WindMin типа Word хранит X1 и Y1 (Х1 – в младшем байте), а переменная того же типа WindMax – Х2 и Y2 (Х2 – в младшем байте). При желании вы можете изменять их нужным образом без обращения к Window. например, вместо оператора

Window (40, 2, 70,17);

можно было бы использовать два оператора:

WindMin:=39+(lshl8); WindMax:= 69+(16 shl 8);

(в отличие от обращения к Window, координаты, хранящиеся в переменных WindMin и WindMax, соответствуют началу отсчета 0, 0).

Процедура GotoXY переводит курсор в нужное место экрана или текущего окна. Заголовок процедуры:

ProcedureGotoXY (Х, Y: Byte);

Здесь X, Y - новые координаты курсора. Координаты задаются относительно границ экрана (окна), т.е. оператор

GotoXY (1,1);

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

Функции WhereX и WhereY. С помощью этих функций типа Byte можно определить текущие координаты курсора: WhereX возвращает его горизонтальную, а WhereY – вертикальную координаты.

В следующей программе в центре экрана создается окно светло-бирюзового цвета, которое обводится рамкой.

Program Prim52;

Uses CRT; {подключить библиотеку (модуль) CRT}

Const { константы, определяющие графические символы }

{ необходимые для вычерчивания рамки окна }

lu=#218; { левый верхний угол рамки }

ru=#191; { правый верхний угол рамки }

ld=#192; { левый нижний угол рамки }

rd=#217; { правый нижний угол рамки }

h=#196; { горизонтальная черта }

v=#179; { вертикальная черта }

{ координаты окна: }

x1=14; y1=5; { верхний левый угол }

x2=66; y2=20; { нижний правый угол }

Vark:integer;

BeginClrScr; { очиститъ экран}

textmode(co80); { сброситъ все установки }

textbackground(lightcyan); { фон окна светло-бирюзовый }

textcolor(yellow); { цвет текстов в окне желтый }

window(x1,y1,x2,y2); { открытъ окно с координатами }

ClrScr;

{ рисуем рамку вокруг окна}

Write(lu); { левый верхний угол }

for k:=x1+1 to x2-1 do

write(h); { верхнююгоризонтальную черту }

write(ru); { правый верхний угол }

for k:=y1+1 to y2-1 do { рисуем вертикальные линии }

{ посимвольно слева и справа и построчно за счет цикла}

Begin GotoXY(1,k-y1+1); { курсор на левую границу }

write(v); { вывести вертикальную черточку }

GotoXY(x2-x1+1,whereY); { курсор на правую границу }

write(v); { вывести вертикальную черточку }

{ перейти на новую строку, пока не кончится цикл }

end;

write(ld); { левый нижний угол }

Window(x1,y1,x2,y2+1);

GotoXY(2,y2-y1+1); { kypcop внижнийлевыйугол+1}

{ нового окна, без учета рамки }

for k:=x1+1 to x2-1 do write(h);{ нижнююгоризонтальную черту}

write(rd); { нижний правый угол}

TextBackground(LightCyan);

GotoXY(2,2); { курсор в левый верхний угол}

{нового окна без учета рамки}

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 
 31 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы