Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
19.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
196 Кб
Скачать
☆

1.2. Пернетақтаны басқару функциялары

MS-DOS операциялық жүйесінде көпшілік пернелер (Shift,Ctrl,Alt,Caps Lock, Num Lock, Scroll Lock басқа) арнайы символдар болып есептеледі. Осы пернелердің кезкелгенін басқан сәтте оның кеңейтілген коды арнайы пернетақта буферіне жазылып отырады. Буферде соңғы басылған 16 перненің коды ғана сақталады және программа орындалу кезінде оны оқуға болады. Кеңейтілген кодтар 2 байттан тұрады. Көптеген пернелердің кодтары 1-ші байтқа (алфавитті-цифрлы түймелер), ал кейбіреуі 2-ші байтқа (1-ші байты 0) жазылады. Кейбір жиі қолданылатын пернелердің кеңейтілген кодтарын төмендегі кестеден көруге болады:

Код

Перне

Код

Перне

1-ші байт

2-ші байт

1-ші байт

2-ші байт

8

-

Backspace

0

59..68

F1..F10

9

-

Tab

0

71

Home

13

-

Enter

0

72

↑

27

-

Esc

0

73

PageUp

32

-

Үзік

0

75

←

42,43,45,47

-

* + - /

0

77

→

44,46

-

, .

0

79

End

48..57

-

0..9

0

80

↓

60,62

-

< >

0

81

PageDown

65..90

-

A..Z

0

82

Insert

97..122

-

a..z

0

83

Delete

KeyPressed функциясы Boolean типті - пернетақта буферінің бос не бос емес-тігін білдіреді. Егер функция орындалғанға дейін бірде-бір түйме басылмаса, онда мәні False, әйпесе мәні True болады. Ерекшелігі, фунция программаның орындалуын кідірпейді.

ReadKey функциясы Char типті- мәні пернетақта буферінен оқылған символ. Егер функция орындалғанға дейін бірде бір перне басылмаған болса, онда программаның орындалуы кезкелген бір перне басылғанша кідіртіледі. ReadKey функциясының жәрдемімен кезкелген перненің кодын оқуға болады. Символы бірінші байтқа жазылған перненің кодын оқу үшін ReadKey функциясын 1 рет, ал қалғандарына 2 рет қолдану керек.

Кезкелген перненің кеңейтілген кодын анықтауға мүмкіндік беретін программа құрыңыз. Программаны аяқтау үшін "Үзік" пернесін (коды - #32) басу қажет болсын.

Program Prost_52;

uses CRT;

var ch : char;

begin

repeat

ch := ReadKey;

if ch = #0 then ch := ReadKey;

Writeln(ord(ch));

until ch = #32;

end.

1.3. Экранға мәтін шығару процедуралары мен функциялары

1982 жылдан бастап IBM фирмасы CGA (Color Graphics Adapter) түсті графикалық адаптерін пайдаланатын дербес компьютерлерді шығара бастады. Бұл адаптер монитор экранына 16 түспен мәтіндік режимде 40х25 не 80х25 символ, ал графикалық режимде 320х200 не 640х200 пиксел (нүкте) шығаруға мүмкіндік берді. CGA-ның мәтіндік мүмкіндіктері IBM фирмасының кейінгі буын адаптерлерінде (EGA, MCGA, VGA, SVGA) стандарт ретінде сақталған. CRT модулі осы типті адаптерге қатысты мүмкіндіктерді қарастырады.

TextMode процедурасы адаптердің жұмыс режимін анықтайды. Процедура тақырыбы:

Procedure TextMode (TM: Word);

Мұнда TM - мәтіндік режимнің коды. CRT модулінде оның негізгі 4 тұрақты мәні бар:

const

BW40 = 0; { 40х25 ақ-қара режим }

Co40 = 1; { 40х25 түсті режим }

BW80 = 2; { 80х25 ақ-қара режим }

Co80 = 3; { 80х25 түсті режим }

TextMode процедурасымен қойылған соңғы режимнің коды LastMode жаһанды айнымалысында сақталады. Оны экранның бұрынғы қалпын қайтару үшін пайдаланады. TextMode процедурасы орындалғанда экран тазаланып, оның бұрынғы түсі жойылады және көрсеткіш экранның сол жақ жоғарғы бұрышына қойылады. Мәтіндік режимде экранда бейнеленетін әрбір символдың позициясы жатық (x) және тік (y) кординаталарымен анықталады. Экранның сол жақ жоғарғы бұрышының координаталары (1,1) болады да, x оңға қарай, y төмен қарай өседі:

TextColor процедурасы экранда бейнеленетін символдың түсін анықтайды. Процедура тақырыбы:

Procedure TextColor (Color: Byte);

TextBackground процедурасы экран (символ) төсегінің түсін анықтайды. Процедура тақырыбы:

Procedure TextBackground (Color: Byte);

Мұнда Color - түс коды. CRT модулінде оның 17 тұрақты мәні бар:

const

Black

= 0

{қара}

Blue

= 1

{көк}

Green

= 2

{жасыл}

Cyan

= 3

{көгілдір}

Red

= 4

{қызыл}

Magenta

= 5

{күлгін}

Brown

= 6

{қоңыр}

LightGray

= 7

{сұрғылт}

DarkGray

= 8

{сұр}

LightBlue

= 9

{ашық көк}

LightGreen

= 10

{ашық жасыл}

LightCyan

= 11

{ашық көгілдір}

LightRed

= 12

{алқызыл}

LightMagenta

= 13

{қызғылт}

Yellow

= 14

{сары}

White

= 15

{ақ}

Blink

=128

{жыпылықтау}

ClrScr процедурасы экранды (терезені) тазалайды және оны TextBackground процедурасы анықтаған төсек түсімен толтырады. Көрсеткіш экранның сол жақ жоғарғы бұрышына қойылады. Мысал:

Экран төсегінің түсін өзгерте отырып, түсті мәтін шығару.

Program Prost_53;

uses CRT;

var ch: char;

begin

TextBackground(1); ClrScr;

TextColor(14); Writeln('Алгоритм'); Ch:=ReadKey;

TextBackground(6); ClrScr;

TextColor(3); Writeln('Программа');

Ch:=ReadKey;

TextBackground(0); ClrScr;

end.

Window процедурасы мәтіндік терезені (экранның тік төртбұрышты аймағын) анықтайды. Мәтіндік терезеде экранның барлық қасиеттері орындалады. Процедура орындалғанда терезе тазаланып, төсек түсімен толтырылады, ал көрсеткіш терезенің сол жақ жоғарғы бұрышына қойылады. Процедура тақырыбы:

Procedure Window (x1, y1, x2, y2: Byte);

Мұнда (x1, y1) - терезенің сол жақ жоғарғы, ал (x2, y2) - оң жақ төменгі бұрышының экрандық координаталары. Процедура орындалғанда экрандық координаталар соңғы терезеге қатысты өзгереді. Яғни, терезенің сол жақ жоғарғы бұрышының координаталары (1,1), ал оң жақ төменгі бұрышының координаталары (x2-x1, y2-y1) болады. CRT модулінде ең соңғы ашылған терезенің (x1, y1) координаталары WindMin, ал (x2, y2) - WindMax жаһанды айнымалыларында сақталады.

GotoXY процедурасы көрсеткішті экранның (терезенің) берілген позиция-сына қояды. Процедура тақырыбы:

Procedure GotoXY (x, y: Byte);

Мұнда (x, y) - көрсеткіштің жаңа координаталары. Берілген координаталар экранның (терезенің) шекарасынан шығып кеткен жағдайда процедура орындалмайды.

WhereX және WhereY функциялары (типтері: Byte) көрсеткіштің ағымдық x және y координаталарын береді.

ClrEOL процедурасы экранның (терезенің) көрсеткіш тұрған позициясынан бастап жолдың оң жақ бөлігін тазалайды, бірақ көрсеткіштің орны өзгермейді.

DelLine процедурасы экранның (терезенің) көрсеткіш тұрған жолын тазалайды, төменгі жолдар (болса) бір позицияға жоғары көтеріледі.

InsLine процедурасы экранның (терезенің) көрсеткіш тұрған позициясына жаңа жол енгізеді, көрсеткіш тұрған жолдан бастап төменгі жолдардың барлығы бір позицияға төмен түседі.

LowVideo, NormVideo, HighVideo процедураларының көмегімен символдарды экранға сәйкес төменгі, қалыпты және жоғарғы жарықтылықпен шығаруға болады.

AssignCRT процедурасы f файлдық айнымалысын экранмен (видеожадына тікелей қатысу арқылы) байланыстырады. Процедура тақырыбы:

Procedure AssignCRT (f: Text);

Экранда әуелі, ақ түспен "МАТЕМАТИКА" сөзі жазылған жасыл терезе, кейін сары түспен "ИНФОРМАТИКА" сөзі жазылған күлгін терезе шығару.

Program Prost_54;

uses CRT;

var

ch: char;

begin

TextBackground(2); TextColor(15);

Window(15, 5, 45, 13); ClrScr;

GotoXY(7, 5); Write('М А Т Е М А Т И К А');

Ch:=ReadKey;

TextBackground(5); TextColor(14);

Window(30, 11, 62, 19); ClrScr;

GotoXY(7, 5); Write('И Н Ф О Р М А Т И К А');

Ch:=ReadKey;

TextBackground(0); ClrScr;

end.