Ìíîæåñòâî – ýòî ñòðóêòóðèðîâàííûé òèï äàííûõ, ïðåäñòàâëÿþùèé ñîáîé íàáîð âçàèìîñâÿçàííûõ ïî êàêîìó-ëèáî ïðèçíàêó èëè ãðóïïå ïðèçíàêîâ îáúåêòîâ, êîòîðûå ìîæíî ðàññìàòðèâàòü êàê åäèíîå öåëîå. Êàæäûé îáúåêò â ìíîæåñòâå íàçûâàåòñÿ ýëåìåíòîì ìíîæåñòâà. Âñå ýëåìåíòû ìíîæåñòâà äîëæíû ïðèíàäëåæàòü îäíîìó èç ñêàëÿðíûõ òèïîâ, êðîìå âåùåñòâåííîãî. Ýòîò òèï íàçûâàåòñÿ áàçîâûì òèïîì ìíîæåñòâà. Áàçîâûé òèï çàäàåòñÿ äèàïàçîíîì èëè ïåðå÷èñëåíèåì. Îáëàñòü çíà÷åíèé òèïà «ìíîæåñòâî» – íàáîð âñåâîçìîæíûõ ïîäìíîæåñòâ, ñîñòàâëåííûõ èç ýëåìåíòîâ áàçîâîãî òèïà.  âûðàæåíèÿõ íà ÿçûêå Pascal çíà÷åíèÿ ýëåìåíòîâ ìíîæåñòâà óêàçûâàþòñÿ â êâàäðàòíûõ ñêîáêàõ: [1,2,3,4], ['a','b','c'], ['a'..'z']. Åñëè ìíîæåñòâî íå èìååò ýëåìåíòîâ, îíî íàçûâàåòñÿ ïóñòûì è îáîçíà÷àåòñÿ êàê [ ]. Êîëè÷åñòâî ýëåìåíòîâ ìíîæåñòâà íàçûâàåòñÿ åãî ìîùíîñòüþ.
Äëÿ îïèñàíèÿ ìíîæåñòâåííîãî òèïà èñïîëüçóåòñÿ ñëîâîñî÷åòàíèå set of (ìíîæåñòâî èç...).
Ôîðìàò çàïèñè ìíîæåñòâåííûõ òèïîâ:
type
<èìÿ òèïà> = set of <ýëåìåíò 1 .. ýëåìåíò n>;
var
<èäåíòèôèêàòîð> : <èìÿ òèïà>;
Ìîæíî çàäàòü ìíîæåñòâåííûé òèï è áåç ïðåäâàðèòåëüíîãî îïèñàíèÿ:
var
<èäåíòèôèêàòîð> : set of <ýëåìåíò1, .. .>;
Ïðèìåð:
type
Simply = set of 'a'.. 'h';
Number = set of 1. .31;
var
Pr : Simply;
N : Number;
Letter : set of char; {Îïðåäåëåíèå ìíîæåñòâà áåç ïðåäâàðèòåëüíîãî îïèñàíèÿ â ðàçäåëå òèïîâ}
 äàííîì ïðèìåðå ïåðåìåííàÿ Ðr ìîæåò ïðèíèìàòü â êà÷åñòâå çíà÷åíèé ñèìâîëû ëàòèíñêîãî àëôàâèòà îò 'à' äî 'h'; N – ëþáîå çíà÷åíèå â äèàïàçîíå 1..31; Letter – ëþáîé ñèìâîë. Ïîïûòêà ïðèñâîèòü äðóãèå çíà÷åíèÿ âûçîâåò ïðîãðàììíîå ïðåðûâàíèå. Êîëè÷åñòâî ýëåìåíòîâ ìíîæåñòâà íå äîëæíî ïðåâûøàòü 256, ñîîòâåòñòâåííî íîìåðà çíà÷åíèé áàçîâîãî òèïà äîëæíû íàõîäèòüñÿ â äèàïàçîíå 0..255. Êîíòðîëü äèàïàçîíîâ îñóùåñòâëÿåòñÿ âêëþ÷åíèåì äèðåêòèâû {$R+}. Îáúåì ïàìÿòè, çàíèìàåìûé îäíèì ýëåìåíòîì ìíîæåñòâà, ñîñòàâëÿåò 1 áèò. Îáúåì ïàìÿòè äëÿ ïåðåìåííîé òèïà «ìíîæåñòâî» âû÷èñëÿåòñÿ ïî ôîðìóëå:
Îáúåì ïàìÿòè = (Max DIV 8) - (Min DIV 8) + 1,
ãäå Ìàõ è Min – âåðõíÿÿ è íèæíÿÿ ãðàíèöû áàçîâîãî òèïà.
|