Óïðàæíåíèå 2. Íàïèøåì ïðîãðàììó, ñîçäàþùóþ êàòàëîã êîìïüþòåðíûõ ïðîãðàìì ñ âîçìîæíîñòüþ ïîèñêà ïðîãðàìì ïî ôàìèëèè àâòîðà.
Äëÿ îïèñàíèÿ ñâåäåíèé î ïðîãðàììàõ â ðàçäåëå òèïîâ ââåäåì òèï Prog_Type – çàïèñü ñëåäóþùåé ñòðóêòóðû:
Prog_Type = Record
Title : string[50];
Author : string[50];
Entry : integer;
Firma : String[40]
end;
ãäå
Title – ïîëå äëÿ çàïèñè íàçâàíèÿ ïðîãðàììû (ñòðîêà äî 50 ñèìâîëîâ);
Author – ïîëå äëÿ çàïèñè ôàìèëèè àâòîðà (ñòðîêà äî 50 ñèìâîëîâ);
Entry – ïîëå äëÿ çàïèñè ãîäà ðàçðàáîòêè (öåëîå ÷èñëî);
Firma – ïîëå äëÿ çàïèñè ôèðìû-ðàçðàáîò÷èêà (ñòðîêà äî 40 ñèìâîëîâ).
 ðàçäåëå îïèñàíèÿ ïåðåìåííûõ ââåäåì ìàññèâ Prog_Katalog èç äåñÿòè çàïèñåé îïèñàííîãî âûøå òèïà. Äëÿ óêàçàíèÿ, íà ïîðÿäêîâûé íîìåð çàïèñè â ìàññèâå Prog_Katalog ââåäåì ïåðåìåííóþ Num_Array, ïðèíèìàþùóþ çíà÷åíèÿ îò 1 äî 10. Äëÿ çàäàíèÿ øàáëîíà ïîèñêà ââåäåì ïåðåìåííóþ ñòðîêîâîãî òèïà Author. Ðåçóëüòàò ïîèñêà áóäåì çàïèñûâàòü â ïåðåìåííóþ ëîãè÷åñêîãî òèïà Yes_Prog.
Êàê è â ïðåäûäóùåé ïðîãðàììå, èñïîëüçóåì äëÿ ââîäà è âûâîäà äàííûõ ñïåöèàëüíûå ïðîöåäóðû, ïîèñê ïðîãðàììû ðåàëèçóåì àíàëîãè÷íî ïîèñêó ó÷àùåãîñÿ, â êà÷åñòâå óñëîâèÿ ïîèñêà çàäàâ óñëîâèå Prog_Katalog[Num_Array].Author = Author. Äëÿ êðàòêîñòè ïðè îáðàùåíèè ê ïîëÿì çàïèñè èñïîëüçóåì ôîðìó çàïèñè ñ ïðåäëîæåíèåì with.
Òåêñò ïðîãðàììû öåëèêîì áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:
program Kat_Prog; {Êàòàëîã êîìïüþòåðíûõ ïðîãðàìì}
type Prog_Type = Record
Title : string[50];
Author : string[50];
Entry : integer;
Firma : String[40]
end;
var Prog_Katalog : Array[1 .. 10] of Prog_Type;
Num_Array : 1 .. 10;
Author : string[50];
Yes_Prog : boolean;
procedure Input_Data; {Ââîä ñâåäåíèé î ïðîãðàììå}
begin
Writeln ('Ââåäèòå äàííûå î ',Num_Array,'-é ïðîãðàììå :');
with Prog_Katalog[Num_Array] do
begin
Write ('Íàçâàíèå ïðîãðàììû? ');
Readln (Title);
Readln (Author);
Write ('Ãîä ðàçðàáîòêè? ');
Readln (Entry);
Write ('Ôèðìà ? ');
Readln (Firma);
Writeln
end;
end;
procedure Write_Data(Num:integer); {Âûâîä ñâåäåíèé î ïðîãðàììå íà ýêðàí}
begin
Writeln('Ïðîãðàììà ¹ ',Num);
with Prog_Kata1og[Num_Array] do
begin
Writeln('Íàçâàíèå : ',Title);
Writeln('Ôàìèëèÿ àâòîðà : ',Author);
Writeln('Ãîä ðàçðàáîòêè : ',Entry);
Writeln('Ôèðìà : ',Firma);
End;
end;
begin
for Num_Array:=l to 3 do {Ââîä äàííûõ î ïðîãðàììàõ}
Input_Data;
Writeln;
{Ïîèñê ïðîãðàìì ïî ôàìèëèè àâòîðà}
Writeln('Ïîèñê ïðîãðàììû ïî ôàìèëèè àâòîðà');
Writeln;
Write('Ââåäèòå ôàìèëèþ àâòîðà : ');
Readln(Author);
Yes_Prog:=False; {He íàéäåíî ïðîãðàìì ýòîãî àâòîðà}
for Num_Array:=l to 10 do
if Prog_Katalog[Num_Array].Author = Author then
begin {Åñëè ïðîãðàììà íàéäåíà, òî íàïå÷àòàòü ñâåäåíèÿ î íåé}
Write_Data(Num_Array); {Âûçîâ ïðîöåäóðû âûâîäà ñâåäåíèé î çàïèñè ñ íîìåðîì Num_Array íà ýêðàí (Num_Array - ïàðàìåòð-çíà÷åíèå)}
Yes_Prog:=True; {Ïðîãðàììà äàííîãî àâòîðà åñòü â êàòàëîãå}
end;
if not Yes_Prog then Write('HeT ïðîãðàìì àâòîðà '.Author);
end.
Èçó÷èòå òåêñò ïðîãðàììû Kat_Prog, çàòåì çàïóñòèòå èíòåãðèðîâàííóþ ñðåäó ïðîãðàììèðîâàíèÿ, ââåäèòå òåêñò ïðîãðàììû è çàïèøèòå ôàéë íà äèñê ïîä ñîîòâåòñòâóþùèì èìåíåì, à çàòåì îòêîìïèëèðóéòå åãî. Ïðîâåðüòå ðàáîòó ïðîãðàììû, âûïîëíÿÿ åå â ïîøàãîâîì ðåæèìå ñ òðàññèðîâêîé ïðîöåäóð è íàáëþäàÿ â îêíå ïðîñìîòðà çà èçìåíåíèåì çíà÷åíèé ïåðåìåííûõ Num_Array, Author, Yes_Prog, à òàêæå ýëåìåíòîâ ìàññèâà Prog_Katalog [Num_Array].
|