22
3.2. Съставни (структурирани) типове данни
3.2. Съставни (структурирани) типове данни
В Pascal на основата на простите типове потребителят има възможност да
конструира свои собствени типове. Такива типове се наричат структурирани.
Структурираният тип се характеризира чрез метода на структурирането си и чрез типа
на своите компоненти. Ако компонентите на структурирания тип са също
структурирани, то тогава става въпрос за повече от едно ниво на структуриране.
Видовете структурирани типове в Pascal са: масиви, записи, множества, файлове. Типът
низ (StringType) е дефиниран в UniPascal, но не и в Pascal.
StructuredType =
['packed'] (ArrayType  |
            StringType |
            RecordType |
            SetType    |
            FileType   ).
Пред описанието на всеки структуриран тип може да се постави префикса
'packed', който указва на компилатора да икономисва памет даже за сметка на
по-неефективен достъп до елементите на структурата.
Както и при простите типове, така и тук операцията даване на стойност е
дефинирана за всеки структурен тип, но има едно изключение - за променливи от
файлов тип не е разрешено даване на стойност.
3.2.1. Масиви
Масивът е хомогенна структура. Състои се от компоненти от един и същ тип,
наречен базов. При Pascal е съществено, че броят на елементите се указва в описанието
и остава непроменен през цялото време на своето съществуване. За означаване на
отделна компонента на масив, името на цялата структура се разширява чрез така
наречения индекс. Съществена особеност при Pascal е, че типът на индекса не е строго
фиксиран (както във FORTRAN или BASIC например), а може да бъде зададен от
програмиста. Единственото ограничение е типът на индекса да бъде дискретен (затова
REAL не е разрешен). Разбира се, съвсем очевидно ограничение (налагано от
реализацията) е структурата да се побира в паметта на компютъра. Общият вид на
описанието на структурата масив е:
ArrayType =
'array' '[' IndexType {','
           IndexType } ']' 'of' Type.
IndexType =
OrdinalType.
Базов тип на структурата масив може да бъде всеки тип с изключение на файл.
В частност базов тип на масива може да бъде също масив. В такъв случай цялата
структура се нарича многомерен масив. За краткост описанието на многомерни масиви
може да се записва, като се разделят индексите чрез запетая. Но определението на
масив от масиви е също възможно и, нещо повече, то е еквивалентно на краткото
описание. Например, следните две определения на масиви са еквивалентни:
type Array1 = array [1..10] of array [boolean] of integer;
type Array2 = array [1..10, boolean] of integer;
Обозначаването на отделен елемент от масива (индексирането) се прави, като
след името на структурата в квадратни скоби се запише номера на елемента, който
може да бъде не само константа, но и променлива или израз. И при индексирането е
<<  <  GO  >  >>

Вернуться к началу сайта