Ãëàâíàÿ Ó÷åáíèêè - Ðàçíûå Ëåêöèè (ðàçíûå) - ÷àñòü 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. Äàííûé ïðîãðàììíûé ïðîäóêò íàïèñàí ñ ïîìîùüþ ïîäïðîãðàìì, òî åñòü ñ ïîìîùüþ ïðèìåíåíèÿ ïðîöåäóð è ôóíêöèé. Ïðîöåäóðû è ôóíêöèè ïðåäñòàâëÿþò ñîáîé îòíîñèòåëüíî ñàìîñòîÿòåëüíûå ôðàãìåíòû ïðîãðàììû, îôîðìëåííûå îñîáûì îáðàçîì è ñíàáæåííûå èìåíåì. Ïðîãðàììó, íàïèñàííóþ ïðè ïîìîùè ïðîöåäóð è ôóíêöèé ëåãêî òåñòèðîâàòü è îòëàæèâàòü, à òàêæå çàùèòèòü ïðîãðàììíûé ïðîäóêò îò îøèáîê. Ñïèñîê è îïèñàíèå èñïîëüçîâàííûõ ïîäïðîãðàìì: 1) ProcedureZastavka- ÿâëÿåòñÿ çàñòàâêîé ïðîãðàììû, êîòîðàÿ ïîÿâëÿåòñÿ ïðè çàïóñêå ïðîãðàììû è, èíôîðìèðóåò î òîì, êòî ñîçäàë äàííûé ïðîãðàììíûé ïðîäóêò, êòî ðóêîâîäèòåëü ïðîåêòà, ãîä ñîçäàíèÿ ïðîãðàììû. 2) ProcedureMenu- ÿâëÿåòñÿ íà÷àëîì ïðîãðàììû è ïðåäïèñûâàåò îïðåäåë¸ííûå äåéñòâèÿ äëÿ ïîëüçîâàòåëÿ. 3) ProcedurePassword – ÿâëÿåòñÿ íå ïîñðåäñòâåííî çàùèùàþùåé ïîäïðîãðàììîé, äëÿ çàùèòû îò óäàëåíèÿ èëè âíåñåíèÿ íå ïðàâèëüíîé èíôîðìàöèè îá ó÷-ñÿ íàõîäÿùèõñÿ â áàçå äàííûõ, è äëÿ èñïîëüçîâàíèÿ äåêàíîì èëè çàì-äèðåêòîðîì è ïðî÷åé àäìèíèñòðàöèè ó÷åáíîãî çàâåäåíèÿ (ÒÐÅÁÓÅÒ ÒÎËÜÊÎ Ó «Àäìèíèñòðàòîðà»). 4) ProcedureNovoedelo – ïðåäíàçíà÷åííàÿ äëÿ çàâåäåíèÿ äåë ó÷àùèõñÿ (ÏÐÈÌÅ×ÀÍÈÅ: äàííàÿ ïðîöåäóðà äîñòóïíà ëèøü «Àäìèíèñòðàòîðó»). 5) ProcedureArhieve – äàííàÿ ïðîöåäóðà ïðåäíàçíà÷åíà äëÿ ñîõðàíåíèÿ (ñîçäàíèÿ), èëè çàãðóçêè ñóùåñòâóþùåé áàçû äàííûõ(ÏÐÈÌÅ×ÀÍÈÅ: äàííàÿ ïðîöåäóðà äîñòóïíà ëèøü «Àäìèíèñòðàòîðó»). 6) Procedureend – âûõîä èç ïðîãðàììû. 2.3 Èäåíòèôèêàòîðû Èäåíòèôèêàòîðû â Òóðáî Ïàñêàëå - ýòî èìåíà êîíñòàíò, ïåðåìåííûõ, ìåòîê, òèïîâ, îáúåêòîâ, ïðîöåäóð è ôóíêöèé, ìîäóëåé, ïðîãðàìì è ïîëåé â çàïèñÿõ, ñîçäàííûõ ñàìèì ïðîãðàììèñòîì. Èäåíòèôèêàòîð âñåãäà íà÷èíàåòñÿ ñ áóêâû, çà êîòîðîé ìîãóò ñëåäîâàòü áóêâû è öèôðû. Áóêâîé ñ÷èòàåòñÿ òàêæå ñèìâîë ïîä÷åðêèâàíèÿ, ïîýòîìó èäåíòèôèêàòîð ìîæåò íà÷èíàòüñÿ ýòèì ñèìâîëîì è äàæå ñîñòîÿòü òîëüêî èç îäíîãî èëè íåñêîëüêèõ ñèìâîëîâ ïîä÷åðêèâàíèÿ. Ïðîáåëû è ñïåöèàëüíûå ñèìâîëû àëôàâèòà íå ìîãóò âõîäèòü â èäåíòèôèêàòîð. Èäåíòèôèêàòîðû èñïîëüçóþòñÿ áåç ó÷åòà ðåãèñòðà, ýòî îçíà÷àåò, ÷òî ñòðî÷íûå áóêâû (a..z) ðàññìàòðèâàþòñÿ òîæäåñòâåííûìè áóêâàìè (A..Z). Èäåíòèôèêàòîðû ìîãóò èìåòü ëþáóþ äëèíó, íî òîëüêî ïåðâûå 63 ñèìâîëà ÿâëÿþòñÿ çíà÷àùèìè. Òàáëèöà èäåíòèôèêàòîðîâ 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-Ñòàäèè è ýòàïû ðàçðàáîòêè. ÏÐÈËÎÆÅÍÈÅ Á ËÈÑÒÈÍà ÏÐÎÃÐÀÌÌÛ (Ëèñòèíã îñíîâíîé ïðîãðàììû) 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” äëÿ âûáîðà ó÷¸òíîé çàïèñè «Ïîëüçîâàòåëü».
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||