çàãîëîâêå ïðîöåäóðû èëè ôóíêöèè ìîæåò áûòü çàäàí ñïèñîê ïàðàìåòðîâ, êîòîðûå íàçûâàþòñÿ ôîðìàëüíûìè. Íàçâàíèå «ôîðìàëüíûå» ýòè ïàðàìåòðû ïîëó÷èëè â ñâÿçè ñ òåì, ÷òî â ýòîì ñïèñêå çàäàíû òîëüêî èìåíà äëÿ îáîçíà÷åíèÿ èñõîäíûõ äàííûõ è ðåçóëüòàòîâ ðàáîòû ïðîöåäóðû, à ïðè âûçîâå ïðîãðàììû íà èõ ìåñòî áóäóò ïîäñòàâëåíû êîíêðåòíûå çíà÷åíèÿ. Ýòîò ñïèñîê óêàçûâàåòñÿ ïîñëå èìåíè ïîäïðîãðàììû è çàêëþ÷àåòñÿ â êðóãëûå ñêîáêè.
Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ, óêàçûâàåìûõ â çàãîëîâêå ïîäïðîãðàììû, ìîæåò âêëþ÷àòü â ñåáÿ:
– ïàðàìåòðû-çíà÷åíèÿ;
– ïàðàìåòðû-ïåðåìåííûå, ïåðåä êîòîðûìè äîëæíî ñòîÿòü ñëóæåáíîå ñëîâî var è çà êîòîðûìè óêàçûâàåòñÿ èõ òèï;
– ïàðàìåòðû-ïðîöåäóðû, ïåðåä êîòîðûìè äîëæíî ñòîÿòü ñëóæåáíîå ñëîâî procedure;
– ïàðàìåòðû-ôóíêöèè, ïåðåä êîòîðûìè äîëæíî ñòîÿòü ñëóæåáíîå ñëîâî function è ïîñëå êîòîðûõ óêàçûâàåòñÿ òèï çíà÷åíèÿ, âîçâðàùàåìîãî ôóíêöèåé â îñíîâíóþ ïðîãðàììó;
– íåòèïèçèðîâàííûå ïàðàìåòðû, ïåðåä êîòîðûìè äîëæíî ñòîÿòü ñëóæåáíîå ñëîâî var, à óêàçàíèå òèïà äîëæíî îòñóòñòâîâàòü.
 ñïèñêå äîëæíû áûòü ïåðå÷èñëåíû èìåíà ôîðìàëüíûõ ïàðàìåòðîâ è èõ òèïû. Èìÿ ïàðàìåòðà îòäåëÿåòñÿ îò òèïà äâîåòî÷èåì, à ïàðàìåòðû äðóã îò äðóãà – òî÷êîé ñ çàïÿòîé. Èìåíà ïàðàìåòðîâ îäíîãî òèïà ìîæíî îáúåäèíÿòü â ïîäñïèñêè, â êîòîðûõ èìåíà îòäåëÿþòñÿ äðóã îò äðóãà çàïÿòîé.
Ïðèìåðû çàãîëîâêîâ:
procedure P(procedure Â; function Ñ : real; Q. W. R : char); procedure A:
Ìåæäó ôîðìàëüíûìè è ôàêòè÷åñêèìè ïàðàìåòðàìè äîëæíî áûòü ïîëíîå ñîîòâåòñòâèå:
– ôîðìàëüíûõ è ôàêòè÷åñêèõ ïàðàìåòðîâ äîëæíî áûòü îäèíàêîâîå êîëè÷åñòâî;
– ïîðÿäîê ñëåäîâàíèÿ ôàêòè÷åñêèõ è ôîðìàëüíûõ ïàðàìåòðîâ äîëæåí ñîâïàäàòü;
– òèï êàæäîãî ôàêòè÷åñêîãî ïàðàìåòðà äîëæåí ñîâïàäàòü ñ òèïîì ñîîòâåòñòâóþùåãî ôîðìàëüíîãî ïàðàìåòðà.
Ïàðàìåòðû-çíà÷åíèÿ
Ïàðàìåòðû-çíà÷åíèÿ èñïîëüçóþòñÿ òîëüêî äëÿ ïåðåäà÷è èñõîäíûõ äàííûõ èç îñíîâíîé ïðîãðàììû â ïîäïðîãðàììó (ïðîöåäóðó èëè ôóíêöèþ).  ñïèñêå ôîðìàëüíûõ ïàðàìåòðîâ îíè ïåðå÷èñëÿþòñÿ ÷åðåç çàïÿòóþ ñ îáÿçàòåëüíûì óêàçàíèåì èõ òèïîâ:
procedure Abort(Msg: string):
function Step(N : integer; X ; real): real:
Åñëè ôîðìàëüíûé ïàðàìåòð îáúÿâëåí êàê ïàðàìåòð-çíà÷åíèå, òî ôàêòè÷åñêèì ìîæåò áûòü ïðîèçâîëüíîå âûðàæåíèå. Ïðè âûçîâå ïîäïðîãðàììû ôàêòè÷åñêèå ïàðàìåòðû âû÷èñëÿþòñÿ è èñïîëüçóþòñÿ â êà÷åñòâå íà÷àëüíûõ çíà÷åíèé ôîðìàëüíûõ ïàðàìåòðîâ, ò.å. îñóùåñòâëÿåòñÿ ïîäñòàíîâêà çíà÷åíèé. Åñëè ôîðìàëüíûé ïàðàìåòð îïðåäåëåí êàê ïàðàìåòð-çíà÷åíèå, òî ïåðåä âûçîâîì ïðîöåäóðû ýòî çíà÷åíèå âû÷èñëÿåòñÿ, ïîëó÷åííûé ðåçóëüòàò ïîìåùàåòñÿ âî âðåìåííóþ ïàìÿòü è ïåðåäàåòñÿ ïðîöåäóðå. Äàæå åñëè ôàêòè÷åñêèé ïàðàìåòð – ïðîñòåéøåå âûðàæåíèå â âèäå êîíñòàíòû èëè ïåðåìåííîé, âñå ðàâíî ïðîöåäóðå áóäåò ïåðåäàíà ëèøü êîïèÿ ýòîé êîíñòàíòû (ïåðåìåííîé).  ïðîöåññå âûïîëíåíèÿ ïîäïðîãðàììû ôîðìàëüíûå ïàðàìåòðû ìîãóò èçìåíÿòüñÿ, íî ýòî íèêàê íå îòðàæàåòñÿ íà ñîîòâåòñòâóþùèõ ôàêòè÷åñêèõ ïàðàìåòðàõ-ïåðåìåííûõ, êîòîðûå ñîõðàíÿþò òå çíà÷åíèÿ, êîòîðûå èìåëè äî âûçîâà ïîäïðîãðàììû, òàê êàê ìåíÿþòñÿ íå îíè, à èõ êîïèè. Ïîýòîìó ïàðàìåòðû-çíà÷åíèÿ íåëüçÿ èñïîëüçîâàòü äëÿ ïåðåäà÷è ðåçóëüòàòîâ èç ïîäïðîãðàììû â îñíîâíóþ ïðîãðàììó.
Ïàðàìåòðû-ïåðåìåííûå
Ïàðàìåòðû-ïåðåìåííûå èñïîëüçóþòñÿ äëÿ îïðåäåëåíèÿ ðåçóëüòàòîâ âûïîëíåíèÿ ïðîöåäóðû è â ñïèñêå ôîðìàëüíûõ ïàðàìåòðîâ ïåðå÷èñëÿþòñÿ ïîñëå çàðåçåðâèðîâàííîãî ñëîâà var ñ îáÿçàòåëüíûì óêàçàíèåì òèïà. Êàæäîìó ôîðìàëüíîìó ïàðàìåòðó, îáúÿâëåííîìó êàê ïàðàìåòð-ïåðåìåííàÿ, äîëæåí ñîîòâåòñòâîâàòü ôàêòè÷åñêèé ïàðàìåòð â âèäå ïåðåìåííîé ñîîòâåòñòâóþùåãî òèïà, íàïðèìåð:
procedure Example(var M,N : integer; var Y : real); Åñëè ôîðìàëüíûé ïàðàìåòð îïðåäåëåí êàê ïàðàìåòð-ïåðåìåííàÿ, òî ïðè âûçîâå ïðîöåäóðû ïåðåäàåòñÿ ñàìà ïåðåìåííàÿ, à íå åå êîïèÿ, è èçìåíåíèå ïàðàìåòðà-ïåðåìåííîé ïðèâîäèò ê èçìåíåíèþ ôàêòè÷åñêîãî ïàðàìåòðà â âûçûâàþùåé ïðîãðàììå. Ñëåäîâàòåëüíî, èñõîäíûå äàííûå â ïðîöåäóðó èç ïðîãðàììû ìîãóò ïåðåäàâàòüñÿ êàê ÷åðåç ïàðàìåòðû-çíà÷åíèÿ, òàê è ÷åðåç ïàðàìåòðû-ïåðåìåííûå, à ðåçóëüòàòû ðàáîòû ïðîöåäóðû âîçâðàùàþòñÿ â âûçûâàþùóþ ïðîãðàììó òîëüêî ÷åðåç ïàðàìåòðû-ïåðåìåííûå.
|