Ñ ïîíÿòèåì «ìàññèâ» ïðèõîäèòñÿ ñòàëêèâàòüñÿ ïðè ðåøåíèè íàó÷íî-òåõíè÷åñêèõ è ýêîíîìè÷åñêèõ çàäà÷ îáðàáîòêè ñîâîêóïíîñòåé áîëüøîãî êîëè÷åñòâà çíà÷åíèé.  îáùåì ñëó÷àå ìàññèâ – ýòî ñòðóêòóðèðîâàííûé òèï äàííûõ, ñîñòîÿùèé èç ôèêñèðîâàííîãî ÷èñëà ýëåìåíòîâ, èìåþùèõ îäèí è òîò æå òèï. Íàçâàíèå ðåãóëÿðíûé òèï (èëè ðÿä) ìàññèâû ïîëó÷èëè çà òî, ÷òî îíè îáúåäèíÿþò îäíîòèïíûå (ëîãè÷åñêè îäíîðîäíûå) ýëåìåíòû, óïîðÿäî÷åííûå ïî èíäåêñàì, îïðåäåëÿþùèì ïîëîæåíèå êàæäîãî ýëåìåíòà â ìàññèâå.
 êà÷åñòâå ýëåìåíòîâ ìàññèâà ìîæíî èñïîëüçîâàòü ëþáîé äðóãîé ðàíåå îïèñàííûé òèï, ïîýòîìó âïîëíå ïðàâîìåðíî ñóùåñòâîâàíèå ìàññèâîâ çàïèñåé, ìàññèâîâ óêàçàòåëåé, ìàññèâîâ ñòðîê, ìàññèâîâ ìàññèâîâ è ò. ä. Ýëåìåíòàìè ìàññèâà ìîãóò áûòü äàííûå ëþáîãî òèïà, âêëþ÷àÿ ñòðóêòóðèðîâàííûå. Òèï ýëåìåíòîâ ìàññèâà íàçûâàåòñÿ áàçîâûì. Îñîáåííîñòüþ ÿçûêà Pascal ÿâëÿåòñÿ òî, ÷òî ÷èñëî ýëåìåíòîâ ìàññèâà ôèêñèðóåòñÿ ïðè îïèñàíèè è â ïðîöåññå âûïîëíåíèÿ ïðîãðàììû íå ìåíÿåòñÿ.
Ýëåìåíòû, îáðàçóþùèå ìàññèâ, óïîðÿäî÷åíû òàêèì îáðàçîì, ÷òî êàæäîìó ýëåìåíòó ñîîòâåòñòâóåò ñîâîêóïíîñòü íîìåðîâ (èíäåêñîâ), îïðåäåëÿþùèõ åãî ìåñòîïîëîæåíèå â îáùåé ïîñëåäîâàòåëüíîñòè. Äîñòóï ê êàæäîìó îòäåëüíîìó ýëåìåíòó îñóùåñòâëÿåòñÿ ïóòåì èíäåêñèðîâàíèÿ ýëåìåíòîâ ìàññèâà. Èíäåêñû ïðåäñòàâëÿþò ñîáîé âûðàæåíèÿ ëþáîãî ñêàëÿðíîãî òèïà, êðîìå âåùåñòâåííîãî. Òèï èíäåêñà îïðåäåëÿåò ãðàíèöû èçìåíåíèÿ çíà÷åíèé èíäåêñà. Äëÿ îïèñàíèÿ ìàññèâà ïðåäíàçíà÷åíî ñëîâîñî÷åòàíèå array of (ìàññèâ èç).
Èñõîäÿ èç ñèíòàêñè÷åñêîé äèàãðàììû, ôîðìàò çàïèñè áóäåò òàêèì:
type
<èìÿ òèïà> = àrràó[òèï èíäåêñà] of <òèï êîìïîíåíòà>;
var
<èäåíòèôèêàòîð > : <èìÿ òèïà>;
Ìàññèâ ìîæåò áûòü îïèñàí è áåç ïðåäñòàâëåíèÿ òèïà â ðàçäåëå îïèñàíèÿ òèïîâ äàííûõ:
var
<èäåíòèôèêàòîð > : àrràó[òèï èíäåêñà] of <òèï êîìïîíåíòàì
Ïðèìåð:
type
Klass = (Ê1. Ê2, ÊÇ. Ê4);
Znak = array[l..255] of char;
var
Ml: Znak; {Òèï Znak ïðåäâàðèòåëüíî îïèñàí â ðàçäåëå òèïîâ}
Ì2: array[1..6O] of integer; {Ïðÿíîå îïèñàíèå ìàññèâà Ì2}
ÌÇ: àããàó[1..4] of Klass;
Mas: àããàó[1..4] of integer;
Åñëè â êà÷åñòâå áàçîâîãî òèíà âçÿò äðóãîé ìàññèâ, òî îáðàçóåòñÿ ñòðóêòóðà, êîòîðóþ ïðèíÿòî íàçûâàòü ìíîãîìåðíûì ìàññèâîì.
Ïðèìåð:
type
Vector = array[1..4] of integer;
Massiv = array[1..4] of Vector;
var
Matr : Massiv;
Òó æå ñòðóêòóðó ìîæíî ïîëó÷èòü, èñïîëüçóÿ äðóãóþ ôîðìó çàïèñè:
var
Matr : array[l..4.1..4] of integer;
Åñëè ïðè òàêîé ôîðìå îïèñàíèÿ ìàññèâà çàäàí îäèí èíäåêñ, ìàññèâ íàçûâàåòñÿ îäíîìåðíûì, åñëè äâà èíäåêñà – äâóìåðíûì, åñëè n èíäåêñîâ – n-ìåðíûì. Îäíîìåðíûé ìàññèâ ñîîòâåòñòâóåò ïîíÿòèþ ëèíåéíîé òàáëèöû (âåêòîðà), äâóìåðíûé – ïîíÿòèþ ïðÿìîóãîëüíîé òàáëèöû (ìàòðèöû, íàáîðà âåêòîðîâ).
Ðàçìåðíîñòü îãðàíè÷åíà òîëüêî îáúåìîì ïàìÿòè êîíêðåòíîãî êîìïüþòåðà. Îäíîìåðíûå ìàññèâû îáû÷íî èñïîëüçóþòñÿ äëÿ ïðåäñòàâëåíèÿ âåêòîðîâ, à äâóìåðíûå – äëÿ ïðåäñòàâëåíèÿ ìàòðèö.
Ïðèìåð:
var
VectorZ: àrràó[1..40] of real; {Îäíîìåðíûé ìàññèâ èç 40 ýëåìåíòîâ}
MatrU : àrràó[1..8,1..8] of byte: {Äâóìåðíûé ìàññèâ 8x8 ýëåìåíòîâ}
Triif : array[l..4,1..5,1..8] of integer; {Òðåõìåðíûé ìàññèâ}
Äëÿ îïèñàíèÿ ìàññèâà ìîæíî èñïîëüçîâàòü ïðåäâàðèòåëüíî îïðåäåëåííûå êîíñòàíòû:
const
G1 = 4;
G2 = 6;
var
MasY : array[l..Gl,l…G2] of real;
Ýëåìåíòû ìàññèâà ðàñïîëàãàþòñÿ â ïàìÿòè ïîñëåäîâàòåëüíî. Ýëåìåíòû ñ ìåíüøèìè çíà÷åíèÿìè èíäåêñà õðàíÿòñÿ â ìëàäøèõ àäðåñàõ ïàìÿòè. Ìíîãîìåðíûå ìàññèâû ðàñïîëàãàþòñÿ òàêèì îáðàçîì, ÷òî ñàìûé ïðàâûé èíäåêñ âîçðàñòàåò ïåðâûì.
Íàïðèìåð, åñëè èìååòñÿ ìàññèâ A:array[1..5,1..5] of integer; òî â ïàìÿòè ýëåìåíòû ìàññèâà áóäóò ðàçìåùåíû ïî âîçðàñòàíèþ àäðåñîâ:
À[1,1]
À[1.2]
À[1,5]
À[2,1]
À[2,2]
À[5,5]
Êîíòðîëü ïðàâèëüíîñòè çíà÷åíèé èíäåêñîâ ìàññèâà ìîæåò ïðîâîäèòüñÿ ñ ïîìîùüþ äèðåêòèâû êîìïèëÿòîðà R. Ïî óìîë÷àíèþ äèðåêòèâà R íàõîäèòñÿ â ïàññèâíîì ñîñòîÿíèè {$R-}. Ïåðåâîä â àêòèâíîå ñîñòîÿíèå âûçûâàåò ïðîâåðêó âñåõ èíäåêñíûõ âûðàæåíèé íà ñîîòâåòñòâèå èõ çíà÷åíèé äèàïàçîíó òèïà èíäåêñà.
Ñóùåñòâóåò ðàçëè÷èå ìåæäó ðåãóëÿðíûìè òèïàìè â ÿçûêå Pascal è ìàññèâàìè â íåêîòîðûõ äðóãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, çàêëþ÷àþùååñÿ â òîì, ÷òî â Pascal êîëè÷åñòâî ýëåìåíòîâ ìàññèâà âñåãäà äîëæíî áûòü ôèêñèðîâàííûì, ò. å. îïðåäåëÿòüñÿ ïðè òðàíñëÿöèè ïðîãðàììû. Ýòî ñ÷èòàåòñÿ íåäîñòàòêîì ÿçûêà, òàê êàê íå âî âñåõ ïðîãðàììàõ ìîæíî çàðàíåå ïðåäñêàçàòü íåîáõîäèìûé ðàçìåð ìàññèâà (êîòîðûé ìîæåò îïðåäåëÿòüñÿ â çàâèñèìîñòè îò òåõ èëè èíûõ óñëîâèé, âîçíèêàþùèõ â ïðîöåññå èñïîëíåíèÿ).  ïðîãðàììàõ, îáðàáàòûâàþùèõ ìàññèâû, ïîìèìî èñïîëüçîâàíèÿ äëÿ îïðåäåëåíèÿ ðàçìåðà ìàññèâà ïðåäâàðèòåëüíî îïðåäåëåííûõ êîíñòàíò èíîãäà èñïîëüçóåòñÿ ïðèåì, ïîçâîëÿþùèé èìèòèðîâàòü ðàáîòó ñ ìàññèâàìè ïåðåìåííîé äëèíû, êîòîðûé çàêëþ÷àåòñÿ â ñëåäóþùåì: â ðàçäåëå îïèñàíèÿ êîíñòàíò ïðåäâàðèòåëüíî îïðåäåëÿþò âîçìîæíîå ìàêñèìàëüíîå çíà÷åíèå ðàçìåðà ìàññèâà, à çàòåì â ïðîãðàììå çàïðàøèâàþò òåêóùåå çíà÷åíèå ðàçìåðà è èñïîëüçóþò ýòî çíà÷åíèå äàëåå ïðè çàïîëíåíèè è îáðàáîòêå ìàññèâà.
|