Лекции
.pdfИнформатика. Конспект лекций тема №1. Автор Рожков В.И.
var ch:char; x, y:text;
begin
assign(x, ‘x.txt’); assign(y,’y.txt’); reset(x); rewrite(y);
while NOT EoF(x) do begin
while NOT EoLN(x) do begin
read(x,ch); write(y, ch); if ch=’ ‘ then begin
repeat read(x, ch); until ch <> ‘ ‘; write(y, ch); end;
end;
readLN(x)
writeLN(y);
end;
end.
Строковые типы
Являются расширением языка Pascal. Строковый тип данных обобщает символьный массив, позволяет динамически изменять длину строки.
Строковый тип – множество символьных цепочек произвольной длины. Синтаксическая диаграмма:
type Line=string[80]; var Myline: Line;
Youline:string[80];
Переменные в примере в качестве своего значения могут иметь любую последовательность символов произвольной длины от 0 до 80. Значение может быть присвоено или считано из файла.
Myline:=’пример строки’; Youline:=Myline;
31
Информатика. Конспект лекций тема №1. Автор Рожков В.И.
Read(f, Myline);
Максимально допустимая длина строки – 255 символов. При описании можно не указывать длину строки тогда она будет максимальной – 255.
Line:string;
Основное отличие строки от обычных символьных массивов состоит в том, что они могут динамически изменять свою длину.
Myline:=’строка’; Myline:=Myline+’стала длинее’;
Память под строку резервируется по максимальной длине и используется только часть этой памяти реально занятой символами. В строке N байтов предназначены для хранения символов строки, а один байт – для значения текущей длины этой строки. Структура строки string:
Это используют для определения текущей длины строки Myline:=’QPRS’;
writeLN(Ord(Myline[0])); // результат 4 Myline[0]:=2;
writeLn(Myline);// будет напечатано QP Myline:=’’;
writeLN(Ord(Myline[0])); // результат 0
Стандартная функция Length – определяет текущую длину строки. Операции сравнения над строками:
< <= > >= = <> Действуют по правилу:
1.Более короткая строка всегда меньше более длиной.
2.Если длины строк равны, производится поэлементное сравнение символов.
Если при присвоении длина строки меньше чем длина строковой константы производится обрубание строки
var str:string[5]; begin
str:=’строка была длинна’; writeLN(str);
Доступ к отдельным элементам строки производится аналогично доступу
кэлементам одномерного массива. Но всегда необходимо учитывать текущую длину строки. Например:
var str:string[26];
32
Информатика. Конспект лекций тема №1. Автор Рожков В.И.
i:integer; begin str:=’A’;
for i:=1 to 26 do str[i]:=Chr(Ord(‘A’)+i-1); writeLn(str);
end.
Результат выполнения программы символ А. Правильная следующая программа
var str:string[26]; i:integer;
begin str:=’A’;
for i:=1 to 26 do str:=str+Chr(Ord(‘A’)+i-1); writeLn(str);
end.
33