Практика программирования (Бейсик, Си, Паскаль)



Задачи, советы и ответы - часть 8


Совет 2 (QBasic)

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

Совет 3 (Си)

Для ввода кода нажатой клавиши необходимо один (обычная клавиша) или два раза (функциональная клавиша) обратиться к функции getch.

Совет 4 (Паскаль)

Для ввода кода нажатой клавиши необходимо один (обычная клавиша) или два раза (функциональная клавиша) обратиться к функции readkey.

Программа 3_05.bas

RЕМ Анализ кода нажатой клавиши CLS

GETKEY: A$=INKEY$: IF A$="" THEN GOTO GETKEY

IF ASC(A$)=27 THEN STOP

IF LEN(A$)=1 THEN

IF ASC(A$)=13 THEN

PRINT "Нажата клавиша Enter с кодом = 13": GOTO GETKEY

END IF

PRINT "Нажата обычная клавиша ' "; A$; " ' с кодом ="; ASC(A$)

ELSE

PRINT "Нажата управляющая клавиша с кодом ";ASC(RIGHT$(A$,1))

END IF

GOTO GETKEY

Программа 3_05.с

/* Анализ кода нажатой клавиши */ #include <stdio.h>

main() { unsigned char ch;

clrscr(); getkey:

ch=getch();

if(ch==27) exit(0);

if(ch==13) {

printf("\n Нажата клавиша Enter с кодом = 13");

goto getkey; }

if(ch==0) {

ch=getch();

printf("\n Нажата управляющая клавиша с кодом = %d",ch); }

else printf("\n Нажата обычная клавиша %с с кодом=%d",ch,ch);

goto getkey;

}

Программа 3_05.pas

program keyboard;

( Анализ кода нажатой клавиши }

uses Crt;

label getkey;

var

ch:char;

begin

clrscr; getkey:

ch:=readkey;

if ord(ch)=27 then exit;

if ord(ch)=13 then

begin

writeln('Нажата обычная клавиша Enter с кодом = 13');

goto getkey;

end;

if ord(ch)=0 then

begin

ch:=readkey;

writeln('Нажата управляющая клавиша с кодом = ',ord(ch));

end else

writeln('Нажата обычная клавиша "',ch,'" с кодом=',ord(ch));




Содержание  Назад  Вперед