Для работы со строками в языке программирования Паскаль включены процедуры и функции, которые обеспечивают редактирование и преобразование строк.
Length(s)
Возвращает длину строки s
Delete(s, Index, Count)
Удаляет в строке s Count символов, начиная с позиции Index
Insert(Substr, Dest, Index)
Вставляет в строку Dest подстроку Substr с позиции Index
Pos(Substr, s)
Возвращает позицию подстроки Substr в строке s либо 0, если Substr не входит в s
Copy(s, Index, Count)
Возвращает подстроку строки s, Count символов, начиная с позиции Index
Пример: работа со строками
readln(s);
s:=s+‘,_’+s+’!!!’;
writeln(s);
Пример: вывод всех символов строки s по отдельности
readln(s);
for i:=1 to length(s) do writeln(s[i]);
1. Как описываются строки в языке Паскаль?
2. Чем различаются строки фиксированной и переменной длины?
3. Какие операции допустимы над строками?
4. Какие процедуры и функции для работы со строками Вы знаете?
5. Что возвращает функция Length(s)?
6. Назовите основные отличия строки от массива символов.
Записи, как и массивы, являются структурами прямого доступа, однако, в отличие от последних, могут хранить элементы различных типов данных.
Таким образом, запись – это вектор, компоненты которого могут относиться к разным типам данных.
Запись представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам.
Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип данных этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль. Имена полей должны быть уникальны в пределах записи, но могут совпадать с именами переменных, описанных за пределами записи.
Описание записи в языке Паскаль осуществляется с помощью служебного слова Record, вслед за которым описываются поля записи. Завершается описание записи служебным словом end:
<имя поля 1>: <тип данных поля 1>;
[ <имя поля 2>: <тип данных поля 2>; ]
[ … ]
[ <имя поля n>: <тип данных поля n>; ]
end;
Так же, как и при описании переменных в разделе var, если несколько полей имеют одинаковый тип, то их описания можно объединить.
Например, записная книжка содержит фамилии, инициалы и номера телефона, поэтому отдельную строку в записной книжке удобно представить в виде следующей записи:
Пример: записная книжка – описание в разделе type
type
TRow=Record
FIO: String[20];
TEL: String[7]
end;
var
str: TRow;
Так, выше описана запись, содержащая два поля – FIO и TEL.
Описание записей возможно и без задания имени типа (в таком случае запись описывается в разделе var непосредственно после имени переменной).
Пример: записная книжка – описание в разделе var
var
str: Record
FIO: String[20];
TEL: String[7]
end;
Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа.
Пример: присваивание одной записи другой
var X, Y: TRow;
…
X:=Y;
Y:=X;
Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля. Такое имя называется составным.
Пример: обращение к полям записи
str.FIO, str.TEL
Компонентой записи может быть другая запись. В таком случае составное имя будет содержать не два, а большее количество имен.