24
3.2. Съставни (структурирани) типове данни
Понякога е необходимо да се опише структура, в която в зависимост от
състоянието на някое поле, друго нейно поле има различен тип (смисъл). За такива
случаи в Pascal е предвидена вариантна част на записа. Например, ако описваме типа
ЧОВЕК, в променлива от този тип може да държим информация за неговото име, дата
на раждане, пол и т.н. В случаите, когато това е мъж, е необходимо да пазим някаква
информация, свързана само с мъжете - например какъв чин има (или е имал) през
военната му служба, а ако е жена - информация само за жените или пък никаква друга
информация.
type SexType = (male, female);
date = record
day: 1..31;
month: 1..12;
year: cardinal;
end; { date }
Person = record
name: string[31];
{ името на човека }
birthday: date;
{ дата на раждане }
case sex: SexType of
{ пол - мъж, жена }
male: (rank: (soldier, sergeant, colonel));
female: ();
end; { Person }
При описанието на записите трябва да се има в предвид следното:
*
всички имена на полета трябва да бъдат различни, даже когато се срещат
в различни варианти на един и същи запис;
*
ако за някоя стойност не съществува вариант, той може да не бъде указан,
т.е. не всички стойности от типа за признак трябва да бъдат изредени;
*
всеки списък от полета може да има само една вариантна част, която трябва
да следва фиксираната част;
*
във всяка вариантна част може да има вложена друга вариантна част, като
ограничение за нивата на влагане няма;
*
ако някое от полетата има анонимен изброим тип, то областта на действие
на неговите константи се разширява върху блока, в който е дефиниран
записът. Анонимен се нарича тип, чието описание се намира в декларацията
на променлива или поле от запис. Такъв тип няма име и затова се нарича
анонимен. Например: var device: (disk, tape, printer); 
Над обектите от тип запис са дефинирани операциите даване на стойност (:=) и
операциите сравнение за равенство (=) и неравенство (<>).
3.2.4. Множества
Следващата след масива и записа основна структура от данни е структурата
множество. Общия вид на нейната дефиниция е:
SetType =
'set' 'of' OrdinalType.
Множеството от стойности, дефинирано от структурата множество, е
множество от всички подмножества (включително и празното) на множеството от
елементите на базовия тип. С други думи, елемент от структурата множество е
множество от елементи на базовия тип.
В UniPascal се налага следното ограничение: броят на елементите в базовия тип
не трябва да бъде по-голям от 256. Ако базовият тип е числов, то минималният елемент
<<  <  GO  >  >>

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