TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Типы запись 

             Тип запись содержит установленное число элементов или полей,
        которые могут быть различных типов. Описание типа запись указыва-
        ет тип каждого поля и идентификатор, который именует поле.

                        ┌────────┐                    ┌─────┐
         тип запись ───>│ 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

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz