Åñëè â ïðîãðàììå âîçíèêàåò íåîáõîäèìîñòü ÷àñòîãî îáðàùåíèÿ ê íåêîòîðîé ãðóïïå îïåðàòîðîâ, òî ðàöèîíàëüíî ñãðóïïèðîâàòü òàêóþ ãðóïïó îïåðàòîðîâ â ñàìîñòîÿòåëüíûé áëîê, ê êîòîðîìó ìîæíî îáðàùàòüñÿ, óêàçûâàÿ åãî èìÿ. Òàêèå ðàçðàáîòàííûå ïðîãðàììèñòîì ñàìîñòîÿòåëüíûå ïðîãðàììíûå áëîêè íàçûâàþòñÿ ïîäïðîãðàììàìè ïîëüçîâàòåëÿ. Îíè ÿâëÿþòñÿ îñíîâîé ìîäóëüíîãî ïðîãðàììèðîâàíèÿ. Ðàçáèâàÿ çàäà÷ó íà ÷àñòè è îôîðìëÿÿ ëîãè÷åñêè îáîñîáëåííûå ìîäóëè â âèäå ïðîöåäóð è ôóíêöèé, ïðîãðàììèñò ðåàëèçóåò îñíîâíûå ïðèíöèïû øèðîêî èñïîëüçóåìîãî â ïðàêòèêå ñèñòåìíîãî ïîäõîäà è ìåòîäîâ íèñõîäÿùåãî ïðîãðàììèðîâàíèÿ.
Ïðè âûçîâå ïîäïðîãðàììû (ïðîöåäóðû èëè ôóíêöèè), îïðåäåëåííîé ïðîãðàììèñòîì, ðàáîòà ãëàâíîé ïðîãðàììû íà íåêîòîðîå âðåìÿ ïðèîñòàíàâëèâàåòñÿ è íà÷èíàåò âûïîëíÿòüñÿ âûçâàííàÿ ïîäïðîãðàììà. Îíà îáðàáàòûâàåò äàííûå, ïåðåäàííûå åé èç ãëàâíîé ïðîãðàììû. Ïî çàâåðøåíèè âûïîëíåíèÿ ïîäïðîãðàììà-ôóíêöèÿ âîçâðàùàåò ãëàâíîé ïðîãðàììå ðåçóëüòàò (ïîäïðîãðàììà-ïðîöåäóðà íå âîçâðàùàåò ÿâíî ðåçóëüòèðóþùåãî çíà÷åíèÿ).
Ïåðåäà÷à äàííûõ èç ãëàâíîé ïðîãðàììû â ïîäïðîãðàììó è âîçâðàò ðåçóëüòàòà âûïîëíåíèÿ ôóíêöèè îñóùåñòâëÿþòñÿ ñ ïîìîùüþ ïàðàìåòðîâ. Ïàðàìåòðîì íàçûâàåòñÿ ïåðåìåííàÿ, êîòîðîé ïðèñâàèâàåòñÿ íåêîòîðîå çíà÷åíèå â ðàìêàõ óêàçàííîãî ïðèìåíåíèÿ. Ðàçëè÷àþò ôîðìàëüíûå ïàðàìåòðû – ïàðàìåòðû, îïðåäåëåííûå â çàãîëîâêå ïîäïðîãðàììû, è ôàêòè÷åñêèå ïàðàìåòðû – âûðàæåíèÿ, çàäàþùèå êîíêðåòíûå çíà÷åíèÿ ïðè îáðàùåíèè ê ïîäïðîãðàììå. Ïðè îáðàùåíèè ê ïîäïðîãðàììå åå ôîðìàëüíûå ïàðàìåòðû çàìåùàþòñÿ ôàêòè÷åñêèìè, ïåðåäàííûìè èç ãëàâíîé ïðîãðàììû.
Ïðîöåäóðû
Îïèñàíèå ïðîöåäóðû âêëþ÷àåò çàãîëîâîê (èìÿ) è òåëî ïðîöåäóðû. Çàãîëîâîê ñîñòîèò èç çàðåçåðâèðîâàííîãî ñëîâà procedure, èäåíòèôèêàòîðà (èìåíè) ïðîöåäóðû è íåîáÿçàòåëüíîãî, çàêëþ÷åííîãî â êðóãëûå ñêîáêè, ñïèñêà ôîðìàëüíûõ ïàðàìåòðîâ ñ óêàçàíèåì òèïà êàæäîãî ïàðàìåòðà. Èìÿ ïðîöåäóðû – èäåíòèôèêàòîð, óíèêàëüíûé â ïðåäåëàõ ïðîãðàììû. Òåëî ïðîöåäóðû ïðåäñòàâëÿåò ñîáîé ëîêàëüíûé áëîê, ïî ñòðóêòóðå àíàëîãè÷íûé ïðîãðàììå.
Îïèñàíèÿ ìåòîê, êîíñòàíò, òèïîâ è ò.ä. äåéñòâèòåëüíû òîëüêî â ïðåäåëàõ äàííîé ïðîöåäóðû. Â òåëå ïðîöåäóðû ìîæíî èñïîëüçîâàòü ëþáûå ãëîáàëüíûå êîíñòàíòû è ïåðåìåííûå.
procedure <èìÿ> (Ôîðìàëüíûå ïàðàìåòðû);
const ...;
type ...;
var ...;
begin
<îïåðàòîðû ïðîöåäóðû>
end;
Ôóíêöèè
Ôóíêöèÿ, îïðåäåëåííàÿ ïîëüçîâàòåëåì, ñîñòîèò èç çàãîëîâêà è òåëà ôóíêöèè. Çàãîëîâîê ñîäåðæèò çàðåçåðâèðîâàííîå ñëîâî function, èäåíòèôèêàòîð (èìÿ) ôóíêöèè, çàêëþ÷åííûé â êðóãëûå ñêîáêè, íåîáÿçàòåëüíûé ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ è òèï âîçâðàùàåìîãî ôóíêöèåé çíà÷åíèÿ. Òåëî ôóíêöèè ïðåäñòàâëÿåò ñîáîé ëîêàëüíûé áëîê, ïî ñòðóêòóðå àíàëîãè÷íûé ïðîãðàììå:
function <èìÿ> (Ôîðìàëüíûå ïàðàìåòðû) : òèï ðåçóëüòàòà;
const ...;
type ...;
var ...;
begin
<îïåðàòîðû ôóíêöèè>
end;
 ðàçäåëå îïåðàòîðîâ äîëæåí ïðèñóòñòâîâàòü, ïî êðàéíåé ìåðå, îäèí îïåðàòîð, ïðèñâàèâàþùèé èìåíè ôóíêöèè çíà÷åíèå.  òî÷êó âûçîâà âîçâðàùàåòñÿ ðåçóëüòàò ïîñëåäíåãî òàêîãî ïðèñâàèâàíèÿ.
Îáðàùåíèå ê ôóíêöèè îñóùåñòâëÿåòñÿ ïî èìåíè ñ íåîáÿçàòåëüíûì óêàçàíèåì ñïèñêà àðãóìåíòîâ. Êàæäûé àðãóìåíò äîëæåí ñîîòâåòñòâîâàòü ôîðìàëüíûì ïàðàìåòðàì, óêàçàííûì â çàãîëîâêå, è èìåòü òîò æå òèï.
|