- •Символьный тип
- •Ввод/вывод символов
- •Код символа
- •Управляющие символы
- •Сравнение символов
- •Сравнение символьных переменных
- •Символьная строка
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Индекс символа в строке
- •Длина строки
- •Максимальная длина строки.
- •Строка определенной длины.
- •Строковые выражения
Сравнение символьных переменных
Подобные обычным числам символьные величины можно сравнить. При этом фактически сравнивается не сами эти величины, а соответствующие им числовые коды. Например, можно записать такую операцию сравнения: ' а ' < ' d ' результат этой операции будет истинным (равен true), так как код символа ' а ' равен 65, а код символа ' d ' равен 68. А если мы запишем следующее соотношение:
' k ' > ' t '
то такое соотношение будет ложным (false), так как код символа ' k ' равен 170, а символ ' t ' -226. Можно проверять символьные величины также на равенство или неравенство друг другу. Знаки для операций сравнения символьных величин используются те же, что и для числовых величин.
Символьная строка
Очень часто требуется работать не с одним символом, а с несколькими (например, ввести имена и фамилии учащихся и вывести их в алфавитном порядке). Для такого рода данных существует тип STRING (строка).
Строка — это последовательность символов кодовой таблицы персонального компьютера. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор String, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки равна 255 байт.
Переменную строкового типа можно определить через описание типа в разделе определения типов или непосредственно в разделе описания переменных. Строковые данные могут использоваться в программе также в качестве констант. Недопустимо применение строковых переменных в качестве селектора в операторе Case. Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка.
Формат описания строкового типа
Переменную типа String можно задать следующим образом:
Var <идентификатор, . . . > : String [максимальная длина строки];
Если же после имени переменной ее длина не указывается, то по умолчанию она считается равной 255 символам.
Фрагмент описания строковых данных
Const
Address = 'ул. Переверткина, 25'; {Строковая константа}
St1 : String; {По умолчанию длина строки St1= 255}
St2, St3 : string[50] ;
Nazv : string[280]; (Ошибка, длина строки Nazv превышает 255}
Строка в языке Турбо Паскаль трактуется как цепочка символов. (Для строки из N символов отводится N+1 байт; N байт - для хранения символов строки, а один байт - для значения текущей длины строки).
К любому символу в строке можно обратиться, указав его номер. В самом начале строки (под нулевым номером) расположен байт, содержащий значение текущей длины строки.
-
0
1
2
3
…
N+1
N
текущая длина строки
Поэтому для определения объема памяти в байтах, требуемой для размещения строки, к значению ее максимальной длины прибавляется 1.
Например, для размещения в памяти переменных Fstr, St1, St2 требуется соответственно 126, 35 и 51 байт (см. приведенный выше пример).
Рассмотрим структуру размещения строки в памяти на следующем примере. Пусть М — максимальная длина строки, L — текущая длина, А — ячейка памяти.
Тогда:
А —содержит величину текущей длины;
А+1 — первый символ строки;
A+L — последний значащий символ;
A+L+1
… — незанятые ячейки памяти
А+М
Следующая программа запрашивает ваше имя, а потом здоровается с вами:
PROGRAM prog3;
VAR s: STRING;
BEGIN
writeln('Как Вас зовут?'); readln(s); writeln('Привет, ', s, '!');
END.
Окно ввода/вывода:
Как Вас зовут?
Вася
Привет, Вася!