1-Маъруза. Дастурлаш тиллари ва уларни куллаш



Download 1,35 Mb.
bet38/68
Sana25.02.2022
Hajmi1,35 Mb.
#311154
TuriИнструкция
1   ...   34   35   36   37   38   39   40   41   ...   68
Bog'liq
PASCAL

3.26Клавиатурани бошкариш


Сканирлаш коди, бегили тугмачалар, бошкарув тугмачалари, кенгайтирилган код, ReadKey, KeyPressed, суриш тугмачалари,

Стандарт клавиатураларда уч типдаги тугмачалар мавжуд:


белгили (харфлар, сонлар);


бошкарув (функционал тугмачалар, курсорни суриш, кушиш, йукотиш ва бокалар);


суриш Ctrl, Alt, NumLock, CapsLock ва бошкалар.


Бирор -бир тугмача босилганда клавиатура микропроцессори шахсий компьютерлар стандартига мос кодни танлайди ва бу код Turbo Pascal системасида сканерлаш кодига айлантирилади. Сканерлаш кодини анализ килиш мумкин ва у клавиатурани бошкариш алгоритмининг асоси хисобланади.
Белгили тугмачалар босилганда биттагина кийматни кайтаради ва бу киймат оддий код деб айтилади.
Бошкариш клаишалари босилганда иккита кийматни кайтаради , улардан биринчиси 0 (мана шу бокариш клавишвсининг хусусиятига киради), икинчиси эса- тугмача босилгандаги катталик. Махсус тугмачаларнинг кайтариш кодларини кенгайтирилган деб кабул килинади. Клавиатурани бошкариш CRT модулининг махсус ReadKey ва KeyPressed функциялари ёрдамида бажарилади..

ReadKey функцияси белгиларни клавиатурадан укиб, Char типидаги кийматларни кайтаради.


KeyPressed. функцияси бирон тугмача босилганда True ни, акс холда False ни кайтаради.
Белгили ва бошкариш клавишларини сканерлаш кодларини куйидаги мисолда куриб чикамиз.

PROGRAM DemoScanCode;


USES Crt;
CONST
Null = #0;
Esc = #27;
F1 = #59;
F10 = #68;
InsKey = #82;
VAR
ExtendKey: boolean;
Ch: char;
FUNCTION GetKey: char;
{ функция клавиш босилишини кутиб туради }
VAR
Ch: char;
BEGIN
ExtendKey:= False;
Ch:= ReadKey;
IF Ch = Null THEN BEGIN
ExtendKey:= True;
Ch:= ReadKey
END;
GetKey:= Ch
END; { GetKey }
BEGIN { DemoScanCode }
ClrScr;
REPEAT
Ch := GetKey;
IF NOT ExtendKey THEN
Writeln('Кодли белги тугмачаси босилган ', byte(Ch))
ELSE
CASE Ch OF
F1..F10 : Writeln(' Функционал клавиш босилган');
InsKey : Writeln(' босилган')
ELSE Writeln('Кенгайтирилган код #00+', byte(Ch));
END; { case }
UNTIL (Ch <> Esc);
END. { DemoScanCode }
Энди силжиш тугмачасини кандай ишлашини куриб чикамиз. Мисол тарикасида ЦИФ (NumLock) клавишини куриб чикамиз.
Агар байтларни 0 дан 7 гача битлар йигиндиси деб каралса, NumLock га $0000:$0417 абсалют адресли байтнинг 5- бити тугри келади. NumLock клавишининг ишлаш дастури куйидагича:
PROGRAM DemoNumLock;
USES Crt;
CONST
Esc = #27;
VAR
Ch : char;
ShiftByte: byte absolute $0000:$0417;
BEGIN
REPEAT
IF KeyPressed THEN
Ch:= ReadKey;
IF ShiftByte AND $20 <> 0 THEN
Write(' NumLock тугмачаси босилган');
UNTIL Ch <> Esc;
END. { DemoNumLock }



Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   34   35   36   37   38   39   40   41   ...   68




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish