на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Основы программирования на языке Паскаль
p align="left"> Var stro:text; s:dlina; reg:char; filename:string[12];

{$i c:\turbo\sozdt.pas}

{$i c:\turbo\obrt.pas}

{$i c:\turbo\rasht.pas}

Begin while true do

Begin writeln('укажите режим');

writeln('1: создание, 2: вывод на экран, 3: расширение, 4: выход');

readln(reg);

case reg of '1': sozdt;

'2': obrt;

'3': rasht;

'4': halt else writeln('повторите номер режима');

end;end;end.

11. Использование библиотеки CRT

Разработчики Турбо-Паскаля предусмотрели несколько подпрограмм, существенно увеличивающих возможности текстового ввода-вывода. Эти подпрограммы сосредоточены в библиотеке (модуле) CRT, входящей в комплект поставки Турбо-Паскаля. В модуль включены также процедуры sound, no sound, delay, позволяющие программировать звуковой генератор компьютера.

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

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

Функция keypressed возвращает значение типа boolean, указывающее состояние буфера клавиатуры: false означает, что буфер пуст, а true - что в буфере есть хотя бы один символ, еще не прочитанный программой.

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

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

Uses CRT;

Var

с; char;

Begin

while Keypressed do

c:== ReadKey;

. . . . .

end.

При использовании процедуры ReadKey следует учесть, что в клавиатурный буфер помещаются так называемые расширенные коды нажатых клавиш. Если нажимается любая алфавитно-цифровая клавиша, расширенный код совпадает с ASCII-кодом соответствующего символа. Например, если нажимается клавиша с латинской буквой «а» (в нижнем регистре), функция ReadKey возвращает значение chr(97), а если - «а» (в верхнем регистре) - значение chr(65). При нажатии функциональных клавиш F1...F10 (клавиш управления курсором), клавиш Ins, Home, Del, End, PgUp, PgDn в буфер помещается двухбайтовая последовательность: сначала символ #0, а затем расширенный код клавиши. Таким образом, значение #0, возвращаемое функцией ReadKey, используется исключительно для того, чтобы указать программе на генерацию расширенного кода. Получив это значение, программа должна еще раз обратиться к функции, чтобы прочитать расширенный код клавиши.

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

Uses CRT;

Var с: char;

Begin

repeat

c:= ReadKey;

if c< >#0 then

writeln (ord(c))

else

writeln ('0', ord (ReadKey):8)

until c=#27 {27 - расширенный код клавиши esc}

end.

Если вы воспользуетесь этой программой, то обнаружите, что нажатие на некоторые клавиши игнорируется функцией ReadKey. Это прежде всего так называемые сдвиговые клавиши - Shift, Ctrl, Alt. Сдвиговые клавиши в MS-DOS обычно используются для переключения регистров клавиатуры и нажимаются в сочетании с другими клавишами. Именно таким способом, например, различается ввод прописных и строчных букв. Кроме того, функция игнорирует переключающие клавиши Caps Lock, Num Lock, Scroll Lock.

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

Расширенные коды клавиш

Таблица

Код

Клавиша или комбинация клавиш

Код

Клавиша или комбинация клавиш

первый байт

второй байт

первый байт

второй байт

Алфавитно-цифровые клавиши

8

-

backspace (забой)

9

-

tab (табуляция)

13

-

enter

32

-

пробел

33

-

!

34

-

«

35

-

#

36

-

$

37

-

%

38

-

&

39

-

"

40

-

(

41

-

)

42

-

*

43

-

+

44

-

,

45

-

-

46

-

.

47

-

/

48...57

-

0...9

58

-

:

59

-

;

60

-

<

61

-

=

52

-

>

63

-

?

64

-

@

65...90

-

A...Z

91

-

[

92

-

/

93

-

]

94

-

^

95

-

_

96

-

"

97...122

-

a...z

123

-

{

124

-

??

125

-

}

126

-

~

128...159

-

A...Я

160...175

-

а...п

224...239

-

р...я

Управляющие клавиши и их сочетания со сдвиговыми

0

3

Ctrl-2

0

15

Shift - Tab

0

16...25

Alt-Q...Alt-P (верхний ряд букв)

0

30...38

Alt-A...Alt-L (средний ряд букв)

0

44...50

Alt-Z...Alt-M (нижний ряд букв)

0

59...68

72

F1...F10

курсор вверх

0

71

Home

0

75

курсор влево

0

73

PgUp

0

79

End

0

77

курсор вправо

0

81

PgDn

0

80

курсор вниз

0

83

Del

окончание таблицы

код

клавиша или комбинация клавиш

код

клавиша или комбинация клавиш

первый байт

второй байт

первый байт

второй байт

0

82

Ins

0

94...103

Ctrl-F1...Ctrl-F10

0

84...93

Shift-F1... Shift-F10

0

114

Ctrl- PrtScr

0

104...113

Alt-F1...Alt-F10

0

116

Ctrl - курсор вправо

0

115

Ctrl - курсор влево

0

118

Ctrl - PgDn

0

117

Ctrl - End

0

120...131

alt-1...alt- = (верхний ряд клавиш)

0

119

Ctrl - Home

0

132

Ctrl - PgUp

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.