Стандартные типы данных
Цель работы заключается в получении навыков написания программ, содержащих символьную и строковую информацию на языке Паскаль.
Символьный тип данных
Pascal оперирует с символьной информацией, которая может быть представлена отдельными символами или строками символов. Для хранения и обработки отдельных символов используются переменные типа Char. Символьные данные могут быть либо константами, либо переменными. Переменная символьного типа должна быть объявлена в разделе описания переменных так:
<Имя> : Char; где имя — имя переменной символьного типа;
Пример 1.
VAR OTV: Char ; {переменной OTV присвоен тип Char}
СН: Char; {переменной СН присвоен тип Char}
Значениями типа Char служат все символы, которые могут высветиться на экране дисплея: цифры, буквы, знаки операций, специальные символы и т. д. Переменная, объявленная как Char, может принимать значение только одного символа.
Переменная типа Char может получить значение в результате выполнения операции присваивания или ввода (Read, ReadLn).
Все символы упорядочены, то есть каждый из них имеет свой порядковый номер - код. Для кодировки символов используется код ASCII (American Standard Code For Information Interchange — американский стандартный код для обмена информацией). Для хранения символа отводится один байт. Мы имеем возможность закодировать 256 символов в диапазоне 0..255 Символы с кодами 0..31 относятся к служебным кодам.
Базовая таблица кодировки ascii
32 |
|
48 |
0 |
64 |
® |
80 |
Р |
96 |
* |
112 |
p |
33 |
! |
49 |
1 |
65 |
А |
81 |
0 |
97 |
а |
113 |
q |
34 |
“ |
50 |
2 |
66 |
В |
82 |
R |
98 |
b |
114 |
г |
35 |
# |
51 |
3 |
67 |
С |
83 |
S |
99 |
с |
115 |
s |
36 |
$ |
52 |
4 |
68 |
D |
84 |
T |
100 |
d |
116 |
t |
37 |
% |
53 |
5 |
69 |
Е |
85 |
U |
101 |
е |
117 |
u |
38 |
& |
54 |
6 |
70 |
F |
86 |
V |
102 |
f |
118 |
v |
39 |
' |
55 |
7 |
71 |
G |
87 |
W |
103 |
g |
119 |
w |
40 |
( |
56 |
8 |
72 |
Н |
88 |
X |
104 |
h |
120 |
x |
41 |
) |
57 |
9 |
73 |
I |
89 |
Y |
105 |
i |
121 |
y |
42 |
* |
58 |
: |
74 |
J |
90 |
Z |
106 |
j |
122 |
z |
43 |
+ |
59 |
; |
75 |
К |
91 |
[ |
107 |
k |
123 |
{ |
44 |
> |
60 |
< |
76 |
L |
92 |
\ |
108 |
l |
124 |
? |
45 |
- |
61 |
= |
77 |
М |
93 |
] |
109 |
m |
125 |
} |
46 |
. |
62 |
> |
78 |
N |
94 |
^ |
110 |
n |
126 |
|
47 |
/ |
63 |
? |
79 |
О |
95 |
_ |
111 |
o |
127 |
|
В том случае, если в программе требуется использовать значение символьной переменной или константы, его необходимо заключить в апострофы или записать с использованием знака #, за которым следует код символа.
Например, 'А' обозначает букву А, ';' - точку с запятой, '' - пробел, #32 или #$20 являются также символами пробела (32 - это код, соответствующий пробелу, а шестнадцатеричное число 20 равно десятичному 32).
Рекомендуется применять # (знак номера) только для специальных (служебных) символов, которые не отображаются на экране и имеют мнемонические сокращения, унаследованные из прошлого. Некоторые из них могут использоваться программистом для выполнения определенных действий:
#07 (BEL) - подача короткого звукового сигнала;
#08 (BS) - удаление символа слева от курсора и смещение курсора на одну позицию назад, соответствует клавише <BackSpace>;
#09 (НТ) - горизонтальная табуляция: смещение курсора в позицию, кратную 8, плюс 1 (9, 17, 25 и т. д.), соответствует клавише <Таб>;
#10 (LF) - перевод строки, курсор смещается по вертикали вниз на одну строку;
#11 (VT) - вертикальная табуляция;
#12 (FF) - прогон страницы;
#13 (CR) - возврат каретки или перевод строки, выполняет перемещение курсора в начало следующей строки экрана (соответствует клавише <Enter>);
#26 (SUB) - конец файла, вводится нажатием комбинации клавиш <Ctrl> + <Z>;
#27 (ESC) - конец работы, символ соответствует клавише <Esc>;
#32 (BL) - пробел и т. д.
Переменную типа Char можно сравнить с другой переменной типа Char или с символьной константой. Результатом операции сравнения является логическая константа TRUE (истина) или FALSE (ложь). Сравнение основано на том, что каждому символу поставлено в соответствие число, причем символу '0' соответствует число меньшее, чем символу '9', символу 'А' - меньшее, чем 'В' и т. д. Таким образом, можно записать:' 0 ' < ' 1 ' < ...' 9 '... <' А' <' В ' < ... <' Z' <.' а' < ' b ' < ...< ' z '. Символам русского алфавита соответствуют числа большие, чем символам латинского алфавита, при этом справедливо следующее: ' А ' < ' Б ' <' С '...<' Ю ' <'Я'<'а'<'б'<'в'<... <'э'<'ю'<'я'.
Строчные латинские буквы идут друг за другом, не перемешиваясь с другими символами, точно также прописные буквы, цифры, русские буквы строчные и прописные. Из всех символов составлен список, и из двух символов меньше тот, который встречается в списке раньше (а > b, а < b, а < > b).
Мы можем использовать упорядоченность множества символов и, в случае необходимости, объявлять переменную цикла со счетчиком типом Char:
For k: = ' а' То' z' Do;
К символьным данным (тип Char) можно применять встроенные функции:
Наименование |
Имя функции |
Тип аргумента |
Тип результата |
Возвращает значение символа по его коду |
Chr(x) |
Byte |
Символьный |
Возвращает порядковый номер |
Ord(ch) |
Символьный |
Целый тип |
Возвращает значение, которое соответствует Ord(х)-1 (предыдущий символ) |
Pread (ch) |
Символьный |
Символьный |
Возвращает значение, которое соотв. Ord(х )+1 (следующий символ) |
Succ (ch) |
Символьный |
Символьный |
Преобразует строчную букву в заглавную. Обрабатывает только буквы латинского алфавита. |
Upcase (ch) |
Символьный |
Символьный |
Например:
Ord ('А') = 65 - функция возвращает код заглавной латинской буквы А (65).
Chr (128) = 'Б' - функция возвращает заглавную русскую букву ( Б).
Pread ('Б') = 'А' - функция возвращает букву А, предыдущую по отношению к букве Б.
Succ ('Г') = 'Д' - функция возвращает букву Д, следующую по отношению к букве Г.
Upcase ('n') = 'N' - функция возвращает заглавную букву N, преобразованную из строчной буквы n.
Например, написать программу, выводящую на экран символы с кодами от32 до 255.
Program Lab 1;
Uses Crt;
Var k: Byte;
Begin
ClrScr;
For k : = 32 To 255 Do
WriteLn (Chr (k),' ');
ReadLn;
End.