Лекция: Uses crt; или uses crt;
type zap=record type zap=record
npp:byte; npp:byte;
fio:record fio:record
f,i,o:string[15]; f,i,o:string[15];
End; end;
nzk:word; nzk:word;
dtr:record dtr:record
g:1970..2000; g:1970..2000;
m:string[3]; m:string[3];
d:1..31 d:1..31
End; end;
End; end;
var a:zap; var a:zap;
k,n:byte; k,n:byte;
Begin clrscr; begin clrscr;
k:=0; k:=0;
With a do with a,fio,dtr do
With fio do repeat
With dtr do inc(k);
repeat writeln('ввод ');
Inc(k); readln(npp);
writeln('ввод '); readln(f);
Readln(npp); readln(i);
Readln(f); readln(o);
Readln(i); readln(nzk);
Readln(o); readln(g);
Readln(nzk); readln(m);
Readln(g); readln(d);
readln(m); until d=99;
Readln(d); writeln(k);
until d=99; readkey
Writeln(k); end.
Readkey
End.
Запись с вариантами.
Состав и структура записи могут динамически меняться в зависимости от значения какого-либо из своих полей, называемого полем-признаком.
В общем виде описание записи с вариантами выглядит так:
TYPE <идентификатор типа>= RECORD
<идентификатор поля 1>:<тип 1>;
<идентификатор поля 2>:<тип 2>;
.. .
CASE <селектор>:<тип селектора> OF
<метка варианта 1>:(<поле варианта 11>:<тип 11>
[;<поле вар-та 12>:<тип 12>;<поле варианта 13>:<тип 13>;.. .]);
<метка варианта 2>:(<поле варианта 21>:<тип 21>
[;<поле вар-та 22>:<тип 22>;<поле варианта 23>:<тип 23>;.. .]);
<метка варианта k>:(<поле варианта k1>:<тип k1>
[;<поле вар-та k2>:<тип k2>;<поле варианта k3>:<тип k3>;.. .]);
.. .
<метка варианта m>:( )
END;
В этом описании вариантная часть записывается после постоянной части, к которой относятся поля 1, 2..., и может быть только одна в записи. Метки варианта должны иметь такой же тип, как у селектора. Если какой-либо метке варианта не соответствуют поля, то записываются пустые круглые скобки, как у метки варианта m.
Пусть требуется описать запись следующей структуры. В каждой записи имеются поля, содержащие табельный номер и фамилию. В зависимости от того, кому принадлежит запись, состав остальных полей может быть разным:
— для студентов поля: номер группы и специальность;
— для преподавателей: институт, кафедра, стаж работы;
— для сотрудников дополнительных полей нет.
В виде графа структуру записей можно изобразить:
Описание соответствующей записи структуры данных:
type tz=record
tn:byte;
fio:string;
case n:char of
‘p’: ( in:byte; kaf:string; st:byte );
‘s’: ( ng:byte; sp:integer );
‘a’: ( )
End;
var Z:tz;
Вопросы к главе 3.
1. Как описываются множества?
2. Варианты использования множеств.
3. Основные операции над множествами.
4. Способы описания записи.
5. Обращение к компонентам записи.
6. Использование оператора присоединения With.
7. Назначение и общий вид записи с вариантами.