Ïðè ñîçäàíèè ñðåäíèõ ïî ðàçìåðó ïðèëîæåíèé (íåñêîëüêî òûñÿ÷ ñòðîê èñõîäíîãî êîäà) èñïîëüçóåòñÿ ñòðóêòóðíîå ïðîãðàììèðîâàíèå, èäåÿ êîòîðîãî çàêëþ÷àåòñÿ â òîì, ÷òî ñòðóêòóðà ïðîãðàììû äîëæíà îòðàæàòü ñòðóêòóðó ðåøàåìîé çàäà÷è, ÷òîáû àëãîðèòì ðåøåíèÿ áûë ÿñíî âèäåí èç èñõîäíîãî òåêñòà. Äëÿ ýòîãî íàäî èìåòü ñðåäñòâà äëÿ ñîçäàíèÿ ïðîãðàììû íå òîëüêî ñ ïîìîùüþ òðåõ ïðîñòûõ îïåðàòîðîâ, íî è ñ ïîìîùüþ ñðåäñòâ, áîëåå òî÷íî îòðàæàþùèõ êîíêðåòíóþ ñòðóêòóðó àëãîðèòìà. Ñ ýòîé öåëüþ â ïðîãðàììèðîâàíèå ââåäåíî ïîíÿòèå ïîäïðîãðàììû – íàáîðà îïåðàòîðîâ, âûïîëíÿþùèõ íóæíîå äåéñòâèå è íå çàâèñÿùèõ îò äðóãèõ ÷àñòåé èñõîäíîãî êîäà. Ïðîãðàììà ðàçáèâàåòñÿ íà ìíîæåñòâî ìåëêèõ ïîäïðîãðàìì, êàæäàÿ èç êîòîðûõ âûïîëíÿåò îäíî èç äåéñòâèé, ïðåäóñìîòðåííûõ èñõîäíûì çàäàíèåì. Êîìáèíèðóÿ ýòè ïîäïðîãðàììû, óäàåòñÿ ôîðìèðîâàòü èòîãîâûé àëãîðèòì óæå íå èç ïðîñòûõ îïåðàòîðîâ, à èç çàêîí÷åííûõ áëîêîâ êîäà, èìåþùèõ îïðåäåëåííóþ ñìûñëîâóþ íàãðóçêó, ïðè÷åì îáðàùàòüñÿ ê òàêèì áëîêàì ìîæíî ïî íàçâàíèÿì.
Èäåè ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ ïîÿâèëèñü â íà÷àëå 70-ãîäîâ â êîìïàíèè IBM, â èõ ðàçðàáîòêå ó÷àñòâîâàëè èçâåñòíûå ó÷åíûå Ý. Äåéêñòðà, Õ. Ìèëñ, Ý. Êíóò, Ñ. Õîîð.
Ñòðóêòóðíîå ïðîãðàììèðîâàíèå îñíîâàíî íà ìîäóëüíîé ñòðóêòóðå ïðîãðàììíîãî ïðîäóêòà è òèïîâûõ óïðàâëÿþùèõ ñòðóêòóðàõ àëãîðèòìîâ îáðàáîòêè äàííûõ ðàçëè÷íûõ ïðîãðàììíûõ ìîäóëåé.
Òèïû óïðàâëÿþùèõ ñòðóêòóð:
– ïîñëåäîâàòåëüíîñòü;
– àëüòåðíàòèâà (óñëîâèå âûáîðà);
– öèêë.
Ðàñïðîñòðàíåíû äâå ìåòîäèêè (ñòðàòåãèè) ðàçðàáîòêè ïðîãðàìì, îòíîñÿùèåñÿ ê ñòðóêòóðíîìó ïðîãðàììèðîâàíèþ:
– ïðîãðàììèðîâàíèå «ñâåðõó âíèç»;
– ïðîãðàììèðîâàíèå «ñíèçó ââåðõ».
Ïðîãðàììèðîâàíèå «ñâåðõó âíèç», èëè íèñõîäÿùåå ïðîãðàììèðîâàíèå – ýòî ìåòîäèêà ðàçðàáîòêè ïðîãðàìì, ïðè êîòîðîé ðàçðàáîòêà íà÷èíàåòñÿ ñ îïðåäåëåíèÿ öåëåé ðåøåíèÿ ïðîáëåìû, ïîñëå ÷åãî èäåò ïîñëåäîâàòåëüíàÿ äåòàëèçàöèÿ, çàêàí÷èâàþùàÿñÿ äåòàëüíîé ïðîãðàììîé.
Ñíà÷àëà âûäåëÿåòñÿ íåñêîëüêî ïîäïðîãðàìì, ðåøàþùèõ ñàìûå ãëîáàëüíûå çàäà÷è (íàïðèìåð, èíèöèàëèçàöèÿ äàííûõ, ãëàâíàÿ ÷àñòü è çàâåðøåíèå), ïîòîì êàæäûé èç ýòèõ ìîäóëåé äåòàëèçèðóåòñÿ íà áîëåå íèçêîì óðîâíå, ðàçáèâàÿñü â ñâîþ î÷åðåäü íà íåáîëüøîå ÷èñëî äðóãèõ ïîäïðîãðàìì, è òàê ïðîèñõîäèò äî òåõ ïîð, ïîêà âñÿ çàäà÷à íå îêàæåòñÿ ðåàëèçîâàííîé.
 äàííîì ñëó÷àå ïðîãðàììà êîíñòðóèðóåòñÿ èåðàðõè÷åñêè - ñâåðõó âíèç: îò ãëàâíîé ïðîãðàììû ê ïîäïðîãðàììàì ñàìîãî íèæíåãî óðîâíÿ, ïðè÷åì íà êàæäîì óðîâíå èñïîëüçóþòñÿ òîëüêî ïðîñòûå ïîñëåäîâàòåëüíîñòè èíñòðóêöèé, öèêëû è óñëîâíûå ðàçâåòâëåíèÿ.
Òàêîé ïîäõîä óäîáåí òåì, ÷òî ïîçâîëÿåò ÷åëîâåêó ïîñòîÿííî ìûñëèòü íà ïðåäìåòíîì óðîâíå, íå îïóñêàÿñü äî êîíêðåòíûõ îïåðàòîðîâ è ïåðåìåííûõ. Êðîìå òîãî, ïîÿâëÿåòñÿ âîçìîæíîñòü íåêîòîðûå ïîäïðîãðàììû íå ðåàëèçîâûâàòü ñðàçó, à âðåìåííî îòêëàäûâàòü, ïîêà íå áóäóò çàêîí÷åíû äðóãèå ÷àñòè. Íàïðèìåð, åñëè èìååòñÿ íåîáõîäèìîñòü âû÷èñëåíèÿ ñëîæíîé ìàòåìàòè÷åñêîé ôóíêöèè, òî âûäåëÿåòñÿ îòäåëüíàÿ ïîäïðîãðàììà òàêîãî âû÷èñëåíèÿ, íî ðåàëèçóåòñÿ îíà âðåìåííî îäíèì îïåðàòîðîì, êîòîðûé ïðîñòî ïðèñâàèâàåò çàðàíåå âûáðàííîå çíà÷åíèå (íàïðèìåð, 5). Êîãäà âñå ïðèëîæåíèå áóäåò íàïèñàíî è îòëàæåíî, òîãäà ìîæíî ïðèñòóïèòü ê ðåàëèçàöèè ýòîé ôóíêöèè.
Ïðîãðàììèðîâàíèå «ñíèçó ââåðõ», èëè âîñõîäÿùåå ïðîãðàììèðîâàíèå – ýòî ìåòîäèêà ðàçðàáîòêè ïðîãðàìì, íà÷èíàþùàÿñÿ ñ ðàçðàáîòêè ïîäïðîãðàìì (ïðîöåäóð, ôóíêöèé), â òî âðåìÿ êîãäà ïðîðàáîòêà îáùåé ñõåìû íå çàêîí÷èëàñü.
Òàêàÿ ìåòîäèêà ÿâëÿåòñÿ ìåíåå ïðåäïî÷òèòåëüíîé ïî ñðàâíåíèþ ñ íèñõîäÿùèì ïðîãðàììèðîâàíèåì òàê êàê ÷àñòî ïðèâîäèò ê íåæåëàòåëüíûì ðåçóëüòàòàì, ïåðåäåëêàì è óâåëè÷åíèþ âðåìåíè ðàçðàáîòêè.
Î÷åíü âàæíàÿ õàðàêòåðèñòèêà ïîäïðîãðàìì – ýòî âîçìîæíîñòü èõ ïîâòîðíîãî èñïîëüçîâàíèÿ. Ñ èíòåãðèðîâàííûìè ñèñòåìàìè ïðîãðàììèðîâàíèÿ ïîñòàâëÿþòñÿ áîëüøèå áèáëèîòåêè ñòàíäàðòíûõ ïîäïðîãðàìì, êîòîðûå ïîçâîëÿþò çíà÷èòåëüíî ïîâûñèòü ïðîèçâîäèòåëüíîñòü òðóäà çà ñ÷åò èñïîëüçîâàíèÿ ÷óæîé ðàáîòû ïî ñîçäàíèþ ÷àñòî ïðèìåíÿåìûõ ïîäïðîãðàìì.
Ïîäïðîãðàììû áûâàþò äâóõ âèäîâ – ïðîöåäóðû è ôóíêöèè. Îòëè÷àþòñÿ îíè òåì, ÷òî ïðîöåäóðà ïðîñòî âûïîëíÿåò ãðóïïó îïåðàòîðîâ, à ôóíêöèÿ âäîáàâîê âû÷èñëÿåò íåêîòîðîå çíà÷åíèå è ïåðåäàåò åãî îáðàòíî â ãëàâíóþ ïðîãðàììó (âîçâðàùàåò çíà÷åíèå). Ýòî çíà÷åíèå èìååò îïðåäåëåííûé òèï.
×òîáû ðàáîòà ïîäïðîãðàììû èìåëà ñìûñë, åé íàäî ïîëó÷èòü äàííûå èç âíåøíåé ïðîãðàììû, êîòîðàÿ ýòó ïîäïðîãðàììó âûçûâàåò. Äàííûå ïåðåäàþòñÿ ïîäïðîãðàììå â âèäå ïàðàìåòðîâ èëè àðãóìåíòîâ, êîòîðûå îáû÷íî îïèñûâàþòñÿ â åå çàãîëîâêå òàê æå, êàê ïåðåìåííûå.
Ïîäïðîãðàììû âûçûâàþòñÿ, êàê ïðàâèëî, ïóòåì ïðîñòîé çàïèñè èõ íàçâàíèÿ ñ íóæíûìè ïàðàìåòðàìè.
Ïîäïðîãðàììû àêòèâèçèðóþòñÿ òîëüêî â ìîìåíò èõ âûçîâà. Îïåðàòîðû. Êîòîðûå íàõîäÿòñÿ âíóòðè ïîäïðîãðàììû, âûïîëíÿþòñÿ, òîëüêî åñëè ýòà ïîäïðîãðàììà ÿâíî âûçâàíà.
Ïîäïðîãðàììû ìîãóò áûòü âëîæåííûìè – äîïóñêàåòñÿ âûçîâ ïîäïðîãðàììû íå òîëüêî èç ãëàâíîé ïðîãðàìì, íî è èç ëþáûõ äðóãèõ ïðîãðàìì.
 íåêîòîðûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ äîïóñêàåòñÿ âûçîâ ïîäïðîãðàììû èç ñåáÿ ñàìîé. Òàêîé ïðèåì íàçûâàåòñÿ ðåêóðñèåé è îïàñåí òåì, ÷òî ìîæåò ïðèâåñòè ê çàöèêëèâàíèþ – áåñêîíå÷íîìó ñàìîâûçîâó.
Äîñòîèíñòâà ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ:
– ïîâûøàåòñÿ íàäåæíîñòü ïðîãðàìì (áëàãîäàðÿ õîðîøåìó ñòðóêòóðèðîâàíèþ ïðè ïðîåêòèðîâàíèè, ïðîãðàììà ëåãêî ïîääàåòñÿ òåñòèðîâàíèþ è íå ñîçäàåò ïðîáëåì ïðè îòëàäêå);
– ïîâûøàåòñÿ ýôôåêòèâíîñòü ïðîãðàìì (ñòðóêòóðèðîâàíèå ïðîãðàììû ïîçâîëÿåò ëåãêî íàõîäèòü è êîððåêòèðîâàòü îøèáêè, à îòäåëüíûå ïîäïðîãðàììû ìîæíî ïåðåäåëûâàòü (ìîäèôèöèðîâàòü) íåçàâèñèìî îò äðóãèõ);
– óìåíüøàåòñÿ âðåìÿ è ñòîèìîñòü ïðîãðàììíîé ðàçðàáîòêè;
– óëó÷øàåòñÿ ÷èòàáåëüíîñòü ïðîãðàìì.
Òàêèì îáðàçîì, òåõíîëîãèÿ ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ ïðè ðàçðàáîòêå ñåðüåçíûõ ïðîãðàììíûõ êîìïëåêñîâ, îñíîâàíà íà ñëåäóþùèõ ïðèíöèïàõ:
– ïðîãðàììèðîâàíèå äîëæíî îñóùåñòâëÿòüñÿ ñâåðõó âíèç;
– âåñü ïðîåêò äîëæåí áûòü ðàçáèò íà ìîäóëè (ïîäïðîãðàììû) ñ îäíèì âõîäîì è îäíèì âûõîäîì;
– ïîäïðîãðàììà äîëæíà äîïóñêàòü òîëüêî òðè îñíîâíûå ñòðóêòóðû – ïîñëåäîâàòåëüíîå âûïîëíåíèå, âåòâëåíèå (if, case) è ïîâòîðåíèå (for, while, repeat).
– íåäîïóñòèì îïåðàòîð ïåðåäà÷è óïðàâëåíèÿ â ëþáóþ òî÷êó ïðîãðàììû (goto);
– äîêóìåíòàöèÿ äîëæíà ñîçäàâàòüñÿ îäíîâðåìåííî ñ ïðîãðàììèðîâàíèåì â âèäå êîììåíòàðèåâ ê ïðîãðàììå.
Ñòðóêòóðíîå ïðîãðàììèðîâàíèå ýôôåêòèâíî èñïîëüçóåòñÿ äëÿ ðåøåíèÿ ðàçëè÷íûõ ìàòåìàòè÷åñêèõ çàäà÷, èìåþùèõ àëãîðèòìè÷åñêèé õàðàêòåð.
|