Ãëàâíàÿ      Ó÷åáíèêè - Ðàçíûå     Ëåêöèè (ðàçíûå) - ÷àñòü 33

 

Ïîèñê            

 

Ðàçðàáîòêà áàçû äàííûõ "Ó÷àùèåñÿ"

 

             

Ðàçðàáîòêà áàçû äàííûõ "Ó÷àùèåñÿ"

Ìèíèñòåðñòâî îáðàçîâàíèÿ è íàóêè Ðåñïóáëèêè Êàçàõñòàí

Êàðàãàíäèíñêèé ïîëèòåõíè÷åñêèé êîëëåäæ

ÐÀÇÐÀÁÎÒÊÀ ÁÀÇÛ ÄÀÍÍÛÕ «Ó×ÀÙÈÕÑß»

Ïîÿñíèòåëüíàÿ çàïèñêà

Ðóêîâîäèòåëü

À.Ã.Õìûðîâ

22.11.09

Âûïîëíèë ó÷àùèéñÿ

Ãðóïïû 9-4-ÏÂÒ-07

Çèíüêîâ Â.À.

22.11.09

2009ã.


ÂÂÅÄÅÍÈÅ

Åñëè ïðîñëåäèòü èñòîðèþ ÷åëîâå÷åñòâà, òî ìîæíî çàìåòèòü, ÷òî íà ïðîòÿæåíèè ðàçâèòèÿ öèâèëèçàöèè íà çåìëå, ÷åëîâåê ÷òî-òî ïðèäóìûâàåò ÷òîáû îáëåã÷èòü è óêðàñèòü ñâîþ æèçíü íà çåìëå. È âîò óæå ê êîíöó ÕÕ â. íàó÷íî-òåõíè÷åñêèé ïðîãðåññ, íàáðàâøèé ãîëîâîêðóæèòåëüíóþ ñêîðîñòü, ïîñëóæèë ïðè÷èíîé ïîÿâëåíèÿ òàêîãî ÷óäà ñîâðåìåííîñòè êàê êîìïüþòåð è êîìïüþòåðíûå òåõíîëîãèè. Èçîáðåòåíèå êîìïüþòåðîâ ïîñëóæèëî ïåðåëîìíûì ìîìåíòîì â ðàçâèòèè ìíîãèõ îòðàñëåé ïðîìûøëåííîñòè, íà çíà÷èòåëüíûé îáú¸ì ïîâûñèëî ìîùü è ýôôåêòèâíîñòü âîåííîé òåõíèêè, âíåñëî ìíîæåñòâî ïðîãðåññèâíûõ èçìåíåíèé â ðàáîòó ñðåäñòâ ìàññîâîé èíôîðìàöèè, ñèñòåì ñâÿçè, êà÷åñòâåííî èçìåíèëî ïðèíöèï ðàáîòû áàíêîâ è àäìèíèñòðàòèâíûõ ó÷ðåæäåíèé. Ñ êàæäûì äíåì ïðîèñõîäèò óñîâåðøåíñòâîâàíèå êîìïüþòåðíûõ òåõíîëîãèé, ÷òî ïðèâîäèò ê ïîâûøåíèþ ðàáîòîñïîñîáíîñòè âñåãî êîìïüþòåðèçèðîâàííîãî ìèðà â öåëîì. Âñëåä çà ðàçâèòèåì êîìïüþòåðíûõ òåõíîëîãèé, èäåò áóðíîå ðàçâèòèå ïðîãðàììíîãî îáåñïå÷åíèÿ.

Ñåãîäíÿøíèå òåìïû êîìïüþòåðèçàöèè ïðåâûøàþò òåìïû ðàçâèòèÿ âñåõ äðóãèõ îòðàñëåé. Áåç êîìïüþòåðîâ è êîìïüþòåðíûõ ñåòåé íå îáõîäèòñÿ ñåãîäíÿ íè îäíà ñðåäíÿÿ ôèðìà, íå ãîâîðÿ î êðóïíûõ êîìïàíèÿõ. Ñîâðåìåííûé ÷åëîâåê íà÷èíàåò âçàèìîäåéñòâîâàòü ñ êîìïüþòåðîì ïîñòîÿííî - íà ðàáîòå, äîìà, â ìàøèíå è äàæå â ñàìîëåòå. Êîìïüþòåðû ñòðåìèòåëüíî âíåäðÿþòñÿ â ÷åëîâå÷åñêóþ æèçíü, çàíèìàÿ ñâîå ìåñòî â íàøåì ñîçíàíèè. Óæå ñåãîäíÿ êîìïüþòåðû îòâå÷àþò çà íàâåäåíèå è çàïóñê ÿäåðíûõ ðàêåò, çà áàíêîâñêèå ïåðåâîäû ìíîãîìèëëèîííûõ ñóìì äåíåã è ìíîãèå äðóãèå ñèñòåìû.

Ñåé÷àñ â ó÷åáíûå ïëàíû ìíîãèõ äèñöèïëèí âêëþ÷åíû ðàçäåëû, òðåáóþùèå ïðèìåíåíèå ïðèêëàäíûõ ïðîãðàìì ðàçëè÷íîé ñòåïåíè ñëîæíîñòè è âî ìíîãèå ïðåäìåòû ó÷åáíîãî ïëàíà âíåäðåíû ðàáîòû ñ êîìïüþòåðàìè, ïèøóòñÿ ýëåêòðîííûå ó÷åáíèêè, ïîñîáèÿ, ïðîãðàììû äëÿ ýòèõ ïðåäìåòîâ.  íàñòîÿùåå âðåìÿ ïðîíèêíîâåíèå èíôîðìàöèîííûõ òåõíîëîãèé ïðîèñõîäèò âî âñå ñôåðû ÷åëîâå÷åñêîé äåÿòåëüíîñòè. Ëþáîå ñîâðåìåííîå ïðîèçâîäñòâî, ó÷ðåæäåíèå, îôèñ íåìûñëèìî ïðåäñòàâèòü áåç ñîâðåìåííûõ êîììóíèêàöèîííûõ òåõíîëîãèé.  ñâÿçè, ñ ÷åì èçó÷åíèå èíôîðìàöèîííûõ òåõíîëîãèé íà÷èíàåòñÿ ñ äîøêîëüíîé ñèñòåìû îáðàçîâàíèÿ.

Íà äàííûé ìîìåíò âðåìåíè ïðåèìóùåñòâåííîå ìåñòî ñðåäè ðàçðàáàòûâàåìûõ ïðîãðàìì çàíèìàþò ïðîãðàììû-òåñòû. Îíè ïðèìåíÿþòñÿ âî ìíîãèõ ñôåðàõ, è èìåþò ðàçëè÷íûå íàïðàâëåíèÿ è íàçíà÷åíèÿ. Òàêèå êàê: ïðîâåðêà îïðåäåë¸ííûõ çíàíèé, êîýôôèöèåíò çíàíèé, îáó÷åíèå è ìíîãîå äðóãîå.

 ñâÿçè ñ âûøåèçëîæåííûì, áûëà ïîñòàâëåíà öåëü, íàïèñàòü ïðîãðàììó äëÿ òåñòèðîâàíèÿ, à èìåííî ïðîñòîé è ë¸ãêîé â èñïîëüçîâàíèè ïðîãðàììû â êà÷åñòâå òåñòà. Òàê êàê íà ñåãîäíÿøíèé ìîìåíò, â ñâÿçè ñ ðàçëè÷íûìè ïîäõîäàìè ê îáðàçîâàíèþ, ïîÿâëÿåòñÿ ïîòðåáíîñòü â äàííîé ïðîäóêöèè.

Äàííûé ïðîåêò ìîæåò áûòü èñïîëüçîâàí êàê ïðåïîäàâàòåëÿìè òàê è îáó÷àåìûìè òàê êàê ÿâëÿåòñÿ òåñòèðóþùåé ïðîãðàììîé ðàçíûõ êàòåãîðèé ñëîæíîñòè, à òàêæå ïðåäîñòàâëÿåòñÿ âîçìîæíîñòü ñîçäàíèÿ ñâîèõ òåñòîâûõ âîïðîñîâ.


1 ÎÁÙÀß ×ÀÑÒÜ

1.1 Áàçà äàííûõ - ñîâîêóïíîñòü ñâÿçàííûõ äàííûõ, îðãàíèçîâàííûõ ïî îïðåäåëåííûì ïðàâèëàì, ïðåäóñìàòðèâàþùèì îáùèå ïðèíöèïû îïèñàíèÿ, õðàíåíèÿ è ìàíèïóëèðîâàíèÿ, íåçàâèñèìàÿ îò ïðèêëàäíûõ ïðîãðàìì. Áàçà äàííûõ ÿâëÿåòñÿ èíôîðìàöèîííîé ìîäåëüþ ïðåäìåòíîé îáëàñòè. Îáðàùåíèå ê áàçàì äàííûõ îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ñèñòåìû óïðàâëåíèÿ áàçàìè äàííûõ (ÑÓÁÄ). Îáúåêòàìè õðàíåíèÿ â òåêñòîâûõ ÁÄ ÿâëÿþòñÿ òåêñòû. Ïîä òåêñòîì áóäóò ïîíèìàòüñÿ íåñòðóêòóðèðîâàííûå äàííûå, ïîñòðîåííûå èç ñòðîê.

Îñíîâíîé öåëüþ ëþáîé òåêñòîâîé ÁÄ ÿâëÿåòñÿ õðàíåíèå, ïîèñê è âûäà÷à äîêóìåíòîâ, ñîîòâåòñòâóþùèõ çàïðîñó ïîëüçîâàòåëÿ. Òàêèå äîêóìåíòû ïðèíÿòî íàçûâàòü ðåëåâàíòíûìè.

1.2 Îáçîð ýëåìåíòîâ ÿçûêà ïðîãðàììèðîâàíèÿ

Ðàçðàáàòûâàåìûé ïðîãðàììíûé ïðîäóêò áûë íàïèñàí íà ÿçûêå ïðîãðàììèðîâàíèÿ Ïàñêàëü. ßçûê Ïàñêàëü, íàçâàí â ÷åñòü ôðàíöóçñêîãî ìàòåìàòèêà è ôèëîñîôà Áëåçà Ïàñêàëÿ (1623—1662). Ïåðâàÿ âåðñèÿ ÿçûêà ïðîãðàììèðîâàíèÿ Ïàñêàëü áûëà ðàçðàáîòàíà íà êàôåäðå èíôîðìàòèêè Ñòýíäôîðäñêîãî óíèâåðñèòåòà øâåéöàðñêèì ó÷åíûì Íèêîëàóñîì Âèðòîì â 1968 ãîäó. ßçûê Ïàñêàëü, ñîçäàííûé ïåðâîíà÷àëüíî äëÿ îáó÷åíèÿ ïðîãðàììèðîâàíèþ êàê ñèñòåìàòè÷åñêîé äèñöèïëèíå, ñêîðî ñòàë øèðîêî èñïîëüçîâàòüñÿ äëÿ ðàçðàáîòêè ïðîãðàììíûõ ñðåäñòâ â ïðîôåññèîíàëüíîì ïðîãðàììèðîâàíèè.

Ïðîøëî ìíîãî âðåìåíè ñ ìîìåíòà ïîÿâëåíèÿ Ïàñêàëÿ íà ðûíêå ïðîãðàììíûõ ïðîäóêòîâ, ïðåæäå ÷åì îí ïîëó÷èë âñåîáùåå ïðèçíàíèå. Ïðèçíàíèå ïðîãðàììèñòîâ è ïðîñòûõ ïîëüçîâàòåëåé ïðèøëî âñëåäñòâèå ïîÿâëåíèÿ ÿçûêà ïðîãðàììèðîâàíèÿ Òóðáî Ïàñêàëü (ÒÏ), ñîçäàííîãî àìåðèêàíñêîé ôèðìîé Áîðëàíä. Ýòà ôèðìà îáúåäèíèëà î÷åíü áûñòðûé êîìïèëÿòîð ñ ðåäàêòîðîì òåêñòà è äîáàâèëà ê ñòàíäàðòíîìó Ïàñêàëþ ìîùíîå ðàñøèðåíèå, ÷òî ñïîñîáñòâîâàëî óñïåõó ïåðâîé âåðñèè ýòîãî ÿçûêà.

Øèðîêîé ïîïóëÿðíîñòè Ïàñêàëÿ ñðåäè ïðîãðàììèñòîâ ñïîñîáñòâîâàëè ñëåäóþùèå ïðè÷èíû:

1) áëàãîäàðÿ ñâîåé êîìïàêòíîñòè, óäà÷íîìó ïåðâîíà÷àëüíîìó îïèñàíèþ Ïàñêàëü îêàçàëñÿ äîñòàòî÷íî ëåãêèì äëÿ èçó÷åíèÿ;

2) ÿçûê ïðîãðàììèðîâàíèÿ Ïàñêàëü îòðàæàåò ôóíäàìåíòàëüíûå è íàèáîëåå âàæíûå êîíöåïöèè àëãîðèòìîâ â î÷åâèäíîé è ëåãêî âîñïðèíèìàåìîé ôîðìå, ÷òî ïðåäîñòàâëÿåò ïðîãðàììèñòó ñðåäñòâà, ïîìîãàþùèå ïðîåêòèðîâàòü ïðîãðàììû;

3) ÿçûê Ïàñêàëü ïîçâîëÿåò ÷åòêî ðåàëèçîâàòü èäåè ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ è ñòðóêòóðíîé îðãàíèçàöèè äàííûõ;

4) ÿçûê Ïàñêàëü ñûãðàë áîëüøóþ ðîëü â ðàçâèòèè ìåòîäîâ àíàëèòè÷åñêîãî äîêàçàòåëüñòâà ïðàâèëüíîñòè ïðîãðàìì è ïîçâîëèë ðåàëüíî ïåðåéòè îò ìåòîäîâ îòëàäêè ïðîãðàìì ê ñèñòåìàì àâòîìàòè÷åñêîé ïðîâåðêè ïðàâèëüíîñòè ïðîãðàìì;

5) ïðèìåíåíèå ÿçûêà Ïàñêàëü çíà÷èòåëüíî ïîäíÿëî "ïëàíêó" íàäåæíîñòè ðàçðàáàòûâàåìûõ ïðîãðàìì çà ñ÷åò òðåáîâàíèé Ïàñêàëÿ, ê îïèñàíèþ èñïîëüçóåìûõ â ïðîãðàììå ïåðåìåííûõ, ïðîâåðêè ñîãëàñîâàííîñòè ïðîãðàììû ïðè êîìïèëÿöèè áåç åå âûïîëíåíèÿ;

6) èñïîëüçîâàíèå â Ïàñêàëå ïðîñòûõ è ãèáêèõ ñòðóêòóð óïðàâëåíèÿ: âåòâëåíèé, öèêëîâ.

 êà÷åñòâå êîíñòàíò àëôàâèò ÿçûêà Òóðáî Ïàñêàëü âêëþ÷àåò ñèìâîëû, öèôðû, øåñòíàäöàòåðè÷íûå öèôðû, ñïåöèàëüíûå ñèìâîëû, ïðîáåëû è çàðåçåðâèðîâàííûå ñëîâà.

Ñèìâîëû - ýòî áóêâû ëàòèíñêîãî àëôàâèòà îò «à» äî «z» è îò «À» äî «Z», à òàêæå çíàê ïîä÷åðêèâàíèÿ «_» (êîä ASCII 95).  Òóðáî Ïàñêàëå íåò ðàçëè÷èÿ ìåæäó ïðîïèñíûìè è ñòðî÷íûìè áóêâàìè àëôàâèòà, åñëè òîëüêî îíè íå âõîäÿò â ñèìâîëüíûå è ñòðîêîâûå âûðàæåíèÿ.

Öåëûå ÷èñëà çàïèñûâàþòñÿ ñî çíàêîì èëè áåç íåãî è ìîãóò èìåòü çíà÷åíèå îò -2147483648 äî +2147483647. Ñëåäóåò ó÷åñòü, ÷òî, åñëè öåëî÷èñëåííàÿ êîíñòàíòà âûõîäèò çà óêàçàííûå ãðàíèöû, êîìïèëÿòîð äàåò ñîîáùåíèå îá îøèáêå. Òàêèå êîíñòàíòû äîëæíû çàïèñûâàòüñÿ ñ äåñÿòè÷íîé òî÷êîé, òî åñòü îïðåäåëÿòüñÿ êàê âåùåñòâåííûå ÷èñëà.

Âåùåñòâåííûå ÷èñëà çàïèñûâàþòñÿ ñî çíàêîì èëè áåç íåãî ñ èñïîëüçîâàíèåì äåñÿòè÷íîé òî÷êè èëè ìàíòèññîé ÷èñëà.

Åñëè â çàïèñè âåùåñòâåííîãî ÷èñëà ïðèñóòñòâóåò äåñÿòè÷íàÿ òî÷êà, ïåðåä òî÷êîé è çà íåé äîëæíî áûòü, õîòÿ áû ïî îäíîé öèôðå. Øåñòíàäöàòåðè÷íîå ÷èñëî ñîñòîèò èç øåñòíàäöàòåðè÷íûõ öèôð, êîòîðûì ïðåäøåñòâóåò çíàê äîëëàðà $ (êîä 36 â ASCII). Äèàïàçîí øåñòíàäöàòåðè÷íûõ ÷èñåë - îò $00000000 äî $FFFFFFFF.

Ñïåöèàëüíûå ñèìâîëû Òóðáî Ïàñêàëÿ - ýòî ñèìâîëû:

+ - * / = ,' . : ; < > [ ] ( ) { } ^ @ $ #.

Ê ñïåöèàëüíûì ñèìâîëàì îòíîñÿòñÿ òàêæå ñëåäóþùèå ïàðû ñèìâîëîâ:

<> <= >= := (* *) (. .).

 ïðîãðàììå ýòè ïàðû ñèìâîëîâ íåëüçÿ ðàçäåëÿòü ïðîáåëàìè, åñëè îíè èñïîëüçóþòñÿ êàê çíàêè îïåðàöèé îòíîøåíèÿ èëè îãðàíè÷èòåëè êîììåíòàðèÿ.

Èäåíòèôèêàòîðû â Òóðáî Ïàñêàëå - ýòî èìåíà êîíñòàíò, ïåðåìåííûõ, ìåòîê, òèïîâ, îáúåêòîâ, ïðîöåäóð, ôóíêöèé, ìîäóëåé, ïðîãðàìì è ïîëåé â çàïèñÿõ. Èäåíòèôèêàòîðû ìîãóò èìåòü ïðîèçâîëüíóþ äëèíó, íî çíà÷àùèìè (óíèêàëüíûìè â îáëàñòè îïðåäåëåíèÿ) ÿâëÿþòñÿ òîëüêî ïåðâûå 63 ñèìâîëà.

Èäåíòèôèêàòîð âñåãäà íà÷èíàåòñÿ áóêâîé, çà êîòîðîé ìîãóò ñëåäîâàòü áóêâû è öèôðû. Íàïîìíþ, ÷òî áóêâîé ñ÷èòàåòñÿ òàêæå ñèìâîë ïîä÷åðêèâàíèÿ, ïîýòîìó èäåíòèôèêàòîð ìîæåò íà÷èíàòüñÿ ýòèì ñèìâîëîì è äàæå ñîñòîÿòü òîëüêî èç îäíîãî èëè íåñêîëüêèõ ñèìâîëîâ ïîä÷åðêèâàíèÿ. Ïðîáåëû è ñïåöèàëüíûå ñèìâîëû àëôàâèòà íå ìîãóò âõîäèòü â èäåíòèôèêàòîð.

Êîíñòàíòû â Òóðáî Ïàñêàëå ìîãóò èñïîëüçîâàòüñÿ öåëûå, âåùåñòâåííûå è øåñòíàäöàòåðè÷íûå ÷èñëà, ëîãè÷åñêèå êîíñòàíòû, ñèìâîëû, ñòðîêè ñèìâîëîâ, êîíñòðóêòîðû ìíîæåñòâ è ïðèçíàê íåîïðåäåëåííîãî óêàçàòåëÿ NIL.

Ëîãè÷åñêàÿ êîíñòàíòà - ýòî ëèáî ñëîâî FALSE (ëîæü), ëèáî ñëîâî TRUE (èñòèíà).

Ñèìâîëüíàÿ êîíñòàíòà - ýòî ëþáîé ñèìâîë ÏÊ, çàêëþ÷åííûé â àïîñòðîôû:

'z' - ñèìâîë z;

'Ô' - ñèìâîë Ô.

Åñëè íåîáõîäèìî çàïèñàòü ñîáñòâåííî ñèìâîë àïîñòðîôà, îí óäâàèâàåòñÿ:

'''' - ñèìâîë àïîñòðîô.

Äîïóñêàåòñÿ èñïîëüçîâàíèå çàïèñè ñèìâîëà ïóòåì óêàçàíèÿ åãî âíóòðåííåãî êîäà, êîòîðîìó ïðåäøåñòâóåò ñèìâîë # (êîä 35), íàïðèìåð:

#97 - ñèìâîë à;

#90 - ñèìâîë Z;

#39 - ñèìâîë ';

#13 - ñèìâîë CR.

Ñòðîêîâàÿ êîíñòàíòà - ëþáàÿ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ (êðîìå ñèìâîëà CR -âîçâðàò êàðåòêè), çàêëþ÷åííàÿ â àïîñòðîôû. Åñëè â ñòðîêå íóæíî óêàçàòü ñàì ñèìâîë àïîñòðîôà, îí óäâàèâàåòñÿ, íàïðèìåð:

'Ýòî - ñòðîêà ñèìâîëîâ’;

'That' 's string.'.

Êîíñòðóêòîð ìíîæåñòâà - ñïèñîê ýëåìåíòîâ ìíîæåñòâà, îáðàìëåííûé êâàäðàòíûìè ñêîáêàìè, íàïðèìåð:

[1,2,4..7,12] èëè [blue, red].

Ëþáîé èç ñòðóêòóðèðîâàííûõ òèïîâ (à â Òóðáî Ïàñêàëå èõ ÷åòûðå: ìàññèâû, çàïèñè, ìíîæåñòâà è ôàéëû) õàðàêòåðèçóåòñÿ ìíîæåñòâåííîñòüþ îáðàçóþùèõ ýòîò òèï ýëåìåíòîâ, ò.å. ïåðåìåííàÿ èëè êîíñòàíòà ñòðóêòóðèðîâàííîãî òèïà âñåãäà èìååò íåñêîëüêî êîìïîíåíòîâ. Êàæäûé êîìïîíåíò, â ñâîþ î÷åðåäü, ìîæåò ïðèíàäëåæàòü ñòðóêòóðèðîâàííîìó òèïó, ÷òî ïîçâîëÿåò ãîâîðèòü î âîçìîæíîé âëîæåííîñòè òèïîâ.  Òóðáî Ïàñêàëå äîïóñêàåòñÿ ïðîèçâîëüíàÿ ãëóáèíà âëîæåííîñòè òèïîâ, îäíàêî ñóììàðíàÿ äëèíà ëþáîãî èç íèõ âî âíóòðåííåì ïðåäñòàâëåíèè íå äîëæíà ïðåâûøàòü -5520 áàéò.

 îòëè÷èå îò ñòàíäàðòíîãî Ïàñêàëÿ, â Òóðáî Ïàñêàëå ðàçðåøàåòñÿ â îáúÿâëåíèè êîíñòàíò èñïîëüçîâàòü ïðîèçâîëüíûå âûðàæåíèÿ, îïåðàíäàìè êîòîðûõ ìîãóò áûòü ðàíåå îáúÿâëåííûå íå òèïèçèðîâàííûå êîíñòàíòû, èìåíà òèïîâ è îáúåêòîâ.

Ïðîöåäóðû è ôóíêöèè ïðåäñòàâëÿþò ñîáîé îòíîñèòåëüíî ñàìîñòîÿòåëüíûå ôðàãìåíòû ïðîãðàììû, îôîðìëåííûå îñîáûì îáðàçîì è ñíàáæåííûå èìåíåì. Óïîìèíàíèå ýòîãî èìåíè â òåêñòå ïðîãðàììû íàçûâàåòñÿ âûçîâîì ïðîöåäóðû (ôóíêöèè). Îòëè÷èå ôóíêöèè îò ïðîöåäóðû çàêëþ÷àåòñÿ â òîì, ÷òî ðåçóëüòàòîì èñïîëíåíèÿ îïåðàòîðîâ, îáðàçóþùèõ òåëî ôóíêöèè, âñåãäà ÿâëÿåòñÿ íåêîòîðîå åäèíñòâåííîå çíà÷åíèå èëè óêàçàòåëü, ïîýòîìó îáðàùåíèå ê ôóíêöèè ìîæíî èñïîëüçîâàòü â ñîîòâåòñòâóþùèõ âûðàæåíèÿõ íàðÿäó ñ ïåðåìåííûìè è êîíñòàíòàìè. Óñëîâèìñÿ äàëåå íàçûâàòü ïðîöåäóðó èëè ôóíêöèþ îáùèì èìåíåì «ïîäïðîãðàììà», åñëè òîëüêî äëÿ èçëàãàåìîãî ìàòåðèàëà óêàçàííîå îòëè÷èå íå èìååò çíà÷åíèÿ.

Ïîäïðîãðàììû ïðåäñòàâëÿþò ñîáîé èíñòðóìåíò, ñ ïîìîùüþ êîòîðîãî ëþáàÿ ïðîãðàììà ìîæåò áûòü ðàçáèòà íà ðÿä â èçâåñòíîé ñòåïåíè íåçàâèñèìûõ äðóã îò äðóãà ÷àñòåé. Òàêîå ðàçáèåíèå íåîáõîäèìî ïî äâóì ïðè÷èíàì.

Âî-ïåðâûõ, ýòî ñðåäñòâî ýêîíîìèè ïàìÿòè: êàæäàÿ ïîäïðîãðàììà ñóùåñòâóåò â ïðîãðàììå â åäèíñòâåííîì ýêçåìïëÿðå, â òî âðåìÿ êàê îáðàùàòüñÿ ê íåé ìîæíî ìíîãîêðàòíî èç ðàçíûõ òî÷åê ïðîãðàììû. Ïðè âûçîâå ïîäïðîãðàììû àêòèâèçèðóåòñÿ ïîñëåäîâàòåëüíîñòü îáðàçóþùèõ åå îïåðàòîðîâ, à ñ ïîìîùüþ ïåðåäàâàåìûõ ïîäïðîãðàììå ïàðàìåòðîâ íóæíûì îáðàçîì ìîäèôèöèðóåòñÿ ðåàëèçóåìûé â íåé àëãîðèòì.

Âòîðàÿ ïðè÷èíà çàêëþ÷àåòñÿ â ïðèìåíåíèè ìåòîäèêè íèñõîäÿùåãî ïðîåêòèðîâàíèÿ ïðîãðàìì.  ýòîì ñëó÷àå àëãîðèòì ïðåäñòàâëÿåòñÿ â âèäå ïîñëåäîâàòåëüíîñòè îòíîñèòåëüíî êðóïíûõ ïîäïðîãðàìì, ðåàëèçóþùèõ áîëåå èëè ìåíåå ñàìîñòîÿòåëüíûå ñìûñëîâûå ÷àñòè àëãîðèòìà. Ïîäïðîãðàììû â ñâîþ î÷åðåäü ìîãóò ðàçáèâàòüñÿ íà ìåíåå êðóïíûå ïîäïðîãðàììû íèæíåãî óðîâíÿ. Ïîñëåäîâàòåëüíîå ñòðóêòóðèðîâàíèå ïðîãðàììû ïðîäîëæàåòñÿ äî òåõ ïîð, ïîêà ðåàëèçóåìûå ïîäïðîãðàììàìè àëãîðèòìû íå ñòàíóò íàñòîëüêî ïðîñòûìè, ÷òîáû èõ ìîæíî áûëî ëåãêî çàïðîãðàììèðîâàòü.

Âûçîâ ïîäïðîãðàììû îñóùåñòâëÿåòñÿ ïðîñòûì óïîìèíàíèåì èìåíè ïðîöåäóðû â îïåðàòîðå âûçîâà ïðîöåäóðû èëè èìåíè ôóíêöèè â âûðàæåíèè. Ïðè èñïîëüçîâàíèè ðàñøèðåííîãî ñèíòàêñèñà Òóðáî Ïàñêàëÿ ôóíêöèè ìîæíî âûçûâàòü òî÷íî òàê æå, êàê è ïðîöåäóðû. Êàê èçâåñòíî, ëþáîå èìÿ â ïðîãðàììå äîëæíî áûòü îáÿçàòåëüíî îïèñàíî, ïåðåä òåì êàê îíî ïîÿâèòñÿ ñðåäè èñïîëíÿåìûõ îïåðàòîðîâ. Íå äåëàåòñÿ èñêëþ÷åíèÿ è â îòíîøåíèè ïîäïðîãðàìì: êàæäóþ ñâîþ ïðîöåäóðó è ôóíêöèþ ïðîãðàììèñòó íåîáõîäèìî îïèñàòü â ðàçäåëå îïèñàíèé.

Îïèñàòü ïîäïðîãðàììó - ýòî çíà÷èò óêàçàòü åå çàãîëîâîê è òåëî.  çàãîëîâêå îáúÿâëÿþòñÿ èìÿ ïîäïðîãðàììû è ôîðìàëüíûå ïàðàìåòðû, åñëè îíè åñòü. Äëÿ ôóíêöèè, êðîìå òîãî, óêàçûâàåòñÿ òèï âîçâðàùàåìîãî åþ ðåçóëüòàòà. Çà çàãîëîâêîì ñëåäóåò òåëî ïîäïðîãðàììû, êîòîðîå, ïîäîáíî ïðîãðàììå, ñîñòîèò èç ðàçäåëà îïèñàíèé è ðàçäåëà èñïîëíÿåìûõ îïåðàòîðîâ.  ðàçäåëå îïèñàíèé ïîäïðîãðàììû ìîãóò âñòðåòèòüñÿ îïèñàíèÿ ïîäïðîãðàìì íèçøåãî óðîâíÿ, â òåõ - îïèñàíèÿ äðóãèõ ïîäïðîãðàìì è òàê äàëåå.

Îïèñàíèå ïîäïðîãðàììû ñîñòîèò èç çàãîëîâêà è òåëà ïîäïðîãðàììû.

Çàãîëîâîê ïðîöåäóðû èìååò âèä:

PROCEDURE <èìÿ> ( <ñï.ô.ï . > ) ;

Çàãîëîâîê ôóíêöèè:

FUNCTION <èìÿ> ( <ñï.ô.ï.> ) : <òèï>;

Çäåñü <èìÿ> - èìÿ ïîäïðîãðàììû (ïðàâèëüíûé èäåíòèôèêàòîð);

<ñï.ô.ï.> - ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ;

<òèï> - òèï âîçâðàùàåìîãî ôóíêöèåé ðåçóëüòàòà.

Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ íåîáÿçàòåëåí è ìîæåò îòñóòñòâîâàòü. Åñëè æå îí åñòü, òî â íåì äîëæíû áûòü ïåðå÷èñëåíû èìåíà ôîðìàëüíûõ ïàðàìåòðîâ è èõ òèïû, íàïðèìåð:

Procedure SB(a: Real; b: Integer; c: Char)

Êàê âèäíî èç ïðèìåðà, ïàðàìåòðû â ñïèñêå îòäåëÿþòñÿ äðóã îò äðóãà òî÷êàìè ñ çàïÿòîé. Íåñêîëüêî ñëåäóþùèõ ïîäðÿä îäíîòèïíûõ ïàðàìåòðîâ ìîæíî îáúåäèíÿòü â ïîäñïèñêè, íàïðèìåð, âìåñòî

Function F(a: Real; b: Real): Real;

ìîæíîíàïèñàòüïðîùå:

Function F(a,b: Real): Real;

Îïåðàòîðû òåëà ïîäïðîãðàììû ðàññìàòðèâàþò ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ êàê ñâîåîáðàçíîå ðàñøèðåíèå ðàçäåëà îïèñàíèé: âñå ïåðåìåííûå èç ýòîãî ñïèñêà ìîãóò èñïîëüçîâàòüñÿ â ëþáûõ âûðàæåíèÿõ âíóòðè ïîäïðîãðàììû. Òàêèì ñïîñîáîì îñóùåñòâëÿåòñÿ íàñòðîéêà àëãîðèòìà ïîäïðîãðàììû íà êîíêðåòíóþ çàäà÷ó.

Ìîæåò ñëîæèòüñÿ âïå÷àòëåíèå, ÷òî îáúÿâëåíèå ïåðåìåííûõ â ñïèñêå ôîðìàëüíûõ ïàðàìåòðîâ ïîäïðîãðàììû íè÷åì íå îòëè÷àåòñÿ îò îáúÿâëåíèÿ èõ â ðàçäåëå îïèñàíèÿ ïåðåìåííûõ. Äåéñòâèòåëüíî, â îáîèõ ñëó÷àÿõ ìíîãî îáùåãî, íî åñòü îäíî ñóùåñòâåííîå ðàçëè÷èå: òèïîì ëþáîãî ïàðàìåòðà â ñïèñêå ôîðìàëüíûõ ïàðàìåòðîâ ìîæåò áûòü òîëüêî ñòàíäàðòíûé èëè ðàíåå îáúÿâëåííûé òèï. Ïîýòîìó íåëüçÿ, íàïðèìåð, îáúÿâèòü ñëåäóþùóþ ïðîöåäóðó:

ProcedureS (a: array [1..10] ofReal);

òàê êàê â ñïèñêå ôîðìàëüíûõ ïàðàìåòðîâ ôàêòè÷åñêè îáúÿâëÿåòñÿ òèï-äèàïàçîí, óêàçûâàþùèé ãðàíèöû èíäåêñîâ ìàññèâà.

Åñëè íåîáõîäèìî ïåðåäàòü îïðåäåëåííûé ýëåìåíò ìàññèâà, êàê ïðàâèëî, ïðîáëåì íå âîçíèêàåò, íî åñëè â ïîäïðîãðàììó ïåðåäàåòñÿ âåñü ìàññèâ, òî ñëåäóåò ïåðâîíà÷àëüíî îïèñàòü åãî òèï. Íàïðèìåð:

type

atype = array [1..10] of Real;

Procedure S (a: atype);

Ïîñêîëüêó ñòðîêà ÿâëÿåòñÿ ôàêòè÷åñêè ñâîåîáðàçíûì ìàññèâîì, åå ïåðåäà÷à â ïîäïðîãðàììó îñóùåñòâëÿåòñÿ àíàëîãè÷íûì îáðàçîì:


type

intype = String [15] ;

outype = String [30] ;

Function St (s : intype): outype;

Ðåêóðñèÿ - ýòî òàêîé ñïîñîá îðãàíèçàöèè âû÷èñëèòåëüíîãî ïðîöåññà, ïðè êîòîðîì ïîäïðîãðàììà â õîäå âûïîëíåíèÿ ñîñòàâëÿþùèõ åå îïåðàòîðîâ îáðàùàåòñÿ ñàìà ê ñåáå.

Ðåêóðñèâíàÿ ôîðìà îðãàíèçàöèè àëãîðèòìà îáû÷íî âûãëÿäèò èçÿùíåå èòåðàöèîííîé è äàåò áîëåå êîìïàêòíûé òåêñò ïðîãðàììû, íî ïðè âûïîëíåíèè, êàê ïðàâèëî, ìåäëåííåå è ìîæåò âûçâàòü ïåðåïîëíåíèå ñòåêà (ïðè êàæäîì âõîäå â ïîäïðîãðàììó åå ëîêàëüíûå ïåðåìåííûå ðàçìåùàþòñÿ â îñîáûì îáðàçîì îðãàíèçîâàííîé îáëàñòè ïàìÿòè, íàçûâàåìîé ïðîãðàììíûì ñòåêîì). Ïåðåïîëíåíèå ñòåêà îñîáåííî îùóòèìî ñêàçûâàåòñÿ ïðè ðàáîòå ñ ñîïðîöåññîðîì: åñëè ïðîãðàììà èñïîëüçóåò àðèôìåòè÷åñêèé ñîïðîöåññîð, ðåçóëüòàò ëþáîé âåùåñòâåííîé ôóíêöèè âîçâðàùàåòñÿ ÷åðåç àïïàðàòíûé ñòåê ñîïðîöåññîðà, ðàññ÷èòàííûé âñåãî íà 8 óðîâíåé. ×òîáû èçáåæàòü ïåðåïîëíåíèÿ ñòåêà ñîïðîöåññîðà, ñëåäóåò ðàçìåùàòü ïðîìåæóòî÷íûå ðåçóëüòàòû âî âñïîìîãàòåëüíîé ïåðåìåííîé.

Èíîãäà áûâàåò íåîáõîäèìî âûïîëíèòü ÷àñòü ïðîãðàììû, åñëè çàäàííîå óñëîâèå èìååò çíà÷åíèå True (èñòèíà) èëè False (ëîæü), èëè êîãäà çàäàííîå âûðàæåíèå ïðèíèìàåò îïðåäåëåííîå çíà÷åíèå, â ýòîì ñëó÷àå èñïîëüçóåì óñëîâíûé îïåðàòîð.

Ôîðìàò çàïèñè îïåðàòîðà If:

If (âûðàæåíèå) then îïåðàòîð 1; else îïåðàòîð 2;

ãäå (âûðàæåíèå) - ëþáîå áóëåâñêîå âûðàæåíèå (ïðîâåðÿþùåå íà óñëîâèå True èëè False ); (îïåðàòîð 1) è (îïåðàòîð 2) – îïåðàòîðû ÒÏ . Åñëè âûðàæåíèå ïðèíèìàåò çíà÷åíèå True (èñòèíà), òî (îïåðàòîð 1) âûïîëíÿåòñÿ; â ïðîòèâíîì ñëó÷àå âûïîëíÿåòñÿ – (îïåðàòîð 2).

Îïåðàòîð else ÿâëÿåòñÿ íåîáÿçàòåëüíûì, äðóãèìè ñëîâàìè, äîïóñòèìî èñïîëüçîâàòü îïåðàòîð if â ñëåäóþùåì âèäå:

If (âûðàæåíèå) then îïåðàòîð 1;

 ýòîì ñëó÷àå (îïåðàòîð 1) âûïîëíÿåòñÿ òîëüêî òîãäà, êîãäà âûðàæåíèå èìååò çíà÷åíèå True.  ïðîòèâíîì ñëó÷àå (îïåðàòîð 1) ïðîïóñêàåòñÿ è âûïîëíÿåòñÿ ñëåäóþùèé îïåðàòîð.

Åñëè íåîáõîäèìî âûïîëíèòü áîëåå îäíîãî îïåðàòîðà, â ñëó÷àå, êîãäà âûðàæåíèå ïðèíèìàåò çíà÷åíèå, True (èñòèíà) èëè False (ëîæü), òî ñëåäóåò èñïîëüçîâàòü ñîñòàâíîé îïåðàòîð.

Ñîñòàâíîé îïåðàòîð - ýòî êëþ÷åâîå ñëîâî begin, íåñêîëüêî îïåðàòîðîâ ðàçäåëåííûõ òî÷êîé ñ çàïÿòîé è êëþ÷åâîå ñëîâî end.

Îïåðàòîð âûáîð Case - ñðåäñòâî âûáîðà àëüòåðíàòèâ. Ïîçâîëÿåò óìåíüøèòü êîëè÷åñòâî îïåðàòîðîâ If.

Îïåðàòîð Case ñîñòîèò èç âûðàæåíèÿ (ñåëåêòîðà) è ñïèñêîâ îïåðàòîðîâ, êàæäîìó èç êîòîðûõ ïðåäøåñòâóåò ìåòêà òîãî æå òèïà, ÷òî è ñåëåêòîð. Ýòî çíà÷èò, ÷òî â äàííûé ìîìåíò âûïîëíÿåòñÿ òîò îïåðàòîð, ó êîòîðîãî çíà÷åíèå ñîâïàäàåò ñ òåêóùåì çíà÷åíèåì ñåëåêòîðà. Åñëè ñîâïàäåíèÿ çíà÷åíèé íå ïðîèñõîäèò, òî íå âûïîëíÿåòñÿ íè îäèí èç îïåðàòîðîâ, âõîäÿùèõ â Case èëè æå âûïîëíÿþòñÿ îïåðàòîðû, ñòîÿùèå ïîñëå íåîáÿçàòåëüíîãî ñëîâà else.

Ìåòêà case ñîñòîèò èç ëþáîãî êîëè÷åñòâà êîíñòàíò èëè ïîääèàïàçîíîâ, ðàçäåëåííûõ çàïÿòûìè, çà êîòîðûì ñëåäóåò äâîåòî÷èå(:).

 ñëó÷àå, êîãäà ïðè âûïîëíåíèè êàêîãî-ëèáî óñëîâèÿ (èëè íåâûïîëíåíèÿ), íåîáõîäèìî âûïîëíÿòü ãðóïïó îïåðàòîðîâ ïîâòîðíî, èñïîëüçóþòñÿ öèêëû.

Ñóùåñòâóþò òðè öèêëà: öèêë While (ñ ïðåäóñëîâèåì), öèêë Repeat (ñ ïîñòóñëîâèåì) è öèêë For (ñ ïàðàìåòðîì).

Öèêë While èñïîëüçóåòñÿ äëÿ ïðîâåðêè íåêîòîðîãî óñëîâèÿ â íà÷àëå öèêëà.

Ôîðìàò çàïèñè îïåðàòîðà öèêëà While:

While (âûðàæåíèå) do îïåðàòîð;

 öèêëå While âû÷èñëÿåòñÿ âûðàæåíèå. Åñëè îíî èìååò ðåçóëüòàò- True (èñòèíà), âûïîëíÿåòñÿ îïåðàòîð.  ïðîòèâíîì ñëó÷àå âûïîëíåíèå öèêëà çàâåðøàåòñÿ.

Öèêë Repeat...until èñïîëüçóåòñÿ êîãäà íåîáõîäèìî âûïîëíèòü òåëî öèêëà õîòÿ áû ðàç.

Ôîðìàò çàïèñè öèêëà Repeat...until :

Repeat îïåðàòîð 1; îïåðàòîð2; until (âûðàæåíèå).

Ñóùåñòâóþò òðè îñíîâíûõ îòëè÷èÿ öèêëà Repeat...until îò öèêëà While:

- îïåðàòîðû â öèêëå Repeat âûïîëíÿþòñÿ õîòÿ áû îäèí ðàç, ïîòîìó ÷òî ïðîâåðêà âûðàæåíèÿ îñóùåñòâëÿåòñÿ â êîíöå òåëà öèêëà.  öèêëå While, åñëè çíà÷åíèå âûðàæåíèÿ False, òåëî åãî ñðàçó ïðîïóñêàåòñÿ.;

- öèêë Repeat âûïîëíÿåòñÿ ïîêà âûðàæåíèå íå ñòàíåò True (èñòèíà), â òî âðåìÿ, êàê öèêë While âûïîëíÿåòñÿ äî òåõ ïîð, ïîêà âûðàæåíèå èìååò çíà÷åíèå True (èñòèíà);

- â öèêëå Repeat ìîæåò èñïîëüçîâàòüñÿ ïðîñòî ãðóïïà îïåðàòîðîâ, à íå ñîñòàâíîé îïåðàòîð. Ïðè èñïîëüçîâàíèè ýòîãî öèêëà íå èñïîëüçóþòñÿ ñëîâà begin...end, êàê â ñëó÷àå ñ öèêëîì While.

Öèêë Reðeat âûïîëíèòñÿ õîòÿ áû îäèí ðàç, â òî âðåìÿ, êàê öèêë While ìîæåò íè ðàçó íå âûïîëíèòüñÿ â çàâèñèìîñòè îò çíà÷åíèÿ âûðàæåíèÿ.

Öèêë For èñïîëüçóåòñÿ, êîãäà íåîáõîäèìî âûïîëíèòü òåëî öèêëà îïðåäåëåííîå êîëè÷åñòâî ðàç

Ôîðìàò öèêëà For:

For èíäåêñ:=(âûðàæåíèå1) to (âûðàæåíèå2) do îïåðàòîð ãäå èíäåêñ - ñêàëÿðíàÿ ïåðåìåííàÿ (öåëîãî òèïà, ñèìâîëüíîãî, áóëåâcêîãî è ëþáîãî ïåðå÷èñëèìîãî òèïà); (âûðàæåíèå1) è (âûðàæåíèå2) - âûðàæåíèÿ òèïà, ñîâìåñòèìîãî ñ òèïîì èíäåêñà; îïåðàòîð - îäèíî÷íûé èëè ñîñòàâíîé îïåðàòîð. Èíäåêñ óâåëè÷èâàåòñÿ íà 1 ïîñëå êàæäîãî âûïîëíåíèÿ öèêëà. Èíäåêñ ìîæíî óìåíüøàòü íà 1. Äëÿ ýòîãî êëþ÷åâîå ñëîâî to çàìåíÿåòñÿ íà downto.

Ãëàâíûé íåäîñòàòîê öèêëà For - ýòî âîçìîæíîñòü óìåíüøèòü èëè óâåëè÷èòü èíäåêñ òîëüêî íà 1.

Îñíîâíûå ïðåèìóùåñòâà - êðàòêîñòü, âîçìîæíîñòü èñïîëüçîâàíèÿ ñèìâîëüíîãî è ïåðå÷èñëèìîãî òèïà â äèàïàçîíå çíà÷åíèé [5].

Ôàéëîâûå òèïû åñòü òðè òèïà ôàéëîâ:

- òåêñòîâûå ôàéëû;

- ôàéëû ñ òèïîì;

- ôàéëû áåç òèïà.

Ñâÿçü ñ ôàéëîì ìîæåò áûòü óñòàíîâëåíà ÷åðåç ôàéëîâóþ ïåðåìåííóþ, êîòîðàÿ ïîñëå îïèñàíèÿ, íî äî èñïîëüçîâàíèÿ â ïðîãðàììå äîëæíà áûòü ñâÿçàíà ñ âíåøíèì ôàéëîì ñ ïîìîùüþ ïðîöåäóðû Assign.

Òåêñòîâîé ôàéë – ýòî ïîñëåäîâàòåëüíîñòü ñèìâîëüíûõ ñòðîê ïåðåìåííîé äëèíû. Âñÿêàÿ òàêàÿ ñòðîêà çàâåðøàåòñÿ ìàðêåðîì êîíöà ñòðîêè CR/LF. Òåêñòîâûå ôàéëû ìîæíî îáðàáàòûâàòü òîëüêî ïîñëåäîâàòåëüíî. Ââîä è âûâîä íåëüçÿ ïðîèçâîäèòü äëÿ îòêðûòîãî ôàéëà, èñïîëüçóÿ îäíó ôàéëîâóþ ïåðåìåííóþ. Òåêñòîâîé ôàéë èìååò òèï Text. Ïðèìåð îïèñàíèÿ ôàéëîâîé ïåðåìåííîé òåêñòîâîãî òèïà:

VarFi: Text;

Ôàéëû áåç òèïà ñîñòîÿò èç êîìïîíåíò îäèíàêîâîãî ðàçìåðà, ñòðóêòóðà êîòîðûõ íå èçâåñòíà èëè íå èìååò çíà÷åíèÿ. Äîïóñòèì ïðÿìîé äîñòóï ê ëþáîé êîìïîíåíòå ôàéëà. Ïðèìåð îáúÿâëåíèÿ ôàéëîâîé ïåðåìåííîé ôàéëà áåç òèïà:

VarF: File;

Ôàéëû ñ òèïîì ñîñòîÿò èç îäíîòèïíûõ êîìïîíåíò èçâåñòíîé ñòðóêòóðû [6]. Äîïóñòèì ïðÿìîé äîñòóï ê ëþáîé êîìïîíåíòå ôàéëà. Ïðèìåð îáúÿâëåíèÿ ôàéëîâûõ ïåðåìåííûõ äëÿ ôàéëîâ ñ òèïîì:

Type

TRec = Record

A: Real;

B: Integer;

C: Char;

End;

Var

F : File of Real;

Q : File of String[100];

Fr: File of TRec;

 ýòîì ïðèìåðå F îáúÿâëåíà êàê ôàéëîâàÿ ïåðåìåííàÿ âåùåñòâåííîãî òèïà.

Ýòî îçíà÷àåò, ÷òî êîìïîíåíòàìè ôàéëà ìîãóò áûòü òîëüêî âåùåñòâåííûå çíà÷åíèÿ. Ôàéëîâàÿ ïåðåìåííàÿ Q ïðåäíàçíà÷åíà äëÿ äîñòóïà ê ôàéëàì, êîòîðûå ñîñòîÿò èç ñèìâîëüíûõ ñòðîê äëèíû 100. Ôàéëîâàÿ ïåðåìåííàÿ Fr ïðåäíàçíà÷åíà äëÿ ðàáîòû ñ ôàéëàìè, êîòîðûå ñîñòîÿò èç çàïèñåé òèïà TRec, îáúÿâëåííîãî â ñåêöèè Type.


2 ÑÏÅÖÈÀËÜÍÀß ×ÀÑÒÜ

2.1 Îáùàÿ ïîñòàíîâêà çàäà÷è

Öåëü äàííîé êóðñîâîé ðàáîòû – ðàçðàáîòàòü áàçó äàííûõ “ó÷àùèõñÿ”, à èìåííî ïðîãðàììó äëÿ áîëåå óäîáíîãî ñïîñîáà âåñòè ëè÷íûå äåëà ó÷àùèõñÿ â òåõ èëè èíûõ ó÷åáíûõ çàâåäåíèÿõ.

 ïðîãðàììó âêëþ÷àåòñÿ çàñòàâêà, ìåíþ, ïîìîùíèê, ñ ïîìîùüþ êîòîðîãî ïîëüçîâàòåëþ áóäåò, ëåãêî îçíàêîìèòñÿ ñ äàííîé ïðîãðàììîé.

Ðàçðàáàòûâàåìûé ïðîãðàììíûé ïðîäóêò äîëæåí îáåñïå÷èâàòü âîçìîæíîñòü âûïîëíåíèÿ ñëåäóþùèõ äåéñòâèé:

-èìåþòñÿ ëè îäíîôàìèëüöû;

- èìåþòñÿ ëè îäíîôàìèëüöû íà îäíîì êóðñå;

- â êàêèõ ãðóïïàõ áîëåå 10 ó÷àùèõñÿ;

- íà ñêîëüêî ÷åëîâåê áîëüøå íà I-ì êóðñå, ÷åì íà IV-ì êóðñå;

Èñõîäíûå äàííûå:

- áàçà äàííûõ “ó÷àùèõñÿ”, ðàçëè÷íûõ ãðóïï;

Âûõîäíûìè äàííûìè ÿâëÿþòñÿ:

- ðåçóëüòàò ïîèñêà òîãî èëè èíîãî ó÷àùåãîñÿ, ëþáîé ãðóïïû, îäíîôàìèëüöû, ðàçëè÷èå â êîëè÷åñòâå ó÷àùèõñÿ.

2.2 Îïèñàíèå ìîäóëåé

Ìîäóëü Crt. Ìîäóëü ñîäåðæèò êîíñòàíòû, ïåðåìåííûå è ïîäïðîãðàììû, ïðåäíàçíà÷åííûå äëÿ ðàáîòû ñ êîíñîëüþ.  îòëè÷èå îò ñòàíäàðòíîãî ââîäà-âûâîäà, êîãäà îí îñóùåñòâëÿåòñÿ ÷åðåç ÎÑ, ïîäïðîãðàììû ìîäóëÿ Crt ðàáîòàþò ñ BIOS è äàæå íåïîñðåäñòâåííî ñ âèäåîïàìÿòüþ.


Òàáëèöà 2.3-Ïðîöåäóðû è ôóíêöèè ìîäóëÿ Crt.

Ïðîöåäóðû óïðàâëåíèåì öâåòîì
HighVideo Çàäàíèå âûñîêîé ÿðêîñòè ñèìâîëîâ
LowVideo Çàäàíèå ìàëîé ÿðêîñòè ñèìâîëîâ
NormVideo Çàäàíèå èñõîäíîé ÿðêîñòè ñèìâîëîâ
TextBackGround Çàäàíèå öâåòà ôîíà
TextColor Çàäàíèå öâåòà ñèìâîëîâ
Ïðîöåäóðû äëÿ ðàáîòû ñ ýêðàíîì
ClrEol Óäàëåíèå ñèìâîëîâ îò êóðñîðà äî êîíöà ñòðîêè
ClrScr Î÷èñòêà ýêðàíà
DelLine Óäàëåíèå ñòðîêè, â êîòîðîé íàõîäèòñÿ êóðñîð
GotoXY Ïåðåìåùåíèå êóðñîðà â çàäàííóþ ïîçèöèþ
Ôóíêöèè äëÿ ðàáîòû ñ êëàâèàòóðîé
KeyPressed Ïðîâåðêà íàæàòèÿ êëàâèøè
ReadKey ×òåíèå ñèìâîëà ñ êëàâèàòóðû
Ïðîöåäóðû äëÿ ðàáîòû ñî çâóêîì
Sound Âêëþ÷åíèå çâóêà
NoSound Îòêëþ÷åíèå çâóêà
Ïðîöåäóðû ðàçíîîáðàçíîãî íàçíà÷åíèÿ
Delay Çàäåðæêà âûïîëíåíèÿ ïðîãðàììû

Äàííûé ïðîãðàììíûé ïðîäóêò íàïèñàí ñ ïîìîùüþ ïîäïðîãðàìì, òî åñòü ñ ïîìîùüþ ïðèìåíåíèÿ ïðîöåäóð è ôóíêöèé. Ïðîöåäóðû è ôóíêöèè ïðåäñòàâëÿþò ñîáîé îòíîñèòåëüíî ñàìîñòîÿòåëüíûå ôðàãìåíòû ïðîãðàììû, îôîðìëåííûå îñîáûì îáðàçîì è ñíàáæåííûå èìåíåì. Ïðîãðàììó, íàïèñàííóþ ïðè ïîìîùè ïðîöåäóð è ôóíêöèé ëåãêî òåñòèðîâàòü è îòëàæèâàòü, à òàêæå çàùèòèòü ïðîãðàììíûé ïðîäóêò îò îøèáîê.

Ñïèñîê è îïèñàíèå èñïîëüçîâàííûõ ïîäïðîãðàìì:

1) ProcedureZastavka- ÿâëÿåòñÿ çàñòàâêîé ïðîãðàììû, êîòîðàÿ ïîÿâëÿåòñÿ ïðè çàïóñêå ïðîãðàììû è, èíôîðìèðóåò î òîì, êòî ñîçäàë äàííûé ïðîãðàììíûé ïðîäóêò, êòî ðóêîâîäèòåëü ïðîåêòà, ãîä ñîçäàíèÿ ïðîãðàììû.

2) ProcedureMenu- ÿâëÿåòñÿ íà÷àëîì ïðîãðàììû è ïðåäïèñûâàåò îïðåäåë¸ííûå äåéñòâèÿ äëÿ ïîëüçîâàòåëÿ.

3) ProcedurePassword – ÿâëÿåòñÿ íå ïîñðåäñòâåííî çàùèùàþùåé ïîäïðîãðàììîé, äëÿ çàùèòû îò óäàëåíèÿ èëè âíåñåíèÿ íå ïðàâèëüíîé èíôîðìàöèè îá ó÷-ñÿ íàõîäÿùèõñÿ â áàçå äàííûõ, è äëÿ èñïîëüçîâàíèÿ äåêàíîì èëè çàì-äèðåêòîðîì è ïðî÷åé àäìèíèñòðàöèè ó÷åáíîãî çàâåäåíèÿ (ÒÐÅÁÓÅÒ ÒÎËÜÊÎ Ó «Àäìèíèñòðàòîðà»).

4) ProcedureNovoedelo – ïðåäíàçíà÷åííàÿ äëÿ çàâåäåíèÿ äåë ó÷àùèõñÿ (ÏÐÈÌÅ×ÀÍÈÅ: äàííàÿ ïðîöåäóðà äîñòóïíà ëèøü «Àäìèíèñòðàòîðó»).

5) ProcedureArhieve – äàííàÿ ïðîöåäóðà ïðåäíàçíà÷åíà äëÿ ñîõðàíåíèÿ (ñîçäàíèÿ), èëè çàãðóçêè ñóùåñòâóþùåé áàçû äàííûõ(ÏÐÈÌÅ×ÀÍÈÅ: äàííàÿ ïðîöåäóðà äîñòóïíà ëèøü «Àäìèíèñòðàòîðó»).

6) Procedureend – âûõîä èç ïðîãðàììû.

2.3 Èäåíòèôèêàòîðû

Èäåíòèôèêàòîðû â Òóðáî Ïàñêàëå - ýòî èìåíà êîíñòàíò, ïåðåìåííûõ, ìåòîê, òèïîâ, îáúåêòîâ, ïðîöåäóð è ôóíêöèé, ìîäóëåé, ïðîãðàìì è ïîëåé â çàïèñÿõ, ñîçäàííûõ ñàìèì ïðîãðàììèñòîì.

Èäåíòèôèêàòîð âñåãäà íà÷èíàåòñÿ ñ áóêâû, çà êîòîðîé ìîãóò ñëåäîâàòü áóêâû è öèôðû. Áóêâîé ñ÷èòàåòñÿ òàêæå ñèìâîë ïîä÷åðêèâàíèÿ, ïîýòîìó èäåíòèôèêàòîð ìîæåò íà÷èíàòüñÿ ýòèì ñèìâîëîì è äàæå ñîñòîÿòü òîëüêî èç îäíîãî èëè íåñêîëüêèõ ñèìâîëîâ ïîä÷åðêèâàíèÿ. Ïðîáåëû è ñïåöèàëüíûå ñèìâîëû àëôàâèòà íå ìîãóò âõîäèòü â èäåíòèôèêàòîð.

Èäåíòèôèêàòîðû èñïîëüçóþòñÿ áåç ó÷åòà ðåãèñòðà, ýòî îçíà÷àåò, ÷òî ñòðî÷íûå áóêâû (a..z) ðàññìàòðèâàþòñÿ òîæäåñòâåííûìè áóêâàìè (A..Z). Èäåíòèôèêàòîðû ìîãóò èìåòü ëþáóþ äëèíó, íî òîëüêî ïåðâûå 63 ñèìâîëà ÿâëÿþòñÿ çíà÷àùèìè.

Òàáëèöà èäåíòèôèêàòîðîâ

¹ Èäåíòèôèêàòîð Òèï Íàçíà÷åíèå
1 Num Integer Íóìåðàöèÿ ëè÷íûõ äåë (äèàïàçîí: -32768,,,32767;ðàçìåð-2áàéòà).
2 FirsName Char Ñîçäàíèå ôàìèëèè ó÷-ñÿ (äèàïàçîí:-128…127; ðàçìåð-1áàéò).
3 Name Char Ñîçäàíèå èìåíè ó÷-ñÿ (äèàïàçîí:-128…127; ðàçìåð-1áàéò).
4 FatherName Char Ñîçäàíèå îò÷åñòâà ó÷-ñÿ (äèàïàçîí:-128…127; ðàçìåð-1áàéò).
5 Date Integer Çàïîëíåíèå äàòû ðîæäåíèÿ ó÷-ñÿ (äèàïàçîí:-32768,,,32767; ðàçìåð-2áàéòà).
6 FirstNameKur Char Ñîçäàíèå ôàìèëèè êóðàòîðà (äèàïàçîí:-128…127; ðàçìåð-1áàéò).
7 NameKur Char Ñîçäàíèå èìåíè êóðàòîðà (äèàïàçîí:-128…127; ðàçìåð-1áàéò).
8 FatherNameKur Char Ñîçäàíèå îò÷åñòâà êóðàòîðà (äèàïàçîí:-128…127; ðàçìåð-1áàéò).

2.4 Ñòðóêòóðíàÿ è ôóíêöèîíàëüíàÿ ñõåìà

Ðèñ.1 Ñòðóêòóðíàÿ ñõåìà


Ðèñ.2 Ôóíêöèîíàëüíàÿ ñõåìà


ÇÀÊËÞ×ÅÍÈÅ

Ïðè íàïèñàíèè äàííîãî ïðîåêòà áûëà äîñòèãíóòà ïîñòàâëåííàÿ öåëü, à èìåííî ðàçðàáîòàíà è ïîëíîñòüþ ñôîðìèðîâàíà áàçà äàííûõ ”ó÷àùèõñÿ”.  èíòåðôåéñå äàííîé ïðîãðàììû ïðåäóñìîòðåíû âñå íåîáõîäèìûå äëÿ ïîëüçîâàòåëÿ ïóíêòû ãëàâíîãî ìåíþ â ðàìêàõ ïîñòàâëåííîé çàäà÷è ïðîåêòà.  ïðîãðàììå âûïîëíåíû âñå òðåáîâàíèÿ, ïðåäúÿâëåííûå ê ïðîãðàììíîìó ïðîäóêòó, ñ óâåðåííîñòüþ ìîæíî çàÿâèòü ÷òî öåëü, ïîñòàâëåííàÿ ïðè ðàçðàáîòêå äàííîé ïðîãðàììû, áûëà äîñòèãíóòà. Ïðîãðàììà íàïèñàíà íà ÿçûêå ïðîãðàììèðîâàíèÿ Òóðáî Ïàñêàëü.

Ïîñëå òùàòåëüíîãî èçó÷åíèÿ ïðåäìåòíîé îáëàñòè è çàäàíèÿ ïîëó÷åííîãî íà äàííûé ïðîåêò áûëè âûäâèíóòû îñíîâíûå òðåáîâàíèÿ ê ïðîãðàììíîìó ïðîäóêòó, êîòîðûå â ïîñëåäóþùåì è áûëè ðåàëèçîâàíû â ïðîãðàììå.

Ñòîèò îòìåòèòü, ÷òî äàííûé ïðîãðàììíûé ïðîäóêò îáëàäàåò íåñëîæíûì èíòåðôåéñîì. Áëàãîäàðÿ ýòîìó êà÷åñòâó, ïðîãðàììó ñìîæåò èñïîëüçîâàòü êàæäûé ïîëüçîâàòåëü, èìåþùèé ïðîñòåéøèå íàâûêè ðàáîòû íà êîìïüþòåðå. À äëÿ ïîëüçîâàòåëåé óìåþùèõ ïðîãðàììèðîâàòü íà ÿçûêå Ïàñêàëü ïðîãðàììà ìîæåò ïîñëóæèòü áàçîé äëÿ íàïèñàíèÿ áîëåå ñëîæíûõ ñèñòåì èëè ñòàòü íàãëÿäíûì ïîñîáèåì íàïèñàíèÿ è èñïîëüçîâàíèÿ ïðîöåäóð è ôóíêöèé â äàííîé ñðåäå, òàê êàê äàííàÿ ïðîãðàììà õîðîøî äåìîíñòðèðóåò ïðàêòè÷åñêóþ ðåàëèçàöèþ èõ èñïîëüçîâàíèÿ.


CÏÈÑÎÊ ÈÑÏÎËÜÇÓÅÌÎÉ ËÈÒÅÐÀÒÓÐÛ

1) Àëåêñååâ Â. Å., Âàóëèí À.Ñ., Ïåòðîâà Ã. Á. – Âû÷èñëèòåëüíàÿ òåõíèêà è ïðîãðàììèðîâàíèå. Ïðàêòèêóì ïî ïðîãðàììèðîâàíèþ: Ïðàêò. ïîñîáèå/ –Ì.: Âûñø. øê. , 1991. – 400 ñ.

2) Àáðàìîâ Ñ.À., Çèìà Å.Â. – Íà÷àëà ïðîãðàììèðîâàíèÿ íà ÿçûêå Ïàñêàëü. – Ì.: Íàóêà, 1987. –112 ñ.

3) Òóð÷àê Ë.È. – Îñíîâû ÷èñëåííûõ ìåòîäîâ – Ì.: «Íàóêà», 1987-31 ñ.

4) Âû÷èñëèòåëüíàÿ òåõíèêà è ïðîãðàììèðîâàíèå: Ó÷åá. äëÿ òåõí. âóçîâ/ À.Â. Ïåòðîâ, Â.Å. Àëåêñååâ, À.Ñ. Âàóëèí è äð. – Ì.: Âûñø. øê., 1990 – 479 ñ.

5) Ìåæåííûé Î.À. – ñàìîó÷èòåëü TurboPascal. – Ì.: 2003-75 ñ.

6) Ìàð÷åíêî À.È., Ìàð÷åíêî Ë.À. – Ïðîãðàììèðîâàíèå â ñðåäå TurboPascal 7.0 – Ê.: ÂÅÊ+, Ì.: Áèíîì Óíèâåðñàë, 1998. – 496 ñ.

7) Íåìíþãèí Ñ.À. TurboPascal

8) Ïðàéñ Ä. Ïðîãðàììèðîâàíèå íà ÿçûêå ïàñêàëü. Ïðàêòè÷åñêîå ðóêîâîäñòâî.

9) Ìåæåííûé Î.À. – ñàìîó÷èòåëü TurboPascal. – Ì.: 2003-198 ñ.


ÃÐÀÔÈ×ÅÑÊÀß ×ÀÑÒÜ

Ëèñò 1. Ôóíêöèîíàëüíàÿ ñõåìà


Ëèñò 2. Ñòðóêòóðíàÿ ñõåìà


ÏÐÈËÎÆÅÍÈÅ À

ÒÅÕÍÈ×ÅÑÊÎÅ ÇÀÄÀÍÈÅ

1 Ââåäåíèå

Íàñòîÿùåå ïðàêòè÷åñêîå çàäàíèå ðàñïðîñòðàíÿåòñÿ íà ðàçðàáîòêó ïðîãðàììû ñîçäàíèÿ è îáðàáîòêè òåñòîâûõ äàííûõ, ïðåäíàçíà÷åííîé äëÿ èñïîëüçîâàíèÿ ëþáûõ ïîëüçîâàòåëåé.

Îòëè÷èòåëüíîé îñîáåííîñòüþ äàííîé ïðîãðàììíîé ïðîäóêöèè ÿâëÿåòñÿ äîïîëíèòåëüíàÿ ïðîãðàììà, ïîçâîëÿþùàÿ èçìåíÿòü âîïðîñû è âàðèàíòû âîïðîñîâ òåñòèðîâàíèÿ. Îíî èìååò ñðàâíèòåëüíî ë¸ãêèé ïîëüçîâàòåëüñêèé èíòåðôåéñ, îðèåíòèðîâàííûé íà ïîëüçîâàòåëÿ, èìåþùåãî íàâûêè â ðàáîòå ñ âû÷èñëèòåëüíîé òåõíèêîé.

Ðàçðàáàòûâàåìàÿ ïðîãðàììà ïîçâîëÿåò ëåãêî è ïðîñòî ïðîòåñòèðîâàòü ïîëüçîâàòåëÿ íà çíàíèå îïðåäåë¸ííîé îáëàñòè, çàêëþ÷¸ííîé â òåñòîâûõ âîïðîñàõ.

2 Îñíîâàíèå äëÿ ðàçðàáîòêè

 ñîîòâåòñòâèè ñ ïîëó÷åííûì çàäàíèåì ïðîåêòà íà ïðàêòèêó.

3 Íàçíà÷åíèå

Ïîëüçîâàòåëÿìè äàííîé ïðîãðàììû ìîãóò âûñòóïàòü: çàâó÷è, çàâåäóþùèå êàôåäðû ëþáîãî íàïðàâëåíèÿ. Îñíîâíûì íàçíà÷åíèåì äàííîé ïðîãðàììûáîëåå óäîáíûé ñïîñîá âåñòè ëè÷íûå äåëà ó÷àùèõñÿ â òåõ èëè èíûõ ó÷åáíûõ çàâåäåíèÿõ.


4 Òðåáîâàíèå ê ïðîãðàììå èëè ïðîãðàììíîìó èçäåëèþ

4.1 Òðåáîâàíèå ê ôóíêöèîíàëüíûì õàðàêòåðèñòèêàì.

4.1.1Ïðîãðàììíûé ïðîäóêò äîëæåí îáåñïå÷èâàòü âîçìîæíîñòü âûïîëíåíèÿ ñëåäóþùèõ îïåðàöèé:

-èìåþòñÿ ëè îäíîôàìèëüöû;

-èìåþòñÿ ëè îäíîôàìèëüöû íà îäíîì êóðñå;

- â êàêèõ ãðóïïàõ áîëåå 10 ó÷àùèõñÿ;

- íà ñêîëüêî ÷åëîâåê áîëüøå íà I-ì êóðñå, ÷åì íà IV-ì êóðñå.

4.1.2. Èñõîäíûå äàííûå:

-àíàëèòè÷åñêîå çàäàíèå äàííûõ.

4.2. Òðåáîâàíèÿ ê íà䏿íîñòè ïðîãðàììû:

4.2.1. Ïðåäóñìîòðåòü êîíòðîëü ââîäèìûõ äàííûõ.

4.2.2. Ïðåäóñìîòðåòü áëîêèðîâêó íåêîððåêòíûõ äåéñòâèé ïîëüçîâàòåëÿ ïðè ðàáîòå ñ ñèñòåìîé.

4.3 Òðåáîâàíèÿ ê ñîñòàâó è ïàðàìåòðàì òåõíè÷åñêèõ ñðåäñòâ

4.3.1 Ñèñòåìà äîëæíà ðàáîòàòü íà IBM ñîâìåñòèìûõ ïåðñîíàëüíûõ êîìïüþòåðàõ.

4.3.2 Ìèíèìàëüíàÿ êîíôèãóðàöèÿ:

-òèï ïðîöåññîðà Pentium;

-îáú¸ì îïåðàòèâíîãî çàïîìèíàþùåãî óñòðîéñòâà íå ìåíåå 16Ìá;

-òèï ìîíèòîðà VGA èëè SVGA.

4.4 Òðåáîâàíèÿ ê èíôîðìàöèîííîé ïðîãðàììíîé ñîâìåñòèìîñòè

- Ñèñòåìà ðàáîòàåò ïîä óïðàâëåíèåì îïåðàöèîííûõ ñèñòåì ñåìåéñòâà Windows (Windows95, Windows98,Windows2000,WindowsNT è ò.ï.), à òàêæå äèñêîâûõ îïåðàöèîííûõ ñèñòåìàõ MS-DOS.

5 Òðåáîâàíèÿ ê ïðîãðàììíîé äîêóìåíòàöèè

5.1Ðàçðàáàòûâàåìûå ïðîãðàììíûå ìîäóëè äîëæíû áûòü ñàìîäîêóìåíòèðîâàíû, òî åñòü òåêñòû ïðîãðàìì äîëæíû ñîäåðæàòü âñå íåîáõîäèìûå êîììåíòàðèè;

5.2 Ðàçðàáàòûâàåìàÿ ïðîãðàììà äîëæíà âêëþ÷àòü ñïðàâî÷íóþ èíôîðìàöèþ îá îñíîâíûõ òåðìèíàõ ñîîòâåòñòâóþùåãî ðàçäåëà ïðîãðàììû è ïîäñêàçêè ïîëüçîâàòåëþ;

5.3 Â ñîñòàâ ñîïðîâîæäàþùåé äîêóìåíòàöèè äîëæíû âõîäèòü:

5.3.1 Ïîÿñíèòåëüíàÿ çàïèñêà íà 25-30 ëèñòàõ, ñîäåðæàùàÿ îïèñàíèå ðàçðàáîòêè è âñå íåîáõîäèìûå êîììåíòàðèè;

5.3.2 Ëèñòèíã ïðîãðàììû;

6 Ñòàäèè è ýòàïû ðàçðàáîòêè

¹ ýòàïà Äàòà âûïîëíåíèÿ Íàçâàíèÿ ýòàïîâ
1 Èçó÷åíèå ïðåäìåòíîé îáëàñòè ðåøàåìîé çàäà÷è
2 Îáùàÿ ïîñòàíîâêà ðåøàåìîé çàäà÷è
3 Àíàëèç âõîäíûõ è âûõîäíûõ äîêóìåíòîâ
4 Ñîçäàíèå îêîí ïîëüçîâàòåëüñêîãî èíòåðôåéñà
5 Ñîçäàíèå êîäà ïðîãðàììû
6 Îòëàäêà ïðîãðàììû
7 Òåñòèðîâàíèå ïðîãðàììíîãî îáåñïå÷åíèÿ
8 Ðåäàêòèðîâàíèå âñåé íåîáõîäèìîé äîêóìåíòàöèè

Òàáëèöà À1-Ñòàäèè è ýòàïû ðàçðàáîòêè.


ÏÐÈËÎÆÅÍÈÅ Á

ËÈÑÒÈÍÃ ÏÐÎÃÐÀÌÌÛ

(Ëèñòèíã îñíîâíîé ïðîãðàììû)

program Baza;

uses crt, REGUNIT;

begin{Baza Dannyh}

zastavka; {Çàïóñêçàñòàâêè}

user; {Âûáîð ïîëüçîâàòåëÿ}

menus; {Îòêðûòèå ìåíþ}

end.{Baza Dannyh}

(Ëèñòèíã Unit ïðîãðàììû)

{******************************************************************}

{ Zastavka - Ïðîöåäóðà çàñòàâêè }

{ Makeramka - Ðèñîâàíèå ðàìîê }

{ Lines - Ðèñîâàíèå ëèíèé }

{ Archieve - Ïðîöåäóðà àðõèâà }

{ User - Ïðîöåäóðà âûáîðà ïîëüçîâàòåëÿ }

{ Menus - Ïðîöåäóðà ìåíþ }

{ Password - Ïðîöåäóðà çàïðîñà ïàðîëÿ, òðåáóåò òîëüêî ó Àäìèíà }

{******************************************************************}

Unit REGUNIT;

Interface

uses crt;

const

illcount=100;

NameProg='Baza dannyh';

PasswordX='password';

Line1='ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ';

mmenu:array [1..5] of string[16]=(' Novoe delo ',

' Àðõèâ... ',' Ïîèñê... ',' Ïîëüçîâàòåëü...',

' ‚Âûõîä ');

menunew:array [1..2] of string[16]=(' ‘®åà ­¨âì',

' Žâ¬¥­ ');

menuarch:array [1..3] of string[16]=(' ‘®åà ­¨âì',

' ‡ £à㧨âì',' Žâ¬¥­ ');

menufind:array [1..2] of string[16]=(' � ©â¨',

' Žâ¬¥­ ');

menuuser:array [1..2] of string[40]=

(' €¤¬¨­¨áâà â®à ',

' �®«ì§®¢ ⥫ì');

simvV : set of char =

['A'..'Z','a'..'z','0'..'9','_','\',':',

'(',')','!','#','%','^','~','-','''','&','@'];

simvN : set of char = ['A'..'Z','a'..'z','€'..'Ÿ',' '..'ï'];

simvD : set of char = ['0'..'9','.'];

simvDIG : set of char = ['0'..'9'];

krifind: array [1..8] of string[8]=('number','sur','name','otch',

'dateburn','surdoc','namedoc','otchdoc');

type

ill = record

number: integer;{­®¬¥àª àâ®çª¨}

sur: string[20];{ä ¬¨«¨ï}

name: string[20];{¨¬ï}

otch: string[20];{®âç¥á⢮}

dateburn: string[20];{¤ â஦¤¥­¨ï}

surdoc: string[20];{ä ¬¨«¨ï¢à ç }

namedoc: string[20];{¨¬ï¢à ç }

otchdoc: string[20];{®âç¥á⢮ ¢à ç }

end;

masi = array[1..illcount] of ill;

fff = file of ill;

max = array[1..3,1..28] of integer;

var

pass, flag, open, admin: boolean;

m: max;

numb, numfind, illind, posx, simv, sim, i: integer;

tempmas: array[1..9] of string;

masill: masi;

fileill: fff;

Procedure menucl;

Procedure Screen(color:byte);

Function GotoCen(s:string):integer;

Procedure lines(color:byte);

Procedure space(n:byte);

Procedure clear;

Procedure MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);

Procedure field;

Procedure archieve;

Procedure menuarchh;

Procedure menunewkar;

Procedure menufinder;

Procedure user;

Procedure menus;

Procedure zastavka;

Procedure password;

Implementation

procedure menucl;

var

i:integer;

begin{menucl}

textbackground(blue);

for i:=1 to 20 do

begin

gotoxy(2,i+2);

writeln(' ');

end;

end;{menucl}

Procedure Screen(color:byte);

Var

i:integer;

begin{screen}

textbackGround(color);

for i:=1 to 25 do

writeln(' ');

gotoXY(1,1);

end;{screen}

Function GotoCen(s:string):integer;

begin{gotocen}

GotoCen:=(80-length(s)) div 2;

end;{gotocen}

Procedure lines(color:byte);

var

i:byte;

begin{lines}

textcolor(color);

gotoXY(gotocen(nameprog),1);writeln(NameProg);

write(line1);

for i:=3 to 25 do

begin

gotoxy(19,i);

write('³');

end;

textcolor(yellow);

end;{lines}

Procedure space(n:byte);

Var

i:byte;

begin{space}

for i:=1 to n do

write(' ');

end;{space}

Procedure Clear;

var

x,y:byte;

begin{clear}

textbackground(blue);

For y:=3 to 24 do

For x:=20 to 80 do

Begin

gotoxy(x,y);

write(' ');

end;

end;{clear}

Procedure MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);

var

i,j:integer;

begin {MakeRamka}

textbackground(fon);

textcolor(color);

gotoxy(x0,y0);write('É');

for i:=x0+1 to x-1 do

begin

gotoxy(i,y0);

write('Í');

end;

Write('»');

gotoxy(10+gotocen(s),y0);

textcolor(white);

write(s);

for i:=y0+1 to y-1 do

begin

j:=x0;

textcolor(color);

gotoxy(j,i);

write('º');

textcolor(white);

for j:=x0+1 to x-1 do

write(' ');

TextColor(color);

write('º');

end;

gotoxy(x0,y);

write('È');

for i:=x0+1 to x-1 do

write('Í');

write('¼');

textcolor(yellow);

end; {MakeRamka}

procedure field;

var

i:integer;

begin{field}

MakeRamka(22,3,'Delo uchschegosya',78,24,white,cyan);

textcolor(black);

gotoxy(24,5);

write('¹ Dela ');

gotoxy(24,7);

write('” Ôàìèëèÿ');

gotoxy(24,9);

write('Èìÿ');

gotoxy(24,11);

write('Îò÷åñòâî ');

gotoxy(24,13);

write('Äàòà ðîæäåíèÿ ');

gotoxy(24,15);

write('Familiya kuratora ');

gotoxy(24,17);

write('Imya kuratora ');

gotoxy(24,19);

write('Otchestvo kuratora ');

gotoxy(24,23);

write('Êëàâèøà F8 - Óäàëåíèå äåëà');

textbackground(black);

textcolor(white);

for i:=1 to 9 do

begin

gotoxy(50,3+i*2);

write(' ');

end;

end;{field}

procedure archieve;

var

i:integer;{¯ à ¬¥âàæ¨ª« }

begin{archieve}

MakeRamka(22,3,'‘®åà ­¥­¨¥/‡ £à㧪 ',78,24,white,cyan);

textcolor(black);

textbackground(cyan);

gotoxy(30,13);

write('ˆ¬ïä ©« ');

{‚뢮¤ ¯à¥¤ã¯à¥¦¤¥­¨ï}

gotoxy(30,15);

write('‚­¨¬ ­¨¥! “ª § ¢¨¬ïáãé¥áâ¢ãî饣® ä ©« ');

gotoxy(30,16);

write('¯à¨á®åà ­¥­¨¨ ¤ ­­ëå, ‚ë�…�…‡€�ˆ˜…’…');

gotoxy(30,17);

write('¥£® ᮤ¥à¦¨¬®¥!');

textbackground(black);

textcolor(white);

gotoxy(40,13);

write(' ');

end;{archieve}

procedure menuarchh;

var

io, pos, i, ii, ind: integer;

ch: char;

s: string;

begin{menuarchh}

s:='';

menucl;

ind:=1;

pos:=41;

ii:=1;

archieve;

repeat

repeat

for i:=1 to 3 do

begin

if i=ind

then

begin

textbackground(white);

textcolor(black);

end

else

begin

textcolor(white);

textbackground(black);

end;

gotoxy(2,i*2+1);

write(menuarch[i]);

end;

ch:=readkey;

gotoxy(30,19);

textbackground(cyan);

write(' ');

textcolor(white);

case ch of

#8:{backspace}

if (s<>'')

then

begin

dec(ii);

delete(s,ii,1);

textbackground(black);

textcolor(white);

gotoxy(40,13);

write(' ');

gotoxy(40,13);

write(s);

end;

#80:

if ind<>3

then

inc(ind);

#72:

if ind<>1

then

dec(ind);

else

if chr(ord(ch)) in simvv

then

if ii<=8

then

begin

gotoxy(40,13);

s:=s+chr(ord(ch));

textbackground(black);

textcolor(white);

write(s);

inc(ii);

end;

end;

until ch=#13;

assign(fileill,s+'.dat');

case ind of

1: begin

rewrite(fileill);

for i:=1 to illcount do

write(fileill,masill[i]);

close(fileill);

ind:=3;

end;

2: begin

{$i-}

reset(fileill);

io:=ioresult;

{$i+}

If io = 0

then

begin

for i:=1 to illcount do

read(fileill,masill[i]);

close(fileill);

end;

end;

end;

if (ind = 2)

then

if (io = 0)

then

ind:=3

else

begin

textcolor(red);

textbackground(cyan);

gotoxy(30,19);

write('” ©« ­¥ ­ ©¤¥­!');

end;

until ind=3;

clear;

end;{menuarchh}

procedure menunewkar;

var

numerr, tmp, code,ii, posy, i, ind:integer;

ch:char;

tempm:array [1..9] of string[20];

s,ss:string[20];

sd: char;

errd, flagg:boolean;

begin{menunewkar}

menucl;

ind:=1;

field;

posy:=1;

ii:=1;

s:='';

if flag

then

numb:=numfind

else

for i:=illcount downto 1 do

if (masill[i].number = 0)

then

numb:=i;

{+++++++++++++++++++++}

gotoxy(50,posy*2+3);

write(numb);

if flag

then

begin

str(numb,ss);

tempm[1]:=ss;

tempm[2]:=masill[numb].sur;

tempm[3]:=masill[numb].name;

tempm[4]:=masill[numb].otch;

tempm[5]:=masill[numb].dateburn;

tempm[6]:=masill[numb].surdoc;

tempm[7]:=masill[numb].namedoc;

tempm[8]:=masill[numb].otchdoc;

for i:=1 to 8 do

begin

gotoxy(50,i*2+3);

write(' ');

gotoxy(50,i*2+3);

write(tempm[i]);

end;

end

else

begin

tempm[1]:='';

tempm[2]:='';

tempm[3]:='';

tempm[4]:='';

tempm[5]:='';

tempm[6]:='';

tempm[7]:='';

tempm[8]:='';

tempm[9]:='';

end;

repeat

repeat

for i:=1 to 2 do

begin

if i=ind

then

begin

textbackground(white);

textcolor(black);

end

else

begin

textcolor(white);

textbackground(black);

end;

gotoxy(2,i*2+1);

write(menunew[i]);

end;

gotoxy(50,posy*2+5);

ch:=readkey;

errd:=false;

case ch of

#66:

if admin

then

begin

masill[numb].number:=0;

masill[numb].sur:='';

masill[numb].name:='';

masill[numb].otch:='';

masill[numb].dateburn:='';

masill[numb].surdoc:='';

masill[numb].namedoc:='';

masill[numb].otchdoc:='';

ch:=#13;

ind:=2;

end;

#9: begin

textbackground(black);

textcolor(white);

s:='';

if posy = 8

then

posy:=1

else

inc(posy);

ii:=1;

end;

#83: {delete}

if admin

then

{if ch=chr(0)

{ then }

begin

gotoxy(50,posy*2+5);

write(' ');

s:='';

ii:=1;

end;

#8:{backspase}

if admin

then

if (s<>'')

then

begin

dec(ii);

delete(s,ii,1);

textbackground(black);

textcolor(white);

gotoxy(50,posy*2+5);

write(' ');

gotoxy(50,posy*2+5);

write(s);

end;

#80:

if ind=1

then

inc(ind);

#72:

if ind=2

then

dec(ind);

else

if admin

then

begin

if (posy=4) or (posy=8)

then

flagg:=true

else

flagg:=false;

if ((chr(ord(ch)) in simvN) and not(flagg)) or

((chr(ord(ch)) in simvD) and flagg)

then

if ii<=15

then

begin

if flagg

then

begin

case ii of

1,2,4,5,7,8,9,10:

if not((chr(ord(ch)) in simvdig))

then

errd:=true;

3,6:

if (ch<>'.')

then

errd:=true;

else

errd:=true;

end;

end;

if not(errd)

then

begin

s:=s+chr(ord(ch));

tempm[posy+1]:=s;

textbackground(black);

textcolor(white);

gotoxy(50,posy*2+5);

write(' ');

gotoxy(50,posy*2+5);

write(s);

inc(ii);

end;

end;

end;

end;

until ch=#13;

case ind of

1: if admin

then

begin

if flag

then

numb:=numfind;

masill[numb].number:=numb;

masill[numb].sur:=tempm[2];

masill[numb].name:=tempm[3];;

masill[numb].otch:=tempm[4];

masill[numb].dateburn:=tempm[5];

masill[numb].surdoc:=tempm[6];

masill[numb].namedoc:=tempm[7];

masill[numb].otchdoc:=tempm[8];

ind:=2

end;

2: begin

dec(numb);

ind:=2

end;

end;

until ind=2;

tempm[posy+1]:=s;

s:='';

clear;

flag:=false;

end;{menunewkar}

procedure menufinder;{+++++++++++++++++++++++++++++++++++++++++}

var

t, code, tt, tmp, ii, posy, i, ind:integer;

ch:char;

tempm:array [1..8] of string[20];

s:string[20];

flagg:boolean;

begin{menufinder}

menucl;

ind:=1;

field;

posy:=1;

ii:=1;

s:='';

for i:=1 to 8 do

tempm[i]:='';

repeat

repeat

for i:=1 to 2 do

begin

if i=ind

then

begin

textbackground(white);

textcolor(black);

end

else

begin

textcolor(white);

textbackground(black);

end;

gotoxy(2,i*2+1);

write(menufind[i]);

end;

gotoxy(50,posy*2+3);

ch:=readkey;

case ch of

#9:

begin

s:='';

if posy = 9

then

posy:=1

else

inc(posy);

for tmp:=1 to 9 do

begin

gotoxy(50,tmp*2+3);

write(' ');

end;

ii:=1;

end;

#8:{backspase}

if (s<>'')

then

begin

dec(ii);

delete(s,ii,1);

textbackground(black);

textcolor(white);

gotoxy(50,posy*2+3);

write(' ');

gotoxy(50,posy*2+3);

write(s);

end;

#80:

if ind=1

then

inc(ind);

#72:

if ind=2

then

dec(ind);

else

begin

if (posy=1) or (posy=5) or (posy=9)

then

flagg:=true

else

flagg:=false;

if ((chr(ord(ch)) in simvN) and not(flagg)) or

((chr(ord(ch)) in simvD) and flagg)

then

if ii<=15

then

begin

gotoxy(50,posy*2+3);

s:=s+chr(ord(ch));

textbackground(black);

textcolor(white);

write(s);

inc(ii);

end;

end;

end;

until ch=#13;

if ind=1

then

begin

MakeRamka(22,3,'‘¯¨á®ª ­ ©¤¥­­ëå:',78,24,white,cyan);

tt:=1;

for tmp:=1 to illcount do

begin

flag:=false;

val(s,t,code);

case posy of

1: if ((masill[tmp].number = t) and (t<>0)) then flag:=true;

2: if (masill[tmp].sur = s) then flag:=true;

3: if (masill[tmp].name = s) then flag:=true;

4: if (masill[tmp].otch = s) then flag:=true;

5: if (masill[tmp].dateburn = s) then flag:=true;

6: if (masill[tmp].surdoc = s) then flag:=true;

7: if (masill[tmp].namedoc = s) then flag:=true;

8: if (masill[tmp].otchdoc = s) then flag:=true;

end;

if s=''

then

flag:=false;

if flag

then

begin

textcolor(black);

textbackground(cyan);

gotoxy(40,tt+5);

write('ü: ',masill[tmp].number);

gotoxy(47,tt+5);

write('” ¬¨«¨ï: '+masill[tmp].sur);

inc(tt);

end;

end;

textcolor(black);

textbackground(cyan);

gotoxy(24,4);

write('‚¢¥¤¨â¥ ­®¬¥àï祩ª¨:');

textcolor(white);

textbackground(black);

gotoxy(24,5);

write(' ');

gotoxy(24,5);

s:='';

flag:=false;

repeat

ch:=readkey;

if chr(ord(ch)) in simvdig

then

begin

s:=s+chr(ord(ch));

flag:=true;

val(s,t,code);

if ((t>100) or (t<0) or (s='00'))

then

begin

s:='';

gotoxy(24,5);

write(' ');

flag:=false;

end;

gotoxy(24,5);

write(' ');

gotoxy(24,5);

write(s);

end;

until ((ch=#13) or (ch=#27));

if ch=#27

then

begin

ind:=2;

flag:=false

end

else

if ((ch=#13) and flag)

then

begin

ind:=2;

val(s,t,code);

numfind:=t;

end;

end;

until ind=2;

clear;

end;{menufinder}

procedure user;

var

ind:shortint;

ch:char;

begin {user}

ind:=1;

MakeRamka(22,8,'‚ë¡¥à¨â¥¯®«ì§®¢ ⥫ï:',78,13,white,cyan);

repeat

for i:=1 to 2 do{¯à®à¨á®¢ë¢ ¥¬ ¯ã­ªâë ¬¥­î¢ë¡®à }

begin

if i=ind

then

begin

textcolor(black);

textbackground(white)

end

else

begin

textcolor(white);

textbackground(black)

end;

gotoxy(30,9+i);

write(menuuser[i]);

end;

ch:=readkey;

if ((ch=#80) and (ind=1))

then

inc(ind);

if ((ch=#72) and (ind=2))

then

dec(ind);

until ch=#13;{­ ¦ â ‚‚Ž„}

if ind=1

then

password

else

admin:=false;

clear;

end; {user}

procedure menus;

var

i, ind:integer;

ch:char;

begin{menus}

flag:=false;

ind:=1;

menucl;

numb:=0;

repeat

repeat

for i:=1 to 5 do

begin

if i=ind

then

begin

textbackground(white);

textcolor(black);

end

else

begin

textcolor(white);

textbackground(black);

end;

gotoxy(2,i*2+1);

write(mmenu[i]);

end;

ch:=readkey;

if ((ch=#80) and (ind<>5))

then

inc(ind);

if ((ch=#72) and (ind<>1))

then

dec(ind);

until ch=#13;

case ind of

1: if admin

then

menunewkar;

2: if admin

then

menuarchh;

3: menufinder;

4: user;

end;

if flag then

menunewkar;

until ind=5;

end;{menus}

procedure zastavka;

var

mart, mart2: boolean;

schmart: integer;

begin{zastavka}

mart:=false;

mart2:=false;

schmart:=0;

TextBackGround(Black);

TextColor(Green);

Randomize;

Clrscr;

sim:=0;

repeat

if schmart=80 then mart:=true;

if schmart=100 then mart2:=true;

if schmart=200 then

begin

mart:=false;

mart2:=false;

schmart:=0;

end;

if sim<25 then

begin

repeat

posx:=random(27)+1

until m[1,posx]=0;

if mart

then

case posx of

9: simv:=84;

10, 23: simv:=72;

11: simv:=69;

12: simv:=95;

13: simv:=66;

14, 16: simv:=65;

15: simv:=90;

17, 18, 19: simv:=33;

else

simv:=random(24)+97

end

else

simv:=random(24)+97;

m[1,posx]:=posx;

m[2,posx]:=simv;

m[3,posx]:=m[3,posx]+1;

sim:=sim+1;

end;

delay(7000);

for i:=1 to 27 do

begin

if m[1,i]<>0

then

if not((m[3,i]=12) and mart2 and (m[1,i]>8) and (m[1,i]<20))

then

begin

gotoxy(m[1,i]*3-2,m[3,i]);

write(chr(m[2,i]));

gotoxy(m[1,i]*3-2,m[3,i]-1);

write(' ');

gotoxy(m[1,i]*3-2,m[3,i]);

m[3,i]:=m[3,i]+1;

end;

if m[3,i]>25

then

begin

m[1,i]:=0;

m[2,i]:=0;

m[3,i]:=0;

gotoxy(m[1,i]*3-2,m[3,i]);

write(chr(m[2,i]));

sim:=sim-1;

end;

end;

inc(schmart);

until keypressed;

screen(blue);

lines(white);

end;{zastavka}

procedure password;

var

s:string[16];

i,ii:integer;

ch:char;

begin{password}

MakeRamka(22,8,'‚¢¥¤¨â¥¯ à®«ì ¤«ï ¤®áâ㯪¡ §¥ ¤ ­­ëå:',78,14,white,cyan);

textcolor(white);

textbackground(black);

gotoxy(42,11);

writeln(' ');

gotoxy(42,11);

ii:=0;

s:='';

admin:=false;

repeat

ch:=readkey;

case ch of

#72:;

#75:;

#77:;

#80:;

#8:{backspase}

if (s<>'')

then

begin

delete(s,ii,1);

dec(ii);

textbackground(black);

textcolor(white);

gotoxy(42,11);

write(' ');

gotoxy(42,11);

for i:=1 to ii do

write('*');

end;

else

if (chr(ord(ch)) in simvV)

then

if ii<=15

then

begin

gotoxy(42,11);

s:=s+chr(ord(ch));

textbackground(black);

textcolor(white);

inc(ii);

for i:=1 to ii do

write('*');

end;

end;

until ((ch=#13) or (ch=#27));

if ch=#27 {­ ¦ â Esc}

then

admin:=false

else

if s=PasswordX

then

admin:=true

else

begin

s:='';

textcolor(red);

textbackground(cyan);

gotoxy(42,13);

write('‚¢¥¤¥­ ­¥¢¥à­ë© ¯ ஫ì!');

gotoxy(42,11);

textcolor(white);

textbackground(black);

write(' ');

gotoxy(42,11);

ch:=readkey;

password;

end;

clear;

end;{password}


ÏÐÈËÎÆÅÍÈÅ Â

ÏÐÈÌÅÐÛ ÏÐÎÃÐÀÌÌÛ

Ðèñ.1 Ïðèìåð çàñòàâêè, ïðè å¸ ñîçäàíèè èñïîëüçîâàëàñü òàáëèöà ASCII

Ðèñ.2 Ïðèìåð çàùèòû ïðîãðàììû ïàðîëåì ( ïî óìîë÷àíèþ: password )


Ðèñ.3 Ïðèìåð ìåíþ ïðîãðàììû

Ðèñ.4 Ñîçäàíèå íîâîãî äåëà ó÷àùåãîñÿ


Ðèñ.5 Ïðèìåð Ñîõðàíåíèÿ\Çàãðóçêè àðõèâà

Ðèñ.6 Ïðèìåð Ïîèñêà ïî ðàçëè÷íûì êðèòåðèÿì, â äàííîì ñëó÷àå ïî ôàìèëèè êóðàòîðà


Ðèñ.7 Ïðèìåð ðåçóëüòàòà ïîèñêà ó÷àùåãîñÿ ïî êàêîé ëèáî èç êðèòåðèé

Ðèñ.8 Ïðèìåð ñìåíû ïîëüçîâàòåëÿ, íàïðèìåð èç «Ïîëüçîâàòåëÿ» â «Àäìèíèñòðàòîðà» ïîñëå ÷åãî ïðîãðàììà ïîòðåáóåò ïàðîëü


ÏÐÈËÎÆÅÍÈÅ Ã

ÐÓÊÎÂÎÄÑÒÂÎ ÏÎËÜÇÎÂÀÒÅËß

Çàïóñêàåòå ôàéë Reg.exe, ïðè çàïóñêå áóäåò çàïóùåíà çàñòàâêà ïðîãðàììû - íàæìèòå ëþáóþ êëàâèøó äëÿ ïðîäîëæåíèÿ.

Äàëåå âûéäåò îêíî çàïðîñà ïàðîëÿ (èëè âûáîðà ïîëüçîâàòåëÿ): à) Ââåäèòå ïàðîëü äëÿ âûáîðà ó÷¸òíîé çàïèñè «Àäìèíèñòðàòîð» (ïî óìîë÷àíèþ:password); á) íàæìèòå êëàâèøó “Esc” äëÿ âûáîðà ó÷¸òíîé çàïèñè «Ïîëüçîâàòåëü».