Студопедия
Главная страница | Контакты | Случайная страница

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

Case поле_признака : имя_типа of

Записи с фиксированными частями

Формат описания:

1-ый способ:

Type

имя _ типа_записи = Record

список_имен _ полей_1: тип_1;

список_имен _ полей_2: тип_2;

...

список_имен _ полей_N: тип_N

end;

Var

имя_перем_записи: имя _ типа_записи;

2-ой способ:

Var

имя_перем_записи: Record

список_имен _ полей_1: тип_1;

список_имен _ полей_2: тип_2;

...

список_имен _ полей_N: тип_N

end;

Пример 8.1 (описания записей):

1) определение комплексных чисел:

Type

Complex = Record

Re, Im: Real

end;

Var

X, Y: Complex;

2) определение даты:

Type

Date = Record

Day: 1 .. 31;

Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec);

Year: Integer

end;

Var

D1, D2: Date;

Доступ к полям записи осуществляется путем указания идентификатора переменной-записи и идентификатора поля, разделенныхточкой (такая комбинация называется составным именем), например:

X. Re: = 10. 5;

X. Im: = 5. 3;

D1. Day: = 2 8;

D1. Mont: = Oct;

D1. Year: = 2009;

Read (X. Re);

Write ( a + i*b = ’, X. Re, ‘ + i * ’, X. Im);

Все действия производятся над полями записи, только операцию присваивания можно выполнить над всей записью:

D1: = D2;

Разрешается использовать тип запись при описании других типов данных: массив записей, запись записей и т.д.

Type

Family = (Father, Mother, Son, Daudhter);

Day = 1 .. 31;

Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec);

Year = 1900 .. 2010;

Date = Record

D: Day;

M: Month;

Y: Year

end;

T_Fio = Record

Fam: String [ 20 ];

Name: String [ 15 ];

Otch: String [ 15 ]

end;

T_Ank = Record

Fio: T_Fio;

Dat: Date;

Adr: String

end;

List = Array [ Family ] of T_Ank;

Var

Ank_Fam: List;

...

WriteLn ( Введи FIO отца );

Write ( Фамилия: );

ReadLn (Ank_Fam [ Father ]. Fio. Fam);

Write ( Имя: );

ReadLn (Ank_Fam [ Father ]. Fio. Name);

Write ( Отчество: );

ReadLn (Ank_Fam [ Father ]. Fio. Otch);

...

Оператор With

Для более простого обращения к отдельным полям записей (как если бы это были простые переменные) используется оператор присоединения With:

Формат оператора:

With список_переменных_типа_запись do оператор;

Внутри оператор’а поле записи опознается только по имени поля без указания имени записи:

With X, D1 do

Begin

Re: = 10.5;

Im: = 5.3;

Day: = 2 8;

Mont: = Oct;

Year: = 2009

End;

Сравните с примером в начале пункта (без использования оператора With). Понятно, что в операторе With нельзя указывать имена нескольких записей одного и того же типа.

Поскольку Паскаль допускает вложение записей друг в друга (см., пример выше), то оператор With тоже может быть вложенным (уровень вложения не должен превышать 9):

Withсписок_переменных_1 do

With список_переменных_2 do

...

With список_переменных_N do оператор;

Последнее можно записать более коротко:

Withсписок_переменных_1, список_переменных_2,..., список_переменных_N do

оператор;

Записи с фиксированными частями можно описывать с помощью типизованных констант:

Const

имя_типиз_конст: тип = (список_значений_полей);

Список значений полей представляет собой список отделяемых друг от друга точкой с запятой элементов вида:

имя_поля: константа


Пример:

Type

Point = Record

x, y: Real

end;

Vector = Array [ 0 .. 1 ] of Point;

Date = Record

Day: 1 .. 31;

Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec);

Year: 1900 .. 2010

end;

Const

Origon: Point = (x: 1.1; y: -1.2);

Line: Vector = ((x: -4.1; y: 6.5),

(x: 5.3; y: 3.6));

SomeDay: Date = (Day: 2 8; Month: Oct; Year: 2009);

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

Записи, кроме фиксированных полей, могут иметь вариантную часть, т.е. в зависимости от значения поля признака (когда его значение совпадает с соответствующей меткой) может добавляться соответствующий вариант дополнительных полей. Такие записи называются записями с вариантами.

Записи с вариантами состоят из необязательной фиксированной и вариантной части. Использование фиксированной части не отличается от использования, описанного выше.

Вариантная часть формируется с помощью конструкции, аналогичной оператору case. Она задает особое поле записиполе признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком, задает вариант записи и называется константой выбора.

Формат описания:

Type

имя _ типа = Record

 

{ фиксированная часть (может отсутствовать): }

 

список_имен _ полей_1: тип_1;

...

список_имен _ полей_N: тип_N

 

{ вариантная часть: }

Case поле_признака: имя_типа of

константа_выбора_1: (вариант_списка_имен _ полей_и_типов_1);

...

константа_выбора_M: (вариант_списка_имен _ полей_и_типов_M)

end;

Пример:

Type

Tovar = Record

 

{ фиксированная часть: }

 

Nomer: Byte;

A rticle: String

 

{ вариантная часть: }

 




Дата добавления: 2015-02-16; просмотров: 171 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Выражения с множествами| Стандартные модули

lektsii.net - Лекции.Нет - 2014-2025 год. (0.014 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав