Лекция №11. Символьный и строковый типы данных
Для работы с текстом в ТР имеется два типа данных: char – литерный или символьный тип; string – строковый или стринговый тип.
Значением переменных символьного типа является один символ. Каждому символу соответствует код символа – целое число в диапазоне от 0 до 255. Из этого следует, что символьный тип – это порядковый тип, т.е. каждому символу соответствует целое число, лежащее в диапазоне от 0 до 255. Это первый момент, который нужно уяснить – все действия по обработке символов сводятся к действиям над целыми числами, расположенными строго по порядку.
Над данными символьного типа определены операции отношения:
=, <>, <, >, <=, >=, вырабатывающие результат логического типа.
При выполнении всех операций сравнения коды символов сравниваются как обычные целые числа. При этом получается, что любая заглавная буква всегда меньше соответствующей ей строчной, т.к. в кодовой странице сначала расположены заглавные буквы, а затем строчные. Точно также, любая буква латинского алфавита меньше любой буквы русского алфавита, даже если их изображения на экране практически неразличимы (например, A латинская, А русская).
Для данных символьного типа определены следующие стандартные функции:
- Chr(x) –возвращает значение символа по его коду;
Chr(129) à 'Б'.
- Ord(ch) – возвращает код заданного символа;
Ord('A') à 65.
- Pred(ch) – возвращает предыдущий символ;
Pred('Б') à 'А'.
- Succ(ch) – возвращает следующий символ;
Succ('Г') à 'Д'.
- Upcase(ch) – преобразует строчную букву в прописную.
Upcase('n') à 'N'. Обрабатывает буквы только латиницы.
Строки. Обработка строковых данных
К структурированным типам данных относятся также строки.
Строка – это последовательность символов. Максимальное количество символов в строке (длина строки) может изменяться от 1 до 255. переменную строкового типа можно определить в разделе определения типов или в разделе объявления переменных.
Type
ИмяТипа = string [максимальная длина строки];
Var
Идентификатор1, Идентификатор2, …: ИмяТипа;
Или строковые переменные указываются только в разделе объявлений после слова VAR, например:
VAR
FIO: STRING[15];
STROK: STRING;
Если строковая константа используется в программе несколько раз, то ее целесообразно объявить в разделе констант, например:
CONST
STR = 'STROKA';
Если максимальная длина строки не указывается, то она равна 255 байт.
Строка в языке ТР трактуется, как массив символов. Для строки из n символов в памяти ПК отводится n+1байт, nбайтов для хранения символов строки, а один дополнительный байт – для значения текущей длины строки. Этот дополнительный байт имеет номер 0, соответственно первый символ строки имеет номер 1, второй – 2 и т.д.
Например, переменная strokтипа string[15]хранится в памяти таким образом:
Strok:= 'университет;
Номер байта | ||||||||||||||||
Его значение | к | о | л | л | е | д | ж | М | и | р | а | с |
Вся строка занимает 16 байтов, из них 2 байта остались незанятыми, т.к. реальная длина строки составляет 13 символов, это значение и хранится в нулевом байте строки. Незанятые байты составляют "хвост" строки, в котором может находиться любой "мусор", однако программа не будет обращаться к "хвосту", т.к. реальный размер строки ей известен.
Из этого примера становиться понятным, почему максимальная длина строки может быть равна 255 символам, т.к. для хранения длины строки отведен всего лишь один байт, а число 255 в двоичном представлении выглядит как восемь единиц, т.е. 1111 1111.
К отдельным символам строки можно обратиться как к элементу одномерного массива, т.е. с помощью индексов в квадратных скобках, например
FIO[5]; STROK[24];
При вводе строки количество символов в ней определяется автоматически, при этом автоматически заполняется нулевой байт.
В отличие от массивов переменные строкового типа могут целиком участвовать в операторах ввода/вывода. Например:
Дата добавления: 2017-11-04; просмотров: 2150;