Рефераты. Основы программирования на языке Паскаль

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));

readln;END.

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));

readln; END.

9. Записи

Ранее мы рассматривали структурированные данные, состоящие из компонент одного типа (массивы). Однако на практике часто необходимо иметь под одним именем совокупность данных различного типа. Например, информация о студенте может состоять из данных: фамилия, имя, отчество (тип string), домашний адрес (тип string), пол (тип char), номер группы (тип integer), номер комнаты проживания в общежитии (тип integer), изучаемые предметы (тип, массив строк) и т.д.

Для объединения разнотипных данных под одним именем и возможности последующей их обработки в языке Pascal предусмотрен тип данных запись.

Запись - поименованный структурированный тип данных, состоящий из фиксированного количества различных компонент. Определение (описание) данного типа "запись" начинается атрибутом record и заканчивается end.

Между record и end заключается список компонент записи, называемых полями, с указанием их имен и типа каждого поля. Туре имя типа=record идентификатор поля: тип компоненты; идентификатор поля: тип компоненты;

end;

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.