Ìèíèñòåðñòâî îáðàçîâàíèÿ è íàóêè Ðåñïóáëèêè Êàçàõñòàí
Êàðàãàíäèíñêèé ïîëèòåõíè÷åñêèé êîëëåäæ
ÐÀÇÐÀÁÎÒÊÀ ÁÀÇÛ ÄÀÍÍÛÕ «Ó×ÀÙÈÕÑß»
Ïîÿñíèòåëüíàÿ çàïèñêà
Ðóêîâîäèòåëü
À.Ã.Õìûðîâ
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” äëÿ âûáîðà ó÷¸òíîé çàïèñè «Ïîëüçîâàòåëü».
|