Readkey в паскале что это

Readkey в паскале что это

Windows, Real, Protected

Замечания

Символ не отображается на экране.

При нажатии некоторых специальных клавиш (стрелки и функциональные клавиши) ReadKey возвращает нулевой символ (#0), а повторный вызов ReadKey возвратит сканкод нажатой клавиши.

Коды специальных клавиш

КлавишаЧто возвращает ReadKey?
Escape#27
Enter#13
Ctrl+Enter#10
Backspace#8
Ctrl+Backspace#127
Tab#9
Shift+Tab#15
F1#0, #59
F2#0, #60
F3#0, #61
F4#0, #62
F5#0, #63
F6#0, #64
F7#0, #65
F8#0, #66
F9#0, #67
F10#0, #68
#0, #75
#0, #72
#0, #77
#0, #80
Delete#0, #83
Insert#0, #82
Home#0, #71
End#0, #79
Page Up#0, #73
Page Down#0, #81
NumPad 5 1#0, #76
Shift+F1#0, #84
Shift+F2#0, #85
Shift+F3#0, #86
Shift+F4#0, #87
Shift+F5#0, #88
Shift+F6#0, #89
Shift+F7#0, #90
Shift+F8#0, #91
Shift+F9#0, #92
Shift+F10#0, #93
Ctrl+F1#0, #94
Ctrl+F2#0, #95
Ctrl+F3#0, #96
Ctrl+F4#0, #97
Ctrl+F5#0, #98
Ctrl+F6#0, #99
Ctrl+F7#0, #100
Ctrl+F8#0, #101
Ctrl+F9#0, #102
Ctrl+F10#0, #103
Alt+F1#0, #104
Alt+F2#0, #105
Alt+F3#0, #106
Alt+F4#0, #107
Alt+F5#0, #108
Alt+F6#0, #109
Alt+F7#0, #110
Alt+F8#0, #111
Alt+F9#0, #112
Alt+F10#0, #113
Ctrl+#0, #115
Ctrl+#0, #116
Ctrl+Home#0, #119
Ctrl+End#0, #117
Ctrl+Page Up#0, #132
Ctrl+Page Down#0, #118
Ctrl+2#0, #3
Ctrl+A#1
Ctrl+B#2
Ctrl+C 2#3
Ctrl+D#4
Ctrl+E#5
Ctrl+F#6
Ctrl+G#7
Ctrl+H 3#8
Ctrl+I#9
Ctrl+J#10
Ctrl+K#11
Ctrl+L#12
Ctrl+M#13
Ctrl+N#14
Ctrl+O#15
Ctrl+P#16
Ctrl+Q#17
Ctrl+R#18
Ctrl+S#19
Ctrl+T#20
Ctrl+U#21
Ctrl+V#22
Ctrl+W#23
Ctrl+X#24
Ctrl+Y#25
Ctrl+Z#26
Ctrl+[#27
Ctrl+\#28
Ctrl+]#29
Ctrl+6#30
Ctrl+#31
Alt+Q#0, #16
Alt+W#0, #17
Alt+E#0, #18
Alt+R#0, #19
Alt+T#0, #20
Alt+Y#0, #21
Alt+U#0, #22
Alt+I#0, #23
Alt+O#0, #24
Alt+P#0, #25
Alt+A#0, #30
Alt+S#0, #31
Alt+D#0, #32
Alt+F#0, #33
Alt+G#0, #34
Alt+H#0, #35
Alt+J#0, #36
Alt+K#0, #37
Alt+L#0, #38
Alt+Z#0, #44
Alt+X#0, #45
Alt+C#0, #46
Alt+V#0, #47
Alt+B#0, #48
Alt+N#0, #49
Alt+M#0, #50
Alt+1#0, #120
Alt+2#0, #121
Alt+3#0, #122
Alt+4#0, #123
Alt+5#0, #124
Alt+6#0, #125
Alt+7#0, #126
Alt+8#0, #127
Alt+9#0, #128
Alt+0#0, #129
Alt+#0, #130
Alt+=#0, #131

Приведённая таблица не претендует на полноту

См. также

Пример

Язык:
Русский
English

Источник

Readkey в паскале что это

<Пароль>
uses crt;
const
n=10;
var
key:char;
pass_ar:array[1..n] of char;
pass_count:byte;
password:string;
begin
clrscr;
write(‘Enter pasword: ‘);
pass_count:=0;
repeat
inc(pass_count);
key:=readkey;
if key<>#13 then
begin
pass_ar[pass_count]:=key;
write(‘*’);
password:=password+pass_ar[pass_count];
end;
until key=chr(13);
writeln;
writeln(password);
end.

Также с помощью readkey можно ждать нажатия не только любой клавиши, а только нужной нам. Например следующая конструкция ждет нажатия клавиши &ltENTER&gt:

uses crt;
var
key:char;
begin
repeat
key:=reakey;
until chr(key)=13;
end.

А теперь можно написать программу управления каким-нибудь объектом с помощью того же readkey. Например звездочкой (*).

<Управление звездочкой>
uses crt;
var
key:char;
x,y:byte;
begin
clrscr;
gotoxy(40,12);
x:=40;
y:=12;
writeln(‘*’);
repeat
key:=readkey;
case key of
chr(72):begin
clrscr;
dec(y);
if y 25 then y:=1;
gotoxy(x,y);
write(‘*’);
end;
chr(75):begin
clrscr;
dec(x);
if x 80 then x:=1;
gotoxy(x,y);
write(‘*’);
end;
end;
until key=chr(27);
end.

Теперь тоже самое только в графическом режиме и управлять будем не звездочкой, а окружностью.

<Управление кругом>
uses graph,crt;
var
gd,gm:integer;
key:char;
x,y:word;
begin
clrscr;
gd:=detect;
initgraph(gd,gm,»);
cleardevice;
x:=320;
y:=220;
circle(x,y,50);
repeat
key:=readkey;
case key of
chr(72):begin
cleardevice;
dec(y,5);
if y 429 then y:=50;
circle(x,y,50);
end;
chr(75):begin
cleardevice;
dec(x,5);
if x 589 then x:=50;
circle(x,y,50);
end;
end;
until key=chr(27);
closegraph;
end.

<Меню>
uses crt;
procedure frame;<процедура рисования рамки>
var
x:byte;
begin
textcolor(14);
<рисование верхней рамки меню>
gotoxy(29,7);
write(chr(201));
x:=30;
repeat
gotoxy(x,7);
write(chr(205));
inc(x);
until x=50;
write(chr(187));
<рисование левой боковой рамки меню>
x:=8;
repeat
gotoxy(29,x);
write(chr(186));
inc(x);
until x=14;
<рисование правой боковой рамки меню>
x:=8;
repeat
gotoxy(50,x);
write(chr(186));
inc(x);
until x=14;
<рисование нижней рамки меню>
gotoxy(29,14);
write(chr(200));
x:=30;
repeat
gotoxy(x,14);
write(chr(205));
inc(x);
until x=50;
gotoxy(50,14);
write(chr(188));
end;
procedure punkt;<процедура вывода пунктов меню>
begin
<вывод пунктов меню>
gotoxy(35,8); textcolor(15); write(‘Exit Menu:’);
gotoxy(35,10); textbackground(0); textcolor(2); write(‘ShutDown. ‘);
gotoxy(35,11); textbackground(0); write(‘Reboot. ‘);
gotoxy(35,12); textbackground(0); write(‘Cancel. ‘);
end;
<------------------------------ОСНОВНАЯ ПРОГРАММА--------------------------->
type
type_of_3=1..3;
var
key:char;
n:type_of_3;
begin
textbackground(0);
clrscr;
frame;
punkt;
<выделение первого пункта меню>
gotoxy(35,10); textbackground(12); write(‘ShutDown. ‘);
n:=1;
<перебор пунктов меню>
repeat
key:=readkey;
case key of
chr(80): begin
if n=1 then
begin
gotoxy(35,10); textbackground(0); textcolor(2); write(‘ShutDown. ‘);
gotoxy(35,11); textbackground(12); write(‘Reboot. ‘);
n:=2;
continue;
end;
if n=2 then
begin
gotoxy(35,11); textbackground(0); write(‘Reboot. ‘);
gotoxy(35,12); textbackground(12); write(‘Cancel. ‘);
n:=3;
continue;
end;
end;
chr(72): begin
if n=2 then
begin
gotoxy(35,10); textbackground(12); textcolor(2); write(‘ShutDown. ‘);
gotoxy(35,11); textbackground(0); write(‘Reboot. ‘);
n:=1;
continue;
end;
if n=3 then
begin
gotoxy(35,11); textbackground(12); write(‘Reboot. ‘);
gotoxy(35,12); textbackground(0); write(‘Cancel. ‘);
n:=2;
continue;
end;
end;
else
if key=chr(13) then
case n of
1: begin
textbackground(0);
textcolor(7);
clrscr;
writeln(‘Вы выбрали пункт ShutDown’);
end;
2: begin
textbackground(0);
textcolor(7);
clrscr;
writeln(‘Вы выбрали пункт Reboot’);
end;
3: begin
textbackground(0);
textcolor(7);
clrscr;
writeln(‘Вы выбрали пункт Cancel’);
end;
end;
end;
until key=chr(27);
end.

В итоге у вас должно получиться вот такое меню:

Readkey в паскале что это. st001 01. Readkey в паскале что это фото. Readkey в паскале что это-st001 01. картинка Readkey в паскале что это. картинка st001 01

Кроме readkey, в паскале есть оператор keypressed (он тоже находится в модуле CRT). Его также можно использовать для ожидания нажатия любой клавиши. Например:

Repeat until keypressed;

Или его можно использовать как запасной выход из цикла (например бесконечного), чтобы программа не подвисала:

Источник

самоучитель Паскаль он-лайн

Он-лайн самоучитель Паскаль

Программирование клавиатуры

Дополнительные возможности управления клавиатурой реализуются двумя функциями: KeyPressed и ReadKey.

В MS-DOS реализуется так называемый асинхронный буферизованный ввод с клавиатуры. По мере нажатия на клавиши соответствующие коды помещаются в особый буфер, откуда они могут быть затем прочитаны программой. Стандартная длина буфера рассчитана на хранение до 16 кодов символов. Если программа достаточно долго не обращается к клавиатуре, а пользователь нажимает клавиши, буфер может оказаться переполненным. В этот момент раздается звуковой сигнал и «лишние» коды теряются. Чтение из буфера обеспечивается процедурами Read/ReadLn и функцией ReadKey. Замечу, что обращение к функции KeyPressed не задерживает исполнения программы: функция немедленно анализирует буфер и возвращает то или иное значение, не дожидаясь нажатия клавиши.

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

Пусть, например, в какой-то точке программы необходимо игнорировать все ранее нажатые клавиши, коды которых еще не прочитаны из буфера, т.е. необходимо очистить буфер. Этого можно достичь следующим способом:

while KeyPressed do

Т.е. код сканирования клавиши. Этот код определяется порядком, в соответствии с которым микропроцессор клавиатуры Intel 8042 периодически опрашивает (сканирует) состояние клавиш.

Следующая простая программа позволит Вам определить расширенный код любой клавиши. Для завершения работы программы нажмите клавишу Esc.

В табл. 13.1 приводятся расширенные коды клавиш, возвращаемые функцией ord(ReadKey). Для режима ввода кириллицы приводятся коды, соответствующие альтернативному варианту кодировки.

Таблица 13.1 Расширенные коды клавиш

Источник

Операторы цикла

Теоретический материал (Паскаль)

Цикл с постусловием REPEAT

Вы уже умеете организовать цикл при помощи оператора while. Напомним, что при выполнении этого оператора компьютер проверяет значение условия. Если условие истинно, то исполнительная часть оператора while будет повторяться до тех пор, пока это условие не примет значение False. Если значение условия есть False в самом начале, то тело цикла while вообще не будет выполняться.

Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом, проверив условие, определить, повторять ли тело цикла еще раз. Эту задачу выполнит другой вид цикла – цикл Repeat.

a) repeat
read (Number);
Sum := Sum+Number;
until Number=-1

b) repeat
i := i+1;
writeln (Sqr(i));
until i>=10

Задача. Определить, является ли введенное число простым.

Алгоритм решения этой задачи будет следующий. При помощи операции mod проводим проверку всех целых чисел от 2 до введенного числа Number. Мы проверяем, является ли очередное проверяемое число делителем нашего числа (значит, остаток от деления введенного числа на проверяемое число равен нулю). Если такой делитель найден, значит, цикл досрочно завершает свою работу на некотором i-том шаге. Если делитель не найден, значит, цикл проверил все числа, и значение переменной цикла i будет равно конечному значению, т.е. Number. Поэтому, после записи цикла следует анализ значения переменной i и выводится соответствующее сообщение.

Примечание. Напомним, что простым называется число, которое не имеет делителей кроме 1 и самого себя.

Цикл не может продолжаться бесконечно, так как любое число всегда делится само на себя.

Program Prostoe;
Uses
Crt;
Var
i, <возможный делитель>
Number : integer; <исследуемое число>
Begin
ClrScr;
writeln (‘Какое число должно быть проверено? ‘);
read (Number);
i := 1;
repeat
i := i+1;
until Number mod i = 0;
if Number=i
then
writeln (Number,’ является простым’)
else
writeln (Number,’ делится на ‘,i);
readln;
End.

При построении циклов нужно быть очень аккуратным: следить за отсутствием ошибок как в фазе входа в цикл, так и в фазе завершения цикла.

Задание. Выберите две задачи, решенных Вами с помощью цикла с предусловием, и решите их с помощью цикла с постусловием.

Источник

Циклические алгоритмы

Readkey в паскале что это. b 2. Readkey в паскале что это фото. Readkey в паскале что это-b 2. картинка Readkey в паскале что это. картинка b 2Readkey в паскале что это. b 1. Readkey в паскале что это фото. Readkey в паскале что это-b 1. картинка Readkey в паскале что это. картинка b 1
Readkey в паскале что это. b 3. Readkey в паскале что это фото. Readkey в паскале что это-b 3. картинка Readkey в паскале что это. картинка b 3Readkey в паскале что это. b 4. Readkey в паскале что это фото. Readkey в паскале что это-b 4. картинка Readkey в паскале что это. картинка b 4
Readkey в паскале что это. b 2. Readkey в паскале что это фото. Readkey в паскале что это-b 2. картинка Readkey в паскале что это. картинка b 2Readkey в паскале что это. b 1. Readkey в паскале что это фото. Readkey в паскале что это-b 1. картинка Readkey в паскале что это. картинка b 1
Readkey в паскале что это. b 3. Readkey в паскале что это фото. Readkey в паскале что это-b 3. картинка Readkey в паскале что это. картинка b 3Readkey в паскале что это. b 4. Readkey в паскале что это фото. Readkey в паскале что это-b 4. картинка Readkey в паскале что это. картинка b 4
Readkey в паскале что это. b 2. Readkey в паскале что это фото. Readkey в паскале что это-b 2. картинка Readkey в паскале что это. картинка b 2Readkey в паскале что это. b 1. Readkey в паскале что это фото. Readkey в паскале что это-b 1. картинка Readkey в паскале что это. картинка b 1
Readkey в паскале что это. b 3. Readkey в паскале что это фото. Readkey в паскале что это-b 3. картинка Readkey в паскале что это. картинка b 3Readkey в паскале что это. b 4. Readkey в паскале что это фото. Readkey в паскале что это-b 4. картинка Readkey в паскале что это. картинка b 4
Readkey в паскале что это. b 2. Readkey в паскале что это фото. Readkey в паскале что это-b 2. картинка Readkey в паскале что это. картинка b 2Readkey в паскале что это. b 1. Readkey в паскале что это фото. Readkey в паскале что это-b 1. картинка Readkey в паскале что это. картинка b 1
Readkey в паскале что это. b 3. Readkey в паскале что это фото. Readkey в паскале что это-b 3. картинка Readkey в паскале что это. картинка b 3Readkey в паскале что это. b 4. Readkey в паскале что это фото. Readkey в паскале что это-b 4. картинка Readkey в паскале что это. картинка b 4

Тема: Работа с клавиатурой. Стандартные процедуры read и readLn. Стандартные функции readKey и KeyPressed; их применение в циклах.

Это занятие мы посвятим вопросам программированию обменов с клавиатурой компьютера. Турбо Паскаль содержит несколько простых и ясных средств, которые позволяют организовать эффективное управление программы посредством клавиатуры.

Самая простая и часто применяемая техника организации приема информации основывается на использовании уже знакомых Bам процедур read и readln. Расширим знания о них. Эти процедуры работают со стандартным входным файлом, который отождествлен с “консолью”, т. е. с клавиатурой и экраном дисплея. На практике это означает, что информация, введенная с клавиатуры, помимо обработки процедурами, будет отображаться на экране.

Удобством указанных процедур является автоматическое преобразование ими вводимой цепочки символов в значение заданного типа. Так, если в разделе описания переменных имеется описание вида

Var
Chislo : integer;

то выполнение оператора readln (Chislo) будет происходить следующим образом. Программа будет приостановлена в ожидании ввода с клавиатуры символов, изображающих целое число. После ввода этих изображений они будут автоматически преобразованы в соответствующие двоичные значения и присвоены переменной Chislo. Аналогично организован прием значений действительного, символьного и строкового типа. Если read(readln) не может выполнить преобразования, то генерируется ошибка № 106 – Invalid numeric format (Неверный формат числовых данных) и выполнение программы прекращается. Это является стандартной реакцией, которую выполняет программа, взявшая на себя обработку ошибок. Мы вернемся еще к обработке ошибок, вызванных некорректным вводом, в теме “Процедуры и функции”, где научимся правильно составлять и использовать вспомогательные подпрограммы. А пока приведем пример применения этих процедур ввода при организации циклов.

Program Useread;
Var
X, Y : Byte;
Stop : String;
Begin
TextBackGround;
Randomize;
repeat
X:=Random (76);
Y:=Random (23);
GoToXY (X, Y);
TextColor (Random(15));
write(‘***’);
X:=1;
Y:=24;
write (‘Для остановки программы наберите “Стоп“‘);
write (‘Для продолжения – любую клавишу ‘);
readln(Stop);
until (Stop=‘Стоп‘) or (Stop =‘стоп‘);
readln;
End.

Примечание. Здесь использованы следующие процедуры:

TextBackGround (Color : Byte) – задает цвет фона.

TextColor (Color : Byte) – задает цвет символов.

Однако, несмотря на простоту и удобство, стандартные процедуры read и readln не обеспечивают всеж потребностей, возникающих при работе с клавиатурой. Их важнейший недостаток в том, что вместе с приемом символов они выполняют их отображение на экран (так называемое “эхо на монитор”). В большинстве случаев это либо не нужно, либо недопустимо. Например, если программа реализует некоторый оконный интерфейс, то вывод вводимых символов испортит изображение. Кроме того, они рассчитаны только на ввод относительно небольшого подмножества символов (буквы, цифры, знаки препинания) и частичного использования специальных клавиш (например, Backspace для отмены только что введенного символа). Эти процедуры не могут распознать нажатие функциональных или редактирующих клавиш и их сочетаний с управляющими клавишами Ctrl, Alt, Shift. В силу указанных причин процедуры read и readln редко используются в серьезных программах.

Стандартная функция readKey

Более универсальным средством взаимодействия с клавиатурой является стандартная функция readKey из системного модуля Crt. Функция вызывается без параметров, возвращает значение символьного типа и работает следующим образом. Организуется задержка выполнения с ожиданием нажатия клавиши. После того, как нажатие произведено, функция завершает работу, возвращая код нажатой клавиши. Полученное значение можно использовать далее в программе. Тривиальный пример работы с функцией readKey, не требующий комментариев, может выглядеть так:

Примечание. Здесь использована процедура Exit, которая позволяет досрочно выйти из программы. Применение этой процедуры является плохим стилем программирования.

Функция readKey не отображает введенный символ на экран, благодаря чему она широко используется для организации управления в различных диалоговых программах. В дополнение к этому readKey позволяет отслеживать нажатие более широкого множества клавиш, опознавая функциональные и редактирующие клавиши и их сочетания с управляющими клавишами Ctrl, Alt, Shift.

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

В основной набор входят клавиши букв, цифр, разделителей и знаков препинания, их комбинации с клавишей Shift (или, что то же самое, при включенном переключателе CapsLock), а также клавиши Tab, BackSpace, Enter и Esc. Если нажата одна из перечисленных клавиш, то readKey возвратит обычный ASCII-код соответствующего символа.

В расширенном наборе содержатся некоторые (не все) клавиши из основного набора в комбинации с клавишами Ctrl и Alt, а также функциональные и редактирующие клавиши. Если нажимается одна из клавиш расширенного набора, то функция readKey возвращает символ с кодом 0 (его представление в программе – chr(0) или #0). В этом случае повторное обращениек readKey вернет код клавиши из расширенного набора.

Коды клавиш из основного и расширенного наборов в виде, удобном для включения в Турбо Паскаль-программы, приведены в приложении.

Схема использования функции readKey для общего случая может выглядеть так:

Program UsereadKey2;
Uses
Crt;
Var
Sym : Char;
Begin
ClrScr;
while true do
begin
write (‘Нажмите клавишу‘);
Sym := readKey;
if Sym <> #0
then
begin <основной набор>
case Sym of
#8 : writeln (‘Вы нажали BackSpace‘);
#9 : writeln (‘Вы нажали Tab‘);
#13 : writeln (‘Вы нажали Enter‘);
#27 : writeln (‘Вы нажали Esc‘);
else
writeln (‘Вы ввели символ ‘,Sym);
end;
if Sym = #27
Then
Exit
end
else
begin <расширенный набор>
Sym := readKey;<повт. чтение: берем расширенный код>
writeln (‘Вы нажали клавишу с кодом ‘, Ord (Sym)));
end
end
End.

Большинство прикладных диалоговых программ использует описанную технику взаимодействия с клавиатурой. Однако встречаются случаи, когда возможностей функции readKey оказывается недостаточно. На самом деле функция readKey воспринимает нажатия не всех клавиш: достаточно попробовать, запустив вышеприведенную программу, нажать клавиши F11, F12, ввести комбинацию Alt+Esc и т.д. Тому, кто желает более детально изучить работу этой функции, предлагаем самостоятельно найти в книгах по Турбо Паскалю этот материал. А мы ограничимся вышесказанным.

Стандартная функция KeyPressed

Второй базовой функцией взаимодействия с клавиатурой является функция KeyPressed. В отличие от readKey, она предназначена не для приема кода нажатой клавиши, а для простой проверки, была ли нажата какая-либо клавиша. Эта функция вызывается без параметров и возвращает значение булевого типа: True, если было нажатие, и False в противном случае.

Важно понять, что KeyPressed не производит никаких действий с кодом нажатой клавиши, но код может быть далее прочитан функцией readKey, например,

Cоотношение этих функций станет более понятным, если рассмотреть их внутреннюю организацию несколько подробнее. В системной области DOS имеется небольшой буфер, в который операционная система помещает коды нажатых клавиш. буфер организован в виде очереди, причем помещение кодов производится в ее хвост, а считывание из головы. Таким образом, каждое обращение к функции readKey извлекает из головы очереди один содержащийся там код. Если буфер пуст, то организуется задержка выполнения до тех пор, пока в нем не появится код ( появление кода соответствует нажатию клавиши). Если же к моменту вызова readKey нажатие уже произошло, то есть буфер содержит хотя бы один код, то никакой задержки не будет. Буфер очень невелик и рассчитан на хранение максимум 15 кодов, что соответствует 15 нажатиям. Кстати говоря, иногда встречается такая ситуация, когда та или иная программа “не успевает” выбирать коды клавиш из буфера (то есть нажатия производятся чаще). Ситуация переполнения буфера индицируется звуковым сигналом, после чего коды вновь нажимаемых клавиш будут пропадать.

Используя полученные знания решите выбранные с учителем задачи из нижеприведенного перечня.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *