- •Лабораторная работа №5 Обработка строковых данных с использованием типа запись
- •5.1 Цель работы
- •5.2 Определение переменных строкового типа.
- •5.2 Строковые выражения
- •5.4 Пример программы
- •5.5 Представление типа запись
- •5.6 Задание на лабораторную работу
- •5.7 Варианты заданий
- •5.6 Контрольные вопросы
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;
