Особое место в языке ПАСКАЛЬ занимают массивы символов. Стандарт-
ный ПАСКАЛЬ допускает два способа хранения символьных массивов в па-
мяти ЭВМ: распакованный и упакованный. Распакованные массивы символов
хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные
- по одному символу в байте. При описании упакованного массива симво-
лов используют служебное слово PACKED, например:
var MAS: Packed Array[1..20] of Char;
Описание распакованного массива символов имеет вид:
var M: Array[1..20] of char;
Для преобразования символьного массива из распакованной формы в
упакованную и наоборот, из упакованной в распакованную, в язык ПАС-
КАЛЬ введены две стандартные функции Pack, UnPack.
Упакованный массив символов образует символьную строку. Символьная
строка может быть либо строковой константой, либо строковой перемен-
ной. Строковая константа, или строка, представляет собой совокупность
символов, заключенную в апострофы. Строка - это элементарная конс-
трукция языка ПАСКАЛЬ. Строковые константы могут входить в состав вы-
ражений. Как и числовые константы, они могут быть описаны в разделе
описания констант.
Строковые переменные - это одномерные упакованные массивы симво-
лов, для описания которых в TURBO PASCAL введен тип String.
Например, если строка содержит до 30 символов, ее тип будет опре-
делен как
type s= String[30];
Длина строки не может содержать более, чем 255 символов.
В TURBO PASCAL определено понятие строки переменной длины, в этом
случае ее описание задается как
type s= String;
Тип String без указания длины совместим со всеми типами строк.
Особенностью строковых переменных является то, что к ним можно об-
ращаться как к скалярным переменным, так и к массивам. Во втором слу-
чае применяется конструкция "переменная с индексом", что обеспечивает
доступ к отдельным символам строки. При этом нижняя граница идекса
равна 1. Отдельный символ строки совместим с типом Char.
В памяти ЭВМ строка занимает количество байтов, на единицу большее
ее длины. Нулевой байт строки содержит ее длину.
Для строк определены операции присваивания, слияния (конкатенации)
и сравнения.
Для сравнения строк применяются все операции отношения. Сравнение
строк происходит посимвольно, начиная с первого символа. Строки рав-
ны, если имеют одинаковую длину и посимвольно эквивалентны.
Строки могут быть элементами списка ввода - вывода, при этом запи-
сывается имя строки без индекса.
При вводе строковых переменных количество вводимых символов может
быть меньше, чем длина строки. В этом случае вводимые символы разме-
щаются с начала строки, а оставшиеся байты заполняются пробелами. Ес-
ли количество вводимых символов превышает длину строки, лишние
символы отбрасываются.
Инициализация строк может производиться как с помощью типизирован-
ных констант:
const sName: String[9]= 'IBM PC/AT';
так и с использованием второй разновидности функции FillChar:
FillChar( var V; NBytes: Word; C: Char );
например:
FillChar(A, SizeOf(A), '0');
Для работы со строками в TURBO PASCAL включены процедуры и функ-
ции, которые обеспечивают редактирование и преобразование строк.