Запись - описание комбинированного типа, состоящее из нескольких полей, каждое из которых имеет свой тип. TYPE

Содержание

Слайд 2

3 Begin a.name:='MARINA'; a.god:=1990; a.den:=23; a.mes:=3; Операция присваивания: B := A;

3

Begin
a.name:='MARINA';
a.god:=1990;
a.den:=23;
a.mes:=3;
Операция присваивания: B := A;
Действия, разрешенные для базового типа:
b.name:=‘NIK';
b.god:=a.god-1;

(на год старше)
Для доступа к полям записи используется оператор присоединения:
WITH <переменнаяТипа"запись"> DO <оператор>;
c выполнять
Например:
WITH a DO begin
name:='MARINA';
god:=1990;
den:=23;
mes:=3
end;
Слайд 3

год Доступ к вложенным элементам выполняется записью ряда полей через точку

год

Доступ к вложенным элементам выполняется записью ряда полей через точку или

оператор(ы) присоединения.
Пример: определим сложную запись (вложенные записи)
TYPE
STUDENT=RECORD
name:string;
DENROGD: RECORD
den,mes:byte;
god:word
end;
end;
VAR s: STUDENT;
begin
s.name:=‘LIZA’;
s.DENROGD.god:=1991;
Или WITH s DO name:=‘LIZA’;
WITH s DO with DENROGD DO god:=1991;
Или WITH s.DENROGD DO god:=1991;
DENROGD является вложенной записью для записи STUDENT
Слайд 4

ПРИМЕР Напечатать сведения о студентах заданного года рождения program zap12; USES

ПРИМЕР Напечатать сведения о студентах заданного года рождения

program zap12;
USES CRT;
Type

student=record
name:string[15];
denRogd: RECORD
den, mes:byte;
god:word
end;
end;
var
Z: ARRAY [1..20] OF student;
i, n: byte;
BEGIN
CLRSCR;
writeln('ВВЕДИТЕ КОЛИЧЕСТВО СТУДЕНТОВ');
READln(n); {ввод данных}
FOR i:=1 TO n DO WITH z[i] DO NAME:=‘ ';
Слайд 5

for i:=1 to n do begin writeLN('ВВЕДИТЕ ИМЯ ',i,' СТУДЕНТА'); readln(z[i].name);

for i:=1 to n do
begin
writeLN('ВВЕДИТЕ ИМЯ ',i,' СТУДЕНТА');
readln(z[i].name);
WRITELN('ВВЕДИТЕ

день рождения');
readLN(z[i].denRogd.den);
WRITELN('ВВЕДИТЕ месяц рождения');
readLN(z[i].denRogd.mes);
WRITELN('ВВЕДИТЕ год рождения');
readLN(z[i].denRogd.god);
end;
writeln('СПИСОК ');

for i:=1 to n do
if z[i].denRogd.god=1992 then
begin
writeLn('ИМЯ ',i, 'СТУДЕНТА');
WRITELN(z[i].name);
WRITE(' день рождения ');
writeln(z[i].denRogd.den);
WRITE(' месяц рождения ');
writeln(z[i].denRogd.mes);
WRITE(' год рождения ');
writeln(z[i].denRogd.god);
WRITELN;
end;

Слайд 6

Записи с вариантами CASE .. OF вариантное поле при определении записи

Записи с вариантами

CASE .. OF вариантное поле при определении записи
TYPE
<имя типа>=RECORD
<поле1>:тип

поля1;
<поле2>:тип поля2;
CASE <переменная-переключатель> OF
<константа выбора1>: (<поле c11>:<тип поля с11>;
<поле с12>:<тип поля с12>;...);
<константа выбора2>: (<поле с21>:<тип поля с21>;
<поле с22>:<тип поля с22>;...);
. . .
<константа выбораk>: (<поле сk1>:<тип поля ck1>;
<поле cr2>:<тип поля ck2>;...)
END;
Тип полей с11, с12 - компоненты варианта.
<константа>: ( )
Слайд 7

Пример: Пусть необходимо собрать сведения о студентах группы: фамилия, дата рождения,

Пример: Пусть необходимо собрать сведения о студентах группы: фамилия, дата рождения,

номер комнаты (если живет в общежитии) или почтовый индекс и адрес (если нет).
TYPE MESTO=(ob,dom);
STUDENT=RECORD
name:=string;
DENROGD: RECORD data:read;
god:word
END;
CASE N OF dom: (indeks:word;adres:string);
ob: (komn:word);
END;
Var z: student;
Переменную-переключатель называют также тагом (тэг, тег) - ярлыком, признаком, дискриминантом.
Пример: Cоздать запись - данные об одном из студентов - Петрове, родившемся 15.03.90, адрес; Маркса 6-2.
Слайд 8

Const N=Dom; … Begin With z do begin Name:=‘Petrov’; {z.name=‘Petrov’} with

Const N=Dom;

Begin
With z do begin
Name:=‘Petrov’; {z.name=‘Petrov’}
with denRogd do

begin
God:=1980; {z.denRog.god:=1990}
data:=15.03; {z.denRog.data:=15.03}
If N=OB then read(komn); {z.komn:= }
else begin
indeks:=24;
ADRES:=‘Marksa 6-2’;
End;

With z do write(‘i’, name); {печать из z.name}
With z.denRogd do write(‘ ’, god, ‘.’, date:5:2); {1990.15.03}
If N=OB then With z do write (‘комната’, komn);
еlse With z do write(‘индекс’ , indeks, ‘адрес’, adress);
End.
Слайд 9

Пример предыдущий, но если студент живет в общежитии, добавить поля: если

Пример предыдущий, но если студент живет в общежитии, добавить поля: если

он из Омска - ничего, если из другого города - название. .

TYPE GOR=(OBL, NO);
STUDENT=RECORD
name:=string;
DENROGD: RECORD
… … …
Case N: Mesto OF DOM: (indeks: Byte, Adres:string);
OB: (Komn:word; Case YN: Gor OF {адрес:string}
OBL: ();
NO: (Gorod:string);
End;
Var st: array [1..20] of student;

Слайд 10

{Пример Разработать программу Формирования списка студентов с указанием дат рождения, номера

{Пример Разработать программу Формирования списка студентов с указанием дат рождения, номера

комнаты, если живет в общежитии, индекса и адреса, если в Омске, а так же вывода сведений о студенте по его ИМЕНИ}

Program zap2case;
USES CRT; {подключение модуля СRT}
type {определение нового типа}
MESTO=(ob,dom);
student=record {запись}
name:string[15];
denRogd: RECORD {вложенная запись}
data:real;
god:word
end;
CASE N:mesto of
dom: (index:word; adres:string) ; ob: (komn:word)
end;

var Zz: ARRAY [1..20] OF student;
s:string; {g:word;}
i,m,j: byte;
BEGIN
CLRSCR;
writeln(‘введите количество студентов');
READln(m);
for i:=1 to m do with zz[i] do
begin
writeLN(‘введите имя ',i,’студента);
readln(name);
with denrogd do
begin
WRITELN(‘введите день и месяц рождения');
readLN(data);