Читайте также: |
|
Type {определение нового типа}
student = record {запись}
name:string[15];
den, mes:byte;
god:word
end;
Var
Z: ARRAY [1..20] OF student;
k,m,i,n: byte;
r:string[15]; {вспомогательная строка для перестановки}
BEGIN
writeln('ВВЕДИТЕ КОЛИЧЕСТВО СТУДЕНТОВ');
READln(n);
for i:=1 to n do
begin
writeLN('ВВЕДИТЕ имя ',i,' студента с прописной буквы');
readLN (z[i].name);
WRITELN('ВВЕДИТЕ день рождения');
readLN(z[i].den);
WRITELN('ВВЕДИТЕ месяц рождения');
readLN(z[i].mes);
WRITELN('ВВЕДИТЕ год рождения');
readLN(z[i].god);
end;
for i:=n downto 2 do {********* Упорядочение списка *********]
begin {поиск "наибольшего" значения поля NAME}
m:=1;
for k:=2 to i do if z[k].name>z[m].name then m:=k;
r:=z[i].name; {перестановка записей}
z[i].name:=z[m].name;
z[m].name:=r
end; {**************************************}
writeln(' Упорядоченный список ');
for i:=1 to n do
begin
WRITE(z[i].name);
WRITELN(' Дата рождения:',z[i].den,'.',z[i].mes,'.',z[i].god);
end
END.
Для упрощения доступа к полям записи может использоваться оператор присоединения. Структура оператора имеет вид
WITH <переменнаяТипаЗапись> DO <оператор>;
где WITH, DO - ключевые слова (с, делать).
Пример: WITH a DO
begin
name:='MARINA';
god:=1981;
date:=23;
mes:=3
end;
Поле записи может иметь практически любой тип (массив, другая запись, множество). Доступ к вложенным элементам сложных структур, например, к записи в записи, выполняется перечислением ряда полей через точку или оператор присоединения.
Пример. Определим вложенную запись (запись в записи)
TYPE
STUDENT=RECORD
name:string;
DenRogden: RECORD
den,mes:byte;
god:word
end;
end;
VAR z: STUDENT;
Имя DenRogden в свою очередь тоже является записью, тогда обращение к вложенным полям выполняется в виде
z.name:= 'LIZA';
z.DenRogden.god:= 1984;
Используя оператор присоединения, к этим же полям можно получить доступ
другими способами:
WITH z DO
begin
name:='LIZA';
with DenRogden DO
god:=1984;
end;
или
WITH z DO name:='LIZA';
WITH Z DO with DenRogden DO god:=1984;
К полю GOD можно обратиться и следующим оператором
WITH z.DenRogden DO god:=1984;
Запись может иметь вариантную часть. Это означает, что можно задать в пределах одного типа несколько различных структур. Вариантная часть задается после перечисления фиксированных полей предложением CASE.. OF (не оператор CASE). Вариантная часть состоит из нескольких вариантов, каждый из которых определяется константой выбора, за которой следует двоеточие и список полей с указанием типа:
TYPE
<имя типа> = RECORD
<поле1>:тип_поля1;
<поле2>:тип_поля2;
CASE <переменная_переключатель> OF
<константа_выбора1>: (<поле_c11>:<тип_поля_с11>;
<поле_с12>:<тип_поля_с12>;...)
<константа_выбора2>: (<поле с21>:<тип поля с21>;
<поле_с22>:<тип_поля_с22>;...)
...
<константа_выбораk>: (<поле_сk1>:<тип_поля ck1>;
<поле_ck2>:<тип поля_ck2>;...)
END;
Переменную-переключатель называют также тагом (тэгом, тегом) - ярлыком, признаком, дискриминантом.
В любой записи может быть только одна вариантная часть.
Особенностью вариантной части является то обстоятельство, что все заданные в ней варианты как бы "накладываются" друг на друга, т.е. каждому из них выделяется одна и та же область памяти компьютера.
Пример: Пусть необходимо собрать сведения о студентах группы: фамилия, дата рождения, номер комнаты (если живет в общежитии) или почтовый индекс и адрес (если нет). Тогда тип задается следующим образом.
TYPE MESTO=(ob,dom);
VAR N: mesto;
TYPE
STUD= RECORD name:= string;
DENROGD: RECORD
data: read;
god: word
END;
CASE N OF
dom: (indeks:word;adres:string)
ob: (komn:word)
END;
Var W: STUD;
В основном блоке программы при обращении к компонентам части CASE необходимо предусмотреть разветвление (операторами IF либо CASE). Переключателю N присваивается соответствующее значение. В зависимости от значения переключателя переменная W, помимо полей name и dateRogd содержит поля, которые соответствуют той константе выбора, с которой совпадает значение N. Далее выполняется операция с компонентой W.dom и W.ob.
Используя тип "запись", можно составить базы данных для разных назначений, а затем обрабатывать их с помощью программы [1-3].
Особенности комбинированного типа:
1. Любая запись может иметь только одну вариантную часть, она распола- гается последней в записи.
2. Среди идентификаторов полей не должно быть одинаковых.
3. Переменная-переключатель должна определяться некоторым стандартным или предварительно объявленным типом.
4. Перед засылкой информации в запись программист должен присвоить переключателю определенное значение.
5. Турбо Паскаль допускает использование вложенных вариантных частей.
Дата добавления: 2015-09-05; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Множества | | | Процедурные типы |