readln; END.
Если бы в var было указано string[10], то writeln(st1), вывел бы результат "отдел № 25"
8.3. Стандартные процедуры и функции для обработки строк
8.3.1. Процедуры обработки строк
Delete (st, Poz, N) - удаление N символов из строки с именем st, начиная с позиции Poz.
st:='река_Волга'; Delete (st, 1, 5);
Результат 'Волга'.
insert (stl, st2, poz); - вставка строки stl в строку st2, начиная с позиции Poz.
st1: = 'Дом_25_'
st2: =' На_улице_живет_петух_';
insert (stl, st2, 10);
Результат: "На_улице_дом 25_живет_петух";
str (IBR, st); преобразует число IBR (типа integer, byte или Real) и помещает результат в строку st. Возможно после IBR указать ширину поля. Если ширины поля не хватает, оно автоматически расширяется до нужной величины.
str (1500:6, stl); даст результат '_1500';
str (4.8е+03:10, stl); - результат '_ 4.800E+03';
str (-46854:3, stl); - результат '-46854'.
Val (st, IBR, Cod); процедура преобразует значение st в величину целочисленного или вещественного типа и помещает результат в IBR. Значение st должно содержать символьное изображение числа и не содержать символов, не присущих изображению чисел (например, пробелов перед цифрами), букв и т.п. Cod - целочисленная переменная индуцирующая ошибку. Если Cod=0, преобразование произведено без ошибки, если Cod=5, то ошибка при преобразовании - 5 символов.
Программа Program Prim 40; иллюстрирует работу вышеописанных процедур:
Program Prim40; var st1,st2:string[30];
BEGIN st1:=' река Волга ';
delete(st1,1,5); writeln(st1);
st1:='дом 25 '; st2:='на улице живет петух';
insert(st1,st2,10); writeln(st2);
str(1500:6,st1); writeln(st1);
str(4.8e+03:10,st1); writeln(st1);
str(-46854:3,st1); writeln(st1);
readln;END.
8.3.2. Функции обработки строк
Сору (st, Poz, N) выделяет из st подстроку длиной N символов, начиная с позиции Poz.
stl:='absdefg'; writeln (Сору (stl, 2, 3));
результат bсd
Const (stl, st2,..., stn) выполняет сцепление строк stl... stn. Длина суммарной строки не должна превышать 255 символов.
Length (st) определяет длину строки, результат - integer.
Pos (stl, st2) обнаруживает первое появление строки stl в строке st2. Результат - целое число, определяющее номер позиции, в которой находится первый символ подстроки st1. Если st1 не содержится в строке st2, то результат равен 0.
UpCase (ch) преобразует строчную букву в прописную.
Параметр и результат имеют литерный тип.
ch:=a'; UpCase (ch) имеет результат 'A'.
Program Prim 41, Prim 42, Prim 43 иллюстрируют работу вышеописанных функций.
Program Prim41; var st1,st2:string[30]; s:char; BEGIN st1:='отдел № 256'; writeln(copy(st1,7,5)); st2:='находится в НИИ 5';
writeln(concat(st1,st2));
writeln(length(st2));
st2:='n 256';
writeln(pos(st2,st1));
s:='a';
writeln(upcase(s));
Program Prim42; {программа удаляет все пробелы в строке, стоящие в строке слева, если они имеются}
Var str:string[255]; { Var str: string; будет работать так же} function del(stroka:string):string;
Var dlina:byte;
Begin dlina:=Ord(stroka[0]);
while ((dlina>0)and(copy(stroka,1,1)=' '))do
delete(stroka,1,1);
del:=stroka;
end;
BEGIN writeln('введите строку');
readln(str);
writeln(del(str)); readln;
END.
Program Prim43; { Даны три исходные строки A,B,C. В строке А определить первую бук } { ву; Затем заменить первую букву строки А со строчной на заглавную; } { объединить в одну строку A,B,C; Определить длины строк A,B,C} { и в результирующей строке вставить '-' между составляющими ее}{ строками. В результирующей строке найти номер позиции, в которой } { буква "а" встречается первый раз; определить длину результирующей } { строки. После каждого действия печатать результаты. } Var A,B,C:string[14]; str:string[50]; ch:string[1]; d1,d2,d3:integer;
Begin A:='электронная'; B:='вычислительная'; C:='машина'; ch:=copy(A,1,1); writeln(ch);
delete(A,1,1); writeln(A);
writeln(upcase(ch[1]));
insert(upcase(ch[1]),A,1); writeln(A);
str:=concat(A,B,C); writeln(str);
d1:=length(A); d2:=length(B); d3:=length(C);
writeln('длины строк ' ,d1:6,d2:6,d3:6); insert('-',str,d1+1); insert('-',str,d1+d2+2);
writeln(str);
writeln('первый раз буква "а"стоит в результирующей строке ', 'в позиции ',pos('а',str)); writeln('общая длина строки =',length(str));
Ранее мы рассматривали структурированные данные, состоящие из компонент одного типа (массивы). Однако на практике часто необходимо иметь под одним именем совокупность данных различного типа. Например, информация о студенте может состоять из данных: фамилия, имя, отчество (тип string), домашний адрес (тип string), пол (тип char), номер группы (тип integer), номер комнаты проживания в общежитии (тип integer), изучаемые предметы (тип, массив строк) и т.д.
Для объединения разнотипных данных под одним именем и возможности последующей их обработки в языке Pascal предусмотрен тип данных запись.
Запись - поименованный структурированный тип данных, состоящий из фиксированного количества различных компонент. Определение (описание) данного типа "запись" начинается атрибутом record и заканчивается end.
Между record и end заключается список компонент записи, называемых полями, с указанием их имен и типа каждого поля. Туре имя типа=record идентификатор поля: тип компоненты; идентификатор поля: тип компоненты;
Var идентификатор: имя типа; Возможно и «прямое» описание записи, без предварительного описания типа. Пример описания записи с помощью предварительного задания типа:Туре Car=record Nomer: integer; {номер} Marka: string [20]; {марка автомобиля} FIO: string [40], {ф.и.о. владельца} adres: string [60]; {адрес владельца}end;Var M, V: Car;Либо «прямое» описание:Var М, V: Record Nomer: integer; Marka: string [20];
FIO: string [40]; adres: string [60]; end; Идентификатор поля должен быть уникален только в пределах записи, однако во избежание ошибок лучше его делать уникальным в пределах программы.
Объем памяти, выделяемый в разделе Var, для хранения записи складывается из объемов памяти - суммы длин полей. Значения полей записи могут использоваться в выражениях, при этом в них должны указываться составные (уточненные) имена, так как имена полей в различных записях могут совпадать. Например, чтобы получить доступ к полям записи Саr, необходимо пользоваться именами М. FIO, М. NOMER для записи М, а для записи V - именами V. FIO, V. NOMER. Эти имена можно использовать везде, где применяются обычные имена, например, в операторах присваивания:
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28