TURBO PASCAL |
Новости
|
Типы записьТип запись содержит установленное число элементов или полей, которые могут быть различных типов. Описание типа запись указыва- ет тип каждого поля и идентификатор, который именует поле. ┌────────┐ ┌─────┐ тип запись ───>│ record ├──┬────────────────>│ end ├──> └────────┘ │ ┌────────┐ ^ └─────┘ └─>│ список ├─┘ │ полей │ └────────┘ список ┌────────────┐ полей┬─>│ фиксирован-├─┬────────────────────────────┬──────────> │ │ ная часть │ │ ┌───┐ ┌────────────┐ ^ │ ┌───┐ ^ │ └────────────┘ └─>│ ; ├───>│ вариантная ├─┘ └─>│ ; ├─┘ │ └───┘ ^ │ часть │ └───┘ └──────────────────────────┘ └────────────┘ ┌─────────────────┐ ┌───┐ ┌─────┐ фиксированная ────>│ список ├──>│ : ├───>│ тип ├──┬──> часть ^ │ идентификаторов │ └───┘ └─────┘ │ │ └─────────────────┘ │ │ │ │ ┌───┐ │ └────────────┤ ; │<────────────────────────┘ └───┘ Фиксированная часть типа запись содержит список фиксирован- ных полей вместе с идентификатором и типом для каждого поля. Каж- дое поле содержит информацию, которая всегда отыскивается одним и тем же способом. Приведем пример типа запись: record year: integer; { год } month: 1..12; { месяц } day: 1..31; { число } end В вариантной части, изображенной на синтаксической диаграмме описания типа запись, память распределяется более чем для одного списка полей, поэтому доступ к информации может быть осуществлен более чем одним способом. Каждый список полей является вариантом. Варианты налагаются друг на друга в памяти, поэтому в любое время возможен доступ ко всем полям во всех вариантах. вариантная часть │ ┌────┐ ┌────────┐ ┌──┐ ┌───────┐ └─>│case├─┬───────────────────>│тип поля├─>│of├────>│вариант├─┬> └────┘ │ ^ │признака│ └──┘ ^ └───────┘ │ │ ┌───────┐ ┌───┐ │ └────────┘ │ ┌───┐ │ └>│иденти-├>│ : ├─┘ └────┤ ; │<───┘ │фикатор│ └───┘ └───┘ └───────┘ ┌────────────────┐ тип поля ────>│ идентификатор ├────> признака │порядкового типа│ └────────────────┘ ┌─────────┐ ┌───┐ ┌───┐ ┌───┐ вариант ────>│константа├─┬─>│ : ├─>│ ( ├─┬─────────────>│ ) ├──> ^ └─────────┘ │ └───┘ └───┘ │ ^ └───┘ │ ┌───┐ │ │ │ └────┤ , │<────┘ │ ┌──────┐ │ └───┘ └─>│список├─┘ │полей │ └──────┘ Вы можете видеть на диаграмме, что каждый вариант идентифи- цирован по крайней мере одной константой. Все константы должны быть отличными друг от друга и иметь порядковый тип, совместимый с типом поля признака. Доступ к вариантным и фиксированным полям один и тот же. В вариантной части можно указать необязательный идентифика- тор - идентификатор признака поля. При наличии идентификатора признака поля он становится идентификатором дополнительного фик- сированного поля записи - поля признака. Программа может исполь- зовать значение поля признака для указания, какой вариант являет- ся активным в настоящий момент. Без указания поля признака программа выбирает вариант по другому критерию. Ниже приводятся несколько примеров типов запись: record firstName,lastName : string[40]; birthDate : Date; case citizen : boolean of True : (birthPlace: string[40]); False : (country : string[20]; entryPort : string[20]; entryDate : Date; exitDate : Date); end record x,y : real; case kind : Figure of rectangle : (height,wigth: real); { прямоугольник } triangle : (size1,side2,angle: real); { треугольник } circle : (radius: real); { круг } end |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |