Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 5.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
107.52 Кб
Скачать

5.4 Пример программы

Программа, осуществляющая ввод массива из 10 слов длиной 6-8 символов и в каждом слове заменяет символы 'а' на 'б', а также осуществляет преобразования вещественной и строковой констант.

Program Prin_Str;

Const X1=12.34;

Х2= '12.34';

Var X : array [1..10] of string[8]; {Массив слов}

St : string[7]; {Параметр для процедуры Str()}

V : real; {Параметр для процедуры Val}

Code : byte; {Параметр для процедуры Val}

D1 : integer; { Длина слова в массиве}

п : integer; {Позиция символа 'а'}

i, j : byte; {Переменные цикла}

Begin {---------Ввод массива из десяти слов---------------}

Writeln ('Программа обработки данных строкового типа');

Writeln;

Writeln('Введите 10 слов из 6-8 символов');

For i:=1 to 10 do

begin

Write(i, ' -e слово '} ;

Readln(X[i]) ;

end;

{------------Вывод на экран введенных данных--------}

Writeln('Введенные cлова');

For i:=l to 10 do Writein(i, '-e слово ',X[i]) ;

D1:=length(X[1]) ;

{------------Вывод кодов символов первого слова---------}

For i:=l to D1 do

Begin

Write(Ord(Xli]) ;

WriteLn

End;

{----------Преобразование числа в строку -----}

Str(X1:7, St) ;

WriteLn ('Число ',Х1:7:3,' преобразуется в строку ', St);

{-----------Преобразование строки в число ----------}

Val(X2, V, Code) ;

Writeln ('Строка ', Х2, ' преобразуется в число ',V);

WriteLn(' код ошибки ', Codе);

{---------------- Поиск в словах символа 'а'-----------}

{---------------- и замена его на символ 'б'------------}

For i:=l to 10 do

begin

{---- Определение наличия символа 'а' в слове X[i] и его позиции } n:=роs('а', X[i]);

{-—Запись символа 'б' на место, занимаемое символом 'а'—---}

if n>0 then X[n]:='б'

end;

{---------Преобразование массива из 10 слов в строку и----}

{---------вывод результата -------------}

End.

5.5 Представление типа запись

5.5.1 Комбинированные типы.

Комбинированные типы, как и регулярные типы, представляют собой правило формирования составных типов. В отличие от массивов, записи позволяют объединять значения различных типов и поэтому являются наиболее гибким механизмом построения данных.

Содержание комбинированного типа представляет собой список описаний его элементов (которые называются полями записи); каждое описание похоже на описание простой переменной. Список полей начинается служебным словом record и завершается end.

type

Person=record

Name, SecondName, SurName: string [20];

Sex: (Male, Female);

Speciality: Word;

end;

Структура записи состоит из фиксированного числа компонент (полей), каждое из которых имеет собственное (уникальное в пределах записи) имя и произвольный тип.

var

Sasha, Masha: Person;

Доступ к элементам (полям) записей производиться с помощью конструкции, называемой — селектор записи.

R . F

где R — переменная комбинированного типа, F — идентификатор поля.

Допустимы следующие конструкции:

Sasha.Name:=’Александр’;

Masha.Sex:=Female;

При записи селектора необходимо помнить, что слева от символа «точка» всегда должна находиться переменная типа запись, а справа идентификатор поля этой записи.

5.5.2 Комбинированные типы с вариантом.

Любой комбинированный тип, помимо фиксированного списка полей, может содержать вариантную часть, предполагающую определение нескольких вариантов структуры этого типа. Различие может касаться как числа компонент, так и их типа.

Вариантная часть содержит несколько альтернатив в каждой из которых в круглых скобках задается список полей, присущих данному варианту. Списку предшествует метка, являющаяся конкретным значение поля, которое является критерием выбора.

type

PersonSex = (Male, Female);

Person = record

Name, SecondName, SurName : string [20];

Speciality : Word;

case Sex : PersonSex of

Male : (Army : integer;

Smoking : boolean);

Female : (EyesColor : (Blue, Brown, Gray

Green))

end;

  • в определении комбинированного типа может быть только одна вариантная часть, и она должна быть задана в конце записи;

  • альтернативы вариантной части помечаются допустимыми значениями поля Sex, определение этого поля вынесено из фиксированной части и помещено в заголовке вариантной части;

  • идентификаторы полей во всех вариантах должны быть различны и отличаться от идентификаторов полей фиксированной части;

  • для некоторых значений поля—дискриминанта вариант может отсутствовать, тогда после двоеточия ставится пустой список ( ).

5.5.3 Оператор присоединения.

Если в некотором месте программы сосредоточено несколько операторов, манипулирующих с полями определенной записи, то существует возможность «вывести» общий для всех составных имен идентификатор записи в отдельный заголовок. После этого достаточно указать только поля записи посредством их идентификаторов. Соответствующая конструкция называется «оператором над записями» или «оператором присоединения».

With Sasha do Name:=’Александр’;

или

With Sasha do

begin

Name:=’Александр’;

end;