- •Курс «основы алгоритмизации и программирования»
- •Тема: «структурированные типы данных»
- •Классификация типов данных, используемых в программах на языке паскаль
- •1. Строковый тип данных
- •1.1. Базовый тип
- •1.2. Объявление строкового типа
- •1.3. Операции над строками
- •1.4. Стандартные процедуры и функции обработки строк
- •1.5. Ввод-вывод строк
- •1.6. Asciiz-строки
- •2. Комбинированные типы данных
- •2.1. Описание записи
- •Организация записи stud
- •2.2. Селектор записи
- •2.3. Оператор присоединения
- •2.4. Вложенные записи
- •2.5. Записи с вариантами
- •3. Индивидуальные задания.
- •Тема: «структурированные типы данных»
- •- Страница 18 -
1.2. Объявление строкового типа
Строка – это последовательность символов, заключенная в апострофы.Ее длина может изменяться от 0 до 255 символов. Определение строкового типа устанавливает максимальное количество символов, которое может иметь строка. Оно имеет следующий вид:
type <имя_типа> = string[<максимальная_длина_строки>];
Тип string(строка) в Турбо Паскале широко используется для обработки текстов и во многом похож на одномерный массив символовarray[0..N] of char. В отличие от массива количество символов в строке-переменной может меняться от 0 доN(N– максимальное количество символов в строке). ЗначениеNобъявляется в типеstring[N] и не должно превышать 255. При отсутствииNчитается, чтоN=255. Например:
const addres=’пр. Гагарина, 59/1’; {строковая константа}
type line=string[80]; {строковый тип}
var paragraph:line;{строка не более 80 символов}
name:string[12];{строка в 12 символов}
alphabet: string; {строка максимальной длины}
К любому символу в строке можно обратиться точно так же, как и к элементу одномерного массива, например:
var st:string;
. . .
if st[5]=’A’ then st[5]:=#49{занести в качестве пятого символа строки}
{вместо символа буквы ‘A’ символ цифры}
{‘1’ (ASCII-код ‘1’ соответствует числу 49)}
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки. Над длиной строки можно осуществлять необходимые действия, например, изменять ее значение:
var st:string[10];
i:integer;
. . .
i:=10;
while st[i]=’ ‘ do
begin
dec(i);
st[0]:=chr(i)
end;
Текущую длину строки можно получить с помощью выражения ord(st[0])или с помощью встроенной функцииlength(st).
1.3. Операции над строками
Для строк применимы операции конкатенации и сравнения.
Операция конкатенации или сцепленияобозначается знаком + и позволяет объединить две строки, представленные константами или переменными, в одну результирующую, например:
st:=’КИНО’+’ТЕАТР’;
При этом переменная stпринимает значениеКИНОТЕАТР.
Или :
var st, st1, st2:string[80];
begin
st1:=’Turbo’;
st2:=’Pascal’;
st:=st1+’ ‘+st2
end.
даст значение переменной stравной строке ‘Turbo Pascal’.
Операции отношенияпроводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция сцепления. Сравнение строк производится посимвольно слева направо до первой пары несовпадающих символов в соответствии сASCII-кодами соответствующих символов. И та строка считается больше, в которой несовпадающий символ имеет больший код в таблице символов. Так, например, отношение ‘космос’ > ‘космополит’дает значениеtrue, поскольку части строк ‘космо’являются общими, а в следующей паре символов ‘c’и ‘п’символ ‘c’имеет код больше, чем символ ‘п’.
Если сравниваются строки различной длины, но в общей части символы совпадают, считается, что более короткая строка меньше длинной, т.к. отсутствующие символы в ней имеют код меньше кода любого значащего символа, поскольку перед сравнением строк производится их выравнивание путем добавления к более короткой строке символов chr(0)с кодом 0. Например, строка‘Turbo Pascal’ больше строки‘Turbo’.