Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Program zapis;. Type {определение нового типа}

Определение процедур и функций | Вложенные подпрограммы | PROGRAM PROS; | И параметров-строк | Типы в Турбо Паскале | Служебные символы | Строковый тип | Перечислимый тип | Ограниченный тип (диапазон) | Структурированные типы данных. Массивы |


Читайте также:
  1. Mode, drive, access, driver, multitasking, bus, ROM, device, motherboard, program.
  2. Program Lab3;
  3. Program lr_10;
  4. PROGRAM PROS;
  5. PROGRAM sum;
  6. Program TREUG;

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;

Запись может иметь вариантную часть. Это означает, что можно за­дать в пределах одного типа несколько различных структур. Вариантная часть задается после перечисления фиксированных полей предложением CA­SE.. 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Множества| Процедурные типы

mybiblioteka.su - 2015-2024 год. (0.008 сек.)