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

5. Символьные типы данных

Символьный тип Char – представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа может быть помещен любой из 256 символов расширенного кода ASC II. Это буквы ['A'…'Z', 'a'…'z'], ['А'…'Я', 'а'…'я'], цифры ['0'…'9'], знаки препинания и специальные символы. Переменная типа Char в памяти занимает один байт. Этот тип обладает некоторыми особенностями.

В разделе описаний переменных объявляется следующим образом:

Var

сh:char или ch, cb, al:char;

Обычно значения переменных типа Char задаются в апострофах.

Например:

Var

сh:char;

Begin

сh: = 'A';

writeln(ch);

End.

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

Например:

Var

сh:char;

Begin

for сh: = 'a' to 'z' do writeln(ch);

End.

Или

for сh: = 'z' downto 'a' do writeln(ch);

Компьютер воспринимает нажатие клавиш в виде ASC II кода. В Турбо Паскаль предусмотрена работа с символьными типами данных в виде ASC II кода. Для этого перед числом, обозначающим код ASC II нужно поставить знак #.

Таблица ASC II кода.

Код

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

Код

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

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

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

=

62

>

63

?

64

@

65…90

A…Z

91

[

92

\

93

]

94

95

_

96

97…122

A…z

123

{

124

|

125

}

126

~

128…159

А…Я

160…175

A…п

224…239

р…я

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

3

Ctrl – 2

15

Shift-Tab

16…25

Alt – Q…Alt – P

(верхний ряд букв)

30…38

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

044…50

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

59…68

F1 – F10

71

Home

72

Курсор вверх

73

RgUp

75

Курсор влево

77

Курсор вправо

79

End

80

Курсор вниз

81

PgDn

82

Ins

83

Del

84…93

Shift – F1…Shift – F10

94…103

Ctrl – F1…Ctrl – F10

104…113

Alt – F1…Alt – F10

114

Ctrl – PrtScr

115

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

116

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

117

Ctrl – End

118

Ctrl – PgDn

119

Ctrl – Home

120…131

Alt – 1…Alt – = (верхний ряд клавиш)

132

Ctrl – PgUp

Для ввода символов с клавиатуры обычно используют следующие конструкции:

Var

сh:char;

Begin

…………..

writeln('Введите символ'):

readln(ch):

End.

К типу Char определены операции отношения.

Например.

Var

Сh, сl:char;

Begin

…………..

ch: ='a';

cl: ='b';

if ch < cl then

writeln(ch, '_', cl)

else

writeln(cl, '_', ch);

………………….

End.

В данном случае будет выведена надпись а  b, поскольку b>a, вернее больше ее ASC II код. В операциях отношения сравниваются именно ASC II коды.

Пример:

Программа, выводящая на экран последовательность букв вида:

a

a b

a b c

. . . . .

a b c . . . x y z

Program aab;

Var

C, d: char;

Begin

for c:='a' to 'z' do

begin

For d:='a' to 'c' do

write(d, ' ');

writeln;

end;

End.

Пример:

Программа, подсчитывающая число пробелов в последовательности вводимых символов.

Program summprob;

Var

Ch: char;

x, n: integer;

Begin

n:=0;

read(ch);

while ch<>#13 do

begin

if c=#32 then n:=n+1;

read(ch);

end;

write('Число пробелов равно',n);

End.

К типу Char применимы следующие встроенные функции.

Функция Chr(x: byte): char.

Возвращает символ, соответствующий ASC II – коду числа x;

Функция Ord(x: char): Byte.

Возвращает число, соответствующее символу x в ASC II – таблице;

Функция UpCase(x: char): char.

Преобразует символы из строчных букв в прописные, но распространяется только на литеры латинского алфавита, русские просто игнорируются;

Функция Pred (x: char): char.

Возвращает символ, который предшествует в ASC II таблице символу x;

Функция Succ (x: char): char.

Возвращает символ, который следует в ASC II – таблице за символом x.

Следующая короткая программа выдает все символы таблицы ASC II на экран монитора.

Program Byte_To_Chr;

Var

i: Byte;

Begin

For i:=0 to 255 do writeln (i, '=', chr(i));

End.

Тип данных char в программах на Турбо Паскаль часто используют для хранения вводимых с клавиатуры одно-литерных ответов на запросы меню. Например, часто используются конструкции вида:

……………

repeat

ch:=readkey;

……………….

until (ch = 'n') or (ch = 'N');

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

Задачи

  1. Вывести на экран последовательность заглавных и строчных букв русского алфавита.

  2. Ввести wtkjt число n, последовательность символов S1,…, Sn, (n>1). Подсчитать:

а) сколько раз среди данных символов встречается символ + и сколько раз – символ *.

б) общее число вхождений символов +, , * в последовательность S1,…, Sn.

  1. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Выяснить, встречается ли в данной последовательности символов группа из трех стоящих рядом точек.

  2. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Выяснить, имеются ли в последовательности S1,…, Sn члены Si, Si+1 такие, что Si – запятая, а Si+1 – тире.

  3. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Определить позицию первой и последней запятой.

  4. Ввести целое число n, последовательность символов S1,…, Sn, (n>1):

а) выяснить, верно ли, что среди, S1,…, Sn имеются все буквы, входящие в слово «шина».

б) выяснить, имеется ли среди S1,…, Sn пара соседствующих букв «но» или «он».

в) выяснить, имеется ли среди S1,…, Sn пара соседствующих одинаковых символов.

  1. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Выяснить, где больше символов «а» – в первой половине текста или во второй (не исключается и случай равенства).

  2. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Подсчитать максимальное число букв «А», идущих подряд в данной последовательности.

  3. Ввести целое число n, последовательность символов S1,…, Sn, (n>1). Определить общее число латинских букв (малых и больших), входящих в данную последовательность символов.

  4. Разработать программу ввода последовательности символов (не больше 200 символов, образующих текст), которая не реагирует на ввод лишних пробелов (не вводит лишние пробелы).