ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ Государственное образовательное учреждение высшего профессионального образования СА...
4 downloads
162 Views
308KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ÔÅÄÅÐÀËÜÍÎÅ ÀÃÅÍÒÑÒÂÎ ÏÎ ÎÁÐÀÇÎÂÀÍÈÞ Государственное образовательное учреждение высшего профессионального образования САНКТПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ ßÇÛÊÀÕ ÂÛÑÎÊÎÃÎ ÓÐÎÂÍß Ìåòîäè÷åñêèå óêàçàíèÿ ê âûïîëíåíèþ êóðñîâîãî ïðîåêòà
СанктПетербург 2005
Ñîñòàâèòåëü Ò. Ì. Ìàêñèìîâà Ðåöåíçåíò Â. Ï. Ïîïîâ  ìåòîäè÷åñêèå óêàçàíèÿ âêëþ÷åíû ïîñòàíîâêà çàäà÷è íà êóðñîâîå ïðîåêòèðîâàíèå è ðåêîìåíäàöèè ïî ìåòîäèêå ðàçðàáîòêè ïðîãðàììû. Ïðåäíàçíà÷åíû äëÿ ñòóäåíòîâ âñåõ ôîðì îáó÷åíèÿ, ïðîõîäÿùèõ ïîäãîòîâêó ïî ñïåöèàëüíîñòÿì 220400 è 351500. Ïîäãîòîâëåíû êàôåäðîé êîìïüþòåðíîé ìàòåìàòèêè è ïðîãðàììèðîâàíèÿ è ðåêîìåíäîâàíû ê èçäàíèþ ðåäàêöèîííî-èçäàòåëüñêèì ñîâåòîì Ñàíêò-Ïåòåðáóðãñêîãî ãîñóäàðñòâåííîãî óíèâåðñèòåòà àýðîêîñìè÷åñêîãî ïðèáîðîñòðîåíèÿ.
Ðåäàêòîð À. Ì. Êàðòóõèíà Êîìïüþòåðíàÿ âåðñòêà Î. È. Áóðäèíîé Ñäàíî â íàáîð 20.05.05. Ïîäïèñàíî ê ïå÷àòè 10.09.05. Ôîðìàò 60´84 1/16. Áóìàãà îôñåòíàÿ. Ïå÷àòü îôñåòíàÿ. Óñë. ïå÷. ë.1,57. Ó÷. -èçä. ë. 1,23. Òèðàæ 100 ýêç. Çàêàç ¹ Ðåäàêöèîííî-èçäàòåëüñêèé îòäåë Îòäåë ýëåêòðîííûõ ïóáëèêàöèé è áèáëèîãðàôèè áèáëèîòåêè Îòäåë îïåðàòèâíîé ïîëèãðàôèè ÃÓÀ Ï 190000, Ñàíêò-Ïåòåðáóðã, óë. Á. Ìîðñêàÿ, 67
© ÃÎÓ ÂÏÎ «ÑÏáÃÓÀÏ», 2005
1. ÇÀÄÀÍÈÅ ÍÀ ÊÓÐÑÎÂÎÉ ÏÐÎÅÊÒ 1. Ñïðîåêòèðîâàòü ïðîãðàììíóþ ìîäåëü ðàáîòû êîìïèëÿòîðà ïî ïîñòðîåíèþ òàáëèö èäåíòèôèêàòîðîâ äëÿ èñõîäíîé ïðîãðàììû, íàïèñàííîé íà ÿçûêå âûñîêîãî óðîâíÿ. 2. Ðàçðàáîòàòü ïðîãðàììíóþ ìîäåëü, èìèòèðóþùóþ âûïîëíåíèå èñõîäíîé ïðîãðàììû ñ èñïîëüçîâàíèåì ïîñòðîåííûõ êîìïèëÿòîðîì òàáëèö è ñ âûâîäîì äëÿ êàæäîé ïðîãðàììû îáëàñòåé âèäèìîñòè â âèäå ñïèñêà èäåíòèôèêàòîðîâ è ñïèñêà ïñåâäîíèìîâ. Ïðåäóñìîòðåòü âîçìîæíîñòü ôóíêöèîíèðîâàíèÿ âûøåóêàçàííûõ ìîäåëåé äëÿ äâóõ âàðèàíòîâ îðãàíèçàöèè îáëàñòåé âèäèìîñòè ñèìâîëè÷åñêèõ èìåí: ñòàòè÷åñêîãî è äèíàìè÷åñêîãî, ïîëàãàÿ, ÷òî õàðàêòåðíûìè ñòðóêòóðàìè èñõîäíîé ïðîãðàììû äëÿ íèõ ÿâëÿþòñÿ ñîîòâåòñòâåííî: áëî÷íàÿ ñòðóêòóðà, ïîçâîëÿþùàÿ çàôèêñèðîâàòü îáëàñòè âèäèìîñòè äëÿ ïîäïðîãðàìì íà ýòàïå êîìïèëÿöèè ñ ó÷åòîì âëîæåííîñòè áëîêîâ; ñòðóêòóðà, ïðè êîòîðîé ïîäïðîãðàììû íå ìîãóò áûòü âëîæåííûìè, è ñëåäîâàòåëüíî, ïîçâîëÿþùàÿ îïðåäåëèòü îáëàñòè âèäèìîñòè òîëüêî íà ýòàïå âûïîëíåíèÿ ïðîãðàììû. Òðåáîâàíèÿ ê îðãàíèçàöèè âõîäíûõ äàííûõ Âõîäíûå äàííûå ñëåäóåò ïðåäñòàâèòü â âèäå ôàéëà ñ òåêñòîì èñõîäíîé ïðîãðàììû, ñîñòîÿùåé èç íåñêîëüêèõ ïîäïðîãðàìì. Ïîäïðîãðàììà ìîæåò èìåòü ïàðàìåòðû, ðàçäåë îïèñàíèé ïåðåìåííûõ è ïîäïðîãðàìì, à òàêæå ðàçäåë îïåðàòîðîâ. Ïîñêîëüêó öåëüþ èìèòàöèè âûïîëíåíèÿ ïðîãðàììû ÿâëÿåòñÿ òîëüêî ïîñòðîåíèå îáëàñòåé âèäèìîñòè äëÿ ïîäïðîãðàìì, ìíîæåñòâî òèïîâ îïåðàòîðîâ äîïóñòèìî îãðàíè÷èòü âûçîâàìè ïîäïðîãðàìì, èñêëþ÷èâ ðåêóðñèâíûå âûçîâû. Äëÿ îïèñàíèÿ èñõîäíîé ïðîãðàììû ñëåäóåò âîñïîëüçîâàòüñÿ ñèíòàêñèñîì ÿçûêà Pascal èëè C, â çàâèñèìîñòè îò âàðèàíòà çàäàíèÿ íà êóðñîâóþ ðàáîòó. Äîïóñêàåòñÿ ââåäåíèå äîïîëíèòåëüíûõ îãðàíè÷åíèé ê ïðàâèëàì îáðàçîâàíèÿ èìåí ïåðåìåííûõ è ïîäïðîãðàìì. 3
Òðåáîâàíèÿ ê îðãàíèçàöèè âûõîäíûõ äàííûõ
Âûõîäíûå äàííûå ñëåäóåò ïðåäñòàâèòü äâóìÿ ôàéëàìè:
ôàéëîì ðåçóëüòàòîâ ìîäåëèðîâàíèÿ ðàáîòû êîìïèëÿòîðà; ôàéëîì ðåçóëüòàòîâ ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû. Ðåçóëüòàòû ìîäåëèðîâàíèÿ ðàáîòû êîìïèëÿòîðà ïðåäñòàâèòü ìíîæåñòâîì ñïèñêîâ èäåíòèôèêàòîðîâ äëÿ ìíîæåñòâà ïîäïðîãðàìì. Ïðåäóñìîòðåòü äèàãíîñòèêó èñõîäíîé ïðîãðàììû íà íàëè÷èå â íåé îøèáîê äâóõ òèïîâ: äâîéíîå îïèñàíèå èìåíè; èñïîëüçîâàíèå íåîïèñàííîãî èìåíè. Îøèáêè ïåðâîãî òèïà ìîãóò áûòü îáíàðóæåíû íà ýòàïå êîìïèëÿöèè äëÿ ïðîãðàììû ñî ñòàòè÷åñêè îïðåäåëÿåìîé îáëàñòüþ âèäèìîñòè è íà îáîèõ ýòàïàõ ìîäåëèðîâàíèÿ (êîìïèëÿöèè è âûïîëíåíèÿ) äëÿ ïðîãðàììû ñ äèíàìè÷åñêè îïðåäåëÿåìîé îáëàñòüþ âèäèìîñòè. Îøèáêè âòîðîãî òèïà îáíàðóæèâàþòñÿ íà ýòàïå ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû. Ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû äëÿ ñòàòè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè â çàâèñèìîñòè îò âàðèàíòà çàäàíèÿ ïðåäñòàâèòü: ïîñëåäîâàòåëüíîñòüþ ñîñòîÿíèé ñòåêà âðåìåíè âûïîëíåíèÿ ñ óêàçàòåëÿìè ñòàòè÷åñêîé öåïè(SCP); ïîñëåäîâàòåëüíîñòüþ ñîñòîÿíèé äèñïëåÿ. Äëÿ äèíàìè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû â çàâèñèìîñòè îò âàðèàíòà çàäàíèÿ ïðåäñòàâèòü: ïîñëåäîâàòåëüíîñòüþ ñîñòîÿíèé ñòåêà âðåìåíè âûïîëíåíèÿ; ïîñëåäîâàòåëüíîñòüþ ñîñòîÿíèé öåíòðàëüíîé òàáëèöû èìåí. Êðîìå òîãî, êàæäàÿ ïîðöèÿ èíôîðìàöèè (ñîñòîÿíèå ñòåêà, äèñïëåÿ èëè òàáëèöû) î âûïîëíåíèè ïîäïðîãðàììû äîëæíû ñîïðîâîæäàòüñÿ ñïèñêîì ïñåâäîíèìîâ äëÿ âûïîëíÿþùåéñÿ ïîäïðîãðàììû.
4
2. ÒÅÑÒÎÂÛÉ ÏÐÈÌÅÐ Âõîäíûå äàííûå 1. Ïðîãðàììà áëî÷íîé ñòðóêòóðû: program p; var a,b,c:integer; procedure d(var e:integer; f:integer); var a,g:integer; procedure h; var b,i:integer; begin end; begin h; end; begin d(a,c); d(b,c); end; 2. Ïðîãðàììà, íå èìåþùàÿ âëîæåííûõ áëîêîâ: int a(int& b; int c) { int d,e; } int f(int g,h) { int i,j; a(i,j); a(i,i); a(h,i); } int main() { int d,h; f(d,h); a(d,d); a(h,h); } 5
Âûõîäíûå äàííûå Ïðîãðàììà 1 â óñëîâèÿõ ñòàòè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè èìåí Ðåçóëüòàòû êîìïèëÿöèè Òàáëèöà èìåí ïðîãðàììû p a integer b integer c integer d:procedure
Òàáëèöà èìåí ïðîãðàììû h b integer i integer a integer g integer e integer f integer c integer
Òàáëèöà èìåí ïðîãðàììû d e integer f integer a integer g integer b integer c integer h:procedure
Ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ (ïîñëåäîâàòåëüíîñòü ñîñòîÿíèé ñòåêà) Âûïîëíåíèå áëîêà p
12 2 42 56789 268 979 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 6
Âûïîëíåíèå áëîêà d
32 2 2 2 2 2 12 42 2 2 2
2 56789 268 979 2 2 2 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà h
12 42 6782 2 32 52 92
2 2 2 6782 2 2 42 92 2
2 2 2
2 2 2
2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà p
12 42 2 2 2 2 2 2 2 2 2
2 56789 268 979 2 2 2 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà d
32 2 52 2 2 92
2 2 2 2 2 6782 2 2 2 2 2 42 2 92 2 2 2
2
2 2
2
2 2
Âûïîëíåíèå áëîêà d
32 2 2 256789 268 979 2 2 2 2 2 2 2 2 2 12 2 42 2 2 2 2 2 2 2
7
Âûïîëíåíèå áëîêà h
12 42 6782 2 32 52 92
2 2 2 6782 2 2 42 92 2
Âûïîëíåíèå áëîêà d
2 2 2 2 2 2 2 2 2 2 2
2 2
32 52 92
2 2 6782 2 2 42 92 2 2 2 2
2 2 2 2 2 2 2 42 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà p
12 32 2 2 2
2 456789257 8 682 2 2 2
Ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ (ïîñëåäîâàòåëüíîñòü ñîñòîÿíèé äèñïëåÿ) Âûïîëíåíèå áëîêà p
Âûïîëíåíèå áëîêà d
Ññûëêà íà äàííûå áëîêà p
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d Ñïèñîê ïñåâäîíèìîâ
Ñïèñîê ïñåâäîíèìîâ 8
Âûïîëíåíèå áëîêà h
Âûïîëíåíèå áëîêà d
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d Ññûëêà íà äàííûå áëîêà h
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d
Ñïèñîê ïñåâäîíèìîâ
Ñïèñîê ïñåâäîíèìîâ
Âûïîëíåíèå áëîêà p
Âûïîëíåíèå áëîêà d
Ññûëêà íà äàííûå áëîêà p
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d
Ñïèñîê ïñåâäîíèìîâ
Ñïèñîê ïñåâäîíèìîâ b,e
Âûïîëíåíèå áëîêà h
Âûïîëíåíèå áëîêà d
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d Ññûëêà íà äàííûå áëîêà h
Ññûëêà íà äàííûå áëîêà p Ññûëêà íà äàííûå áëîêà d
Ñïèñîê ïñåâäîíèìîâ
Ñïèñîê ïñåâäîíèìîâ b,e
Âûïîëíåíèå áëîêà p Ññûëêà íà äàííûå áëîêà p Ñïèñîê ïñåâäîíèìîâ Ïðîãðàììà 2 â óñëîâèÿõ äèíàìè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè èìåí Ðåçóëüòàòû êîìïèëÿöèè Òàáëèöà èìåí ïðîãðàììû a b àäðåñ int c int 9
d int e int Òàáëèöà èìåí ïðîãðàììû f g int h int i int j int Òàáëèöà èìåí ïðîãðàììû main d int h int Ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ (ïîñëåäîâàòåëüíîñòü ñîñòîÿíèé ñòåêà) Âûïîëíåíèå áëîêà main
12 2 2 2 2 2
Âûïîëíåíèå áëîêà f
3456782469 7 5 7 2 2 2 2 2 2
Âûïîëíåíèå áëîêà a
12 2 2 2 2 2 2 2 2 2
10
3456782469 7 5 7 2 2 2 2 2 2 2 2 2 2
2 2 12 2 12 2
3456782469 7 5 7 2 2 2 2 2 2
Âûïîëíåíèå áëîêà f
12 2 2 2 2 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà a
2 2 2 2 12 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà f
12 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2
Âûïîëíåíèå áëîêà a
12 2 2 2 2 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2 2 2 2 2
Âûïîëíåíèå áëîêà f
2 2 2 2 2 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2 2 2 2 2
11
Âûïîëíåíèå áëîêà main
12 2
3456782469 7 5 7 2 2
Âûïîëíåíèå áëîêà a
12 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2
Âûïîëíåíèå áëîêà a
12 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2
Âûïîëíåíèå áëîêà main
12 2
12
3456782469 7 5 7 2 2
Âûïîëíåíèå áëîêà main
2 2 2 2 2 2
3456782469 7 5 7 2 2 2 2 2 2
Ðåçóëüòàòû ìîäåëèðîâàíèÿ âûïîëíåíèÿ (ïîñëåäîâàòåëüíîñòü ñîñòîÿíèé öåíòðàëüíîé òàáëèöû èìåí) Âûïîëíåíèå áëîêà main
1234 56784 4 4 4 4 4 !4 4 "4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 4 2 4 2 4 2 4 2 Âûïîëíåíèå áëîêà f
1234 56784 4 4 4 4 4 "4 4 #4
4
4 4 4 4 4 4 4 #4
96 4 76 4 4 4 4 4 !4 !4 !4 !4
4 44444 4 2 4 12 2 2 2 2 2 2
Âûïîëíåíèå áëîêà a
1234 56784
4
4 4 4 4 4 !4 4 "4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 4 4 1 4 1 4 1 4 1 4 1 4 1 13
Âûïîëíåíèå áëîêà f
1234 56784 4 4 4 4 4 "4 4 #4
4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 !4 2 !4 2 !4 2 !4 2 Âûïîëíåíèå áëîêà a
1234 56784 4 4 4 4 4 !4 4 "4
4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 4 4 1 4 1 4 1 4 1 4 1 4 1 Âûïîëíåíèå áëîêà f
1234 56784 4 4 4 4 4 "4 4 #4
4 14
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 !4 2 !4 2 !4 2 !4 2
Âûïîëíåíèå áëîêà a
1234 56784
4
4 4 4 4 4 4 !4 "4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 4 4 1 4 1 4 1 4 1 4 1 4 1 Âûïîëíåíèå áëîêà f
1234 56784
4
4 4 4 4 4 "4 4 #4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 !4 2 !4 2 !4 2 !4 2 Âûïîëíåíèå áëîêà main
1234 56784
4
4 4 4 4 4 !4 4 "4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 4 2 4 2 4 2 4 2 15
Âûïîëíåíèå áëîêà a
1234 56784 4 4 4 4 4 4 4 "4
4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 4 2 !4 2 4 2 4 2 Âûïîëíåíèå áëîêà main
1234 56784 4 4 4 4 4 !4 4 "4
4
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 4 2 4 2 4 2 4 2 Âûïîëíåíèå áëîêà a
1234 56784 4 4 4 4 4 4 !4 #4
4 16
4 4 4 4 4 4 4 4
96 4 4 76 4 4 44444 4 2 4 4 4 4 1 4 1 4 1 !"4 1 4 1 4 1
Âûïîëíåíèå áëîêà main
1234 56784
4
4 4 4 4 4 !4 4 "4
96 4 4 76 4 4 44444 4 2 4 4 12 4 2 4 2 4 2 4 2 4 2 4 2
4 4 4 4 4 4 4 4
3. ÂÀÐÈÀÍÒÛ ÇÀÄÀÍÈß Â êîäå âàðèàíòà çàäàíèÿ ñîäåðæàòñÿ: ôîðìà âûâîäà ðåçóëüòàòîâ ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû äëÿ ñòàòè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè (S ñîñòîÿíèÿ ñòåêà, D ñîñòîÿíèÿ äèñïëåÿ); ôîðìà âûâîäà ðåçóëüòàòîâ ìîäåëèðîâàíèÿ âûïîëíåíèÿ ïðîãðàììû äëÿ äèíàìè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè (S ñîñòîÿíèÿ ñòåêà, T ñîñòîÿíèÿ òàáëèöû); ñèíòàêñèñ ÿçûêà èñõîäíîé ïðîãðàììû (P Pascal, C C).
123456 78598 86 2 66 78598 86
12
32
42
52
62
72
82
92
2
2
2
2
2
2
2
2
2
4. ÑÎÄÅÐÆÀÍÈÅ ÏÎßÑÍÈÒÅËÜÍÎÉ ÇÀÏÈÑÊÈ Ââåäåíèå. 1. Ïîñòàíîâêà çàäà÷è. 2. Îïèñàíèå ïðîãðàììíîé ìîäåëè. 2.1. Ñòðóêòóðà ïðîãðàììû. 2.2. Àëãîðèòìû ôóíêöèîíèðîâàíèÿ áëîêîâ. 2.3. Îïèñàíèå ñòðóêòóð äàííûõ ïðîãðàììû. 2.4. Èíòåðôåéñ ïðîãðàììíîé ìîäåëè. 17
3. Ðåçóëüòàòû òåñòèðîâàíèÿ ïðîãðàììû. Çàêëþ÷åíèå. Áèáëèîãðàôè÷åñêèé ñïèñîê. Ïðèëîæåíèå. 5. ÏÎßÑÍÅÍÈß Ê ÈÑÏÎËÜÇÓÅÌÎÉ ÒÅÐÌÈÍÎËÎÃÈÈ Àêòèâàöèÿ ïîäïðîãðàììû ñîçäàåòñÿ ïðè êàæäîì âûçîâå ýòîé ïîäïðîãðàììû. Ïîä çàïèñüþ àêòèâàöèè ïîäïðîãðàììû â ðàìêàõ äàííîãî äîêóìåíòà áóäåì ïîíèìàòü òàáëèöó ëîêàëüíûõ èìåí ïîäïðîãðàììû.  óñëîâèÿõ ñòàòè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè íåëîêàëüíûå ññûëêè êàæäîé ïîäïðîãðàììû îïðåäåëÿþòñÿ âî âðåìÿ òðàíñëÿöèè ëîêàëüíûìè èìåíàìè òåõ áëîêîâ, â êîòîðûå äàííàÿ ïîäïðîãðàììà âëîæåíà, à èìåííî áëèæàéøèì ïî óðîâíþ âëîæåííîñòè îïèñàíèåì êàæäîãî èìåíè. Äëÿ ïîñòðîåíèÿ òàáëèö ñèìâîëè÷åñêèõ èìåí ïîäïðîãðàìì èñïîëüçóåòñÿ ñòåê âðåìåíè êîìïèëÿöèè, â êîòîðûé äîáàâëÿþòñÿ è èç êîòîðîãî óäàëÿþòñÿ ëîêàëüíûå èìåíà ïîäïðîãðàììû, ñîîòâåòñòâåííî, ïðè âõîäå â åå îïèñàíèå è ïðè âûõîäå èç íåãî. Âî âðåìÿ âûïîëíåíèÿ ïðîãðàììû çíà÷åíèå íåëîêàëüíîé ññûëêè â ïîäïðîãðàììå íå çàâèñèò îò êîíêðåòíîé äèíàìè÷åñêîé öåïè âûçîâîâ ïîäïðîãðàìì, êîòîðàÿ ïðèâîäèò ê àêòèâàöèè äàííîé ïîäïðîãðàììû. Ñòåê âðåìåíè âûïîëíåíèÿ ñîäåðæèò çàïèñè àêòèâàöèè ïîäïðîãðàìì, îáðàçóþùèõ ýòó äèíàìè÷åñêóþ öåïü. Äëÿ ðåàëèçàöèè êîððåêòíîé ñðåäû ññûëîê ìîæíî âîñïîëüçîâàòüñÿ ìåòîäîì ñòàòè÷åñêîé öåïè, â ñîîòâåòñòâèè ñ êîòîðûì êàæäàÿ çàïèñü àêòèâàöèè ïîäïðîãðàììû â ñòåêå âðåìåíè âûïîëíåíèÿ ïðåäâàðÿåòñÿ óêàçàòåëåì ñòàòè÷åñêîé öåïè (ñì. ðèñ. SCP), ÿâëÿþùèìñÿ áàçîâûì àäðåñîì çàïèñè àêòèâàöèè äðóãîé ïîäïðîãðàììû, ðàñïîëîæåííîé íèæå â ñòåêå è ïðåäñòàâëÿþùåé ïîäïðîãðàììó, êîòîðàÿ ñòàòè÷åñêè âêëþ÷àåò â ñåáÿ äàííóþ ïîäïðîãðàììó. Äðóãàÿ ðåàëèçàöèÿ êîððåêòíîé ñðåäû íåëîêàëüíûõ ññûëîê èñïîëüçóåò äèñïëåé îòäåëüíûé âåêòîð, â êîòîðûé êîïèðóåòñÿ ñòàòè÷åñêàÿ öåïü ïðè âõîäå â êàæäóþ ïîäïðîãðàììó.  óñëîâèÿõ äèíàìè÷åñêè îïðåäåëÿåìîé îáëàñòè âèäèìîñòè íåëîêàëüíûå ññûëêè êàæäîé ïîäïðîãðàììû çàâèñÿò îò äèíàìè÷åñêîé öåïè âûçîâîâ, ïðèâîäÿùåé ê àêòèâàöèè äàííîé ïîäïðîãðàììû, è, ñëåäîâàòåëüíî, ìîãóò áûòü îïðåäåëåíû òîëüêî âî âðåìÿ âûïîëíåíèÿ ïðîãðàììû. Ðåàëèçàöèÿ êîððåêòíîé ñðåäû íåëîêàëüíûõ ññûëîê ìîæåò âîñïîëüçîâàòüñÿ âûøåóïîìÿíóòûì ñòåêîì âðåìåíè âûïîëíåíèÿ èëè öåíòðàëüíîé òàáëè18
öåé ñðåäû ññûëîê. Ïîñëåäíÿÿ ñîäåðæèò ïî îäíîé çàïèñè äëÿ êàæäîãî ñèìâîëè÷åñêîãî èìåíè ïðîãðàììû, íåçàâèñèìî îò êîëè÷åñòâà ïîäïðîãðàìì, â êîòîðûõ ýòî èìÿ ïîÿâëÿåòñÿ. Êðîìå òîãî, êàæäàÿ çàïèñü òàáëèöû ñîäåðæèò ôëàæîê àêòèâíîñòè, êîòîðûé óêàçûâàåò, ìîæåò ëè èñïîëüçîâàòüñÿ èìÿ â äàííûé ìîìåíò âûïîëíåíèÿ êàêîé-ëèáî ïîäïðîãðàììû, è, åñëè ìîæåò, ññûëêó íà ïîäïðîãðàììó, â êîòîðîé îíî îïðåäåëåíî. Ïñåâäîíèìû äâà èëè áîëåå èìåí äëÿ îäíîãî è òîãî æå îáúåêòà äàííûõ.  ðàìêàõ äàííîé ðàáîòû ñëåäóåò îáíàðóæèòü âîçìîæíîñòü èñïîëüçîâàíèÿ ïñåâäîíèìîâ â äâóõ ñëó÷àÿõ: ïîäïðîãðàììà ìîæåò èìåòü äîñòóï ê îáúåêòó äàííûõ, ïåðåäàííîìó êàê ôàêòè÷åñêèé ïàðàìåòð ïî ññûëêå, ÷åðåç íåëîêàëüíîå èìÿ; îäèí è òîò æå îáúåêò äàííûõ ìîæåò áûòü ïåðåäàí ïî ññûëêå â äâóõ èëè áîëåå ïîçèöèÿõ îäíîãî è òîãî æå ñïèñêà ôàêòè÷åñêèõ ïàðàìåòðîâ. 6. ÐÅÊÎÌÅÍÄÀÖÈÈ ÏÎ ÌÅÒÎÄÈÊÅ ÏÐÎÅÊÒÈÐÎÂÀÍÈß Ñòðóêòóðû äàííûõ, ñ êîòîðûìè ðàáîòàåò è êîòîðûå äîëæíà ôîðìèðîâàòü ïðîåêòèðóåìàÿ ïðîãðàììíàÿ ñèñòåìà, óñëîâíî ìîæíî ðàçáèòü íà äâà êëàññà: âíåøíèå è âíóòðåííèå. Ê â í å ø í è ì äàííûì îòíîñÿòñÿ äîñòóïíûå âíåøíåìó ïîëüçîâàòåëþ ñèñòåìû: íà âõîäå òåêñò èñõîäíîé ïðîãðàììû è óêàçàíèå ñïîñîáà ôîðìèðîâàíèÿ îáëàñòè âèäèìîñòè ñèìâîëè÷åñêèõ èìåí; íà âûõîäå ïðåäñòàâëåííàÿ â ñîîòâåòñòâèè ñ âàðèàíòîì çàäàíèÿ èíôîðìàöèÿ î âèäèìûõ èìåíàõ íà ýòàïàõ êîìïèëÿöèè è âûïîëíåíèÿ èñõîäíîé ïðîãðàììû.  í ó ò ð å í í è å ñòðóêòóðû, ôîðìèðóåìûå êîìïèëèðóþùåé ÷àñòüþ ñèñòåìû, ìîæíî ïðåäñòàâèòü, íàïðèìåð, â âèäå ñëåäóþùåé ñèñòåìû òàáëèö: òàáëèöû áëîêîâ, òàáëèö ëîêàëüíûõ èìåí áëîêîâ, òàáëèöû èñïîëíÿåìûõ êîäîâ áëîêîâ. Òàáëèöà áëîêîâ â òàêîé ñèñòåìå ñòðóêòóð äàííûõ äîëæíà ðàññìàòðèâàòüñÿ êàê îñíîâíàÿ, ñ ïîìîùüþ êîòîðîé îñòàëüíûå òàáëèöû ðàçáèâàþòñÿ íà ïîäòàáëèöû ïî îäíîé äëÿ êàæäîãî áëîêà. Ôîðìàò çàïèñè òàáëèöû áëîêîâ ìîæåò èìåòü ñëåäóþùèé âèä: 1234 567894 68949495644 6894944
86 4 67896424 76324874
4
19
 òàáëèöàõ èìåí ïîëåì êëþ÷à ÿâëÿåòñÿ ïîëå ñèìâîëè÷åñêîãî èìåíè; îñòàëüíûå ïîëÿ çàïèñè òàáëèöû èìåí ìîãóò ñîäåðæàòü äàííûå î òèïå èìåíè (íàïðèìåð: ïåðåìåííàÿ, ïàðàìåòð, ôóíêöèÿ; åñëè ïåðåìåííàÿ êàêîãî òèïà; åñëè ïàðàìåòð êàê ïåðåäàåòñÿ è ò. ä.). Òàáëèöà èñïîëíÿåìûõ êîäîâ, èëè ìàññèâ êîäîâ, ìîæåò áûòü îðãàíèçîâàíà â âèäå ìàññèâà ñòðîê, êàæäàÿ èç êîòîðûõ ÿâëÿåòñÿ èñïîëíÿåìûì îïåðàòîðîì èñõîäíîé ïðîãðàììû. Ïðèíàäëåæíîñòü ôðàãìåíòîâ òàáëèöû èìåí è ìàññèâà èñïîëíÿåìûõ êîäîâ îòäåëüíûì ïîèìåíîâàííûì áëîêàì, êàê óæå ãîâîðèëîñü âûøå, óêàçûâàåòñÿ â òàáëèöå èìåí áëîêîâ, íàïðèìåð, â âèäå äèàïàçîíîâ çíà÷åíèé èíäåêñîâ ýëåìåíòîâ, ñîîòâåòñòâåííî, òàáëèöû èìåí è ìàññèâà èñïîëíÿåìûõ êîäîâ. Ïðèìåð ñîäåðæàíèÿ âíóòðåííèõ ñòðóêòóð, ñôîðìèðîâàííûõ êîìïèëèðóþùåé ÷àñòüþ ñèñòåìû Òåêñò èñõîäíîé ïðîãðàììû (âíåøíèå äàííûå) program main; var a,b; procedure c(var d;e); var a; begin end; {c} procedure d(var e;f); var b; begin c(b,f); end; {d} procedure g(h,var i); var c; procedure j(var k); begin end; {j} begin j(c); d(h,c); 20
1
end; {g} begin d(a,b); g(a,b); end. {main} Òàáëèöà èìåí áëîêîâ (âíóòðåííèå äàííûå)
1234567894 6894 9495642 4 6894 9476 32 4874
5
12345 95
5 5 5
6175
15 1665 61675 6 16 5
6185 1 5 71 5 15 6165
Òàáëèöà èìåí áëîêîâ (âíóòðåííèå äàííûå) 1
71 1
1 1 1 1 1 1 1 71 771 71 7 1 71 71 71
2341
81 1 1 1 1 1 1 81 1 1 1 1 1 1 1 1
5261
98 1 98 1 1 1 1 8 891 8 81 98 1 8 891 8 81 98 1 8 81 8 891 98 1 1 8 891
21
Èñïîëíÿåìûé êîä (âíóòðåííèå äàííûå) 12 92 2 2 2 2 2 2 2 12
3456782
456782 2 2 47682 2 482 34682 2 2
Âíåøíèå âûõîäíûå ñòðóêòóðû êîìïèëèðóþùåé ÷àñòè ñèñòåìû ýòî òàáëèöû ñèìâîëè÷åñêèõ èìåí äëÿ êàæäîãî áëîêà ïðîãðàììû. Îíè ìîãóò ôîðìèðîâàòüñÿ îäíîâðåìåííî ñ âûøåîïèñàííûìè âíóòðåííèìè ñòðóêòóðàìè.  ñëó÷àå äèíàìè÷åñêîãî ôîðìèðîâàíèÿ îáëàñòè âèäèìîñòè èìåí ýòè òàáëèöû ïðîñòî ôðàãìåíòû, èç êîòîðûõ ñôîðìèðîâàíà âíóòðåííÿÿ òàáëèöà ëîêàëüíûõ èìåí.  ñëó÷àå ñòàòè÷åñêîãî ôîðìèðîâàíèÿ îáëàñòè âèäèìîñòè íåîöåíèìóþ ïîìîùü â ïîñòðîåíèè òàêèõ òàáëèö îêàæåò òàê íàçûâàåìûé ñòåê âðåìåíè êîìïèëÿöèè. Çàïèñü òàêîãî ñòåêà ýòî ñèìâîëè÷åñêîå èìÿ ñî ñâîèìè àòðèáóòàìè.  ïðîöåññå ïðîñìîòðà èñõîäíîé ïðîãðàììû ïðè îáíàðóæåíèè íà÷àëà îïèñàíèÿ áëîêà (â íàøåì ïðèìåðå ýòî procedure èëè program) êîìïèëÿòîð çàíîñèò â ñòåê âñå ëîêàëüíûå èìåíà ýòîãî áëîêà, à ïðè îáíàðóæåíèè êîíöà îïèñàíèÿ áëîêà (â íàøåì ïðèìåðå ýòî end) óäàëÿåò èç ñòåêà âñå ëîêàëüíûå èìåíà ýòîãî áëîêà. Òàáëèöà èìåí áëîêà ôîðìèðóåòñÿ â ìîìåíò ðàññìîòðåíèÿ êîìïèëÿòîðîì ýòîãî áëîêà.  íåå çàïèñûâàþòñÿ ïî îäíîìó âñå èìåíà, íàõîäÿùèåñÿ â ýòîò ìîìåíò â ñòåêå. Ïðèìåðû ñîäåðæàíèÿ ñòåêà âðåìåíè êîìïèëÿöèè Ñîäåðæàíèå ñòåêà
2
123142 52614172 926141732
23142 123142 22
52 52 52 71 2 71 2
Ðàññìîòðåíèå áëîêà ñ Òàáëèöà èìåí áëîêà ñ
12 82 92
2 2
3142 614172 6141732 3142 2
52 52 52 71 2 2
Ñîäåðæàíèå ñòåêà
2
123452 72845492
28454932 285 2 123452 423452
62 62 62 94 2 94 2 94 2
Ðàññìîòðåíèå áëîêà d Òàáëèöà èìåí áëîêà d
12 72
2 2 42 2
3452 845492 8454932 85 2 3452 2
62 62 62 94 2 94 2 2
Ïðè ìîäåëèðîâàíèè ïðîöåññà âûïîëíåíèÿ ïðîãðàììû àíàëîãè÷íî ôîðìèðîâàíèþ ñòåêà âðåìåíè êîìïèëÿöèè ôîðìèðóåòñÿ ñòåê âðåìåíè âûïîëíåíèÿ ïðîãðàììû (åùå îäíà âíóòðåííÿÿ ñòðóêòóðà). Çàíåñåíèå äàííûõ â ñòåê ïðîèñõîäèò ïðè îáíàðóæåíèè îïåðàòîðà âûçîâà áëîêà, óäàëåíèå ïðè îáíàðóæåíèè îïåðàòîðà âîçâðàòà èç áëîêà (â íàøåì ïðèìåðå ýòî return).  óñëîâèÿõ äèíàìè÷åñêîãî ôîðìèðîâàíèÿ îáëàñòè âèäèìîñòè èìåí òåêóùåå ñîäåðæàíèå òàêîãî ñòåêà ïîçâîëÿåò îïðåäåëèòü âèäèìûå â èñïîëíÿåìîì áëîêå èìåíà àíàëîãè÷íî òîìó, êàê ýòî îïðåäåëÿåòñÿ ïî ñòåêó âðåìåíè êîìïèëÿöèè â óñëîâèÿõ ñòàòè÷åñêîãî ôîðìèðîâàíèÿ îáëàñòè âèäèìîñòè.  ñòåê âðåìåíè âûïîëíåíèÿ, ïîìèìî çàïèñåé î ñèìâîëè÷åñêèõ èìåíàõ, äîëæíû çàíîñèòüñÿ çàïèñè î òî÷êàõ âîçâðàòà, ò. å. îá àäðåñàõ îïåðàòîðîâ, ê êîòîðûì ñëåäóåò ïåðåõîäèòü ïðè âûïîëíåíèè îïåðàòîðîâ òèïà return. Ñ ýòîé öåëüþ ñëåäóåò çàâåñòè òàê íàçûâàåìûé óêàçàòåëü àäðåñà îïåðàòîðà (IP), òåêóùèì çíà÷åíèåì êîòîðîãî âñåãäà áóäåò èíäåêñ ýëåìåíòà ìàññèâà èñïîëíÿåìîãî êîäà, êîòîðûé ñîäåðæèò òåêóùèé èñïîëíÿåìûé îïåðàòîð. Ïðè âûïîëíåíèè îïåðàòîðà âûçîâà áëîêà çíà÷åíèå ýòîãî óêàçàòåëÿ, óâåëè÷åííîå íà åäèíèöó, çàíîñèòñÿ â ñòåê âðåìåíè âûïîëíåíèÿ â êà÷åñòâå òî÷êè âîçâðàòà, à ñàì óêàçàòåëü ïðèîáðåòàåò íîâîå çíà÷åíèå, êîòîðîå âûáèðàåòñÿ èç çàïèñè òàáëèöû èìåí áëîêîâ, ñîîòâåòñòâóþùåé âûçâàííîìó áëîêó (ãðàôà «Ññûëêà íà èñïîëíÿåìûé êîä»). Ïðè èñïîëíåíèè îïåðàòîðà òèïà return óêàçàòåëü IP ïðèîáðåòàåò çíà÷åíèå, âûáðàííîå èç âåðøèíû ñòåêà.
23
Ïðèìåð ñîäåðæàíèÿ ñòåêà âðåìåíè âûïîëíåíèÿ Âûïîëíåíèå áëîêà main IP = 1 Îïåðàòîð d(a,b) Ñîäåðæàíèå ñòåêà 123456 789
23456 789
623456 789
2 84 789
82 84 789
244
22 Âûïîëíåíèå áëîêà d IP = 5 Îïåðàòîð c(b,f) Ñîäåðæàíèå ñòåêà
1234546 8234546 92 45 251 5 235 7235 235 92 45 42 45 251 5
24
7 7 7 2 64 64 64 64 64 22
Âûïîëíåíèå áëîêà c IP = 4 Îïåðàòîð return Ñîäåðæàíèå ñòåêà
12314 26271418 92714183
246 4 6271418 271418 2314 246 4 2745 92745 52745 2314 12314 246 4
5 5 5 2 9 9 9 2 81 81 81 81 81 22
Âûïîëíåíèå áëîêà d IP = 6 Îïåðàòîð return Ñîäåðæàíèå ñòåêà
1234546 8234546 92 45 251 5 235 7235 235 92 45 42 45 251 5
7 7 7 2 64 64 64 64 64 22 25
7. ÃÐÀÔÈÊ ÂÛÏÎËÍÅÍÈß ÊÓÐÑÎÂÎÃÎ ÏÐÎÅÊÒÀ 1234567894 7 7
97894 98 4547 9
232 27 4 2 97894 9 2 3 8 548842 543 7489 8489 5 5 3788 9 57572 7 8 9 ! 237 9 3788
97894 98 4542 8 9 2# 995$%4 7 9 9 #234952789 28489& '7572 7 782 8 99( 28$%4 23 9238 3788 9 24327 4)8 2 2# 9! 95$%4 7 9 9 7 9 #234952789 28489
454374 238 3788 452 7 9 87 23 252 '7572 7 8 99 2# 995$%4 7 9 3 39! 87#9422 25#952789 27 9 939#2 9 9#48 '7572 7 8 99 2# 995$%4 7 9 3 7! 9422 25#952789 27 9 939#2 9 9#48 '7572 7 8 99 #234952789 28489 3 7 9422 25#952789 27 9 939#2 9 9#48 '7572 7 8 99 #234952789 28489 3 3987#9422 25#952789 27 9 939#2 9 9#48 25#4894
289 4)82 7 99
84349 2 4 82 9
"
*
+ ,, ,, ,"
Áèáëèîãðàôè÷åñêèé ñïèñîê 1. Âèðò Í. Àëãîðèòìû è ñòðóêòóðû äàííûõ. Ì.: Ìèð,1989. 360 ñ. 2. Ïîäáåëüñêèé Â. Â. ßçûê Ñ++. Ì.: Ôèíàíñû è ñòàòèñòèêà, 2003. 560 ñ. 3. Ïðàòò Ò., Çåëêîâèö Ì. ßçûêè ïðîãðàììèðîâàíèÿ: ðàçðàáîòêà è ðåàëèçàöèÿ. ÑÏá.: Ïèòåð, 2002. 688 ñ. 4. Ôàðîíîâ Â. Â. Òóðáî Ïàñêàëü 7.0. Íà÷àëüíûé êóðñ: Ó÷åá. ïîñîáèå. Ì.: «Íîëèäæ», 1997. 616 ñ.
26
Ñîäåðæàíèå 1. Çàäàíèå íà êóðñîâîé ïðîåêò ............................................................. 3 2. Òåñòîâûé ïðèìåð ............................................................................... 5 3. Âàðèàíòû çàäàíèÿ .............................................................................. 17 4. Ñîäåðæàíèå ïîÿñíèòåëüíîé çàïèñêè ...............................................17 5. Ïîÿñíåíèÿ ê èñïîëüçóåìîé òåðìèíîëîãèè ......................................18 6. Ðåêîìåíäàöèè ïî ìåòîäèêå ïðîåêòèðîâàíèÿ .................................. 19 7. Ãðàôèê âûïîëíåíèÿ êóðñîâîãî ïðîåêòà .......................................... 26 Áèáëèîãðàôè÷åñêèé ñïèñîê .................................................................. 26
27