Добро пожаловать,

�аши партнеры
Книги-online
Ëàáîðàòîðíàÿ ðàáîòà 8
Ëàáîðàòîðíàÿ ðàáîòà 8
Ïðîãðàììèðîâàíèå ñ èñïîëüçîâàíèåì ïðîöåäóð è ôóíêöèé
Öåëü ðàáîòû: ïîçíàêîìèòüñÿ ñ ïîíÿòèÿìè "ïðîöåäóðà" è "ôóíêöèÿ" â ÿçûêå ïðîãðàììèðîâàíèÿ Pascal, ðàññìîòðåòü èõ ñõîäñòâà è ðàçëè÷èÿ, çàêðåïèòü ïðàêòè÷åñêèå íàâûêè ðàáîòû ñ ñèñòåìîé TURBO Pascal íà ïðèìåðå ðåàëèçàöèè àëãîðèòìîâ ïðè ïîìîùè ïðîöåäóð è ôóíêöèé, íàó÷èòüñÿ ïðèìåíÿòü ìåòîä ïîñëåäîâàòåëüíîé äåòàëèçàöèè â ïðàêòè÷åñêîì ïðîãðàììèðîâàíèè; ïðèìåíÿòü ïðîöåäóðû è ôóíêöèè ïðè ðåøåíèè çàäà÷.
Îáùèå ñâåäåíèÿ
×àñòî â ïðîãðàììå îáíàðóæèâàþòñÿ îäíîòèïíûå ó÷àñòêè, êîòîðûå âûïîëíÿþò îäíè è òå æå âû÷èñëåíèÿ, íî ñ ðàçëè÷íûìè äàííûìè. Òàêèå ÷àñòè ïðîãðàììû öåëåñîîáðàçíî îôîðìëÿòü â âèäå ïîäïðîãðàìì.  ÿçûêå Pascal ñóùåñòâóåò äâà âèäà ïîäïðîãðàìì: ïðîöåäóðû è ôóíêöèè.
Ïåðåä âûïîëíåíèåì äàííîé ðàáîòû íåîáõîäèìî èçó÷èòü ïðàâèëà îïèñàíèÿ ïðîöåäóð è ôóíêöèé, ìåõàíèçì ïåðåäà÷è ïàðàìåòðîâ, îçíàêîìèòüñÿ ñ ïîíÿòèåì ëîêàëüíîé è ãëîáàëüíîé ïåðåìåííîé.
Êîíòðîëüíûå âîïðîñû
Äëÿ ÷åãî íóæíû â ïðîãðàììå ïðîöåäóðû è ôóíêöèè?
 ÷åì îòëè÷èå ìåæäó ïðîöåäóðîé è ôóíêöèåé?
×åì îòëè÷àþòñÿ ôîðìàëüíûå è ôàêòè÷åñêèå ïàðàìåòðû?
×åì îòëè÷àþòñÿ ïàðàìåòðû-çíà÷åíèÿ è ïàðàìåòðû-ïåðåìåííûå?
Êàê îáúÿâëÿþòñÿ ãëîáàëüíûå è ëîêàëüíûå ïåðåìåííûå? Êàêîâî ïðàâèëî âèäèìîñòè ýòèõ ïåðåìåííûõ?
Ïî÷åìó ïðè îáðàùåíèè ê ïðîöåäóðå, àðãóìåíò, ïåðåäàâàåìûé ïàðàìåòðó-ïåðåìåííîé, ìîæåò áûòü òîëüêî ïåðåìåííîé, à íå êîíñòàíòîé èëè âûðàæåíèåì?
Ïðèìåð
Ïðèìåð1. Íàéòè ñóììó ïîëîæèòåëüíûõ ýëåìåíòîâ â ìàññèâå.
Ýòàïû ðåøåíèÿ çàäà÷è:
Àëãîðèòì ðåøåíèÿ äîâîëüíî ïðîñò - â öèêëå áóäåì "ïðîáåãàòü" ìàññèâ, ñðàâíèâàÿ åãî ÿ÷åéêè ñ 0 è ñóììèðîâàòü, åñëè îíè >0.
Ñîñòàâèì áëîê-ñõåìó ïðîãðàììû
Óòî÷íèì èç êàêèõ áëîêîâ ñîñòîèò áëîê"Ñóììèðîâàíèå ïîëîæèòåëüíûõ ÿ÷ååê"
Ñîäåðæàíèå ýòèõ áëîêîâ ïðîñòîå, ïîýòîìó íå ñòîèò èõ óòî÷íÿòü.
Íàïèøåì ïðîãðàììó íà ÿçûêå Ïàñêàëü
program example;
type
Tarray = array[1..100] of integer;
Var v: Tarray;
N,i,s:integer;
Procedure vvod_data(var m:Tarray;n:integer);
Var i:integer;
Begin
Writeln ('Ââåäèòå ',n,' ÷èñåë ÷åðåç ïðîáåë');
For i:= 1 to n do read (m[i]);
End;
Function summ(m:TArray):integer;
Var s:integer;
Begin
S:=0;
For i:= 1 to n do if m[i]>0 then s:= s+m[i];
Summ:=s;
End;
begin
write ('Ââåäèòå ðàçìåðíîñòü ìàññèâà N= '); readln (n);
vvod_Data(v,n);
s:= summ(v);
writeln ('Ñóììà= ',s);
end.
Çàäàíèÿ
Äàíû äåéñòâèòåëüíûå ÷èñëà õ1, ó1, õ2, ó2, …,õ10, ó10. Íàéòè ïåðèìåòð äåñÿòèóãîëüíèêà, âåðøèíû êîòîðîãî èìåþò ñîîòâåòñòâåííî êîîðäèíàòû (õ1, ó1), (õ2, ó2), …, (õ10, ó10). (Îïðåäåëèòü ïðîöåäóðó âû÷èñëåíèÿ ðàññòîÿíèÿ ìåæäó äâóìÿ òî÷êàìè, çàäàííûìè ñâîèìè êîîðäèíàòàìè.)
Äàíû äåéñòâèòåëüíûå ÷èñëà a, b, c, d, e - ñòîðîíû ïÿòèóãîëüíèêà. Íàéòè ïëîùàäü ïÿòèóãîëüíèêà. (Îïðåäåëèòü ïðîöåäóðó âû÷èñëåíèÿ ïëîùàäè òðåóãîëüíèêà ïî åãî ñòîðîíàì.)
Äàíû òðè ñèìâîëüíûå ìàòðèöû.
a) òó ìàòðèöó, ãäå åñòü õîòÿ áû îäíà ãëàñíàÿ - òðàíñïîíèðîâàòü;
b) â òîé ìàòðèöå, íà ãëàâíîé äèàãîíàëè êîòîðîé âñå öèôðû, íàéòè íàèìåíüøóþ è óäàëèòü ñîîòâåòñòâóþùóþ ñòðîêó.
Íàïèñàòü ïðîãðàììó âû÷èñëåíèÿ P ïî ôîðìóëå: ãäå n - çàäàííîå íàòóðàëüíîå ÷èñëî.
Îïèñàòü ôóíêöèþ Stepen (x,n) îò âåùåñòâåííîãî x è öåëîãî n, âû÷èñëÿþùóþ (ïîñðåäñòâîì óìíîæåíèÿ) âåëè÷èíó xn, è èñïîëüçîâàòü ee äëÿ âû÷èñëåíèÿ b=2.7k+(a+1)-5.
Äàíû îòðåçêè a,b,c è d. Äëÿ êàæäîé òðîéêè ýòèõ îòðåçêîâ, èç êîòîðûõ ìîæíî ïîñòðîèòü òðåóãîëüíèê, íàïå÷àòàòü ïëîùàäü äàííîãî òðåóãîëüíèêà. Îïðåäåëèòü ïðîöåäóðó Plo(x,y,z), ïå÷àòàþùóþ ïëîùàäü òðåóãîëüíèêà ñî ñòîðîíàìè x,y è z, åñëè òàêîé òðåóãîëüíèê ñóùåñòâóåò.
Ïóñòü ïðîöåäóðà Socr(a,b,p,q) îò öåëûõ ïàðàìåòðîâ (b¹0)ïðèâîäèò äðîáü ê íåñîêðàòèìîìó âèäó Îïèñàòü äàííóþ ïðîöåäóðó è èñïîëüçîâàòü åå äëÿ ïðèâåäåíèÿ äðîáè ê íåñîêðàòèìîìó âèäó
Äàíû äëèíû a,b è c ñòîðîí íåêîòîðîãî òðåóãîëüíèêà. Íàéòè ìåäèàíû òðåóãîëüíèêà, ñòîðîíàìè êîòîðîãî ÿâëÿþòñÿ ìåäèàíû èñõîäíîãî òðåóãîëüíèêà. Äëèíà ìåäèàíû, ïðîâåäåííîé ê ñòîðîíå a, ðàâíà
Äàíû êîîðäèíàòû âåðøèí äâóõ òðåóãîëüíèêîâ. Îïðåäåëèòü, êàêîé èç íèõ èìååò áîëüøóþ ïëîùàäü.
Äàíû êîîðäèíàòû âåðøèí òðåóãîëüíèêà è êîîðäèíàòû íåêîòîðîé òî÷êè âíóòðè íåãî. Íàéòè ðàññòîÿíèå îò äàííîé òî÷êè äî áëèæàéøåé ñòîðîíû òðåóãîëüíèêà. (Ïðè îïðåäåëåíèè ðàññòîÿíèé ó÷åñòü, ÷òî ïëîùàäü òðåóãîëüíèêà âû÷èñëÿåòñÿ è ÷åðåç òðè åãî ñòîðîíû, è ÷åðåç îñíîâàíèå è âûñîòó.).
Çàäà÷è íà ñìåêàëêó
Òðè ïðÿìûå íà ïëîñêîñòè çàäàíû óðàâíåíèÿìè akx+bky=ck, k=1,2,3. Åñëè ýòè ïðÿìûå ïîïàðíî ïåðåñåêàþòñÿ è îáðàçóþò òðåóãîëüíèê, òîãäà íàéòè åãî ïëîùàäü.
Äâà íàòóðàëüíûõ ÷èñëà íàçûâàþòñÿ "äðóæåñòâåííûìè", åñëè êàæäîå èç íèõ ðàâíî ñóììå âñåõ äåëèòåëåé äðóãîãî, çà èñêëþ÷åíèåì åãî ñàìîãî (òàêîâû, íàïðèìåð, ÷èñëà 220 è 284). Íàïå÷àòàòü âñå ïàðû "äðóæåñòâåííûõ" ÷èñåë, íå ïðåâîñõîäÿùèõ çàäàííîãî íàòóðàëüíîãî ÷èñëà.
Äàíî ÷åòíîå ÷èñëî n > 2. Ïðîâåðèòü äëÿ ýòîãî ÷èñëà ãèïîòåçó Ãîëüäáàõà. Ýòà ãèïîòåçà (ïî ñåãîäíÿøíèé äåíü íå îïðîâåðãíóòàÿ è ïîëíîñòüþ íå äîêàçàííàÿ) çàêëþ÷àåòñÿ â òîì, ÷òî êàæäîå ÷åòíîå n, áîëüøåå äâóõ, ïðåäñòàâëÿåòñÿ â âèäå ñóììû äâóõ ïðîñòûõ ÷èñåë. Âîñïîëüçîâàòüñÿ ôóíêöèåé ðàñïîçíàâàíèÿ ïðîñòûõ ÷èñåë.
Äàíî íàòóðàëüíîå ÷èñëî n. Âûÿñíèòü, ÿâëÿåòñÿ ëè îíî ïîëíûì êâàäðàòîì. Îïðåäåëèòü ôóíêöèþ, ïîçâîëÿþùóþ ðàñïîçíàâàòü ïîëíûå êâàäðàòû.
Äàí ìàññèâ A[1..50], ýëåìåíòû êîòîðîãî îòëè÷íû îò íóëÿ. Ðàñïîëîæèòü èõ â òàêîì ïîðÿäêå, ÷òîáû ïåðâûìè áûëè âñå ïîëîæèòåëüíûå ýëåìåíòû, à çàòåì - âñå îòðèöàòåëüíûå, ïðè÷åì ïîðÿäîê ñëåäîâàíèÿ êàê ïîëîæèòåëüíûõ, òàê è îòðèöàòåëüíûõ ýëåìåíòîâ äîëæåí ñîõðàíèòüñÿ (ïðè ðåøåíèè çàäà÷è íîâûé ìàññèâ íå çàâîäèòü!).
Ïðåîáðàçîâàòü ìàññèâ S, "ïîâîðà÷èâàÿ" åãî âîêðóã öåíòðà íà 90, 180, 270 ãðàäóñîâ ïðîòèâ ÷àñîâîé ñòðåëêè.
Ðàññìàòðèâàÿ ìàññèâû X, Y è Z êàê ïðåäñòàâëåíèå íåêîòîðûõ ìíîæåñòâ èç îáúåêòîâ òèïà èíäåêñ (X[k]=TRUE, åñëè ýëåìåíò k ïðèíàäëåæèò ìíîæåñòâó X, è X[k]=FALSE èíà÷å, è ò.ï.), ðåàëèçîâàòü ñëåäóþùóþ îïåðàöèþ íàä ýòèìè ìàññèâàìè-ìíîæåñòâàìè: ïåðåìåííîé t ïðèñâîèòü çíà÷åíèå TRUE, åñëè ìíîæåñòâî X ÿâëÿåòñÿ ïîäìíîæåñòâîì ìíîæåñòâà Y, è çíà÷åíèå FALSE èíà÷å.
Ýëåìåíò äâóõìåðíîãî ìàññèâà íàçûâàåòñÿ ëîêàëüíûì ìèíèìóìîì, åñëè îí ñòðîãî ìåíüøå âñåõ èìåþùèõñÿ ó íåãî ñîñåäåé. Ïîäñ÷èòàòü êîëè÷åñòâî ëîêàëüíûõ ìèíèìóìîâ çàäàííîé ìàòðèöû ðàçìåðîì NxN íàéòè ìàêñèìóì ñðåäè âñåõ ëîêàëüíûõ ìèíèìóìîâ.
Ñîñòàâèòü ôóíêöèþ äëÿ íàõîæäåíèÿ òî÷íîãî çíà÷åíèÿ ñóììû íàòóðàëüíûõ ÷èñåë, â äåñÿòè÷íîé çàïèñè êîòîðûõ áîëåå 20 çíàêîâ. Óêàçàíèå. Èñõîäíûå äàííûå è îòâåò ïðåäñòàâèòü â âèäå ìàññèâîâ öèôð.
Äàíû äâå ñòðîêè ñèìâîëîâ. Ñèìâîë áóäåì íàçûâàòü îáùèì, åñëè îí âñòðå÷àåòñÿ è â ïåðâîé, è âî âòîðîé ñòðîêå. Ïóñòü K1 - ÷èñëî âõîæäåíèé â ïåðâóþ ñòðîêó îáùåãî ñèìâîëà, à K2 - âî âòîðóþ. Ìèíèìàëüíîå èç ÷èñåë K1, K2 áóäåì íàçûâàòü ÷èñëîì îáùíîñòè. Âûâåñòè âñå îáùèå ñèìâîëû ñ óêàçàíèåì äëÿ íèõ ÷èñëà îáùíîñòè.
Çàäà÷è ïîâûøåííîé ñëîæíîñòè
Ðàññìîòðèì ïðîèçâîëüíîå íàòóðàëüíîå ÷èñëî è íàéäåì ñóììó åãî öèôð, çàòåì ñóììó öèôð ïîëó÷åííîãî ÷èñëà è òàê äàëåå, ïîêà íå ïîëó÷èì îäíîçíà÷íîå ÷èñëî. Íàçîâåì ýòî ÷èñëî öèôðîâûì êîðíåì. Òðåáóåòñÿ íàïèñàòü ïðîãðàììó, êîòîðàÿ äëÿ çàäàííîãî N (N<10100) íàõîäèò åãî öèôðîâîé êîðåíü.
Çàäàíî N íàòóðàëüíûõ ÷èñåë a1,a2,…,aN (1£ N £ 20), êàæäîå èç êîòîðûõ íàõîäèòñÿ â èíòåðâàëå îò 1 äî 10000. Íåîáõîäèìî îïðåäåëèòü êîëè÷åñòâî íàòóðàëüíûõ äåëèòåëåé ïðîèçâåäåíèÿ a1*a2*…*aN.
Íàïèñàòü ôóíêöèþ ïîèñêà êîðíåé ïîëèíîìà ñòåïåíè n. Èñõîäíûìè ïàðàìåòðàìè áóäóò ÷èñëà a1, a2,…,an. Êîìïëåêñíûå êîðíè ó÷èòûâàòü.
Òðåáóåòñÿ íàïèñàòü ïðîãðàììó, êîòîðàÿ âûâîäèò â ïîðÿäêå âîçðàñòàíèÿ âñå ïðàâèëüíûå íåñîêðàòèìûå äðîáè, çíàìåíàòåëè êîòîðûõ íå ïðåâîñõîäÿò N (2<=N<=500).
Íà ýêðàíå êîìïüþòåðà, ðàáîòàþùåãî â îïåðàöèîííîé ñèñòåìå Windows, áûëî îòêðûòî N (N <= 20) îêîí, ïîëîæåíèå êàæäîãî èç êîòîðûõ îäíîçíà÷íî îïðåäåëÿåòñÿ ÷åòâåðêîé íàòóðàëüíûõ ÷èñåë - X1 Y1 X2 Y2 - êîîðäèíàòàìè ëåâîãî âåðõíåãî è ïðàâîãî íèæíåãî óãëà îêíà. Î÷åâèäíî, ÷òî îêíà, îòêðûòûå ïîçæå, ìîãóò ÷àñòè÷íî èëè ïîëíîñòüþ ïåðåêðûâàòü îòêðûòûå ðàíåå. Îêíî ñ÷èòàåòñÿ âèäèìûì, åñëè âèäåí õîòÿ áû îäèí îáðàçóþùèé åãî ïèêñåë.
Íàçàä
Íà ãëàâíóþ
Внимание! Е�ли у ва� не получило�ь найти нужную информацию, и�пользуйте
рубрикатор или во�пользуйте�ь
пои�ком .
книги по программированию и�ходники компоненты шаблоны �айтов C++ PHP Delphi �качать