SlideShare a Scribd company logo
1 of 188
Download to read offline
CZU 004(075.3)
à 80
ISBN 978-9975-67-821-6
© Anatol Gremalschi, Iurie Mocanu, Ludmila Gremalschi.
2000, 2007, 2012
© Traducere:Arcadie Malearovici, Veronica Musteaþã. 2000,
2007, 2012
© Întreprinderea Editorial Poligrafica ªtiinþa. 2007, 2012
Traducere din limba românã: Arcadie Malearovici (capitolele 2–7), Veronica Musteaþã (capitolul 1)
Responsabil de ediþie: Valentina Rîbalchina
Redactor: Tatiana Bolgar
Redactor tehnic: Nina Duduciuc
Machetare computerizatã: Anatol Andriþchi
Copertã: Vitaliu Pogolºa
Întreprinderea Editorial-Poligraficã ªtiinþa,
str.Academiei, nr. 3; MD-2028, Chiºinãu, Republica Moldova;
tel.: (+373) 022-73-96-16; fax: (+373) 022-73-96-27;
e-mail: prini@stiinta.asm.md
Descrierea CIP a Camerei Naþionale a Cãrþii
Ãðåìàëüñêè, Àíàòîë
Èíôîðìàòèêà: Ó÷åá. äëÿ 10 êëàññà / Àíàòîë Ãðåìàëüñêè, Þðèå Ìîêàíó, Ëóäìèëà Ãðåìàëüñêè;
trad. din lb. rom.: Arcadie Malearovici, Veronica Musteaþã; Min. Educaþiei al Rep. Moldova. – Ch.: Î.E.P.
ªtiinþa, 2012 (Tipografia „SEREBIA” SRL). – 188 p.
ISBN 978-9975-67-821-6
004(075.3)
Elaborat conform curriculumului disciplinar în vigoare ºi aprobat prin Ordinul ministrului educaþiei (nr. 211 din
11 aprilie 2012). Editat din sursele financiare ale Fondului Special pentru Manuale.
Comisia de experþi: Teodora Gherman, dr. în pedagogie, conferenþiar, ºef Catedrã Tehnologii Informaþionale
Aplicate, Academia de Administrare Publicã de pe lîngã Preºedintele Republicii Moldova; Gheorghe Chistruga,
prof. ºc., grad did. superior, Liceul Teoretic „Mihai Eminescu”, Drochia; Mihai Chigai, prof. ºc., grad did. I,
Liceul Teoretic Caplani, rn. ªtefan-Vodã
Recenzenþi: GheorgheCiocanu,dr.habilitatîninformaticã,profesoruniversitar,UniversitateadeStatdinMoldova;
Valeriu Cabac, dr. în fizicã ºi matematicã, conferenþiar universitar, Universitatea de Stat „Alecu Russo”, Bãlþi;
Mihai ªleahtiþchi, dr. în psihologie ºi pedagogie, conferenþiar universitar, Universitatea Liberã Internaþionalã din
Moldova; Tatiana Cartaleanu, dr. în filologie, conferenþiar universitar, Universitatea Pedagogicã de Stat „Ion
Creangã”, Chiºinãu; Alexei Colîbneac, Maestru în Arte, profesor universitar, Academia de Muzicã, Teatru ºi
Arte Plastice, Chiºinãu
DIFUZARE:
ÎM Societatea de Distribuþie a Cãrþii PRO-NOI
str. Alba-Iulia, nr. 23/1A; MD-2051, Chiºinãu;
tel.: (+373) 022-51-68-17, 51-57-49; fax: (+373) 022-50-15-81;
e-mail: info@pronoi.md; www.pronoi.md
Toate drepturile asupra acestei ediþii aparþin Întreprinderii Editorial-Poligrafice ªtiinþa.
Ââåäåíèå 5
1. ÑÎÑÒÀÂÍÛÅÒÈÏÛÄÀÍÍÛÕ
1.1. Òèï äàííûõ ìàññèâ (array) • • 7
1.2. Òèï äàííûõ ñòðîêà ñèìâîëîâ • • 14
1.3. Òèï äàííûõ çàïèñü (record) • • 18
1.4. Îïåðàòîð with (c) • • 23
1.5. Òèï äàííûõ ìíîæåñòâî (set) • • 26
1.6.Ôàéëû • • 31
1.7. Ôàéëû ñ ïîñëåäîâàòåëüíûì äîñòóïîì • • 34
1.8. Òåêñòîâûå ôàéëû • • 38
Òåñò äëÿ ñàìîïðîâåðêè ¹ 1 • • 44
2. ÈÍÔÎÐÌÀÖÈß
2.1. Êîëè÷åñòâî èíôîðìàöèè • • 46
2.2. Êîäèðîâàíèå è äåêîäèðîâàíèå èíôîðìàöèè • • 49
2.3. ×àñòî èñïîëüçóåìûå êîäû • • 51
2.4. Èíôîðìàöèÿ íåïðåðûâíûõ ñîîáùåíèé • • 56
2.5. Êâàíòîâàíèå èçîáðàæåíèé • • 60
2.6. Ïðåäñòàâëåíèå è ïåðåäà÷à èíôîðìàöèè • • 62
Òåñò äëÿ ñàìîïðîâåðêè ¹ 2 • • 66
3. ÀÐÈÔÌÅÒÈ×ÅÑÊÈÅ ÎÑÍÎÂÛ ÂÛ×ÈÑËÈÒÅËÜÍÎÉ
ÒÅÕÍÈÊÈ
3.1. Ñèñòåìû ñ÷èñëåíèÿ • • 68
3.2. Ïåðåâîä ÷èñåë èç îäíîé ñèñòåìû ñ÷èñëåíèÿ â äðóãóþ • • 71
3.3. Ïåðåâîä ÷èñåë èç äâîè÷íîé ñèñòåìû ñ÷èñëåíèÿ â âîñüìåðè÷íóþ,
øåñòíàäöàòåðè÷íóþ è îáðàòíî • 73
3.4. Àðèôìåòè÷åñêèå îïåðàöèè â äâîè÷íîé ñèñòåìå ñ÷èñëåíèÿ • 76
3.5. Ïðåäñòàâëåíèå íàòóðàëüíûõ ÷èñåë â êîìïüþòåðå • 77
3.6. Ïðåäñòàâëåíèå öåëûõ ÷èñåë • 79
3.7. Ïðåäñòàâëåíèå âåùåñòâåííûõ ÷èñåë • 81
Òåñò äëÿ ñàìîïðîâåðêè ¹ 3 • 86
4. ÁÓËÅÂÀ ÀËÃÅÁÐÀ
4.1. Ëîãè÷åñêèå ïåðåìåííûå è âûðàæåíèÿ • 88
4.2. Ëîãè÷åñêèå ôóíêöèè • 91
ÎÃËÀÂËÅÍÈÅ
Ãóìàíèòàðíûé
Ðåàëüíûé
Ñòðàíèöà
Ñîäåðæàíèå
"
4.3. ×àñòî èñïîëüçóåìûå ëîãè÷åñêèå ôóíêöèè • 94
Òåñò äëÿ ñàìîïðîâåðêè ¹ 4 • 96
5. ËÎÃÈ×ÅÑÊÈÅÑÕÅÌÛ
5.1. Ëîãè÷åñêèå ýëåìåíòû • 98
5.2. Êëàññèôèêàöèÿ ëîãè÷åñêèõ ñõåì • 103
5.3. Ñóììàòîð • 103
5.4. ×àñòî èñïîëüçóåìûå êîìáèíàöèîííûå ñõåìû • 107
5.5. RS-òðèããåð • 110
5.6. ×àñòî èñïîëüçóåìûå ïîñëåäîâàòåëüíîñòíûå ñõåìû • 113
5.7. Ãåíåðàòîðû èìïóëüñîâ • 116
Òåñò äëÿ ñàìîïðîâåðêè ¹ 5 • 118
6. ÓÑÒÐÎÉÑÒÂÎ È ÐÀÁÎÒÀ ÊÎÌÏÜÞÒÅÐÀ
6.1. Ôóíêöèîíàëüíàÿ ñõåìà êîìïüþòåðà • • 121
6.2. Ôîðìàòû êîìàíä • 123
6.3. Òèïû êîìàíä • 126
6.4. Ìàøèííûé ÿçûê è ÿçûê àññåìáëåðà • 127
6.5. Àïïàðàòíûå è ïðîãðàììíûå ðåñóðñû êîìïüþòåðà • • 129
6.6. Âíåøíÿÿ ïàìÿòü íà ìàãíèòíûõ ëåíòàõ è äèñêàõ • • 131
6.7. Âíåøíÿÿ ïàìÿòü íà îïòè÷åñêèõ äèñêàõ • • 135
6.8. Âèäåîìîíèòîð è êëàâèàòóðà • • 139
6.9. Ïðèíòåðû • • 141
6.10. Êëàññèôèêàöèÿ êîìïüþòåðîâ • • 144
6.11. Ìèêðîïðîöåññîð • 145
Òåñò äëÿ ñàìîïðîâåðêè ¹ 6 • • 147
7. ÊÎÌÏÜÞÒÅÐÍÛÅ ÑÅÒÈ
7.1. Ââåäåíèå â êîìïüþòåðíûå ñåòè • • 150
7.2. Òåõíîëîãèè âçàèìîäåéñòâèÿ â êîìïüþòåðíîé ñåòè • • 153
7.3. Òîïîëîãèÿ è àðõèòåêòóðà êîìïüþòåðíûõ ñåòåé • 155
7.4. Ãëîáàëüíàÿ ñåòü ÈÍÒÅÐÍÅÒ • • 158
7.5. Ñåðâèñû ÈÍÒÅÐÍÅÒà • • 163
Òåñò äëÿ ñàìîïðîâåðêè ¹ 7 • • 167
Îòâåòû ê òåñòàì äëÿ ñàìîïðîâåðêè 170
Áèáëèîãðàôèÿ 187
Ñîäåðæàíèå
Ãóìàíèòàðíûé
Ðåàëüíûé
Ñòðàíèöà
#
ÂÂÅÄÅÍÈÅ
Âïå÷àòëÿþùèå äîñòèæåíèÿ â îáëàñòè èíôîðìàòèêè, ñîçäàíèå ñóïåðêîìïüþòå-
ðîâ è ïåðñîíàëüíûõ êîìïüþòåðîâ, ïîÿâëåíèå êèáåðïðîñòðàíñòâà, âèðòóàëüíîé
ðåàëüíîñòè è ÈÍÒÅÐÍÅÒà ïðåäïîëàãàþò óãëóáëåííûå çíàíèÿ ïðèíöèïîâ ðàáîòû
è óñòðîéñòâà ñîâðåìåííûõ êîìïüþòåðîâ. Èìåííî ýòè çíàíèÿ áóäóò íàäåæíûì
ïóòåâîäèòåëåì â ïîñòîÿííî ìåíÿþùåìñÿ ìèðå.
Äàííûé ó÷åáíèê ïðåäíàçíà÷åí äëÿ óñâîåíèÿ ó÷àùèìèñÿ çíàíèé, íåîáõîäè-
ìûõ äëÿ ïîíèìàíèÿ ïðîöåññîâ àâòîìàòèçèðîâàííîé îáðàáîòêè äàííûõ ñ ïîìî-
ùüþ öèôðîâûõ êîìïüþòåðîâ.
Ãëàâà 1 ñîäåðæèò òåîðåòè÷åñêèå è ïðèêëàäíûå çíàíèÿ ïî îïðåäåëåíèþ è
îáðàáîòêå ñîñòàâíûõ òèïîâ äàííûõ: ìàññèâîâ, ñòðîê, çàïèñåé, ìíîæåñòâ è ôàé-
ëîâ. Â íåé òàêæå ïðåäñòàâëåíû ìåòîäû ñîçäàíèÿ è îáðàáîòêè ôàéëîâ: ñâÿçûâà-
íèå ôàéëîâûõ ïåðåìåííûõ ÏÀÑÊÀËß ñ âíåøíèìè ôàéëàìè, çàïèñü è ñ÷èòûâà-
íèå êîìïîíåíò ôàéëîâ.
Ãëàâà 2 ñîäåðæèò èçëîæåíèå ôóíäàìåíòàëüíûõ çíàíèé èç òåîðèè èíôîðìà-
öèè: êîëè÷åñòâî èíôîðìàöèè, ñîäåðæàùåéñÿ â íåïðåðûâíûõ è äèñêðåòíûõ ñîîá-
ùåíèÿõ, êîäèðîâàíèå è äåêîäèðîâàíèå èíôîðìàöèè, ïðåäñòàâëåíèå èíôîðìàöèè
â êîìïüþòåðå.
 ãëàâå 3 èçëîæåíû ôóíäàìåíòàëüíûå ñâåäåíèÿ èç îáëàñòè êîìïüþòåðíîé àðèô-
ìåòèêè: ñèñòåìû ñ÷èñëåíèÿ è àðèôìåòè÷åñêèå îïåðàöèè â äâîè÷íîé ñèñòåìå ñ÷èñ-
ëåíèÿ, ïðåäñòàâëåíèå íàòóðàëüíûõ, öåëûõ è âåùåñòâåííûõ ÷èñåë â êîìïüþòåðå.
Ãëàâà 4 ñîäåðæèò îñíîâû áóëåâîé àëãåáðû. Â íåé èçëàãàþòñÿ ïîíÿòèÿ áóëåâîé
ïåðåìåííîé, êîíñòàíòû è ôóíêöèè, à òàêæå èçó÷àþòñÿ ÷àñòî èñïîëüçóåìûå ëîãè÷å-
ñêèå ôóíêöèè.
 ãëàâå 5 ðàññìàòðèâàþòñÿ êîìáèíàöèîííûå è ïîñëåäîâàòåëüíîñòíûå ñõåìû,
øèðîêî ïðèìåíÿåìûå â ëþáîì öèôðîâîì êîìïüþòåðå: ñóììàòîðû, êîìïàðàòîðû,
øèôðàòîðû è äåøèôðàòîðû, ðåãèñòðû, ñ÷åò÷èêè, ãåíåðàòîðû èìïóëüñîâ.
Óñòðîéñòâî è ðàáîòà êîìïüþòåðà îïèñàíû â ãëàâå 6. Ìàòåðèàë èçëîæåí òàêèì
îáðàçîì, ÷òîáû óñòðîéñòâî ñîâðåìåííîãî öèôðîâîãî êîìïüþòåðà áûëî ïîíÿòî è
óñâîåíî ìåòîäè÷åñêè: îò ëîãè÷åñêèõ ýëåìåíòîâ, óñòðîéñòâ è áëîêîâ äî âû÷èñëè-
òåëüíîé ñèñòåìû â öåëîì. Îñîáîå âíèìàíèå óäåëÿåòñÿ âçàèìíîé çàâèñèìîñòè ìà-
òåìàòè÷åñêèõ êîíöåïöèé è ìåòîäîâ ôèçè÷åñêîé ðåàëèçàöèè öèôðîâûõ óñòðîéñòâ
ñîâðåìåííûõ âû÷èñëèòåëüíûõ ñèñòåì, âçàèìîñâÿçè òåõíè÷åñêîãî è ïðîãðàììíîãî
îáåñïå÷åíèÿ êîìïüþòåðà.
 ãëàâå 7 ðàññìàòðèâàþòñÿ êîìïüþòåðíûå ñåòè. Èçëîæåíû òåõíîëîãèè âçàè-
ìîäåéñòâèÿ â ñåòè, òîïîëîãèÿ è àðõèòåêòóðà ëîêàëüíûõ, ðåãèîíàëüíûõ è ãëî-
áàëüíûõ ñåòåé. Äëÿ îáëåã÷åíèÿ èññëåäîâàíèÿ êèáåðïðîñòðàíñòâà äàííàÿ ãëàâà
ñîäåðæèò ôóíäàìåíòàëüíûå ñâåäåíèÿ îá ÈÍÒÅÐÍÅÒå è óñëóãàõ ñåòè: ïåðåäà÷å
ôàéëîâ, ýëåêòðîííîé ïî÷òå, Web-ñòðàíèöå.
Ó÷åáíèê ðàçðàáîòàí â ñîîòâåòñòâèè ñ Êóððèêóëóìîì ïî èíôîðìàòèêå,
óòâåðæäåííûì ïðèêàçîì Ìèíèñòåðñòâà Îáðàçîâàíèÿ Ðåñïóáëèêè Ìîëäîâà ¹ 244
îò 27 àïðåëÿ 2010 ãîäà. Ðàñïðåäåëåíèå ìàòåðèàëà ïî ïðîôèëÿì – ãóìàíèòàðíûé è
ðåàëüíûé – ïðèâåäåíî â ñîäåðæàíèè ó÷åáíèêà.
$
%
Ãëàâà 1
ÑÎÑÒÀÂÍÛÅ ÒÈÏÛ ÄÀÍÍÛÕ
1.1. Òèï äàííûõ ìàññèâ (array)
Ìíîæåñòâî çíà÷åíèé òèïà äàííûõ array ñîñòîèò èç ìàññèâîâ (òàáëèö).
Ìàññèâû ñîñòàâëÿþòñÿ èç ôèêñèðîâàííîãî ÷èñëà êîìïîíåíò îäíîãî è òîãî æå
òèïà, êîòîðûé íàçûâàåòñÿ áàçîâûì. Ññûëêà íà êîìïîíåíòû îñóùåñòâëÿåòñÿ
ñ ïîìîùüþ èíäåêñîâ.
Òèï äàííûõ ìàññèâ îïðåäåëÿåòñÿ êîíñòðóêöèåé âèäà
type <Èìÿ òèïà> = array[T1] of T2;
ãäå Ò1 – òèï èíäåêñà, êîòîðûé äîëæåí áûòü ïîðÿäêîâûì, à Ò2 – òèï
êîìïîíåíò (áàçîâûé), êîòîðûé ìîæåò áûòü ëþáûì.
Ïðèìåðû:
1) type Vector = array [1..5] of real;
var x : Vector;
2) type Zi = (L, Ma, Mi, J, V, S, D);
Venit = array [Zi] of real;
var v : Venit;
z : Zi;
3) type Ora = 0..23;
Grade = -40..40;
Temperatura = array [Ora] of Grade;
var t : Temperatura;
h : Ora;
Ñòðóêòóðà äàííûõ, èñïîëüçóåìûõ â ýòèõ ïðèìåðàõ, ïðåäñòàâëåíà íà ðèñ. 1.1.
Äîñòóï ê êîìïîíåíòàì ïåðåìåííîé òèïà ìàññèâ îñóùåñòâëÿåòñÿ ÿâíî ÷å-
ðåç èìÿ ïåðåìåííîé, çà êîòîðîé ñëåäóåò ñîîòâåòñòâóþùèé èíäåêñ, çàêëþ-
÷åííûé â êâàäðàòíûå ñêîáêè.
Ïðèìåðû:
1) x[1], x[4];
2) v[L], v[Ma], v[J];
3) t[0], t[15], t[23];
4) v[z], t[h].
Ê êîìïîíåíòàì äàííûõ òèïà ìàññèâ ìîæíî ïðèìåíÿòü âñå îïåðàöèè,
äîïóñòèìûå äëÿ ñîîòâåòñòâóþùåãî áàçîâîãî òèïà. Ñëåäóþùàÿ ïðîãðàììà
âûâîäèò íà ýêðàí ñóììó êîìïîíåíò ïåðåìåííîé x òèïà Vector. Çíà÷åíèÿ
ïåðåìåííûõ x[1], x[2], …, x[5] ââîäÿòñÿ ñ êëàâèàòóðû.
Program P77;
{ Ñóììà êîìïîíåíò ïåðåìåííîé õ òèïà Vector }
type Vector = array [1..5] of real;
var x : Vector;
i : integer;
s : real;
begin
writeln(’Ââåäèòå 5 ÷èñåë:’);
for i:=1 to 5 do readln(x [i]);
writeln(’Áûëè ââåäåíû:’);
for i:=1 to 5 do writeln(x [i]);
s:=0;
for i:=1 to 5 do s:=s+x [i];
writeln(’Ñóììà=’, s);
readln;
end.
Äëÿ òîãî ÷òîáû ðàñøèðèòü îáëàñòü ïðèìåíåíèÿ ïðîãðàììû, êîëè÷åñò-
âî êîìïîíåíò äàííûõ òèïà array ðåêîìåíäóåòñÿ óêàçûâàòü ÷åðåç êîí-
ñòàíòû.
Íàïðèìåð, ïðîãðàììó P77 ìîæíî èçìåíèòü òàêèì îáðàçîì, ÷òîáû îíà
âû÷èñëÿëà ñóììó n äåéñòâèòåëüíûõ ÷èñåë, n≤100:
Ðèñ. 1.1. Ñòðóêòóðà äàííûõ òèïà Vector, Venit è Temperatura
'
Program P78;
{ Ðàñøèðåíèå îáëàñòè ïðèìåíåíèÿ ïðîãðàììû P77 }
const nmax = 100;
type Vector = array [1..nmax] of real;
var x : Vector;
n : 1..nmax;
i : integer;
s : real;
begin
write(’n=’); readln(n);
writeln(’Ââåäèòå ’, n, ’ ÷èñåë:’);
for i:=1 to n do readln(x [i]);
writeln(’Áûëè ââåäåíû:’);
for i:=1 to n do writeln(x [i]);
s:=0;
for i:=1 to n do
s:=s+x[i];
writeln(’Ñóììà=’, s);
readln;
end.
Äâóìåðíûå ìàññèâû îïðåäåëÿþòñÿ ñ ïîìîùüþ êîíñòðóêöèè âèäà:
type Èìÿ òèïà = array [T1, T2] of T3;
ãäå Ò1 è Ò2 óêàçûâàþò òèï èíäåêñîâ, à Ò3 – òèï êîìïîíåíò.
 êà÷åñòâå ïðèìåðà íà ðèñ. 1.2 ïðåäñòàâëåíà ñòðóêòóðà äàííûõ òèïà:
Matrice = array [1..3, 1..4] of real
Ðèñ. 1.2. Ñòðóêòóðà äàííûõ òèïà Matrice
Äîñòóï ê êîìïîíåíòàì ïåðåìåííîé òèïà äâóìåðíûé ìàññèâ îñóùåñòâëÿåò-
ñÿ ÿâíî ÷åðåç èìÿ ïåðåìåííîé, çà êîòîðîé ñëåäóþò ñîîòâåòñòâóþùèå èíäåê-
ñû, ðàçäåëåííûå çàïÿòîé è çàêëþ÷åííûå â êâàäðàòíûå ñêîáêè.
Íàïðèìåð, ïðè îïèñàíèè
var m : Matrice;
îáîçíà÷åíèå m[1,1] îçíà÷àåò ññûëêó íà êîìïîíåíòó, ðàñïîëîæåííóþ â ïåðâîé
ñòðîêå è â ïåðâîì ñòîëáöå (ñì. ðèñ. 1.2); îáîçíà÷åíèå m[1,2] îçíà÷àåò ññûëêó
íà êîìïîíåíòó, ðàñïîëîæåííóþ â ïåðâîé ñòðîêå è âòîðîì ñòîëáöå; îáîçíà÷å-
íèå m[i,j] îçíà÷àåò ññûëêó íà êîìïîíåíòó, ðàñïîëîæåííóþ â ñòðîêå i è â
ñòîëáöå j.
Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ñóììó êîìïîíåíò ïåðåìåííîé m òèïà
Matrice. Çíà÷åíèÿ êîìïîíåíò m[1,1], m[1,2], …, m[3,4] ââîäÿòñÿ ñ êëàâèàòóðû.
Program P79;
{ Ñóììà êîìïîíåíò ïåðåìåííîé m òèïà Matrice }
type Matrice = array [1..3, 1..4] of real;
var m : Matrice;
i, j : integer;
s : real;
begin
writeln(’Ââåäèòå êîìïîíåíòû m[i,j]:’);
for i:=1 to 3 do
for j:=1 to 4 do
begin
write(’m[’, i, ’,’, j, ’]=’);
readln(m[i,j]);
end;
writeln(’Áûëè ââåäåíû:’);
for i:=1 to 3 do
begin
for j:=1 to 4 do write(m[i,j]);
writeln;
end;
s:=0;
for i:=1 to 3 do
for j:=1 to 4 do
s:=s+m[i,j];
writeln(’Ñóììà=’, s);
readln;
end.
 îáùåì âèäå òèï n-ìåðíûé ìàññèâ (n = 1, 2, 3 è ò.ä.) îïðåäåëÿåòñÿ ñ
ïîìîùüþ ñèíòàêñè÷åñêèõ äèàãðàìì, ïðèâåäåííûõ íà ðèñ. 1.3. Ñëîâî packed
(óïàêîâàííûé) óêàçûâàåò êîìïèëÿòîðó, ÷òî îáëàñòü ïàìÿòè äëÿ ýëåìåíòîâ
òèïà array äîëæíà áûòü âûäåëåíà ñ ïðèìåíåíèåì îïòèìèçàöèè. Îòìåòèì,
÷òî â áîëüøèíñòâå êîìïüþòåðîâ èñïîëüçîâàíèå ýòîãî ïðåôèêñà íåîáÿçàòåëü-
íî, òàê êàê îïòèìèçàöèÿ îñóùåñòâëÿåòñÿ àâòîìàòè÷åñêè.
Åñëè äàíû äâå ïåðåìåííûå òèïà ìàññèâ îäíîãî è òîãî æå áàçîâîãî òèïà, òî
èìåíà ýòèõ ïåðåìåííûõ ìîãóò âñòðå÷àòüñÿ â îïåðàöèÿõ ïðèñâàèâàíèÿ. Òàêîå
ïðèñâàèâàíèå îçíà÷àåò êîïèðîâàíèå âñåõ êîìïîíåíò ìàññèâà, ðàñïîëîæåííî-
ãî â ïðàâîé ÷àñòè, â ìàññèâ, ðàñïîëîæåííûé â ëåâîé ÷àñòè.
Íàïðèìåð, ïðè îïèñàíèè
var a, b : Matrice;
îïåðàòîð
a:=b
ÿâëÿåòñÿ ïðàâèëüíûì.
 ïðèìåðàõ, ðàññìîòðåííûõ âûøå, áàçîâûé òèï (òèï êîìïîíåíò) âñåãäà
áûë ïðîñòûì. Òàê êàê áàçîâûé òèï â áîëüøèíñòâå ñëó÷àåâ ìîæåò áûòü
ëþáûì, òî íå èñêëþ÷åíà âîçìîæíîñòü îïðåäåëåíèÿ ìàññèâîâ, êîìïîíåíòû
êîòîðûõ îòíîñÿòñÿ ê ñîñòàâíîìó òèïó. Ðàññìîòðèì ïðèìåð, â êîòîðîì áàçî-
âûì òèïîì ÿâëÿåòñÿ ñàì òèï array.
Type Linie = array [1..4] of real;
Tabel = array [1..3] of Linie;
var L : Linie;
T : Tabel;
x : real;
Ïåðåìåííàÿ T ñîñòîèò èç 3-õ êîìïîíåíò: T[1], T[2] è T[3] òèïà Linie.
Ïåðåìåííàÿ L ñîñòîèò èç 4-õ êîìïîíåíò: L[1], L[2], L[3] è L[4] òèïà
real.
Ñëåäîâàòåëüíî, îïåðàöèè ïðèñâàèâàíèÿ
L[1]:=x; x:=L[3]; T[2]:=L; L:=T[1]
ÿâëÿþòñÿ ïðàâèëüíûìè.
Äîñòóï ê ýëåìåíòàì ïåðåìåííîé T ìîæåò îñóùåñòâëÿòüñÿ ÷åðåç T[i][j]
èëè T[i,j]. Çäåñü èíäåêñ i îçíà÷àåò íîìåð êîìïîíåíòû òèïà Linie ïåðå-
ìåííîé T, à j – íîìåð êîìïîíåíòû òèïà real êîìïîíåíòû T[i] òèïà Linie.
Îòìåòèì, ÷òî îáúÿâëåíèÿ âèäà
array [T1 , T2 ] of T3
è
array [T1] of array [T2] of T3
îïðåäåëÿþò ðàçëè÷íûå òèïû äàííûõ.
Ðèñ. 1.3. Ñèíòàêñè÷åñêàÿ äèàãðàììà Òèï ìàññèâ
Ïåðâîå îáúÿâëåíèå îïðåäåëÿåò äâóìåðíûå ìàññèâû ñ êîìïîíåíòàìè òèïà
63. Âòîðîå – îïðåäåëÿåò îäíîìåðíûå ìàññèâû ñ êîìïîíåíòàìè òèïà array
[62] of 63.
 ïðîãðàììàõ íà ÿçûêå ÏÀÑÊÀËÜ ìàññèâû èñïîëüçóþòñÿ äëÿ ãðóïïèðîâ-
êè ïîä îäíèì èìåíåì íåñêîëüêèõ ïåðåìåííûõ, îáëàäàþùèõ îäèíàêîâûìè
õàðàêòåðèñòèêàìè.
Âîïðîñû è óïðàæíåíèÿ
Ê Îïðåäåëèòå òèï èíäåêñîâ è òèï êîìïîíåíò â ñëåäóþùèõ îáúÿâëåíèÿõ:
type P = array [1..5] of integer;
Culoare = (Galben, Verde, Albastru, Violet);
R = array [Culoare] of real;
S = array [Culoare, 1..3] of boolean;
T = array [boolean] of Culoare;
Íàðèñóéòå ñòðóêòóðû äàííûõ òèïà P, R, S è T (ðèñ. 1.1 è 1.2).
Ë Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.3 ïóòè, êîòîðûå ñîîòâåòñòâó-
þò îáúÿâëåíèÿì èç óïðàæíåíèÿ 1.
Ì Íàïèøèòå ìåòàëèíãâèñòè÷åñêèå ôîðìóëû, êîòîðûå ñîîòâåòñòâóþò ñèíòàê-
ñè÷åñêîé äèàãðàììå Òèï ìàññèâ ðèñ. 1.3.
Í Äàíû îïèñàíèÿ:
type Vector = array [1..5] of real;
var x, y : Vector;
Íàïèøèòå àðèôìåòè÷åñêîå âûðàæåíèå, çíà÷åíèåì êîòîðîãî ÿâëÿåòñÿ:
à) ñóììà ïåðâûõ òðåõ êîìïîíåíò ïåðåìåííîé x;
á) ñóììà âñåõ êîìïîíåíò ïåðåìåííîé y;
â) ïðîèçâåäåíèå âñåõ êîìïîíåíò ïåðåìåííîé x;
ã) àáñîëþòíîå çíà÷åíèå òðåòüåé êîìïîíåíòû ïåðåìåííîé y;
ä) ñóììà ïåðâûõ êîìïîíåíò ïåðåìåííûõ x è y.
Î Äàíû îïèñàíèÿ:
type Zi = (L, Ma, Mi, J, V, S, D);
Venit = array [Zi] of real;
var v : Venit;
Êîìïîíåíòû ïåðåìåííîé v ïðåäñòàâëÿþò ñîáîé åæåäíåâíûé äîõîä ïðåä-
ïðèÿòèÿ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
à) âû÷èñëÿåò åæåíåäåëüíûé äîõîä ïðåäïðèÿòèÿ;
á) ïîäñ÷èòûâàåò ñðåäíèé åæåäíåâíûé äîõîä;
â) îïðåäåëÿåò äåíü, êîãäà áûë ïîëó÷åí íàèáîëüøèé äîõîä;
ã) îïðåäåëÿåò äåíü, êîãäà áûë ïîëó÷åí íàèìåíüøèé äîõîä.
Ï Äàíû îïèñàíèÿ:
type Ora = 0..23;
Grade = -40..40;
Temperatura = array [Ora] of Grade;
var t : Temperatura;
!
Êîìïîíåíòû ïåðåìåííîé t ïðåäñòàâëÿþò ñîáîé çíà÷åíèÿ òåìïåðàòóðû, èçìå-
ðÿåìîé êàæäûé ÷àñ â òå÷åíèå 24 ÷àñîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
à) âû÷èñëÿåò ñðåäíþþ òåìïåðàòóðó;
á) îïðåäåëÿåò ìèíèìàëüíîå è ìàêñèìàëüíîå çíà÷åíèÿ òåìïåðàòóðû;
â) îïðåäåëÿåò ÷àñ (÷àñû), â êîòîðûé áûëà çàðåãèñòðèðîâàíà ìàêñèìàëüíàÿ
òåìïåðàòóðà;
ã) îïðåäåëÿåò ÷àñ (÷àñû), â êîòîðûé áûëà çàðåãèñòðèðîâàíà ìèíèìàëüíàÿ
òåìïåðàòóðà.
Ð Äàíû îïèñàíèÿ:
type Oras = (Chisinau, Orhei, Balti, Tighina, Tiraspol);
Zi = (L, Ma, Mi, J, V, S, D);
Consum = array [Oras, Zi] of real;
var C : Consum;
r : Oras;
z : Zi;
Êîìïîíåíòà C[r,z] ïåðåìåííîé C ïðåäñòàâëÿåò ñîáîé ïîòðåáëåíèå ýëåê-
òðîýíåðãèè ãîðîäà r â äåíü z. Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
à) âû÷èñëÿåò êîëè÷åñòâî ýëåêòðîýíåðãèè, ïîòðåáëÿåìîé êàæäûì ãîðîäîì
çà íåäåëþ;
á) âû÷èñëÿåò êîëè÷åñòâî ýëåêòðîýíåðãèè, ïîòðåáëÿåìîé äàííûìè ãîðîäà-
ìè åæåäíåâíî;
â) îïðåäåëÿåò ãîðîä ñ ìàêñèìàëüíûì åæåíåäåëüíûì ïîòðåáëåíèåì ýëåê-
òðîýíåðãèè;
ã) îïðåäåëÿåò ãîðîä ñ ìèíèìàëüíûì åæåíåäåëüíûì ïîòðåáëåíèåì ýëåêòðî-
ýíåðãèè;
ä) îïðåäåëÿåò äåíü, â êîòîðûé áûëî ïîòðåáëåíî íàèáîëüøåå êîëè÷åñòâî
ýëåêòðîýíåðãèè;
å) îïðåäåëÿåò äåíü ñ íàèìåíüøèì ïîòðåáëåíèåì ýëåêòðîýíåðãèè.
Ñ Äàíû îïèñàíèÿ:
type Vector = array [1..5] of real;
Matrice = array [1..3, 1..4] of real;
Linie = array [1..4] of real;
Tabel = array [1..3] of Linie;
var V : Vector;
M : Matrice;
L : Linie;
T : Tabel;
x : real;
i : integer;
Êàêèå èç ñëåäóþùèõ îïåðàöèé ïðèñâàèâàíèÿ êîððåêòíû?
a) T[3]:=T[1]; f) i:=x;
b) M:=T; g) L[3]:=i;
c) L:=V; h) i:=M[1,2];
d) L[3]:=x; i) x:=V[4];
e) x:=i; j) L[3]:=V[4];
k) T[1]:=4; q) M[1,3]:=L[2];
l) T[2]:=V; r) x:=T[1][2];
m) L:=T[3]; s) x:=M[1];
n) T[1,2]:=M[1,2]; t) L:=M[1];
o) T[1,2]:=M[1,2]; u) V[5]:=M[3,4];
p) M[1]:=4; v) L:=M[3,4].
Ò Èñïîëüçóÿ òèï äàííûõ ìàññèâ, íàïèøèòå ïðîãðàììó, êîòîðàÿ ðåàëèçóåò àëãî-
ðèòì Ýðàòîñôåíà äëÿ âû÷èñëåíèÿ ïðîñòûõ ÷èñåë, ìåíüøèõ çàäàííîãî n (n≤200).
1.2. Òèï äàííûõ ñòðîêà ñèìâîëîâ
 ñòàíäàðòíîì ÿçûêå òèï äàííûõ ñòðîêà ñèìâîëîâ ÿâëÿåòñÿ ÷àñòíûì
ñëó÷àåì òèïà array è îïðåäåëÿåòñÿ êîíñòðóêöèåé âèäà
Èìÿ òèïà ::= packed array [1..n] of char;
Ìíîæåñòâîì çíà÷åíèé äàííîãî òèïà ÿâëÿþòñÿ âñå ñòðîêè, ñîäåðæàùèå
ðîâíî n ñèìâîëîâ.
Ïðèìåð:
Program P80;
{ Ñòðîêè ñèìâîëîâ ñ ôèêñèðîâàííîé äëèíîé }
type Nume = packed array [1..8] of char;
Prenume = packed array [1..5] of char;
var N : Nume;
P : Prenume;
begin
N:=’Munteanu’;
P:=’Mihai’;
writeln(N);
writeln(P);
readln;
end.
Ðåçóëüòàò, âûâîäèìûé íà ýêðàí:
Munteanu
Mihai
Òàê êàê ñòðîêè ðàçëè÷íîé äëèíû ïðèíàäëåæàò ðàçíûì òèïàì äàííûõ, â
ïðîãðàììå P80 íå äîïóñòèìû ïðèñâàèâàíèÿ âèäà:
N:= ’Olaru’;
P:= ’Ion’.
#
 òàêèõ ñëó÷àÿõ ïðîãðàììèñòó íåîáõîäèìî çàïîëíèòü ñîîòâåòñòâóþùåå
ïðîñòðàíñòâî ïðîáåëàìè äëÿ òîãî, ÷òîáû â ñòðîêå áûëî ðîâíî n ñèìâîëîâ,
íàïðèìåð:
N:= ’Olaru ’;
P:= ’Ion ’.
Çíà÷åíèÿ ëþáîé ïåðåìåííîé v òèïà packed array [1..n] of char
ìîæíî ââåñòè ñ êëàâèàòóðû òîëüêî ïóòåì ïîî÷åðåäíîãî ñ÷èòûâàíèÿ ñîîòâåò-
ñòâóþùèõ êîìïîíåíò:
read(v[1]); read(v[2]); ...; read(v[n]).
Îäíàêî âûâåñòè âñþ ñòðîêó íà ýêðàí ìîæíî ñ ïîìîùüþ îäíîãî âûçîâà
write(v) èëè writeln(v).
Îñîáî âûäåëèì òîò ôàêò, ÷òî ñòðîêè ñèìâîëîâ òèïà packed array [1..n]
of char ñîäåðæàò ðîâíî n ñèìâîëîâ, ò. å. ÿâëÿþòñÿ ñòðîêàìè ïîñòîÿííîé
äëèíû. Èõ äëèíó íåëüçÿ èçìåíÿòü â ïðîöåññå âûïîëíåíèÿ ñîîòâåòñòâóþùåé
ïðîãðàììû. Ýòî óñëîæíÿåò ñîçäàíèå ïðîãðàìì, ïðåäíàçíà÷åííûõ äëÿ îáðà-
áîòêè ñòðîê ñèìâîëîâ ïðîèçâîëüíîé äëèíû.
×òîáû óñòðàíèòü óêàçàííûé íåäîñòàòîê, ñîâðåìåííûå âåðñèè ÿçûêà ÏÀÑ-
ÊÀËÜ ðàçðåøàþò èñïîëüçîâàíèå ñòðîê ñèìâîëîâ ïðîèçâîëüíîé äëèíû.
 âåðñèè Turbo PASCAL òèï äàííûõ ñòðîêà ñèìâîëîâ, ìíîæåñòâîì çíà÷å-
íèé êîòîðîãî ÿâëÿþòñÿ ñòðîêè ïðîèçâîëüíîé äëèíû, îïðåäåëÿåòñÿ ñ ïîìîùüþ
êîíñòðóêöèè âèäà:
type Èìÿ òèïà = string;
èëè
type Èìÿ òèïà = string [nmax];
ãäå nmax – ìàêñèìàëüíàÿ äëèíà, êîòîðóþ ìîãóò èìåòü ñîîòâåòñòâóþùèå
ñòðîêè. Ïðè îòñóòñòâèè ïàðàìåòðà nmax ìàêñèìàëüíàÿ äëèíà óñòàíàâëèâàåò-
ñÿ ïî óìîë÷àíèþ, êàê ïðàâèëî – 255 ñèìâîëîâ.
Ê ñòðîêàì òèïà string ìîæíî ïðèìåíÿòü îïåðàöèþ êîíêàòåíàöèè (ñêëåè-
âàíèÿ), îáîçíà÷àåìóþ çíàêîì «+». Òåêóùóþ äëèíó ëþáîé ïåðåìåííîé v òèïà
string ìîæíî óçíàòü ñ ïîìîùüþ ñòàíäàðòíîé ôóíêöèè length(v), êîòîðàÿ
âîçâðàùàåò çíà÷åíèå òèïà integer. Íåçàâèñèìî îò äëèíû âñå ñòðîêè ñèìâî-
ëîâ òèïà string ÿâëÿþòñÿ ñîâìåñòèìûìè.
Ïðèìåð:
Program P81;
{ Ñòðîêè ñèìâîëîâ ïðîèçâîëüíîé äëèíû }
type Nume = string [8];
Prenume = string [5];
NumePrenume = string;
var N : Nume;
P : Prenume;
NP : NumePrenume;
L : integer;
$
begin
N:=’Munteanu’; L:=length(N); writeln(N, L:4);
P:=’Mihai’; L:=length(P); writeln(P, L:4);
NP:=N+’ ’+P; L:=length(NP); writeln(NP, L:4);
N:=’Olaru’; L:=length(N); writeln(N, L:4);
P:=’Ion’; L:=length(P); writeln(P, L:4);
NP:=N+’ ’+P; L:=length(NP); writeln(NP, L:4);
readln;
end.
Ðåçóëüòàòû, âûâîäèìûå íà ýêðàí:
Munteanu 8
Mihai 5
Munteanu Mihai 14
Olaru 5
Ion 3
Olaru Ion 9
Îòìåòèì, ÷òî â ïðîöåññå âûïîëíåíèÿ äàííîé ïðîãðàììû äëèíà ñòðîê
ñèìâîëîâ N, P è NP èçìåíÿåòñÿ.
Ê ñòðîêàì ñèìâîëîâ ìîæíî ïðèìåíÿòü îïåðàöèè îòíîøåíèÿ , =, =, =, ,
 . Ñòðîêè ñðàâíèâàþòñÿ ïîñèìâîëüíî, ñëåâà íàïðàâî, â ñîîòâåòñòâèè ñ
ïîðÿäêîâûìè íîìåðàìè ñèìâîëîâ òèïà äàííûõ char. Îáà îïåðàíäà äîëæíû
îòíîñèòüñÿ ê òèïó packed array [1..n] of char ñ îäèíàêîâûì ÷èñëîì
êîìïîíåíò ëèáî ê òèïó string. Åñòåñòâåííî, ÷òî îïåðàíäû òèïà string
ìîãóò áûòü ðàçëè÷íîé äëèíû.
Íàïðèìåð, ðåçóëüòàòîì îïåðàöèè
’AC’  ’BA’
ÿâëÿåòñÿ true, à ðåçóëüòàòîì îïåðàöèè
’AAAAC’  ’AAAAB’
ÿâëÿåòñÿ false.
Ïåðåìåííóþ òèïà ñòðîêà ñèìâîëîâ ìîæíî èñïîëüçîâàòü ïîëíîñòüþ èëè
÷àñòè÷íî, îáðàùàÿñü ê îòäåëüíîìó ñèìâîëó ñòðîêè.
Íàïðèìåð, â ñòðîêå P=’Mihai’ èìååì P[1]=’M’, P[2]=’i’, P[3]=’h’ è
ò. ä. Ïîñëå âûïîëíåíèÿ ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ
P[1]:=’P’;
P[2]:=’e’;
P[3]:=’t’;
P[4]:=’r’;
P[5]:=’u’
ïåðåìåííàÿ P ïðèìåò çíà÷åíèå ’Petru’.
Ñëåäóþùàÿ ïðîãðàììà ââîäèò ñ êëàâèàòóðû ïðîèçâîëüíûå ñòðîêè ñèìâî-
ëîâ è âûâîäèò íà ýêðàí êîëè÷åñòâî ïðîáåëîâ â ñîîòâåòñòâóþùåé ñòðîêå.
Ðàáîòà ïðîãðàììû çàâåðøàåòñÿ ïîñëå ââåäåíèÿ ñòðîêè ’Sfîrºit’.
%
Program P82;
{ Êîëè÷åñòâî ïðîáåëîâ â ñòðîêå ñèìâîëîâ }
var S : string;
i, j : integer;
begin
writeln(’Ââåäèòå ñòðîêó ñèìâîëîâ:’);
repeat
readln(S);
i:=0;
for j:=1 to length(S) do
if S[j]=’ ’ then i:=i+1;
writeln(’Êîëè÷åñòâî ïðîáåëîâ=’, i);
until S=’Sfarsit’;
end.
Âîïðîñû è óïðàæíåíèÿ
Ê Êàê îïðåäåëÿåòñÿ òèï äàííûõ ñòðîêà ñèìâîëîâ?
Ë Êàêèå îïåðàöèè ìîæíî ïðèìåíÿòü ê ñòðîêàì ñèìâîëîâ?
Ì Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó:
Program P83;
{ Îøèáêà }
var S : packed array [1..5] of char;
begin
S:=’12345’;
writeln(S);
S:=’Sfat’;
writeln(S);
end.
Í Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
à) îïðåäåëÿåò, ñêîëüêî ðàç âñòðå÷àåòñÿ â ñòðîêå ñèìâîë ’A’;
á) çàìåíÿåò ñèìâîë ’A’ ñèìâîëîì ’*’;
â) óäàëÿåò èç ñòðîêè ñèìâîë ’B’;
ã) îïðåäåëÿåò, ñêîëüêî ðàç âñòðå÷àåòñÿ â ñòðîêå ñëîã ’MA’;
ä) çàìåíÿåò ñëîã ’MA’ ñëîãîì ’TA’;
å) óäàëÿåò èç ñòðîêè ñëîã ’TO’.
Î Îïðåäåëèòå ðåçóëüòàòû îïåðàöèé îòíîøåíèÿ:
a) ’B’  ’A’; f) ’BB ’  ’B B’;
b) ’BB’  ’AA’; g) ’A’ = ’a’;
c) ’BAAAA’  ’AAAAA’; h) ’Aa’  ’aA’;
d) ’CCCCD’  ’CCCCA’; i) ’123’ = ’321’;
e) ’A A’ = ’AA’; j) ’12345’  ’12345’.
Ï Äàíû ñòðîêè ñèìâîëîâ, ñîñòîÿùèå èç ïðîïèñíûõ áóêâ ëàòèíñêîãî àëôàâèòà
è ïðîáåëîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí äàííûå ñòðîêè
ñîãëàñíî ñëåäóþùèì ïðàâèëàì:
– âñå áóêâû îò ’A’ äî ’Y’ çàìåíÿþòñÿ ïîñëåäóþùèìè áóêâàìè àëôàâèòà;
– êàæäàÿ áóêâà ’Z’ çàìåíÿåòñÿ áóêâîé ’A’;
– âñå ïðîáåëû çàìåíÿþòñÿ çíàêîì ’–’.
Ð Íàïèøèòå ïðîãðàììó, êîòîðàÿ ðàñøèôðîâûâàåò ñòðîêè ñèìâîëîâ, çàøèô-
ðîâàííûå ñîãëàñíî ïðàâèëàì èç óïðàæíåíèÿ 6.
Ñ Äàíî m (m ≤ 100) ñòðîê, ñîñòîÿùèõ èç ñòðî÷íûõ áóêâ ëàòèíñêîãî àëôàâè-
òà. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí äàííûå ñòðîêè â
àëôàâèòíîì ïîðÿäêå.
Ò Ñòðîêà S ñîñòàâëåíà èç íåñêîëüêèõ ïðåäëîæåíèé, êàæäîå èç êîòîðûõ çàêàí÷è-
âàåòñÿ òî÷êîé, âîñêëèöàòåëüíûì èëè âîïðîñèòåëüíûì çíàêîì. Íàïèøèòå ïðî-
ãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ïðåäëîæåíèé â äàííîé ñòðîêå.
1.3. Òèï äàííûõ çàïèñü (record)
Ìíîæåñòâî çíà÷åíèé òèïà äàííûõ record ñîñòîèò èç çàïèñåé. Çàïèñè
ñîñòîÿò èç êîìïîíåíòîâ, íàçûâàåìûõ ïîëÿìè.  îòëè÷èå îò ýëåìåíòîâ ìàññè-
âà ïîëÿ ìîãóò îòíîñèòüñÿ ê ðàçíûì òèïàì. Êàæäîå ïîëå èìååò ñâîå èìÿ
(èäåíòèôèêàòîð ïîëÿ).
Òèï äàííûõ çàïèñü îïðåäåëÿåòñÿ ñòðóêòóðîé âèäà
type Èìÿ òèïà = record
Èìÿ ïîëÿ 1 : T1;
Èìÿ ïîëÿ 2 : T2;
...
Èìÿ ïîëÿ n : Tn;
end;
ãäå T1, T2, … Tn óêàçûâàþò òèï ñîîòâåòñòâóþùèõ ïîëåé. Òèï ëþáîãî ïîëÿ
ìîæåò áûòü ïðîèçâîëüíûì, çíà÷èò, ïîëå, â ñâîþ î÷åðåäü, ìîæåò îòíîñèòüñÿ
ê òèïó çàïèñü. Òàêèì îáðàçîì ìîæíî îïðåäåëÿòü âëîæåííûå òèïû.
Ïðèìåðû:
1) type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
var E1, E2 : Elev;
2) type Punct = record
x : real; { êîîðäèíàòà x }
y : real; { êîîðäèíàòà y }
end;
var P1, P2 : Punct;
'
3) type Triunghi = record
A : Punct; { âåðøèíà A }
B : Punct; { âåðøèíà B }
C : Punct; { âåðøèíà C }
end;
var T1, T2, T3 : Triunghi;
Ñòðóêòóðà äàííûõ èç ïðèâåäåííûõ âûøå ïðèìåðîâ ïðåäñòàâëåíà íà ðèñ. 1.4.
Åñëè äâå ïåðåìåííûå îòíîñÿòñÿ ê îäíîìó è òîìó æå òèïó çàïèñü, òî
ìåæäó íèìè ðàçðåøåíà îïåðàöèÿ ïðèñâàèâàíèÿ. Ïðè òàêîì ïðèñâàèâàíèè
âñå ïîëÿ ïåðåìåííîé, ñòîÿùåé â ïðàâîé ÷àñòè, êîïèðóþòñÿ â ïåðåìåííóþ,
ñòîÿùóþ â ëåâîé ÷àñòè. Íàïðèìåð, äëÿ òèïîâ äàííûõ è ïåðåìåííûõ, îïðå-
äåëåííûõ âûøå, ñëåäóþùèå îïåðàöèè êîððåêòíû:
E1:=E2;
T2:=T3;
P2:=P1
Ê êàæäîìó ýëåìåíòó ëþáîé ïåðåìåííîé òèïà record ìîæíî îáðà-
ùàòüñÿ ÿâíî, ïî èìåíè ïåðåìåííîé è íàçâàíèþ ïîëÿ, êîòîðûå ðàçäåëÿ-
þòñÿ òî÷êîé.
Ïðèìåðû:
1) E1.Nume, E1.Prenume, E1.NotaMedie;
2) E2.Nume, E2.Prenume, E2.NotaMedie;
3) P1.x, P1.y, P2.x, P2.y;
4) T1.A, T1.B, T1.C, T2.A, T2.B, T2.C;
5) T1.A.x, T1.A.y, T2.B.x, T2.B.y.
Ðèñ. 1.4. Ñòðóêòóðà äàííûõ òèïà Elev, Punct è Triunghi
Î÷åâèäíî, ýëåìåíò E1. Nume îòíîñèòñÿ ê òèïó string; ýëåìåíò P1.x –
ê òèïó real; ýëåìåíò T1.A – ê òèïó Punct; ýëåìåíò T1.A.x – ê òèïó
real è ò. ä.
Ê ýëåìåíòàì äàííûõ òèïà çàïèñü ìîæíî ïðèìåíÿòü âñå îïåðàöèè, äîïóñ-
òèìûå â òèïå ñîîòâåòñòâóþùåãî ïîëÿ. Ñëåäóþùàÿ ïðîãðàììà ñðàâíèâàåò
ñðåäíèå áàëëû äâóõ ó÷åíèêîâ è âûâîäèò íà ýêðàí èìÿ è ôàìèëèþ ó÷åíèêà
ñ áîëåå âûñîêèì ñðåäíèì áàëëîì. Ñ÷èòàåòñÿ, ÷òî ñðåäíèå áàëëû ó÷åíèêîâ
ðàçëè÷íû.
Program P84;
{ Äàííûå òèïà Elev }
type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
var E1, E2, E3 : Elev;
begin
writeln(’Ââåäèòå äàííûå î ïåðâîì ó÷åíèêå:’);
write(’Ôàìèëèÿ:’); readln(E1.Nume);
write(’Èìÿ:’); readln(E1.Prenume);
write(’Ñðåäíèé áàëë:’); readln(E1.NotaMedie);
writeln(’Ââåäèòå äàííûå î âòîðîì ó÷åíèêå:’);
write(’Ôàìèëèÿ:’); readln(E2.Nume);
write(’Èìÿ:’); readln(E2.Prenume);
write(’Ñðåäíèé áàëë:’); readln(E2.NotaMedie);
if E1.NotaMedie  E2.NotaMedie then E3:=E1 else E3:=E2;
writeln(’Ó÷åíèê ñ íàèáîëåå âûñîêèì ñðåäíèì áàëëîì:’);
writeln(E3.Nume, ’ ’, E3.Prenume, ’:’, E3.NotaMedie : 5:2);
readln;
end.
Ëþáîé òèï äàííûõ record ìîæåò ñëóæèòü áàçîâûì òèïîì äëÿ ôîðìèðî-
âàíèÿ äðóãèõ ñîñòàâíûõ òèïîâ.
Ïðèìåð:
type ListaElevilor = array [1..40] of Elev;
var LE : ListaElevilor;
Î÷åâèäíî, îáîçíà÷åíèå LE[i] óêàçûâàåò íà i-ãî ó÷åíèêà èç ñïèñêà; îáî-
çíà÷åíèå LE[i]. Nume óêàçûâàåò íà èìÿ äàííîãî ó÷åíèêà è ò.ä. Ñëåäóþùàÿ
ïðîãðàììà ââîäèò ñ êëàâèàòóðû äàííûå îá n ó÷åíèêàõ è âûâîäèò íà ýêðàí
èìÿ, ôàìèëèþ è ñðåäíèé áàëë ëó÷øåãî ó÷åíèêà. Ñ÷èòàåòñÿ, ÷òî ñðåäíèå
áàëëû ó÷åíèêîâ ðàçëè÷íû.
Program P85;
{ Ìàññèâ ñ ýëåìåíòàìè òèïà Elev }
type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
ListaElev = array [1..40] of Elev;
var E : Elev;
LE : ListaElev;
n : 1..40;
i : integer;
begin
write(’n=’); readln(n);
for i:=1 to n do
begin
writeln(’Ââåäèòå äàííûå îá ó÷åíèêå  ’, i);
write(’Ôàìèëèÿ: ’); readln(LE[i].Nume);
write(’Èìÿ: ’);
readln(LE[i].Prenume);
write(’Ñðåäíèé áàëë: ’);
readln(LE[i].NotaMedie);
end;
E.NotaMedie:=0;
for i:=1 to n do
if LE[i].NotaMedie  E.NotaMedie then E:=LE[i];
writeln(’Ëó÷øèé ó÷åíèê:’);
writeln(E.Nume, ’ ’, E.Prenume, ’:’, E.NotaMedie : 5:2);
readln;
end.
 îáùåì ñëó÷àå òèï äàííûõ çàïèñü îïðåäåëÿåòñÿ ñ ïîìîùüþ ñèíòàêñè÷åñêèõ
äèàãðàìì íà ðèñ. 1.5. Â äîïîëíåíèå ê ôèêñèðîâàííûì çàïèñÿì (ñ ôèêñèðîâàí-
íûì êîëè÷åñòâîì ïîëåé) ÿçûê ÏÀÑÊÀËÜ ïîçâîëÿåò èñïîëüçîâàíèå âàðèàíòíûõ
çàïèñåé, êîòîðûå èçó÷àþòñÿ â áîëåå óãëóáëåííûõ êóðñàõ èíôîðìàòèêè.
Ðèñ. 1.5. Ñèíòàêñè÷åñêàÿ äèàãðàììà Òèï çàïèñü
Âîïðîñû è óïðàæíåíèÿ
Ê Óêàæèòå ìíîæåñòâî çíà÷åíèé òèïà äàííûõ çàïèñü.
Ë Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.5 ïóòè, êîòîðûå ñîîòâåòñòâó-
þò îïðåäåëåíèÿì òèïîâ äàííûõ çàïèñü èç ïðîãðàìì P84 è P85.
Ì Íàïèøèòå ìåòàëèíãâèñòè÷åñêèå ôîðìóëû äëÿ ñèíòàêñè÷åñêîé äèàãðàììû
íà ðèñ. 1.5.
Í Äàíû ñëåäóþùèå òèïû äàííûõ:
type Data = record
Ziua : 1..31;
Luna : 1..12;
Anul : integer;
end;
Persoana = record
NumePrenume : string;
DataNasterii : Data;
end;
ListaPersoane = array [1..50] of Persoana;
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ââîäèò ñ êëàâèàòóðû äàííûå î n ëèöàõ
(n≤50) è âûâîäèò íà ýêðàí:
à) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â äåíü z ìåñÿöà;
á) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â ìåñÿö l ãîäà;
â) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â ãîä a;
ã) ôàìèëèè è èìåíà òåõ, ÷üÿ äàòà ðîæäåíèÿ z.l.a;
ä) ôàìèëèþ è èìÿ ñàìîãî ñòàðøåãî ÷åëîâåêà;
å) ôàìèëèþ è èìÿ ñàìîãî ìëàäøåãî ÷åëîâåêà;
æ) âîçðàñò êàæäîãî ÷åëîâåêà â ãîäàõ, ìåñÿöàõ è äíÿõ;
ç) ñïèñîê ëèö ñòàðøå v ëåò;
è) ñïèñîê ëèö â àëôàâèòíîì ïîðÿäêå;
ê) ñïèñîê ëèö, óïîðÿäî÷åííûé ñîãëàñíî äàòå ðîæäåíèÿ;
ë) ñïèñîê ëèö îäíîãî âîçðàñòà (ðîæäåííûõ â îäíîì è òîì æå ãîäó).
Î Äàíî n (n≤30) òî÷åê íà åâêëèäîâîé ïëîñêîñòè. Êàæäàÿ òî÷êà i îïðåäåëÿåòñÿ
êîîðäèíàòàìè xi, yi. Ðàññòîÿíèå ìåæäó òî÷êàìè i, j âû÷èñëÿåòñÿ ïî ôîðìóëå
.
Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîîðäèíàòû äâóõ òî÷åê,
ðàññòîÿíèå ìåæäó êîòîðûìè ìàêñèìàëüíî.
Ï Ïëîùàäü òðåóãîëüíèêà âû÷èñëÿåòñÿ ïî ôîðìóëå Ãåðîíà
,
ãäå ð – ïîëóïåðèìåòð, a, b è ñ – äëèíû ñîîòâåòñòâóþùèõ ñòîðîí. Èñïîëü-
çóÿ òèïû äàííûõ Punct è Triunghi èç äàííîãî ïàðàãðàôà, íàïèøèòå
ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû èíôîðìàöèþ î n òðåóãîëüíè-
êàõ (n≤10) è âûâîäèò íà ýêðàí:
à) ïëîùàäü êàæäîãî òðåóãîëüíèêà;
á) êîîðäèíàòû âåðøèí òðåóãîëüíèêà, ïëîùàäü êîòîðîãî ìàêñèìàëüíà;
â) êîîðäèíàòû âåðøèí òðåóãîëüíèêà, ïëîùàäü êîòîðîãî ìèíèìàëüíà;
ã) èíôîðìàöèþ î âñåõ òðåóãîëüíèêàõ â ïîðÿäêå âîçðàñòàíèÿ èõ ïëîùàäåé.
!
1.4. Îïåðàòîð with(c)
Ê êàæäîìó ýëåìåíòó ëþáîé ïåðåìåííîé òèïà çàïèñü ìîæíî îáðàùàòüñÿ
ÿâíî, ïî èìåíè ïåðåìåííîé è íàçâàíèþ ïîëÿ, êîòîðûå ðàçäåëÿþòñÿ òî÷êîé.
Íàïðèìåð, ïðè ñëåäóþùåì îïèñàíèè
type Angajat = record
NumePrenume : string;
ZileLucrate : 1..31;
PlataPeZi : real;
PlataPeLuna : real;
end;
var A : Angajat;
ê ýëåìåíòàì ïåðåìåííîé A ìîæíî îáðàùàòüñÿ ÷åðåç A.NumePrenume,
A.ZileLucrate, A.PlataPeZi è A.PlataPeLuna.
Òàê êàê èìÿ A ïåðåìåííîé òèïà çàïèñü ïîñòîÿííî ïîâòîðÿåòñÿ, òî òàêîé
ñïîñîá îáðàùåíèÿ ê ýëåìåíòàì ÿâëÿåòñÿ î÷åíü ãðîìîçäêèì. Ýòèõ ïîâòîðåíèé
ìîæíî èçáåæàòü ïðè èñïîëüçîâàíèè îïåðàòîðà with (c).
Ñèíòàêñèñ äàííîãî îïåðàòîðà:
Îïåðàòîð with ::= with Ïåðåìåííàÿ {,Ïåðåìåííàÿ} do Îïåðàòîð
Ñèíòàêñè÷åñêàÿ äèàãðàììà ïðåäñòàâëåíà íà ðèñ. 1.6.
Âíóòðè îïåðàòîðà with ê ýëåìåíòàì îäíîé èëè íåñêîëüêèõ ïåðåìåííûõ
òèïà çàïèñü ìîæíî îáðàùàòüñÿ òîëüêî ïî èìåíè ñîîòâåòñòâóþùåãî ïîëÿ.
Ïðèìåð:
with A do PlataPeLuna:=PlataPeZi*ZileLucrate
Ýòîò îïåðàòîð ýêâèâàëåíòåí ñëåäóþùåìó:
A.PlataPeLuna:=A.PlataPeZi*A.ZileLucrate
Èñïîëüçîâàíèå îïåðàòîðà with òðåáóåò îñîáîãî âíèìàíèÿ îò ïðîãðàììè-
ñòà, êîòîðûé îáÿçàí îïðåäåëÿòü îäíîçíà÷íûì îáðàçîì ýëåìåíòû ïåðåìåííûõ
òèïà çàïèñü. Âíóòðè îïåðàòîðà with, ïðè ïîÿâëåíèè íåêîòîðîãî èäåíòèôè-
êàòîðà, âíà÷àëå ïðîâîäèòñÿ ïðîâåðêà òîãî, ìîæåò ëè îí áûòü èíòåðïðåòèðî-
âàí êàê èìÿ ïîëÿ ñîîòâåòñòâóþùåé çàïèñè. Åñëè äà, òî îí áóäåò èíòåðïðå-
òèðîâàí êàê èìÿ ïîëÿ, äàæå åñëè â äàííûé ìîìåíò äîñòóïíà äðóãàÿ ïåðå-
ìåííàÿ ïîä òàêèì æå èìåíåì.
Ðèñ. 1.6. Ñèíòàêñè÷åñêàÿ äèàãðàììà îïåðàòîðà with
Ïðèìåð:
type Punct = record
x : real;
y : real;
end;
Segment = record
A : Punct;
B : Punct;
end;
var P : Punct;
S : Segment;
x : integer;
 íàøåì ñëó÷àå èäåíòèôèêàòîð x ìîæåò óêàçûâàòü íà ïåðåìåííóþ x òèïà
integer èëè íà ïîëå P.x çàïèñè P.
 îïåðàòîðå
x:=1
èäåíòèôèêàòîð x óêàçûâàåò íà ïåðåìåííóþ x òèïà integer.
 îïåðàòîðå
with P do x:=1
èäåíòèôèêàòîð x óêàçûâàåò íà ïîëå P.x ïåðåìåííîé P òèïà Punct.
Òàê êàê ïåðåìåííàÿ S òèïà Segment íå ñîäåðæèò ïîëÿ ñ èìåíåì S.x, òî
â îïåðàòîðå
with S do x:=1
èäåíòèôèêàòîð x áóäåò èíòåðïðåòèðîâàí êàê ïåðåìåííàÿ x òèïà integer.
Îïåðàòîð âèäà
with v1, v2, ..., vn do Îïåðàòîð,
ãäå v1, v2, ..., vn – ïåðåìåííûå òèïà çàïèñü, ýêâèâàëåíòåí îïåðàòîðó:
with v1 do
with v2 do
{...}
with vn do Îïåðàòîð.
Î÷åâèäíî, ÷òî ïîëÿ çàïèñåé v1, v2, ..., vn äîëæíû áûòü îïðåäåëåíû îäíîç-
íà÷íî.
Íàïðèìåð, äëÿ ïåðåìåííûõ P è S, îïèñàííûõ âûøå, ìîæíî çàïèñàòü:
with P, S do
begin
x:=1.0; { ññûëêà íà P.x }
y:=1.0;
#
A.x:=0; { ññûëêà íà S.A.x }
A.y:=0;
B.x:=2.0; { ññûëêà íà S.B.x }
B.y:=2.0;
end;
Êàê ïðàâèëî, îïåðàòîð with èñïîëüçóåòñÿ òîëüêî â òåõ ñëó÷àÿõ, êîãäà ýòî
ïðèâîäèò ê çíà÷èòåëüíîìó ñîêðàùåíèþ òåêñòà ïðîãðàììû.
Âîïðîñû è óïðàæíåíèÿ
Ê Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.6 ïóòè, êîòîðûå ñîîòâåòñòâó-
þò îïåðàòîðàì with èç ïðèìåðîâ, ïðèâåäåííûõ â äàííîì ïàðàãðàôå.
Ë Â ÷åì íàçíà÷åíèå îïåðàòîðà with?
Ì Èñïîëüçóÿ îïåðàòîð with, èñêëþ÷èòå èç ïðîãðàìì P84 è P85, ðàññìîòðåí-
íûõ â ïðåäûäóùåì ïàðàãðàôå, ïîâòîðåíèÿ òèïà
E1.Nume, E1.Prenume, ...,
LE[i].Nume, LE[i].Prenume.
Í Äàíû ñëåäóþùèå òèïû äàííûõ:
type Angajat = record
NumePrenume : string;
ZileLucrate : 1..31;
PlataPeZi : real;
PlataPeLuna : real;
end;
ListaDePlata = array [1..50] of Angajat;
Åæåìåñÿ÷íàÿ çàðïëàòà êàæäîãî ðàáîòíèêà âû÷èñëÿåòñÿ ïóòåì óìíîæåíèÿ
åæåäíåâíîé ïëàòû íà êîëè÷åñòâî îòðàáîòàííûõ äíåé. Íàïèøèòå ïðîãðàì-
ìó, êîòîðàÿ:
à) âû÷èñëÿåò åæåìåñÿ÷íóþ çàðïëàòó êàæäîãî ðàáîòíèêà;
á) âû÷èñëÿåò ñðåäíþþ çàðïëàòó âñåõ ðàáîòíèêîâ, âêëþ÷åííûõ â ñïèñîê;
â) âûâîäèò íà ýêðàí äàííûå î âñåõ ðàáîòíèêàõ, åæåìåñÿ÷íàÿ çàðïëàòà
êîòîðûõ ìàêñèìàëüíà;
ã) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â àëôàâèòíîì ïîðÿäêå;
ä) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ åæåäíåâ-
íîé ïëàòû;
å) óïîðÿäî÷èâàåò ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ åæåìåñÿ÷íîé
çàðïëàòû;
æ) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ êîëè÷åñòâà
îòðàáîòàííûõ äíåé.
Î Îêðóæíîñòü ìîæåò áûòü çàäàíà ÷åðåç êîîðäèíàòû õ, ó öåíòðà è ðàäèóñ r.
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äàííûå îá n îê-
ðóæíîñòÿõ (n≤50) è âûâîäèò íà ýêðàí:
à) êîîðäèíàòû öåíòðà è ðàäèóñ îêðóæíîñòè, êîòîðàÿ îïèñûâàåò êðóã ìàê-
ñèìàëüíîé ïëîùàäè;
$
á) êîëè÷åñòâî îêðóæíîñòåé, âõîäÿùèõ â êðóã ñ ìàêñèìàëüíûì ðàäèóñîì, è
êîîðäèíàòû ñîîòâåòñòâóþùèõ öåíòðîâ;
â) êîîðäèíàòû öåíòðà è ðàäèóñ îêðóæíîñòè, êîòîðàÿ îïèñûâàåò êðóã ìè-
íèìàëüíîé ïëîùàäè;
ã) êîëè÷åñòâî îêðóæíîñòåé, â êîòîðûå âõîäèò êðóã ñ ìèíèìàëüíûì ðàäèó-
ñîì, è êîîðäèíàòû ñîîòâåòñòâóþùèõ öåíòðîâ.
1.5. Òèï äàííûõ ìíîæåñòâî (set)
Òèï äàííûõ ìíîæåñòâî (set) îïðåäåëÿåòñÿ ïî îòíîøåíèþ ê áàçîâîìó
òèïó, êîòîðûé äîëæåí áûòü ïîðÿäêîâûì:
Òèï ìíîæåñòâî ::= [packed] set of Òèï
Çíà÷åíèÿìè òèïà äàííûõ set ÿâëÿþòñÿ ìíîæåñòâà, ñîñòîÿùèå èç çíà÷å-
íèé áàçîâîãî òèïà. Åñëè áàçîâûé òèï èìååò n çíà÷åíèé, òî òèï ìíîæåñòâî
áóäåò èìåòü 2n
çíà÷åíèé. Çíà÷åíèå n îãðàíè÷åíî: n≤256.
 ÿçûêå ÏÀÑÊÀËÜ ýëåìåíòû ìíîæåñòâà ìîãóò ïåðå÷èñëÿòüñÿ â êâàä-
ðàòíûõ ñêîáêàõ „[” è „]”, êîòîðûå ÿâëÿþòñÿ àíàëîãîì ôèãóðíûõ ñêîáîê â
ìàòåìàòèêå.
Çàïèñü [] îçíà÷àåò ïóñòîå ìíîæåñòâî.
Ïðèìåðû:
type Indice = 1..10;
Zi = (L, Ma, Mi, J, V, S, D);
MultimeIndicii = set of Indice;
ZileDePrezenta = set of Zi;
var MI : MultimeIndicii;
ZP : ZileDePrezenta;
Ïîðÿäêîâûé òèï Indice èìååò n=10 çíà÷åíèé: 1, 2, 3, 4, 5, 6, 7, 8,
9, 10. Òèï MultimeIndicii èìååò 210
= 1024 çíà÷åíèé, à èìåííî:
[], [1], [2], ..., [1, 2], [1, 3], ...,
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
Òàêèì îáðàçîì, ïåðåìåííàÿ MI ìîæåò ïðèíèìàòü ëþáîå èç ýòèõ çíà÷åíèé,
íàïðèìåð:
MI:= [1, 3].
Ïîðÿäêîâûé òèï Zi èìååò n=7 çíà÷åíèé: L, Ma, Mi, J, V, S, D. Òèï
ZileDePrezenta èìååò 27
= 128 çíà÷åíèé, à èìåííî:
[], [L], [Ma], [Mi], ..., [L, Ma], [L, Mi], ...,
[L, Ma, Mi, J, V, S, D].
Ïåðåìåííàÿ ZP ìîæåò ïðèíèìàòü ëþáîå èç ýòèõ çíà÷åíèé, íàïðèìåð:
ZP:= [L, Ma, Mi, V]
%
Çíà÷åíèÿ òèïà ìíîæåñòâî ìîãóò îïðåäåëÿòüñÿ ÷åðåç êîíñòðóêòîð ìíîæåñò-
âà. Ñèíòàêñè÷åñêàÿ äèàãðàììà ãðàììàòè÷åñêîé åäèíèöû Êîíñòðóêòîð ìíî-
æåñòâà ïðåäñòàâëåíà íà ðèñ. 1.7.
Ðèñ. 1.7. Ñèíòàêñè÷åñêàÿ äèàãðàììà Êîíñòðóêòîð ìíîæåñòâà
Êîíñòðóêòîð ñîäåðæèò çíà÷åíèÿ ýëåìåíòîâ ìíîæåñòâà, ðàçäåëåííûõ çàïÿ-
òûìè è çàêëþ÷åííûõ â êâàäðàòíûå ñêîáêè. Ýëåìåíò ìîæåò ÿâëÿòüñÿ êîí-
êðåòíûì çíà÷åíèåì áàçîâîãî òèïà èëè èíòåðâàëîì âèäà:
Âûðàæåíèå..Âûðàæåíèå.
Çíà÷åíèÿ äàííûõ âûðàæåíèé ïðåäñòàâëÿþò ñîáîé âåðõíèé è íèæíèé
ïðåäåëû èíòåðâàëà.
Ïðèìåðû:
1) [];
2) [1, 2, 3, 8];
3) [1..4, 8..10];
4) [i-k..i+k];
5) [L, Ma, V..D].
Ê çíà÷åíèÿì òèïà äàííûõ ìíîæåñòâî ìîæíî ïðèìåíÿòü îáû÷íûå îïå-
ðàöèè:
+ îáúåäèíåíèå;
* ïåðåñå÷åíèå;
– ðàçíîñòü,
ðåçóëüòàò êîòîðûõ îòíîñèòñÿ ê òèïó ìíîæåñòâî, è îïåðàöèè îòíîøåíèÿ:
= ðàâåíñòâî;
 íåðàâåíñòâî;
=, = âêëþ÷åíèå;
in ïðèíàäëåæíîñòü,
ðåçóëüòàò êîòîðûõ îòíîñèòñÿ ê òèïó boolean.
Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ðåçóëüòàòû îïåðàöèé +, * è –,
ïðèìåíÿåìûõ ê ïåðåìåííûì òèïà MultimeIndicii.
Program P86;
{ Äàííûå òèïà MultimeIndicii }
type Indice = 1..10;
MultimeIndicii = set of Indice;
var A, B, C : MultimeIndicii;
i : integer;
begin
A:= [1..5, 8]; { A ñîäåðæèò 1, 2, 3, 4, 5, 8 }
B:= [1..3, 9, 10]; { B ñîäåðæèò 1, 2, 3, 9, 10 }
C:= []; { C ÿâëÿåòñÿ ïóñòûì ìíîæåñòâîì }
C:=A+B; { C ñîäåðæèò 1, 2, 3, 4, 5, 8, 9, 10 }
writeln(’Îáúåäèíåíèå’);
for i:=1 to 10 do
if i in C then write(i:3);
writeln;
C:=A*B; { C ñîäåðæèò 1, 2, 3 }
writeln(’Ïåðåñå÷åíèå’);
for i:=1 to 10 do
if i in C then write(i:3);
writeln;
C:=A-B; { C ñîäåðæèò 4, 5, 8 }
writeln(’Ðàçíîñòü’);
for i:=1 to 10 do
if i in C then write(i:3);
writeln;
readln;
end.
 îòëè÷èå îò ìàññèâîâ è çàïèñåé, ê ýëåìåíòàì êîòîðûõ ñóùåñòâóåò ïðÿ-
ìîé äîñòóï ñîîòâåòñòâåííî ÷åðåç èíäåêñû è íàçâàíèÿ ïîëåé, ê ýëåìåíòàì
ìíîæåñòâà ïðÿìîãî äîñòóïà íåò. Äîïóñêàåòñÿ òîëüêî ïðîâåðêà íà ïðèíàä-
ëåæíîñòü ýëåìåíòà ìíîæåñòâó (îïåðàöèÿ îòíîøåíèÿ in). Áëàãîäàðÿ ýòîìó
ïðè èñïîëüçîâàíèè òèïîâ äàííûõ ìíîæåñòâî óâåëè÷èâàåòñÿ ñêîðîñòü ðàáîòû
è óëó÷øàåòñÿ ÷èòàáåëüíîñòü ïðîãðàìì PASCAL.
Íàïðèìåð, îïåðàòîð:
if (c=’A’) or (c=’E’) or (c=’I’) or (c=’O’) or (c=’U’) then ...
ìîæíî çàìåíèòü áîëåå ïðîñòûì îïåðàòîðîì:
if c in [’A’,’E’,’I’,’O’,’U’] then ...
Äðóãèì ïðèìåðîì ÿâëÿåòñÿ èñïîëüçîâàíèå òèïîâ äàííûõ ìíîæåñòâî äëÿ
âû÷èñëåíèÿ ïðîñòûõ ÷èñåë, ìåíüøèõ çàäàííîãî n, ãäå n – íàòóðàëüíîå
÷èñëî. Äëÿ ýòîãî èñïîëüçóåòñÿ àëãîðèòì Ðåøåòî Ýðàòîñôåíà:
1) â ðåøåòå íàõîäÿòñÿ ÷èñëà 2, 3, 4, ..., n;
2) èç ðåøåòà óäàëÿåòñÿ íàèìåíüøåå ÷èñëî i;
'
3) óêàçàíîå ÷èñëî âêëþ÷àåòñÿ â ìíîæåñòâî ïðîñòûõ ÷èñåë;
4) èç ðåøåòà óäàëÿþòñÿ âñå ÷èñëà m êðàòíûå ÷èñëó i;
5) ïðîöåññ çàâåðøàåòñÿ, êîãäà ðåøåòî ñòàíîâèòñÿ ïóñòûì.
Program P87;
{ Ðåøåòî Ýðàòîñôåíà }
const n = 50;
type MultimeDeNumere = set of 1..n;
var Sita, NumerePrime : MultimeDeNumere;
i, m : integer;
begin
{1} Sita:= [2..n];
NumerePrime:=[];
i:=2;
repeat
{2} while not (i in Sita) do i:=succ(i);
{3} NumerePrime:=NumerePrime+[i];
write(i:4);
m:=i;
{4} while m=n do
begin Sita:=Sita-[m]; m:=m+i; end;
{5} until Sita=[];
writeln;
readln;
end.
Öèôðû 1, 2, 3, 4, 5, ñòîÿùèå â ôèãóðíûõ ñêîáêàõ â ëåâîé ÷àñòè ïðîãðàì-
ìû, ñîîòâåòñòâóþò ïóíêòàì àëãîðèòìà Ýðàòîñôåíà.
Âîïðîñû è óïðàæíåíèÿ
Ê Ïåðå÷èñëèòå äîïóñòèìûå çíà÷åíèÿ ïåðåìåííûõ, îïèñàííûõ íèæå:
var V : set of ’A’..’C’;
S : set of (A, B, C);
I : set of ’1’..’2’;
J : set of 1..2;
Ë Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó:
Program P88;
{ Îøèáêà }
type Multime = set of integer;
var M : Multime;
i : integer;
begin
M:=[1, 8, 13];
for i:=1 to MaxInt do
if i in M then writeln(i);
end.
!
Ì Äàíû ñëåäóþùèå îïèñàíèÿ:
type Culoare = (Galben, Verde, Albastru, Violet);
Nuanta = set of Culoare;
var NT : Nuanta;
Êàêèå çíà÷åíèÿ ìîæåò ïðèíèìàòü ïåðåìåííàÿ NT?
Í Íàïèøèòå ìåòàëèíãâèñòè÷åñêóþ ôîðìóëó, êîòîðàÿ ñîîòâåòñòâóåò ñèíòàê-
ñè÷åñêîé äèàãðàììå Êîíñòðóêòîð ìíîæåñòâà ðèñ. 1.7.
Î Ðàññìàòðèâàåòñÿ òèï äàííûõ MultimeIndicii, îïèñàííûé â ýòîì ïàðàãðà-
ôå. Ïåðå÷èñëèòå ýëåìåíòû ìíîæåñòâ, îïðåäåëÿåìûõ ñëåäóþùèìè êîíñò-
ðóêòîðàìè:
a) []; f) [4..3];
b) [1..10]; g) [1..3, 7..6, 9];
c) [1..3, 9..10]; h) [4-2..7+1];
d) [1+1, 4..7, 9]; i) [7-5..4+4];
e) [3, 7..9]; j) [6, 9, 1..2].
Ï Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí âñå ïîäìíîæåñòâà ìíî-
æåñòâà: {1, 2, 3, 4}.
Ð Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí âñå ïîäìíîæåñòâà ìíî-
æåñòâà: {’A’, ’B’, ’C’, ’D’}.
Ñ Äàíà ñòðîêà ñèìâîëîâ, â êîòîðîé ñëîâà ðàçäåëÿþòñÿ ïðîáåëîì èëè ñèìâî-
ëàìè: òî÷êà, çàïÿòàÿ, òî÷êà ñ çàïÿòîé, âîñêëèöàòåëüíûé çíàê, âîïðîñè-
òåëüíûé çíàê. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñëîâà,
âõîäÿùèå â ñîñòàâ ïðîèçâîëüíîé ñòðîêè, ñ÷èòûâàåìîé ñ êëàâèàòóðû.
Ò Äàíà ñòðîêà ñèìâîëîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí
êîëè÷åñòâî ãëàñíûõ â ñòðîêå.
Ó Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äâå ñòðîêè ñèìâî-
ëîâ è âûâîäèò íà ýêðàí:
à) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ õîòÿ áû â îäíîé èç ñòðîê;
á) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ â îáåèõ ñòðîêàõ;
â) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ â ïåðâîé ñòðîêå è íå âñòðå÷àþòñÿ âî
âòîðîé.
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ïðîâåðÿåò ïðàâèëüíîñòü ââåäåíèÿ â êîì-
ïüþòåð èìåíè ÷åëîâåêà (ïîä èìåíåì ïîíèìàåòñÿ ïîñëåäîâàòåëüíîñòü ñèì-
âîëîâ, íå ñîäåðæàùàÿ öèôð).
 ñîâðåìåííûõ âåðñèÿõ ÿçûêà êîëè÷åñòâî çíà÷åíèé áàçîâîãî òèïà ëþáîãî
òèïà ìíîæåñòâî îãðàíè÷åíî, îáû÷íî n≤256. Îòñþäà ñëåäóåò, ÷òî ïðîãðàì-
ìà Ð87 íå ìîæåò íàõîäèòü ïðîñòûå ÷èñëà áîëüøå n. Íàïèøèòå ïðîãðàììó,
êîòîðàÿ âû÷èñëÿåò ïðîñòûå ÷èñëà èç èíòåðâàëà 8, ..., 10000.
Óêàçàíèå. Ðåøåòî èç àëãîðèòìà Ýðàòîñôåíà ìîæíî ïðåäñòàâèòü â âèäå
ìàññèâà, ýëåìåíòàìè êîòîðîãî ÿâëÿþòñÿ ìíîæåñòâà.
!
1.6. Ôàéëû
Ïîä ôàéëîì ïîíèìàþò ñòðóêòóðó äàííûõ, êîòîðàÿ ñîñòîèò èç ïîñëåäîâà-
òåëüíîñòè êîìïîíåíò. Âñå êîìïîíåíòû ôàéëà îòíîñÿòñÿ ê îäíîìó è òîìó æå
òèïó, êîòîðûé íàçûâàåòñÿ áàçîâûì. ×èñëî êîìïîíåíòîâ ôàéëà ÿâëÿåòñÿ ïðî-
èçâîëüíûì, îäíàêî êîíåö ôàéëà îáîçíà÷àåòñÿ ñïåöèàëüíûì ñèìâîëîì: EOF
(End of File – êîíåö ôàéëà). Ôàéë, êîòîðûé íå ñîäåðæèò íè îäíîãî ýëåìåíòà,
íàçûâàåòñÿ ïóñòûì ôàéëîì.
Ôàéëîâûé òèï äàííûõ îïðåäåëÿåòñÿ ñëåäóþùèì îáðàçîì:
Ôàéëîâûé òèï ::= [packed] file of Òèï;
ãäå Òèï ÿâëÿåòñÿ áàçîâûì òèïîì. Áàçîâûé òèï ìîæåò áûòü ëþáûì, êðîìå
ñàìîãî ôàéëîâîãî òèïà (íå ñóùåñòâóåò “ôàéë ôàéëîâ”).
Ïðèìåðû:
1) type FisierNumere = file of integer;
var FN : FisierNumere;
n : integer;
2) type FisierCaractere = file of char;
var FC : FisierCaractere;
c : char;
3) type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
FisierElevi = file of Elev;
var FE : FisierElevi;
E : Elev;
Ñòðóêòóðà äàííûõ ôàéëîâîãî òèïà ïðåäñòàâëåíà íà ðèñ. 1.8. Îòìåòèì,
÷òî ñèìâîë EOF, êîòîðûé îçíà÷àåò êîíåö ôàéëà, íå ÿâëÿåòñÿ êîìïîíåíòîì
ôàéëà.
Ïåðåìåííûå FN, FC, FE ôàéëîâîãî òèïà íàçûâàþòñÿ ëîãè÷åñêèìè ôàéëà-
ìè, ôàéëàìè ÿçûêà ÏÀÑÊÀËÜ èëè ïðîñòî ôàéëàìè.  îòëè÷èå îò îñòàëüíûõ
òèïîâ äàííûõ, çíà÷åíèÿ êîòîðûõ õðàíÿòñÿ âî âíóòðåííåé ïàìÿòè êîìïüþòå-
ðà, äàííûå ôàéëîâ õðàíÿòñÿ íà ïåðèôåðèéíûõ óñòðîéñòâàõ – íîñèòåëÿõ
èíôîðìàöèè (íà äèñêàõ, ìàãíèòíûõ ëåíòàõ, îïòè÷åñêèõ äèñêàõ, áóìàãå ïðèí-
òåðà èëè íà óñòðîéñòâå ñ÷èòûâàíèÿ äîêóìåíòîâ è äð.). Èíôîðìàöèÿ íà òàêèõ
íîñèòåëÿõ õðàíèòñÿ â âèäå âíåøíèõ ôàéëîâ â ñîîòâåòñòâèè ñ òðåáîâàíèÿìè
îïåðàöèîííîé ñèñòåìû. Òàêèì îáðàçîì, ïåðåä èñïîëüçîâàíèåì ïåðåìåííóþ
ôàéëîâîãî òèïà íåîáõîäèìî ñâÿçàòü ñ íåêîòîðûì âíåøíèì ôàéëîì. Ìåòîäû
ñâÿçè çàâèñÿò îò âåðñèè ÿçûêà è îïåðàöèîííîé ñèñòåìû, óñòàíîâëåííîé íà
êîìïüþòåðå.
 ñòàíäàðòíîé âåðñèè ÿçûêà ñâÿçü îñóùåñòâëÿåòñÿ ïîñðåäñòâîì âêëþ÷åíèÿ
ïåðåìåííûõ ôàéëîâîãî òèïà â çàãîëîâîê ïðîãðàììû â êà÷åñòâå àðãóìåíòîâ.
!
 Turbo PASCAL ñâÿçü ôàéëîâîé ïåðåìåííîé f ñ âíåøíèì ôàéëîì
îñóùåñòâëÿåòñÿ âûçîâîì ïðîöåäóðû
assign(f, s);
ãäå s – ýòî âûðàæåíèå òèïà string, çàäàþùåå ïóòü äîñòóïà è èìÿ âíåøíåãî
ôàéëà.
Ïðèìåðû:
1) assign(FN, ’A:REZULTATR.DAT’)
– ôàéë FN ñâÿçûâàåòñÿ ñ âíåøíèì ôàéëîì R.DAT, íàõîäÿùèìñÿ â êàòàëî-
ãå REZULTAT íà äèñêå A.
2) assign(FC, ’C:A.CHR’)
– ôàéë FC ñâÿçûâàåòñÿ ñ ôàéëîì A.CHR, íàõîäÿùèìñÿ â êîðíåâîì êàòàëî-
ãå äèñêà C.
3) write(’Ââåäèòå èìÿ ôàéëà:’);
readln(str);
assign(FE, str);
– ôàéë FE ñâÿçûâàåòñÿ ñ âíåøíèì ôàéëîì, èìÿ êîòîðîãî ñ÷èòûâàåòñÿ ñ
êëàâèàòóðû â ïåðåìåííóþ str òèïà string.
Ïîñëå âûïîëíåíèÿ îïåðàòîðà assign (f, s) âñå îïåðàöèè, îñóùåñòâëÿåìûå
íàä ôàéëîì f, ôàêòè÷åñêè áóäóò âûïîëíÿòüñÿ íàä âíåøíèì ôàéëîì s.
Ñàìûìè ðàñïðîñòðàíåííûìè îïåðàöèÿìè, âûïîëíÿåìûìè íàä ôàéëàìè,
ÿâëÿþòñÿ ñ÷èòûâàíèå êîìïîíåíòîâ èç ôàéëà è èõ çàïèñü â ôàéë.
Ñ÷èòûâàíèå òåêóùåé êîìïîíåíòû èç ôàéëà îñóùåñòâëÿåòñÿ ñ ïîìîùüþ
îïåðàòîðà âûçîâà ïðîöåäóðû
read( f, v),
ãäå v – ïåðåìåííàÿ, êîòîðàÿ îòíîñèòñÿ ê áàçîâîìó òèïó ôàéëà f.
Ðèñ. 1.8. Ñòðóêòóðà äàííûõ òèïà FisierNume, FisierCaractere è FisierElevi
!!
Çàïèñü ñëåäóþùåé êîìïîíåíòû â ôàéë îñóùåñòâëÿåòñÿ ñ ïîìîùüþ îïåðà-
òîðà âûçîâà ïðîöåäóðû:
write( f, e),
ãäå e – âûðàæåíèå, îòíîñÿùååñÿ ê áàçîâîìó òèïó ôàéëà f.
Ïðèìåðû:
1) read(FN, n);
2) write(FC, c);
3) read(FE, E).
Ïî òèïàì îïåðàöèé, ïðèìåíÿåìûõ ê êîìïîíåíòàì, ôàéëû ïîäðàçäåëÿþò-
ñÿ íà:
– âõîäíûå (îòêðûòû òîëüêî äëÿ ÷òåíèÿ);
– âûõîäíûå (îòêðûòû òîëüêî äëÿ çàïèñè);
– ðàáî÷èå (îòêðûòû è äëÿ ÷òåíèÿ è äëÿ çàïèñè).
Ïî ìåòîäó äîñòóïà ê êîìïîíåíòàì ôàéëû ïîäðàçäåëÿþòñÿ íà:
– ôàéëû ïîñëåäîâàòåëüíîãî äîñòóïà èëè ïîñëåäîâàòåëüíûå (äîñòóï ê êîì-
ïîíåíòå i âîçìîæåí òîëüêî ïîñëå ñ÷èòûâàíèÿ èëè çàïèñè êîìïîíåíòû i–1);
– ôàéëû ïðÿìîãî äîñòóïà (ê ëþáîé êîìïîíåíòå åñòü ïðÿìîé äîñòóï ÷åðåç
åå ïîðÿäêîâûé íîìåð i â ôàéëå).
Îòìåòèì, ÷òî â ñòàíäàðòíîì ÿçûêå äîïóñòèìû òîëüêî âõîäíûå è âûõîä-
íûå ôàéëû ïîñëåäîâàòåëüíîãî äîñòóïà.
Òèï ôàéëà (âõîäíîé, âûõîäíîé èëè ðàáî÷èé) è ìåòîä äîñòóïà (ïðÿìîé
èëè ïîñëåäîâàòåëüíûé) çàäàþòñÿ ïðè îòêðûòèè ôàéëà. Â ñòàíäàðòíîì ÿçûêå
ñóùåñòâóþò ñëåäóþùèå ïðîöåäóðû äëÿ îòêðûòèÿ ôàéëîâ:
reset(f) – îòêðûâàåò ñóùåñòâóþùèé ôàéë äëÿ ÷òåíèÿ;
rewrite(f) – ñîçäàåò ïóñòîé ôàéë äëÿ çàïèñè.
Ïîñëå çàâåðøåíèÿ îáðàáîòêè êîìïîíåíò ôàéë íóæíî çàêðûòü. Ïðè çàêðû-
òèè ôàéëà îïåðàöèîííàÿ ñèñòåìà çàïèñûâàåò ñèìâîë EOF; ðåãèñòðèðóåò òîëüêî
÷òî ñîçäàííûé ôàéë â ñîîòâåòñòâóþùåì êàòàëîãå è ò.ä.
 ñòàíäàðòíîì ÿçûêå ïî îêîí÷àíèè ðàáîòû ïðîãðàììû âñå ôàéëû çàêðû-
âàþòñÿ àâòîìàòè÷åñêè.  Turbo PASCAL çàêðûòèå ôàéëà f îñóùåñòâëÿåòñÿ
ÿâíî ñ ïîìîùüþ îïåðàòîðà ïðîöåäóðû close (f ).
 çàêëþ÷åíèå ïðèâåäåì ïîðÿäîê âûçîâà ïðîöåäóð, ïðåäíàçíà÷åííûõ äëÿ
îáðàáîòêè äàííûõ ôàéëîâîãî òèïà:
1) assign( f, s) – ñâÿçûâàíèå ôàéëîâîé ïåðåìåííîé f ñ âíåøíèì ôàéëîì s;
2) reset( f)/rewrite( f)– îòêðûòèå ôàéëà f äëÿ ÷òåíèÿ/çàïèñè;
3) read( f, v)/write( f, e) – ÷òåíèå/çàïèñü òåêóùåé êîìïîíåíòû ôàéëà f;
4) close( f) – çàêðûòèå ôàéëà f.
Ïîñëå çàêðûòèÿ ôàéëà ïåðåìåííàÿ f ìîæåò áûòü ñâÿçàíà ñ äðóãèì âíåø-
íèì ôàéëîì.
Òàê êàê çíà÷åíèÿ ïåðåìåííûõ ôàéëîâîãî òèïà õðàíÿòñÿ íà âíåøíèõ
íîñèòåëÿõ èíôîðìàöèè, â ÿçûêå ÏÀÑÊÀËÜ îïåðàöèÿ ïðèñâàèâàíèÿ ôàéëîâ
çàïðåùåíà.
!
Âîïðîñû è óïðàæíåíèÿ
Ê Îáúÿñíèòå òåðìèíû ôàéë ÿçûêà ÏÀÑÊÀËÜ, âíåøíèé ôàéë.
Ë Ãäå õðàíÿòñÿ äàííûå ôàéëà? Äëÿ ÷åãî íóæíà ïðîöåäóðà assign?
Ì Íàðèñóéòå ñòðóêòóðó ñëåäóþùèõ òèïîâ äàííûõ:
a) type Tabel = array [1..5, 1..10] of real;
FisierTabele = file of Tabel;
b) type Multime = set of ’A’..’C’;
FisierMultimi = file of Multime;
c) type Punct = record x, y:real end;
Segment = record A, B:Punct end;
FisierSegmente = file of Segment;
Í Äëÿ ÷åãî íóæíû ïðîöåäóðû îòêðûòèÿ è çàêðûòèÿ ôàéëîâ? Êàê âûïîëíÿ-
þòñÿ ýòè ïðîöåäóðû?
Î Äëÿ ÷åãî íóæíû ïðîöåäóðû read è write? Êàêîãî òèïà äîëæíà áûòü
ïåðåìåííàÿ v â âûçîâå ïðîöåäóðû read(f,v)? Êàêîãî òèïà äîëæíî áûòü
âûðàæåíèå e â âûçîâå ïðîöåäóðû write(f, e)?
Ï Êàê êëàññèôèöèðóþòñÿ ôàéëû â çàâèñèìîñòè îò äîïóñòèìûõ îïåðàöèé è
îò ìåòîäà äîñòóïà?
Ð Ïåðåìåííûå A è B ââåäåíû ïîñðåäñòâîì îïèñàíèÿ
var A, B : file of integer;
Êîððåêòíà ëè ñëåäóþùàÿ çàïèñü
A:=B
Îáîñíóéòå âàø îòâåò.
1.7. Ôàéëû ñ ïîñëåäîâàòåëüíûì äîñòóïîì
Ðàññìîòðèì ñëåäóþùèå îïèñàíèÿ:
type FT = file of T;
var f : FT; v : T;
ïîñðåäñòâîì êîòîðûõ îïðåäåëÿþòñÿ ôàéëîâûé òèï FT ñ áàçîâûì òèïîì T,
ôàéëîâàÿ ïåðåìåííàÿ f è ïåðåìåííàÿ v òèïà T.
Äëÿ îòêðûòèÿ âûõîäíîãî ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà èñïîëüçóåòñÿ
âûçîâ ïðîöåäóðû rewrite(f). Çàòåì, â ôàéë çàïèñûâàþòñÿ ñîîòâåòñòâóþùèå
êîìïîíåíòû. Çàïèñü îòäåëüíûõ êîìïîíåíò ïðîèçâîäèòñÿ ñ ïîìîùüþ ïðîöå-
äóðû:
write(f, e),
ãäå å – âûðàæåíèå òèïà T.
!#
Îïåðàòîð âèäà
write(f, e1, e2, ..., en)
ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ
write(f, e1); write(f, e2); ...; write(f, en).
Ïîñëå çàïèñè ïîñëåäíåé êîìïîíåíòû ôàéë íåîáõîäèìî çàêðûòü.
Ïðèìåð:
Program P89;
{ Ñîçäàíèå ôàéëà ñ êîìïîíåíòàìè òèïà Elev }
type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
FisierElevi = file of Elev;
var FE : FisierElevi;
E : Elev;
str : string;
i, n : integer;
begin
write(’Ââåäèòå èìÿ ôàéëà: ’);
readln(str);
assign(FE, str); { ñâÿçûâàåò FE ñ èìåíåì str }
rewrite(FE); { îòêðûâàåò ôàéë FE äëÿ çàïèñè }
write(’Ââåäèòå êîëè÷åñòâî ó÷åíèêîâ: ’); readln(n);
for i:=1 to n do
begin
writeln(’Ââåäèòå äàííûå îá ó÷åíèêå ’, i);
{Ñ÷èòûâàåò ïîëÿ ïåðåìåííîé Å ñ êëàâèàòóðû }
write(’Ôàìèëèÿ: ’); readln(E.Nume);
write(’Èìÿ: ’); readln(E.Prenume);
write(’Ñðåäíÿÿ îöåíêà: ’); readln(E.NotaMedie);
{Çàïèñûâàåò çíà÷åíèå ïåðåìåííîé Å â ôàéë FE }
write(FE, E);
end;
close(FE); {Çàêðûâàåò ôàéë FE }
readln;
end.
!$
Äëÿ îòêðûòèÿ âõîäíîãî ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà èñïîëüçóåòñÿ ïðî-
öåäóðà reset(f). ×òåíèå òåêóùåãî ýëåìåíòà èç ôàéëà âûïîëíÿåòñÿ ñ ïîìî-
ùüþ âûçîâà ïðîöåäóðû:
read(f, v).
Îïåðàòîð âèäà
read(f, v1, v2, ..., vn)
ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ:
read(f, v1); read (f, v2); ..., read (f, vn).
Êîíåö ôàéëà ìîæíî îáíàðóæèòü ñ ïîìîùüþ áóëåâîé ôóíêöèè eof(f),
êîòîðàÿ âîçâðàùàåò çíà÷åíèå true ïîñëå ÷òåíèÿ ïîñëåäíåãî ýëåìåíòà.
Ïðèìåð:
Program P90;
{ Ñ÷èòûâàíèå ôàéëà ñ ýëåìåíòàìè òèïà Elev }
type Elev = record
Nume : string;
Prenume : string;
NotaMedie : real;
end;
FisierElevi = file of Elev;
var FE : FisierElevi;
E : Elev;
str : string;
begin
write(’Ââåäèòå èìÿ ôàéëà:  ’);
readln(str);
assign(FE, str); { ñâÿçûâàåò FE ñ èìåíåì str }
reset(FE); { îòêðûâàåò ôàéë FE äëÿ ÷òåíèÿ }
while not eof(FE) do
begin
{ ñ÷èòûâàåò E èç ôàéëà FE }
read(FE, E);
{ âûâîäèò E íà ýêðàí }
writeln(E.Nume, ’ ’, E.Prenume, ’:’,
E.NotaMedie : 5:2);
end;
close(FE); { çàêðûâàåò ôàéë FE }
readln;
end.
Îòìåòèì, ÷òî ÷èñëî ýëåìåíòîâ ôàéëà çàðàíåå íåèçâåñòíî è íå çàäàåòñÿ â
îïèñàíèè ñîîòâåòñòâóþùåãî òèïà. Ñëåäîâàòåëüíî, â âûõîäíîé ôàéë ïîñëåäî-
!%
âàòåëüíîãî äîñòóïà òåîðåòè÷åñêè ìîæíî çàïèñàòü áåñêîíå÷íîå ìíîæåñòâî
ýëåìåíòîâ. Îäíàêî ïðàêòè÷åñêè êîëè÷åñòâî ýëåìåíòîâ îãðàíè÷åíî åìêîñòüþ
âíåøíåãî íîñèòåëÿ èíôîðìàöèè. Ñ÷èòûâàíèå ýëåìåíòîâ ëþáîãî âõîäíîãî
ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà çàâåðøàåòñÿ ïðè äîñòèæåíèè ñèìâîëà EOF.
Âîïðîñû è óïðàæíåíèÿ
Ê Èç ñêîëüêèõ ýëåìåíòîâ ìîæåò ñîñòîÿòü ôàéë? Â êàêîì ïîðÿäêå çàïèñûâà-
þòñÿ è ñ÷èòûâàþòñÿ ýëåìåíòû ôàéëà ñ ïîñëåäîâàòåëüíûì äîñòóïîì?
Ë Äàíû ñëåäóþùèå òèïû äàííûõ:
type Data = record
Ziua : 1..31;
Luna : 1..12;
Anul : integer;
end;
Persoana = record
NumePrenume : string;
DataNasterii : Data;
end;
FisierPersoane = file of Persoana;
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äàííûå îá n ëèöàõ
è çàïèñûâàåò èõ â ôàéë. Ñîçäàéòå ôàéëû: FILE1.PRS, FILE2.PRS,
FILE3.PRS, â êîòîðûõ äîëæíû ñîäåðæàòüñÿ äàííûå ñîîòâåòñòâåííî î 2, 7
è 10 ëèöàõ.
Ì Íàïèøèòå ïðîãðàììó, êîòîðàÿ ÷èòàåò ôàéëû, ñîçäàííûå ïðîãðàììîé èç
ïðåäûäóùåãî óïðàæíåíèÿ, è âûâîäèò íà ýêðàí:
à) äàííûå î âñåõ ëèöàõ, çàíåñåííûõ â ôàéë;
á) äàííûå î ëèöàõ, ðîäèâøèõñÿ â ãîä à;
â) äàííûå î ëèöàõ, ó êîãî äàòà ðîæäåíèÿ z.l.a;
ã) äàííûå î ñàìîì ñòàðøåì ÷åëîâåêå;
ä) äàííûå î ñàìîì ìëàäøåì ÷åëîâåêå.
Í Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñðåäíåå àðèôìåòè÷åñêîå
÷èñåë, çàïèñàííûõ â ôàéëå òèïà file of real.
Î Â ôàéëå òèïà file of char çàïèñàíû ïðîèçâîëüíûå ñèìâîëû. Íàïèøèòå
ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ñîãëàñíûõ, ñîäåðæàùèõ-
ñÿ â ôàéëå.
Ï Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó:
Program P91;
{ Îøèáêà }
type FisierNumere = file of integer;
var FN : FisierNumere;
i : integer;
r : real;
s : string;
begin
Writeln(’Ââåäèòå èìÿ ôàéëà:  ’);
!
readln(s);
assign(FN, s);
rewrite(FN);
i:=1;
write(FN, i);
i:=10;
write(FN, i);
r:=20;
write(FN, r);
close(FN);
end.
1.8. Òåêñòîâûå ôàéëû
Èçâåñòíî, ÷òî äàííûå ôàéëîâ õðàíÿòñÿ íà âíåøíèõ íîñèòåëÿõ èíôîðìà-
öèè.  ñëó÷àå, êîãäà ôàéëû îïèñûâàþòñÿ â âèäå file of Ò, ýëåìåíòû òèïà
Ò çàïèñûâàþòñÿ íà ñîîòâåòñòâóþùèõ íîñèòåëÿõ â âèäå ïîñëåäîâàòåëüíîñòè
äâîè÷íûõ öèôð. Òàêîé ñïîñîá ïðåäñòàâëåíèÿ äàííûõ óäîáåí äëÿ âíåøíåé
ïàìÿòè (ìàãíèòíûå äèñêè è ìàãíèòíûå ëåíòû, îïòè÷åñêèå äèñêè è äð.). Äëÿ
óñòðîéñòâ ââîäà/âûâîäà (êëàâèàòóðà, ýêðàí, ïðèíòåð è ò.ä.) ñîîòâåòñòâóþùèå
äàííûå äîëæíû áûòü ïðåäñòàâëåíû âî âíåøíåé ôîðìå, òî åñòü ÷åðåç ñòðîêè
ñèìâîëîâ.
Äëÿ òîãî ÷òîáû óïðîñòèòü îáùåíèå ïîëüçîâàòåëÿ è êîìïüþòåðà, â ÿçû-
êå ÏÀÑÊÀËÜ èíôîðìàöèÿ, ïðåäíàçíà÷åííàÿ äëÿ ïîëüçîâàòåëÿ, ïðåäñòàâ-
ëÿåòñÿ â âèäå òåêñòîâûõ ôàéëîâ. Òåêñòîâûé ôàéë ñîñòîèò èç ïîñëåäîâà-
òåëüíîñòè ñèìâîëîâ, ðàçäåëåííûõ íà ñòðîêè (ðèñ. 1.9). Äëèíà ñòðîê –
ïðîèçâîëüíà. Êîíåö êàæäîé ñòðîêè îáîçíà÷àåòñÿ ñïåöèàëüíûì ñèìâîëîì
EOL (End Of Line – êîíåö ñòðîêè). Òàê êàê äëèíà ñòðîê ïðîèçâîëüíà, òî
ïîçèöèþ íåêîòîðîé ñòðîêè â ôàéëå íåëüçÿ çíàòü çàðàíåå. Ñëåäîâàòåëüíî,
äîñòóï ê ýëåìåíòàì òåêñòîâîãî ôàéëà ìîæåò áûòü òîëüêî ïîñëåäîâàòåëü-
íûì.
Òåêñòîâûé ôàéë çàäàåòñÿ îïèñàíèåì âèäà:
var f : text;
Ðèñ. 1.9. Ñòðóêòóðà òåêñòîâîãî ôàéëà
!'
ãäå ïðåäîïðåäåëåííûé òèï text èçâåñòåí ëþáîé ïðîãðàììå íà ÿçûêå
ÏÀÑÊÀËÜ. Îòìåòèì, ÷òî òèïû text è file of char ðàçëè÷íû, òàê êàê
ôàéë file of char íå ñîäåðæèò ñèìâîëîâ EOL (ðèñ.1.8).
Îáðàáîòêà òåêñòîâûõ ôàéëîâ ìîæåò îñóùåñòâëÿòüñÿ ñ ïîìîùüþ èçâåñòíûõ
ïðîöåäóð, ïðèìåíèìûõ ê ëþáûì òèïàì ôàéëîâ: assign, reset, rewrite,
read, write, close. Â äîïîëíåíèå ê íèì â ÿçûêå åñòü ñïåöèàëüíûå ïðîöå-
äóðû äëÿ îáðàáîòêè ýëåìåíòîâ EOL:
writeln(f)– çàïèñûâàåò â ôàéë ýëåìåíò EOL (êîíåö ñòðîêè);
readln(f)– ïåðåõîä íà ñëåäóþùóþ ñòðîêó.
Êîíåö ñòðîêè îïðåäåëÿåòñÿ ñ ïîìîùüþ áóëåâîé ôóíêöèè eoln(f), êî-
òîðàÿ ïðèíèìàåò çíà÷åíèå true ïîñëå ñ÷èòûâàíèÿ ïîñëåäíåãî ñèìâîëà ñòðîêè.
Îïåðàòîð âèäà
writeln(f, e1, e2, ..., en)
ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ:
write(f, e1, e2, ..., en); writeln(f).
Îïåðàòîð âèäà
readln(f, v1, v2, ..., vn)
ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ:
read(f, v1, v2, ..., vn); readln(f).
Äëÿ ââîäà è âûâîäà äàííûõ èñïîëüçóþòñÿ, êàê ïðàâèëî, ïðåäîïðåäåëåí-
íûå òåêñòîâûå ôàéëû Input è Output. Ôàéë Input ïðåäíàçíà÷åí òîëüêî
äëÿ ÷òåíèÿ è ñâÿçàí ñî ñòàíäàðòíûì óñòðîéñòâîì ââîäà îïåðàöèîííîé ñèñòå-
ìû (êàê ïðàâèëî, ñ êëàâèàòóðîé). Ôàéë Output ïðåäíàçíà÷åí òîëüêî äëÿ
çàïèñè è ñâÿçàí ñî ñòàíäàðòíûì óñòðîéñòâîì âûâîäà (êàê ïðàâèëî, ýêðàíîì).
Ýòè ôàéëû îòêðûâàþòñÿ è çàêðûâàþòñÿ àâòîìàòè÷åñêè â íà÷àëå è ñîîòâåòñò-
âåííî â êîíöå âûïîëíåíèÿ ïðîãðàììû. Åñëè ïðè âûçîâå ïîäïðîãðàìì èìÿ
ôàéëà íå óêàçàíî â ñïèñêå ïàðàìåòðîâ, òî ïðåäïîëàãàåòñÿ, ÷òî òåêñòîâûì
ôàéëîì ÿâëÿåòñÿ ôàéë Input èëè ôàéë Output â çàâèñèìîñòè îò íàçíà÷åíèÿ
ïîäïðîãðàììû. Íàïðèìåð, read(c) ýêâèâàëåíòåí read(Input, c), à write(c)
ýêâèâàëåíòåí write(Output, c).
 êà÷åñòâå ïðèìåðà ïðèâîäèòñÿ ïðîãðàììà P93, êîòîðàÿ ñîçäàåò íà òåêó-
ùåì äèñêå òåêñòîâûé ôàéë FILE.TXT. Ñòðîêè ôàéëà ââîäÿòñÿ ñ êëàâèàòóðû
(ôàéë Input). Ïðèçíàêîì êîíöà ñòðîêè ÿâëÿåòñÿ íàæàòèå êëàâèøè EN-
TER, à ïðèçíàêîì êîíöà ôàéëà ÿâëÿåòñÿ íàæàòèå êëàâèø CTRL+Z,
ENTER.
Program P93;
{ Ñîçäàíèå òåêñòîâîãî ôàéëà FILE.TXT }
var F : text;
c : char;
begin
assign(F, ’FILE.TXT’); { ñâÿçûâàåò ôàéë F ñ FILE.TXT }
rewrite(F); { îòêðûâàåò F äëÿ çàïèñè }
while not eof do { eof(Input) }
begin
while not eoln do { eoln(Input) }
begin
read(c); { ñ÷èòûâàåò ñ èç Input }
write(F, c); { çàïèñûâàåò ñ â F }
end;
writeln(F); { çàïèñûâàåò EOL â F }
readln; { ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó èç Input }
end;
close(F); { çàêðûâàåò F }
end.
Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ñîäåðæèìîå ôàéëà FILE.TXT.
Program P94;
{ ×òåíèå òåêñòîâîãî ôàéëà FILE.TXT }
var F : text;
c : char;
begin
assign(F, ’FILE.TXT’); { ñâÿçûâàåò F ñ FILE.TXT }
reset(F); { îòêðûâàåò F äëÿ ÷òåíèÿ }
while not eof(F) do
begin
while not eoln(F) do
begin
read(F, c); { ñ÷èòûâàåò ñ èç F }
write(c); { çàïèñûâàåò ñ â Output }
end;
readln(F); { ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó F }
writeln; { çàïèñûâàåò EOL â Output }
end;
close(F); { çàêðûâàåò F }
readln;
end.
Ïîñèìâîëüíîå ÷òåíèå è çàïèñü òåêñòîâûõ ôàéëîâ ÿâëÿþòñÿ äîñòàòî÷íî
ñëîæíûìè â ñëó÷àå, êîãäà ïîñëåäîâàòåëüíîñòè ñèìâîëîâ, íàõîäÿùèåñÿ â
òåêñòîâîì ôàéëå, èíòåðïðåòèðóþòñÿ êàê äàííûå òèïà integer, real, bool-
ean, ñòðîêà ñèìâîëîâ. Ïåðåâîä äàííûõ óêàçàííûõ òèïîâ èç âíóòðåííåãî
ïðåäñòàâëåíèÿ âî âíåøíåå ñòàíîâèòñÿ çàäà÷åé ïðîãðàììèñòà. Ïîýòîìó äåé-
ñòâèå ïðîöåäóð ÷òåíèÿ/çàïèñè ðàñøèðÿåòñÿ ñëåäóþùèì îáðàçîì.
Äëÿ òåêñòîâûõ ôàéëîâ ïåðåìåííàÿ v èç ïðîöåäóðû read(f, v) ìîæåò
îòíîñèòüñÿ ê òèïó: integer, real, char èëè ñòðîêà ñèìâîëîâ. Ïðè ÷òåíèè
ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, êîòîðàÿ çàäàåò çíà÷åíèå ïåðåìåííîé v, áóäåò
ïåðåâåäåíà âî âíóòðåííåå ïðåäñòàâëåíèå.
Çà âûðàæåíèåì å â ïðîöåäóðå write(f, e) ìîæåò ñëåäîâàòü óêàçàòåëü
ôîðìàòà. Çíà÷åíèå âûðàæåíèÿ ìîæåò îòíîñèòüñÿ ê òèïó integer, real,
char èëè ñòðîêà ñèìâîëîâ. Ïðè çàïèñè ñîîòâåòñòâóþùåå çíà÷åíèå ïåðåâî-
äèòñÿ èç âíóòðåííåãî ïðåäñòàâëåíèÿ â ïîñëåäîâàòåëüíîñòü ñèìâîëîâ.
Ïîñëåäîâàòåëüíîñòè ñèìâîëîâ, ñ÷èòûâàåìûå/çàïèñûâàåìûå ñ ïîìîùüþ
ïðîöåäóð read/write, ñîîòâåòñòâóþò ñèíòàêñèñó êîíñòàíò òèïà ïåðåìåííîé/
âûðàæåíèÿ v/e.
 êà÷åñòâå ïðèìåðà ïðèâîäèòñÿ ïðîãðàììà P95, êîòîðàÿ ñ÷èòûâàåò ñ
êëàâèàòóðû ïî òðè âåùåñòâåííûõ ÷èñëà a, b, c è çàïèñûâàåò èõ â ôàéë
IN.TXT. Ïîñëå ÷òåíèÿ óêàçàííûõ ÷èñåë, êîòîðûå ïðåäñòàâëÿþò ñîáîé äëèíû
ñòîðîí òðåóãîëüíèêà, ïðîãðàììà çàïèñûâàåò â ôàéë OUT.TXT ÷èñëà a, b è c,
ïîëóïåðèìåòð ð è ïëîùàäü s òðåóãîëüíèêà. Â çàâåðøåíèå ñîäåðæèìîå ôàéëà
OUT.TXT âûâîäèòñÿ íà ýêðàí.
Program P95;
{ Îáðàáîòêà ôàéëîâ IN.TXT è OUT.TXT }
var F, G : text;
a, b, c, p, s : real;
str : string;
begin
assign(F, ’IN.TXT’); { ñâÿçûâàåò F ñ IN.TXT }
rewrite(F); { îòêðûâàåò F äëÿ çàïèñè }
writeln(’Ââåäèòå âåùåñòâåííûå ÷èñëà a, b, c:’);
while not eof do
begin
readln(a, b, c); { ñ÷èòûâàåò a, b, c ñ êëàâèàòóðû }
writeln(F, a:8:2, b:8:2, c:8:2); { scrie a, b, c, in F }
end;
close(F); { çàêðûâàåò F }
reset(F); { îòêðûâàåò F äëÿ ÷òåíèÿ }
assign(G, ’OUT.TXT’); { ñâÿçûâàåò G ñ OUT.TXT }
rewrite(G); { îòêðûâàåò G äëÿ çàïèñè }
while not eof(F) do
begin
readln(F, a, b, c); { ñ÷èòûâàåò a, b, c èç F }
write(G, a:8:2, b:8:2, c:8:2); {çàïèñûâàåò a, b, c â G }
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln(G, p:15:2, s:15:4); { çàïèñûâàåò p, s â G }
end;
close(F); { çàêðûâàåò F }
close(G); { çàêðûâàåò G }
reset(G); { îòêðûâàåò G äëÿ ÷òåíèÿ }
while not eof(G) do
begin
readln(G, str); { ñ÷èòûâàåò str èç G }
writeln(str); { âûâîäèò str íà ýêðàí }
end;
close(G); { çàêðûâàåò G }
readln;
end.
Äëÿ âõîäíûõ äàííûõ
1 1 1 ENTER
3 4 6 ENTER
CTRL+Z ENTER
ïðîãðàììà Ð95 âûâîäèò íà ýêðàí:
1.00 1.00 1.00 1.50 0.4330
3.00 4.00 6.00 6.50 5.3327
Âîïðîñû è óïðàæíåíèÿ
Ê Â ÷åì ðàçíèöà ìåæäó òåêñòîâûì ôàéëîì è ôàéëîì file of char?
Ë ×òî îáîçíà÷àþò ýëåìåíòû EOL è EOF?
Ì Â ÷åì ðàçíèöà ìåæäó ïðîöåäóðàìè read è readln? À ìåæäó ïðîöåäóðàìè
write è writeln?
Í Çàïóñòèòå ñëåäóþùóþ ïðîãðàììó íà âûïîëíåíèå:
Program P96;
{ Ñâÿçûâàíèå ôàéëà FN ñ óñòðîéñòâîì ââîäà }
type FisierNumere = file of integer;
var FN : FisierNumere;
i : integer;
begin
assign(FN, ’CON’);
rewrite(FN);
i:=1;
write(FN, i);
i:=2;
write(FN, i);
i:=3;
write(FN, i);
close(FN);
readln;
end.
Îáúÿñíèòå ðåçóëüòàòû, âûâîäèìûå íà ýêðàí.
Î Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñîäåðæàíèå ëþáîãî òåê-
ñòîâîãî ôàéëà.
!
Ï Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ãëàñíûõ,
ñîäåðæàùèõñÿ â òåêñòîâîì ôàéëå.
Ð Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû çàïèñàíû â òåêñòîâûé ôàéë. Â
êàæäîé ñòðîêå ôàéëà ñîäåðæàòñÿ äâà öåëûõ è òðè âåùåñòâåííûõ ÷èñëà,
ðàçäåëåííûå ïðîáåëàìè. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí
ñóììó öåëûõ è ñóììó âåùåñòâåííûõ ÷èñåë èç êàæäîé ñòðîêè.
Ñ Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû çàïèñàíû â òåêñòîâûé ôàéë. Â
êàæäîé ñòðîêå ôàéëà ñîäåðæàòñÿ ïî òðè âåùåñòâåííûõ ÷èñëà, ðàçäåëåí-
íûõ ïðîáåëàìè, è ïî îäíîìó èç ñëîâ ADMIS, RESPINS. Íàïèøèòå ïðîãðàì-
ìó, êîòîðàÿ:
à) âûâîäèò ñîäåðæèìîå äàííîãî ôàéëà íà ýêðàí;
á) ñîçäàåò ðåçåðâíóþ êîïèþ ôàéëà;
â) ñîçäàåò òåêñòîâûé ôàéë, ñòðîêè êîòîðîãî ñîäåðæàò ñðåäíåå àðèôìåòè-
÷åñêîå òðåõ âåùåñòâåííûõ ÷èñåë, âçÿòûõ èç ñîîòâåòñòâóþùèõ ñòðîê âõîä-
íîãî ôàéëà;
ã) âûâîäèò íà ýêðàí ñòðîêè âõîäíîãî ôàéëà òàêèì îáðàçîì, ÷òî ïåðåä
êàæäîé ñòðîêîé ïèøåòñÿ åå ïîðÿäêîâûé íîìåð 1, 2, 3 è ò. ä.
Ò Êàæäàÿ ñòðîêà òåêñòîâîãî ôàéëà ñîäåðæèò ñëåäóþùèå äàííûå, ðàçäåëåí-
íûå ïðîáåëàìè:
– ïîðÿäêîâûé íîìåð (integer);
– ôàìèëèÿ (ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, íå ñîäåðæàùàÿ ïðîáåëîâ);
– èìÿ (ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, íå ñîäåðæàùàÿ ïðîáåëîâ);
– îöåíêà ïî 1-ìó ïðåäìåòó (real);
– îöåíêà ïî 2-ìó ïðåäìåòó (real);
– îöåíêà ïî 3-ìó ïðåäìåòó (real).
Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
à) ñîçäàåò ðåçåðâíóþ êîïèþ òåêñòîâîãî ôàéëà;
á) âûâîäèò íà ýêðàí ñîäåðæèìîå ôàéëà;
â) ñîçäàåò òåêñòîâûé ôàéë, ñòðîêè êîòîðîãî ñîäåðæàò ñëåäóþùèå äàííûå,
ðàçäåëÿåìûå ïðîáåëàìè:
– ïîðÿäêîâûé íîìåð (integer);
– ôàìèëèÿ (string);
– èìÿ (string);
– ñðåäíèé áàëë (real).
Ôàéë, ñîçäàííûé â ïóíêòå â, íåîáõîäèìî âûâåñòè íà ýêðàí.
Òåñò äëÿ ñàìîïðîâåðêè ¹ 1
1.Äàíû ñëåäóþùèå òèïû äàííûõ:
type Obiect = (Istoria, Geografia, Matematica,
Informatica, Fizica);
Nota = 1..10;
SituatiaScolara = array [Obiect] of Nota;
Èçîáðàçèòå íà ðèñóíêå ñòðóêòóðó äàííûõ òèïà SituatiaScolara.
2.Äëÿ ïðèâåäåííûõ íèæå îïèñàíèé óêàæèòå òèï èíäåêñîâ è òèï êîìïîíåíò äàííûõ
òèïà OrarulLectiilor:
type ZiDeScoala = (L, Ma, Mi, J, V, S);
Lectie = 1..6;
Obiect = (LimbaRomana, LimbaModerna, Istoria,
Geografia, Matematica,Informatica, Fizica,
Chimia);
OrarulLectiilor = array [ZiDeScoala, Lectie] of Obiect;
3.Äàíû ñëåäóþùèå îïèñàíèÿ è îáúÿâëåíèÿ:
type Tablou = array [1..10] of integer;
var x, y : Tablou;
Íàïèøèòå àðèôìåòè÷åñêîå âûðàæåíèå äëÿ âû÷èñëåíèÿ:
a) ñóììû ïåðâûõ ÷åòûðåõ êîìïîíåíò ïåðåìåííîé x;
b) ñóììû ïîñëåäíèõ ÷åòûðåõ êîìïîíåíò ïåðåìåííîé y;
c) àáñîëþòíîãî çíà÷åíèÿ òðåòüåé êîìïîíåíòû ïåðåìåííîé x;
d) àáñîëþòíîãî çíà÷åíèÿ øåñòîé êîìïîíåíòû ïåðåìåííîé y;
e) ñóììû ïåðâîé êîìïîíåíòû ïåðåìåííîé x è ïîñëåäíåé êîìïîíåíòû ïåðåìåííîé y.
4.Äàíû n (n≤50) öåëûõ ÷èñåë a1, a2, a3, ..., an. Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ,
êîòîðàÿ ââîäèò ñ êëàâèàòóðû ðàññìàòðèâàåìûå ÷èñëà è âûâîäèò èõ íà ýêðàí â ïîðÿäêå,
îáðàòíîì ââîäó: an, ..., a3, a2, a1.
5. Êàêèå îïåðàöèè ìîãóò áûòü âûïîëíåíû íàä ñòðîêàìè ñèìâîëîâ òèïà string? Óêà-
æèòå òèï ðåçóëüòàòà ýòèõ îïåðàöèé.
6.Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ, êîòîðàÿ âûâîäèò íà ýêðàí ñòðîêó ñèìâîëîâ â
ïîðÿäêå, îáðàòíîì òîìó, â êîòîðîì îíà áûëà ââåäåíà ñ êëàâèàòóðû. Íàïðèìåð, ñòðîêà
’soare’ áóäåò âûâåäåíà íà ýêðàí êàê ’eraos’.
7.Äëÿ ïðèâåäåííîãî íèæå îïèñàíèÿ èçîáðàçèòå íà ðèñóíêå ñòðóêòóðó äàííûõ òèïà
Data è Persoana:
type Data = record
Ziua : 1..31;
Luna : 1..12;
Anul : integer;
end;
Persoana = record
NumePrenume : string;
#
DataNasterii : Data;
end;
8.Äàíû ñëåäóþùèå òèïû äàííûõ:
type Angajat = record
NumePrenume : string;
Salariu : real;
end;
ListaDePlata = array[1..100] of Angajat;
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ââîäèò ñ êëàâèàòóðû äàííûå îá n (n≤100) ñîòðóäíè-
êàõ è âûâîäèò íà ýêðàí èíôîðìàöèþ î ñîòðóäíèêå (ñîòðóäíèêàõ), ïîëó÷àþùåì ñàìóþ
âûñîêóþ çàðàáîòíóþ ïëàòó.
9.Äëÿ ÷åãî ïðåäíàçíà÷åí îïåðàòîð with?
10.Ïåðå÷èñëèòå âñåâîçìîæíûå çíà÷åíèÿ ïåðåìåííûõ èç ïðèâåäåííûõ íèæå îáúÿâ-
ëåíèé:
var V : set of ’X’..’Z’;
I : set of 8..9;
11.Äàíû ñòðîêè ñèìâîëîâ, ñîñòîÿùèå èç çàãëàâíûõ áóêâ ëàòèíñêîãî àëôàâèòà. Íà-
ïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ãëàñíûõ áóêâ â ñ÷èòàííîé ñ
êëàâèàòóðû ñòðîêå ñèìâîëîâ S .
12.Ãäå õðàíÿòñÿ äàííûå ôàéëîâûõ ïåðåìåííûõ ÏÀÑÊÀËß? Äëÿ ÷åãî ïðåäíàçíà÷å-
íà ïðîöåäóðà assign?
13.Êàê êëàññèôèöèðóþòñÿ ôàéëû â çàâèñèìîñòè îò ñïîñîáà äîñòóïà è äîïóñòèìûõ
îïåðàöèé?
14. Äàíû ñëåäóþùèå òèïû äàííûõ:
type Angajat = record
NumePrenume : string;
Salariu : real;
end;
FisierAngajati = file of Angajat;
Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñîçäàåò ôàéë SALARII.DAT è çàïèñûâàåò â íåì äàí-
íûå îá n ñîòðóäíèêàõ. Ñîîòâåòñòâóþùèå äàííûå ñ÷èòûâàþòñÿ ñ êëàâèàòóðû.
15.Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ, êîòîðàÿ âûâîäèò íà ýêðàí ñîäåðæèìîå ôàé-
ëà SALARII.DAT , ñîçäàííîãî â ïðåäûäóùåì ïóíêòå.
16. Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû õðàíÿòñÿ â òåêñòîâîì ôàéëå
REZULTAT.TXT. Êàæäàÿ ñòðîêà ôàéëà ñîäåðæèò ïî äâà âåùåñòâåííûõ ÷èñëà, ðàçäå-
ëåííûõ ïðîáåëîì, è ñëîâî BUN èëè DEFECT. Íàïèøèòå ïðîãðàììó, êîòîðàÿ:
a) ñîçäàåò òåêñòîâûé ôàéë MEDIA.TXT, êàæäàÿ ñòðîêà êîòîðîãî ñîäåðæèò ÷èñëî,
ïðåäñòàâëÿþùåå ñîáîé ñðåäíåå àðèôìåòè÷åñêîå âåùåñòâåííûõ ÷èñåë è ñëîâî BUN
èëè DEFECT èç ñîîòâåòñòâóþùåé ñòðîêè âõîäíîãî ôàéëà;
b) âûâîäèò íà ýêðàí ñòðîêè ñîçäàííîãî ôàéëà.
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс
учебник по Информатике 10 класс

More Related Content

What's hot

План-конспект уроку. Материки Землі. 4 клас
План-конспект уроку. Материки Землі. 4 класПлан-конспект уроку. Материки Землі. 4 клас
План-конспект уроку. Материки Землі. 4 класКовпитська ЗОШ
 
Частини. Дроби
Частини. ДробиЧастини. Дроби
Частини. Дробиe-ranok e-ranok
 
2บันทึกรายงานผลการเข้าร่วม
2บันทึกรายงานผลการเข้าร่วม2บันทึกรายงานผลการเข้าร่วม
2บันทึกรายงานผลการเข้าร่วมkrupornpana55
 
แผนการอ่าน
แผนการอ่านแผนการอ่าน
แผนการอ่านSerena Sunisa
 
LR2-3_2.1_khomko
LR2-3_2.1_khomkoLR2-3_2.1_khomko
LR2-3_2.1_khomkoOlga_Khomko
 
Reading lesson plan
Reading lesson planReading lesson plan
Reading lesson planBelinda Bow
 
презентація цпрпп
презентація   цпрпппрезентація   цпрпп
презентація цпрппgurtova
 
Ordering food (in a restaurant)
Ordering food (in a restaurant)Ordering food (in a restaurant)
Ordering food (in a restaurant)iamtrainer
 
Шляхи формування в учнів позитивної мотивації до читання
Шляхи формування в учнів позитивної мотивації до читанняШляхи формування в учнів позитивної мотивації до читання
Шляхи формування в учнів позитивної мотивації до читанняYulya Tkachuk
 
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์แวมไพร์ แวมไพร์
 
Презентація навчального закладу
Презентація навчального закладуПрезентація навчального закладу
Презентація навчального закладуtummenscool1
 
Інформаційно-цифрова компетентність вчителя нової української школи
Інформаційно-цифрова компетентність вчителя нової української школиІнформаційно-цифрова компетентність вчителя нової української школи
Інформаційно-цифрова компетентність вчителя нової української школиЗШ №10 м.Світловодська
 
диференціація логачевська с п
диференціація логачевська с пдиференціація логачевська с п
диференціація логачевська с пЕлена Билюк
 
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่าน
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่านแผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่าน
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่านWanida Keawprompakdee
 

What's hot (20)

План-конспект уроку. Материки Землі. 4 клас
План-конспект уроку. Материки Землі. 4 класПлан-конспект уроку. Материки Землі. 4 клас
План-конспект уроку. Материки Землі. 4 клас
 
Частини. Дроби
Частини. ДробиЧастини. Дроби
Частини. Дроби
 
цікаві методи роботи на уроці читання
цікаві методи роботи на уроці читанняцікаві методи роботи на уроці читання
цікаві методи роботи на уроці читання
 
2บันทึกรายงานผลการเข้าร่วม
2บันทึกรายงานผลการเข้าร่วม2บันทึกรายงานผลการเข้าร่วม
2บันทึกรายงานผลการเข้าร่วม
 
แผนการอ่าน
แผนการอ่านแผนการอ่าน
แผนการอ่าน
 
самоосвіта
самоосвіта самоосвіта
самоосвіта
 
LR2-3_2.1_khomko
LR2-3_2.1_khomkoLR2-3_2.1_khomko
LR2-3_2.1_khomko
 
Перший дзвоник (вірші)
Перший дзвоник (вірші)Перший дзвоник (вірші)
Перший дзвоник (вірші)
 
Reading lesson plan
Reading lesson planReading lesson plan
Reading lesson plan
 
Quizalize
QuizalizeQuizalize
Quizalize
 
презентація цпрпп
презентація   цпрпппрезентація   цпрпп
презентація цпрпп
 
Свято "Хліб - усьому голова" (Презентація)
Свято "Хліб - усьому голова" (Презентація)Свято "Хліб - усьому голова" (Презентація)
Свято "Хліб - усьому голова" (Презентація)
 
Ordering food (in a restaurant)
Ordering food (in a restaurant)Ordering food (in a restaurant)
Ordering food (in a restaurant)
 
Present Simple Tense
Present  Simple  TensePresent  Simple  Tense
Present Simple Tense
 
Шляхи формування в учнів позитивної мотивації до читання
Шляхи формування в учнів позитивної мотивації до читанняШляхи формування в учнів позитивної мотивації до читання
Шляхи формування в учнів позитивної мотивації до читання
 
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์
สมุดบันทึกกิจกรรม ทัศนะศึกษาสัปดาห์วิทยาศาสตร์
 
Презентація навчального закладу
Презентація навчального закладуПрезентація навчального закладу
Презентація навчального закладу
 
Інформаційно-цифрова компетентність вчителя нової української школи
Інформаційно-цифрова компетентність вчителя нової української школиІнформаційно-цифрова компетентність вчителя нової української школи
Інформаційно-цифрова компетентність вчителя нової української школи
 
диференціація логачевська с п
диференціація логачевська с пдиференціація логачевська с п
диференціація логачевська с п
 
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่าน
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่านแผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่าน
แผนการจัดการเรียนรู้เพื่อพัฒนาทักษะการอ่าน
 

Viewers also liked

Учебник гражданское воспитание 10 класс
 Учебник гражданское воспитание 10 класс Учебник гражданское воспитание 10 класс
Учебник гражданское воспитание 10 классAnna-Maria Russu
 
Учебник химия 11 класс
Учебник химия 11 классУчебник химия 11 класс
Учебник химия 11 классAnna-Maria Russu
 
Учебник английский язык 11 класс
Учебник английский язык 11 классУчебник английский язык 11 класс
Учебник английский язык 11 классAnna-Maria Russu
 
Учебник гражданское воспитание 11 класс
Учебник гражданское воспитание 11 классУчебник гражданское воспитание 11 класс
Учебник гражданское воспитание 11 классAnna-Maria Russu
 
2.Физические величины и их измерение
2.Физические величины и их измерение2.Физические величины и их измерение
2.Физические величины и их измерениеAnna-Maria Russu
 
румынский язык и литература 10 класс (alolingvi)
румынский язык и литература 10 класс (alolingvi)румынский язык и литература 10 класс (alolingvi)
румынский язык и литература 10 класс (alolingvi)Anna-Maria Russu
 
Juan urrios » la rueda de tu negocio
Juan urrios » la rueda de tu negocioJuan urrios » la rueda de tu negocio
Juan urrios » la rueda de tu negocioJuan Urrios
 
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...Orlando Zapateiro
 
MIDAS Room & Resource Scheduling Software - API Documentation v1.02
MIDAS Room & Resource Scheduling Software - API Documentation v1.02MIDAS Room & Resource Scheduling Software - API Documentation v1.02
MIDAS Room & Resource Scheduling Software - API Documentation v1.02MIDAS
 
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيب
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيبKnowledge of Unseen - Ilm-e-ghayeb-علم الغيب
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيبIffu Slides
 
Africa sub-sahariana: mercato emergente dalle grandi prospettive
Africa sub-sahariana: mercato emergente dalle grandi prospettiveAfrica sub-sahariana: mercato emergente dalle grandi prospettive
Africa sub-sahariana: mercato emergente dalle grandi prospettiveLazio Innova
 
Dios siempre tienen una respuesta positiva para todas
Dios siempre tienen una respuesta positiva para todasDios siempre tienen una respuesta positiva para todas
Dios siempre tienen una respuesta positiva para todasJuan David Ruiz Lopez
 
Tmobile multi line-app
Tmobile multi line-appTmobile multi line-app
Tmobile multi line-appjimmiejackson
 
Educar y formar también es tu responsabilidad 41091
Educar y formar también es tu responsabilidad 41091Educar y formar también es tu responsabilidad 41091
Educar y formar también es tu responsabilidad 41091proyecto2013cpe
 
IFRS - Estandares Internacionales de Contabilidad y Reportes Financieros
IFRS - Estandares Internacionales de Contabilidad y Reportes FinancierosIFRS - Estandares Internacionales de Contabilidad y Reportes Financieros
IFRS - Estandares Internacionales de Contabilidad y Reportes FinancierosSandra Rubio DaCosta
 
Xat 2006 Paper
Xat 2006 PaperXat 2006 Paper
Xat 2006 Paperroadtomba
 

Viewers also liked (20)

Учебник гражданское воспитание 10 класс
 Учебник гражданское воспитание 10 класс Учебник гражданское воспитание 10 класс
Учебник гражданское воспитание 10 класс
 
Учебник химия 11 класс
Учебник химия 11 классУчебник химия 11 класс
Учебник химия 11 класс
 
Учебник английский язык 11 класс
Учебник английский язык 11 классУчебник английский язык 11 класс
Учебник английский язык 11 класс
 
Tipul multime brosura rom
Tipul multime brosura romTipul multime brosura rom
Tipul multime brosura rom
 
Учебник гражданское воспитание 11 класс
Учебник гражданское воспитание 11 классУчебник гражданское воспитание 11 класс
Учебник гражданское воспитание 11 класс
 
химия 10 класс
химия 10 классхимия 10 класс
химия 10 класс
 
2.Физические величины и их измерение
2.Физические величины и их измерение2.Физические величины и их измерение
2.Физические величины и их измерение
 
румынский язык и литература 10 класс (alolingvi)
румынский язык и литература 10 класс (alolingvi)румынский язык и литература 10 класс (alolingvi)
румынский язык и литература 10 класс (alolingvi)
 
Juan urrios » la rueda de tu negocio
Juan urrios » la rueda de tu negocioJuan urrios » la rueda de tu negocio
Juan urrios » la rueda de tu negocio
 
Herramientas web 22
Herramientas web 22Herramientas web 22
Herramientas web 22
 
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...
3.SISTEMA RACIONAL DE ALIMENTACION VOISIN-FINCA EL ENSUEÑO. F. MELENDEZ- J. C...
 
MIDAS Room & Resource Scheduling Software - API Documentation v1.02
MIDAS Room & Resource Scheduling Software - API Documentation v1.02MIDAS Room & Resource Scheduling Software - API Documentation v1.02
MIDAS Room & Resource Scheduling Software - API Documentation v1.02
 
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيب
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيبKnowledge of Unseen - Ilm-e-ghayeb-علم الغيب
Knowledge of Unseen - Ilm-e-ghayeb-علم الغيب
 
Africa sub-sahariana: mercato emergente dalle grandi prospettive
Africa sub-sahariana: mercato emergente dalle grandi prospettiveAfrica sub-sahariana: mercato emergente dalle grandi prospettive
Africa sub-sahariana: mercato emergente dalle grandi prospettive
 
Dios siempre tienen una respuesta positiva para todas
Dios siempre tienen una respuesta positiva para todasDios siempre tienen una respuesta positiva para todas
Dios siempre tienen una respuesta positiva para todas
 
Tmobile multi line-app
Tmobile multi line-appTmobile multi line-app
Tmobile multi line-app
 
Educar y formar también es tu responsabilidad 41091
Educar y formar también es tu responsabilidad 41091Educar y formar también es tu responsabilidad 41091
Educar y formar también es tu responsabilidad 41091
 
IFRS - Estandares Internacionales de Contabilidad y Reportes Financieros
IFRS - Estandares Internacionales de Contabilidad y Reportes FinancierosIFRS - Estandares Internacionales de Contabilidad y Reportes Financieros
IFRS - Estandares Internacionales de Contabilidad y Reportes Financieros
 
Xat 2006 Paper
Xat 2006 PaperXat 2006 Paper
Xat 2006 Paper
 
Euroinvest21
Euroinvest21Euroinvest21
Euroinvest21
 

More from Anna-Maria Russu

1. физика наука о природе
1. физика   наука о природе1. физика   наука о природе
1. физика наука о природеAnna-Maria Russu
 
Discursul Domnului Rector Ion Gagim
Discursul Domnului Rector Ion GagimDiscursul Domnului Rector Ion Gagim
Discursul Domnului Rector Ion GagimAnna-Maria Russu
 
Calendar date remarcabile RM
Calendar date remarcabile RMCalendar date remarcabile RM
Calendar date remarcabile RMAnna-Maria Russu
 
Standarde de eficienta la informatica
Standarde de eficienta la informaticaStandarde de eficienta la informatica
Standarde de eficienta la informaticaAnna-Maria Russu
 
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII Curriculumul actualizat pentru disciplina Informatica Clasele X-XII
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII Anna-Maria Russu
 
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...Anna-Maria Russu
 
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...Anna-Maria Russu
 
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA (clasele ...
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA  (clasele ...Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA  (clasele ...
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA (clasele ...Anna-Maria Russu
 
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)Curriculum la disciplina informatica clasele X – XII (varianta în limba română)
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)Anna-Maria Russu
 
Учебник физика 11 класс
Учебник физика 11 классУчебник физика 11 класс
Учебник физика 11 классAnna-Maria Russu
 
Учебник биология 11 класс
Учебник биология 11 классУчебник биология 11 класс
Учебник биология 11 классAnna-Maria Russu
 
физика 10 класс
физика 10 классфизика 10 класс
физика 10 классAnna-Maria Russu
 
Учебник математика 10 класс
Учебник математика 10 классУчебник математика 10 класс
Учебник математика 10 классAnna-Maria Russu
 
Учебник английский язык 10 класс
Учебник английский язык 10 классУчебник английский язык 10 класс
Учебник английский язык 10 классAnna-Maria Russu
 
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...Anna-Maria Russu
 

More from Anna-Maria Russu (16)

1. физика наука о природе
1. физика   наука о природе1. физика   наука о природе
1. физика наука о природе
 
Discursul Domnului Rector Ion Gagim
Discursul Domnului Rector Ion GagimDiscursul Domnului Rector Ion Gagim
Discursul Domnului Rector Ion Gagim
 
Calendar date remarcabile RM
Calendar date remarcabile RMCalendar date remarcabile RM
Calendar date remarcabile RM
 
Excel3
Excel3Excel3
Excel3
 
Standarde de eficienta la informatica
Standarde de eficienta la informaticaStandarde de eficienta la informatica
Standarde de eficienta la informatica
 
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII Curriculumul actualizat pentru disciplina Informatica Clasele X-XII
Curriculumul actualizat pentru disciplina Informatica Clasele X-XII
 
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...
Curriculumul actualizat pentru disciplina Informatica Clasele VII-IX varianta...
 
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...
Curriculum opţional la cursul optional TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢI...
 
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA (clasele ...
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA  (clasele ...Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA  (clasele ...
Curriculum pentru învăţămîntul gimnazial la disciplina INFORMATICA (clasele ...
 
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)Curriculum la disciplina informatica clasele X – XII (varianta în limba română)
Curriculum la disciplina informatica clasele X – XII (varianta în limba română)
 
Учебник физика 11 класс
Учебник физика 11 классУчебник физика 11 класс
Учебник физика 11 класс
 
Учебник биология 11 класс
Учебник биология 11 классУчебник биология 11 класс
Учебник биология 11 класс
 
физика 10 класс
физика 10 классфизика 10 класс
физика 10 класс
 
Учебник математика 10 класс
Учебник математика 10 классУчебник математика 10 класс
Учебник математика 10 класс
 
Учебник английский язык 10 класс
Учебник английский язык 10 классУчебник английский язык 10 класс
Учебник английский язык 10 класс
 
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...
Curriculum la disciplina “Informatică” pentru clasele X – XII (varianta în li...
 

учебник по Информатике 10 класс

  • 1.
  • 2. CZU 004(075.3) à 80 ISBN 978-9975-67-821-6 © Anatol Gremalschi, Iurie Mocanu, Ludmila Gremalschi. 2000, 2007, 2012 © Traducere:Arcadie Malearovici, Veronica Musteaþã. 2000, 2007, 2012 © Întreprinderea Editorial Poligrafica ªtiinþa. 2007, 2012 Traducere din limba românã: Arcadie Malearovici (capitolele 2–7), Veronica Musteaþã (capitolul 1) Responsabil de ediþie: Valentina Rîbalchina Redactor: Tatiana Bolgar Redactor tehnic: Nina Duduciuc Machetare computerizatã: Anatol Andriþchi Copertã: Vitaliu Pogolºa Întreprinderea Editorial-Poligraficã ªtiinþa, str.Academiei, nr. 3; MD-2028, Chiºinãu, Republica Moldova; tel.: (+373) 022-73-96-16; fax: (+373) 022-73-96-27; e-mail: prini@stiinta.asm.md Descrierea CIP a Camerei Naþionale a Cãrþii Ãðåìàëüñêè, Àíàòîë Èíôîðìàòèêà: Ó÷åá. äëÿ 10 êëàññà / Àíàòîë Ãðåìàëüñêè, Þðèå Ìîêàíó, Ëóäìèëà Ãðåìàëüñêè; trad. din lb. rom.: Arcadie Malearovici, Veronica Musteaþã; Min. Educaþiei al Rep. Moldova. – Ch.: Î.E.P. ªtiinþa, 2012 (Tipografia „SEREBIA” SRL). – 188 p. ISBN 978-9975-67-821-6 004(075.3) Elaborat conform curriculumului disciplinar în vigoare ºi aprobat prin Ordinul ministrului educaþiei (nr. 211 din 11 aprilie 2012). Editat din sursele financiare ale Fondului Special pentru Manuale. Comisia de experþi: Teodora Gherman, dr. în pedagogie, conferenþiar, ºef Catedrã Tehnologii Informaþionale Aplicate, Academia de Administrare Publicã de pe lîngã Preºedintele Republicii Moldova; Gheorghe Chistruga, prof. ºc., grad did. superior, Liceul Teoretic „Mihai Eminescu”, Drochia; Mihai Chigai, prof. ºc., grad did. I, Liceul Teoretic Caplani, rn. ªtefan-Vodã Recenzenþi: GheorgheCiocanu,dr.habilitatîninformaticã,profesoruniversitar,UniversitateadeStatdinMoldova; Valeriu Cabac, dr. în fizicã ºi matematicã, conferenþiar universitar, Universitatea de Stat „Alecu Russo”, Bãlþi; Mihai ªleahtiþchi, dr. în psihologie ºi pedagogie, conferenþiar universitar, Universitatea Liberã Internaþionalã din Moldova; Tatiana Cartaleanu, dr. în filologie, conferenþiar universitar, Universitatea Pedagogicã de Stat „Ion Creangã”, Chiºinãu; Alexei Colîbneac, Maestru în Arte, profesor universitar, Academia de Muzicã, Teatru ºi Arte Plastice, Chiºinãu DIFUZARE: ÎM Societatea de Distribuþie a Cãrþii PRO-NOI str. Alba-Iulia, nr. 23/1A; MD-2051, Chiºinãu; tel.: (+373) 022-51-68-17, 51-57-49; fax: (+373) 022-50-15-81; e-mail: info@pronoi.md; www.pronoi.md Toate drepturile asupra acestei ediþii aparþin Întreprinderii Editorial-Poligrafice ªtiinþa.
  • 3. Ââåäåíèå 5 1. ÑÎÑÒÀÂÍÛÅÒÈÏÛÄÀÍÍÛÕ 1.1. Òèï äàííûõ ìàññèâ (array) • • 7 1.2. Òèï äàííûõ ñòðîêà ñèìâîëîâ • • 14 1.3. Òèï äàííûõ çàïèñü (record) • • 18 1.4. Îïåðàòîð with (c) • • 23 1.5. Òèï äàííûõ ìíîæåñòâî (set) • • 26 1.6.Ôàéëû • • 31 1.7. Ôàéëû ñ ïîñëåäîâàòåëüíûì äîñòóïîì • • 34 1.8. Òåêñòîâûå ôàéëû • • 38 Òåñò äëÿ ñàìîïðîâåðêè ¹ 1 • • 44 2. ÈÍÔÎÐÌÀÖÈß 2.1. Êîëè÷åñòâî èíôîðìàöèè • • 46 2.2. Êîäèðîâàíèå è äåêîäèðîâàíèå èíôîðìàöèè • • 49 2.3. ×àñòî èñïîëüçóåìûå êîäû • • 51 2.4. Èíôîðìàöèÿ íåïðåðûâíûõ ñîîáùåíèé • • 56 2.5. Êâàíòîâàíèå èçîáðàæåíèé • • 60 2.6. Ïðåäñòàâëåíèå è ïåðåäà÷à èíôîðìàöèè • • 62 Òåñò äëÿ ñàìîïðîâåðêè ¹ 2 • • 66 3. ÀÐÈÔÌÅÒÈ×ÅÑÊÈÅ ÎÑÍÎÂÛ ÂÛ×ÈÑËÈÒÅËÜÍÎÉ ÒÅÕÍÈÊÈ 3.1. Ñèñòåìû ñ÷èñëåíèÿ • • 68 3.2. Ïåðåâîä ÷èñåë èç îäíîé ñèñòåìû ñ÷èñëåíèÿ â äðóãóþ • • 71 3.3. Ïåðåâîä ÷èñåë èç äâîè÷íîé ñèñòåìû ñ÷èñëåíèÿ â âîñüìåðè÷íóþ, øåñòíàäöàòåðè÷íóþ è îáðàòíî • 73 3.4. Àðèôìåòè÷åñêèå îïåðàöèè â äâîè÷íîé ñèñòåìå ñ÷èñëåíèÿ • 76 3.5. Ïðåäñòàâëåíèå íàòóðàëüíûõ ÷èñåë â êîìïüþòåðå • 77 3.6. Ïðåäñòàâëåíèå öåëûõ ÷èñåë • 79 3.7. Ïðåäñòàâëåíèå âåùåñòâåííûõ ÷èñåë • 81 Òåñò äëÿ ñàìîïðîâåðêè ¹ 3 • 86 4. ÁÓËÅÂÀ ÀËÃÅÁÐÀ 4.1. Ëîãè÷åñêèå ïåðåìåííûå è âûðàæåíèÿ • 88 4.2. Ëîãè÷åñêèå ôóíêöèè • 91 ÎÃËÀÂËÅÍÈÅ Ãóìàíèòàðíûé Ðåàëüíûé Ñòðàíèöà Ñîäåðæàíèå
  • 4. " 4.3. ×àñòî èñïîëüçóåìûå ëîãè÷åñêèå ôóíêöèè • 94 Òåñò äëÿ ñàìîïðîâåðêè ¹ 4 • 96 5. ËÎÃÈ×ÅÑÊÈÅÑÕÅÌÛ 5.1. Ëîãè÷åñêèå ýëåìåíòû • 98 5.2. Êëàññèôèêàöèÿ ëîãè÷åñêèõ ñõåì • 103 5.3. Ñóììàòîð • 103 5.4. ×àñòî èñïîëüçóåìûå êîìáèíàöèîííûå ñõåìû • 107 5.5. RS-òðèããåð • 110 5.6. ×àñòî èñïîëüçóåìûå ïîñëåäîâàòåëüíîñòíûå ñõåìû • 113 5.7. Ãåíåðàòîðû èìïóëüñîâ • 116 Òåñò äëÿ ñàìîïðîâåðêè ¹ 5 • 118 6. ÓÑÒÐÎÉÑÒÂÎ È ÐÀÁÎÒÀ ÊÎÌÏÜÞÒÅÐÀ 6.1. Ôóíêöèîíàëüíàÿ ñõåìà êîìïüþòåðà • • 121 6.2. Ôîðìàòû êîìàíä • 123 6.3. Òèïû êîìàíä • 126 6.4. Ìàøèííûé ÿçûê è ÿçûê àññåìáëåðà • 127 6.5. Àïïàðàòíûå è ïðîãðàììíûå ðåñóðñû êîìïüþòåðà • • 129 6.6. Âíåøíÿÿ ïàìÿòü íà ìàãíèòíûõ ëåíòàõ è äèñêàõ • • 131 6.7. Âíåøíÿÿ ïàìÿòü íà îïòè÷åñêèõ äèñêàõ • • 135 6.8. Âèäåîìîíèòîð è êëàâèàòóðà • • 139 6.9. Ïðèíòåðû • • 141 6.10. Êëàññèôèêàöèÿ êîìïüþòåðîâ • • 144 6.11. Ìèêðîïðîöåññîð • 145 Òåñò äëÿ ñàìîïðîâåðêè ¹ 6 • • 147 7. ÊÎÌÏÜÞÒÅÐÍÛÅ ÑÅÒÈ 7.1. Ââåäåíèå â êîìïüþòåðíûå ñåòè • • 150 7.2. Òåõíîëîãèè âçàèìîäåéñòâèÿ â êîìïüþòåðíîé ñåòè • • 153 7.3. Òîïîëîãèÿ è àðõèòåêòóðà êîìïüþòåðíûõ ñåòåé • 155 7.4. Ãëîáàëüíàÿ ñåòü ÈÍÒÅÐÍÅÒ • • 158 7.5. Ñåðâèñû ÈÍÒÅÐÍÅÒà • • 163 Òåñò äëÿ ñàìîïðîâåðêè ¹ 7 • • 167 Îòâåòû ê òåñòàì äëÿ ñàìîïðîâåðêè 170 Áèáëèîãðàôèÿ 187 Ñîäåðæàíèå Ãóìàíèòàðíûé Ðåàëüíûé Ñòðàíèöà
  • 5. # ÂÂÅÄÅÍÈÅ Âïå÷àòëÿþùèå äîñòèæåíèÿ â îáëàñòè èíôîðìàòèêè, ñîçäàíèå ñóïåðêîìïüþòå- ðîâ è ïåðñîíàëüíûõ êîìïüþòåðîâ, ïîÿâëåíèå êèáåðïðîñòðàíñòâà, âèðòóàëüíîé ðåàëüíîñòè è ÈÍÒÅÐÍÅÒà ïðåäïîëàãàþò óãëóáëåííûå çíàíèÿ ïðèíöèïîâ ðàáîòû è óñòðîéñòâà ñîâðåìåííûõ êîìïüþòåðîâ. Èìåííî ýòè çíàíèÿ áóäóò íàäåæíûì ïóòåâîäèòåëåì â ïîñòîÿííî ìåíÿþùåìñÿ ìèðå. Äàííûé ó÷åáíèê ïðåäíàçíà÷åí äëÿ óñâîåíèÿ ó÷àùèìèñÿ çíàíèé, íåîáõîäè- ìûõ äëÿ ïîíèìàíèÿ ïðîöåññîâ àâòîìàòèçèðîâàííîé îáðàáîòêè äàííûõ ñ ïîìî- ùüþ öèôðîâûõ êîìïüþòåðîâ. Ãëàâà 1 ñîäåðæèò òåîðåòè÷åñêèå è ïðèêëàäíûå çíàíèÿ ïî îïðåäåëåíèþ è îáðàáîòêå ñîñòàâíûõ òèïîâ äàííûõ: ìàññèâîâ, ñòðîê, çàïèñåé, ìíîæåñòâ è ôàé- ëîâ.  íåé òàêæå ïðåäñòàâëåíû ìåòîäû ñîçäàíèÿ è îáðàáîòêè ôàéëîâ: ñâÿçûâà- íèå ôàéëîâûõ ïåðåìåííûõ ÏÀÑÊÀËß ñ âíåøíèìè ôàéëàìè, çàïèñü è ñ÷èòûâà- íèå êîìïîíåíò ôàéëîâ. Ãëàâà 2 ñîäåðæèò èçëîæåíèå ôóíäàìåíòàëüíûõ çíàíèé èç òåîðèè èíôîðìà- öèè: êîëè÷åñòâî èíôîðìàöèè, ñîäåðæàùåéñÿ â íåïðåðûâíûõ è äèñêðåòíûõ ñîîá- ùåíèÿõ, êîäèðîâàíèå è äåêîäèðîâàíèå èíôîðìàöèè, ïðåäñòàâëåíèå èíôîðìàöèè â êîìïüþòåðå.  ãëàâå 3 èçëîæåíû ôóíäàìåíòàëüíûå ñâåäåíèÿ èç îáëàñòè êîìïüþòåðíîé àðèô- ìåòèêè: ñèñòåìû ñ÷èñëåíèÿ è àðèôìåòè÷åñêèå îïåðàöèè â äâîè÷íîé ñèñòåìå ñ÷èñ- ëåíèÿ, ïðåäñòàâëåíèå íàòóðàëüíûõ, öåëûõ è âåùåñòâåííûõ ÷èñåë â êîìïüþòåðå. Ãëàâà 4 ñîäåðæèò îñíîâû áóëåâîé àëãåáðû.  íåé èçëàãàþòñÿ ïîíÿòèÿ áóëåâîé ïåðåìåííîé, êîíñòàíòû è ôóíêöèè, à òàêæå èçó÷àþòñÿ ÷àñòî èñïîëüçóåìûå ëîãè÷å- ñêèå ôóíêöèè.  ãëàâå 5 ðàññìàòðèâàþòñÿ êîìáèíàöèîííûå è ïîñëåäîâàòåëüíîñòíûå ñõåìû, øèðîêî ïðèìåíÿåìûå â ëþáîì öèôðîâîì êîìïüþòåðå: ñóììàòîðû, êîìïàðàòîðû, øèôðàòîðû è äåøèôðàòîðû, ðåãèñòðû, ñ÷åò÷èêè, ãåíåðàòîðû èìïóëüñîâ. Óñòðîéñòâî è ðàáîòà êîìïüþòåðà îïèñàíû â ãëàâå 6. Ìàòåðèàë èçëîæåí òàêèì îáðàçîì, ÷òîáû óñòðîéñòâî ñîâðåìåííîãî öèôðîâîãî êîìïüþòåðà áûëî ïîíÿòî è óñâîåíî ìåòîäè÷åñêè: îò ëîãè÷åñêèõ ýëåìåíòîâ, óñòðîéñòâ è áëîêîâ äî âû÷èñëè- òåëüíîé ñèñòåìû â öåëîì. Îñîáîå âíèìàíèå óäåëÿåòñÿ âçàèìíîé çàâèñèìîñòè ìà- òåìàòè÷åñêèõ êîíöåïöèé è ìåòîäîâ ôèçè÷åñêîé ðåàëèçàöèè öèôðîâûõ óñòðîéñòâ ñîâðåìåííûõ âû÷èñëèòåëüíûõ ñèñòåì, âçàèìîñâÿçè òåõíè÷åñêîãî è ïðîãðàììíîãî îáåñïå÷åíèÿ êîìïüþòåðà.  ãëàâå 7 ðàññìàòðèâàþòñÿ êîìïüþòåðíûå ñåòè. Èçëîæåíû òåõíîëîãèè âçàè- ìîäåéñòâèÿ â ñåòè, òîïîëîãèÿ è àðõèòåêòóðà ëîêàëüíûõ, ðåãèîíàëüíûõ è ãëî- áàëüíûõ ñåòåé. Äëÿ îáëåã÷åíèÿ èññëåäîâàíèÿ êèáåðïðîñòðàíñòâà äàííàÿ ãëàâà ñîäåðæèò ôóíäàìåíòàëüíûå ñâåäåíèÿ îá ÈÍÒÅÐÍÅÒå è óñëóãàõ ñåòè: ïåðåäà÷å ôàéëîâ, ýëåêòðîííîé ïî÷òå, Web-ñòðàíèöå. Ó÷åáíèê ðàçðàáîòàí â ñîîòâåòñòâèè ñ Êóððèêóëóìîì ïî èíôîðìàòèêå, óòâåðæäåííûì ïðèêàçîì Ìèíèñòåðñòâà Îáðàçîâàíèÿ Ðåñïóáëèêè Ìîëäîâà ¹ 244 îò 27 àïðåëÿ 2010 ãîäà. Ðàñïðåäåëåíèå ìàòåðèàëà ïî ïðîôèëÿì – ãóìàíèòàðíûé è ðåàëüíûé – ïðèâåäåíî â ñîäåðæàíèè ó÷åáíèêà.
  • 6. $
  • 7. % Ãëàâà 1 ÑÎÑÒÀÂÍÛÅ ÒÈÏÛ ÄÀÍÍÛÕ 1.1. Òèï äàííûõ ìàññèâ (array) Ìíîæåñòâî çíà÷åíèé òèïà äàííûõ array ñîñòîèò èç ìàññèâîâ (òàáëèö). Ìàññèâû ñîñòàâëÿþòñÿ èç ôèêñèðîâàííîãî ÷èñëà êîìïîíåíò îäíîãî è òîãî æå òèïà, êîòîðûé íàçûâàåòñÿ áàçîâûì. Ññûëêà íà êîìïîíåíòû îñóùåñòâëÿåòñÿ ñ ïîìîùüþ èíäåêñîâ. Òèï äàííûõ ìàññèâ îïðåäåëÿåòñÿ êîíñòðóêöèåé âèäà type <Èìÿ òèïà> = array[T1] of T2; ãäå Ò1 – òèï èíäåêñà, êîòîðûé äîëæåí áûòü ïîðÿäêîâûì, à Ò2 – òèï êîìïîíåíò (áàçîâûé), êîòîðûé ìîæåò áûòü ëþáûì. Ïðèìåðû: 1) type Vector = array [1..5] of real; var x : Vector; 2) type Zi = (L, Ma, Mi, J, V, S, D); Venit = array [Zi] of real; var v : Venit; z : Zi; 3) type Ora = 0..23; Grade = -40..40; Temperatura = array [Ora] of Grade; var t : Temperatura; h : Ora; Ñòðóêòóðà äàííûõ, èñïîëüçóåìûõ â ýòèõ ïðèìåðàõ, ïðåäñòàâëåíà íà ðèñ. 1.1. Äîñòóï ê êîìïîíåíòàì ïåðåìåííîé òèïà ìàññèâ îñóùåñòâëÿåòñÿ ÿâíî ÷å- ðåç èìÿ ïåðåìåííîé, çà êîòîðîé ñëåäóåò ñîîòâåòñòâóþùèé èíäåêñ, çàêëþ- ÷åííûé â êâàäðàòíûå ñêîáêè. Ïðèìåðû: 1) x[1], x[4]; 2) v[L], v[Ma], v[J]; 3) t[0], t[15], t[23]; 4) v[z], t[h].
  • 8. Ê êîìïîíåíòàì äàííûõ òèïà ìàññèâ ìîæíî ïðèìåíÿòü âñå îïåðàöèè, äîïóñòèìûå äëÿ ñîîòâåòñòâóþùåãî áàçîâîãî òèïà. Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ñóììó êîìïîíåíò ïåðåìåííîé x òèïà Vector. Çíà÷åíèÿ ïåðåìåííûõ x[1], x[2], …, x[5] ââîäÿòñÿ ñ êëàâèàòóðû. Program P77; { Ñóììà êîìïîíåíò ïåðåìåííîé õ òèïà Vector } type Vector = array [1..5] of real; var x : Vector; i : integer; s : real; begin writeln(’Ââåäèòå 5 ÷èñåë:’); for i:=1 to 5 do readln(x [i]); writeln(’Áûëè ââåäåíû:’); for i:=1 to 5 do writeln(x [i]); s:=0; for i:=1 to 5 do s:=s+x [i]; writeln(’Ñóììà=’, s); readln; end. Äëÿ òîãî ÷òîáû ðàñøèðèòü îáëàñòü ïðèìåíåíèÿ ïðîãðàììû, êîëè÷åñò- âî êîìïîíåíò äàííûõ òèïà array ðåêîìåíäóåòñÿ óêàçûâàòü ÷åðåç êîí- ñòàíòû. Íàïðèìåð, ïðîãðàììó P77 ìîæíî èçìåíèòü òàêèì îáðàçîì, ÷òîáû îíà âû÷èñëÿëà ñóììó n äåéñòâèòåëüíûõ ÷èñåë, n≤100: Ðèñ. 1.1. Ñòðóêòóðà äàííûõ òèïà Vector, Venit è Temperatura
  • 9. ' Program P78; { Ðàñøèðåíèå îáëàñòè ïðèìåíåíèÿ ïðîãðàììû P77 } const nmax = 100; type Vector = array [1..nmax] of real; var x : Vector; n : 1..nmax; i : integer; s : real; begin write(’n=’); readln(n); writeln(’Ââåäèòå ’, n, ’ ÷èñåë:’); for i:=1 to n do readln(x [i]); writeln(’Áûëè ââåäåíû:’); for i:=1 to n do writeln(x [i]); s:=0; for i:=1 to n do s:=s+x[i]; writeln(’Ñóììà=’, s); readln; end. Äâóìåðíûå ìàññèâû îïðåäåëÿþòñÿ ñ ïîìîùüþ êîíñòðóêöèè âèäà: type Èìÿ òèïà = array [T1, T2] of T3; ãäå Ò1 è Ò2 óêàçûâàþò òèï èíäåêñîâ, à Ò3 – òèï êîìïîíåíò.  êà÷åñòâå ïðèìåðà íà ðèñ. 1.2 ïðåäñòàâëåíà ñòðóêòóðà äàííûõ òèïà: Matrice = array [1..3, 1..4] of real Ðèñ. 1.2. Ñòðóêòóðà äàííûõ òèïà Matrice Äîñòóï ê êîìïîíåíòàì ïåðåìåííîé òèïà äâóìåðíûé ìàññèâ îñóùåñòâëÿåò- ñÿ ÿâíî ÷åðåç èìÿ ïåðåìåííîé, çà êîòîðîé ñëåäóþò ñîîòâåòñòâóþùèå èíäåê- ñû, ðàçäåëåííûå çàïÿòîé è çàêëþ÷åííûå â êâàäðàòíûå ñêîáêè. Íàïðèìåð, ïðè îïèñàíèè var m : Matrice;
  • 10. îáîçíà÷åíèå m[1,1] îçíà÷àåò ññûëêó íà êîìïîíåíòó, ðàñïîëîæåííóþ â ïåðâîé ñòðîêå è â ïåðâîì ñòîëáöå (ñì. ðèñ. 1.2); îáîçíà÷åíèå m[1,2] îçíà÷àåò ññûëêó íà êîìïîíåíòó, ðàñïîëîæåííóþ â ïåðâîé ñòðîêå è âòîðîì ñòîëáöå; îáîçíà÷å- íèå m[i,j] îçíà÷àåò ññûëêó íà êîìïîíåíòó, ðàñïîëîæåííóþ â ñòðîêå i è â ñòîëáöå j. Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ñóììó êîìïîíåíò ïåðåìåííîé m òèïà Matrice. Çíà÷åíèÿ êîìïîíåíò m[1,1], m[1,2], …, m[3,4] ââîäÿòñÿ ñ êëàâèàòóðû. Program P79; { Ñóììà êîìïîíåíò ïåðåìåííîé m òèïà Matrice } type Matrice = array [1..3, 1..4] of real; var m : Matrice; i, j : integer; s : real; begin writeln(’Ââåäèòå êîìïîíåíòû m[i,j]:’); for i:=1 to 3 do for j:=1 to 4 do begin write(’m[’, i, ’,’, j, ’]=’); readln(m[i,j]); end; writeln(’Áûëè ââåäåíû:’); for i:=1 to 3 do begin for j:=1 to 4 do write(m[i,j]); writeln; end; s:=0; for i:=1 to 3 do for j:=1 to 4 do s:=s+m[i,j]; writeln(’Ñóììà=’, s); readln; end.  îáùåì âèäå òèï n-ìåðíûé ìàññèâ (n = 1, 2, 3 è ò.ä.) îïðåäåëÿåòñÿ ñ ïîìîùüþ ñèíòàêñè÷åñêèõ äèàãðàìì, ïðèâåäåííûõ íà ðèñ. 1.3. Ñëîâî packed (óïàêîâàííûé) óêàçûâàåò êîìïèëÿòîðó, ÷òî îáëàñòü ïàìÿòè äëÿ ýëåìåíòîâ òèïà array äîëæíà áûòü âûäåëåíà ñ ïðèìåíåíèåì îïòèìèçàöèè. Îòìåòèì, ÷òî â áîëüøèíñòâå êîìïüþòåðîâ èñïîëüçîâàíèå ýòîãî ïðåôèêñà íåîáÿçàòåëü- íî, òàê êàê îïòèìèçàöèÿ îñóùåñòâëÿåòñÿ àâòîìàòè÷åñêè. Åñëè äàíû äâå ïåðåìåííûå òèïà ìàññèâ îäíîãî è òîãî æå áàçîâîãî òèïà, òî èìåíà ýòèõ ïåðåìåííûõ ìîãóò âñòðå÷àòüñÿ â îïåðàöèÿõ ïðèñâàèâàíèÿ. Òàêîå ïðèñâàèâàíèå îçíà÷àåò êîïèðîâàíèå âñåõ êîìïîíåíò ìàññèâà, ðàñïîëîæåííî- ãî â ïðàâîé ÷àñòè, â ìàññèâ, ðàñïîëîæåííûé â ëåâîé ÷àñòè. Íàïðèìåð, ïðè îïèñàíèè var a, b : Matrice;
  • 11. îïåðàòîð a:=b ÿâëÿåòñÿ ïðàâèëüíûì.  ïðèìåðàõ, ðàññìîòðåííûõ âûøå, áàçîâûé òèï (òèï êîìïîíåíò) âñåãäà áûë ïðîñòûì. Òàê êàê áàçîâûé òèï â áîëüøèíñòâå ñëó÷àåâ ìîæåò áûòü ëþáûì, òî íå èñêëþ÷åíà âîçìîæíîñòü îïðåäåëåíèÿ ìàññèâîâ, êîìïîíåíòû êîòîðûõ îòíîñÿòñÿ ê ñîñòàâíîìó òèïó. Ðàññìîòðèì ïðèìåð, â êîòîðîì áàçî- âûì òèïîì ÿâëÿåòñÿ ñàì òèï array. Type Linie = array [1..4] of real; Tabel = array [1..3] of Linie; var L : Linie; T : Tabel; x : real; Ïåðåìåííàÿ T ñîñòîèò èç 3-õ êîìïîíåíò: T[1], T[2] è T[3] òèïà Linie. Ïåðåìåííàÿ L ñîñòîèò èç 4-õ êîìïîíåíò: L[1], L[2], L[3] è L[4] òèïà real. Ñëåäîâàòåëüíî, îïåðàöèè ïðèñâàèâàíèÿ L[1]:=x; x:=L[3]; T[2]:=L; L:=T[1] ÿâëÿþòñÿ ïðàâèëüíûìè. Äîñòóï ê ýëåìåíòàì ïåðåìåííîé T ìîæåò îñóùåñòâëÿòüñÿ ÷åðåç T[i][j] èëè T[i,j]. Çäåñü èíäåêñ i îçíà÷àåò íîìåð êîìïîíåíòû òèïà Linie ïåðå- ìåííîé T, à j – íîìåð êîìïîíåíòû òèïà real êîìïîíåíòû T[i] òèïà Linie. Îòìåòèì, ÷òî îáúÿâëåíèÿ âèäà array [T1 , T2 ] of T3 è array [T1] of array [T2] of T3 îïðåäåëÿþò ðàçëè÷íûå òèïû äàííûõ. Ðèñ. 1.3. Ñèíòàêñè÷åñêàÿ äèàãðàììà Òèï ìàññèâ
  • 12. Ïåðâîå îáúÿâëåíèå îïðåäåëÿåò äâóìåðíûå ìàññèâû ñ êîìïîíåíòàìè òèïà 63. Âòîðîå – îïðåäåëÿåò îäíîìåðíûå ìàññèâû ñ êîìïîíåíòàìè òèïà array [62] of 63.  ïðîãðàììàõ íà ÿçûêå ÏÀÑÊÀËÜ ìàññèâû èñïîëüçóþòñÿ äëÿ ãðóïïèðîâ- êè ïîä îäíèì èìåíåì íåñêîëüêèõ ïåðåìåííûõ, îáëàäàþùèõ îäèíàêîâûìè õàðàêòåðèñòèêàìè. Âîïðîñû è óïðàæíåíèÿ Ê Îïðåäåëèòå òèï èíäåêñîâ è òèï êîìïîíåíò â ñëåäóþùèõ îáúÿâëåíèÿõ: type P = array [1..5] of integer; Culoare = (Galben, Verde, Albastru, Violet); R = array [Culoare] of real; S = array [Culoare, 1..3] of boolean; T = array [boolean] of Culoare; Íàðèñóéòå ñòðóêòóðû äàííûõ òèïà P, R, S è T (ðèñ. 1.1 è 1.2). Ë Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.3 ïóòè, êîòîðûå ñîîòâåòñòâó- þò îáúÿâëåíèÿì èç óïðàæíåíèÿ 1. Ì Íàïèøèòå ìåòàëèíãâèñòè÷åñêèå ôîðìóëû, êîòîðûå ñîîòâåòñòâóþò ñèíòàê- ñè÷åñêîé äèàãðàììå Òèï ìàññèâ ðèñ. 1.3. Í Äàíû îïèñàíèÿ: type Vector = array [1..5] of real; var x, y : Vector; Íàïèøèòå àðèôìåòè÷åñêîå âûðàæåíèå, çíà÷åíèåì êîòîðîãî ÿâëÿåòñÿ: à) ñóììà ïåðâûõ òðåõ êîìïîíåíò ïåðåìåííîé x; á) ñóììà âñåõ êîìïîíåíò ïåðåìåííîé y; â) ïðîèçâåäåíèå âñåõ êîìïîíåíò ïåðåìåííîé x; ã) àáñîëþòíîå çíà÷åíèå òðåòüåé êîìïîíåíòû ïåðåìåííîé y; ä) ñóììà ïåðâûõ êîìïîíåíò ïåðåìåííûõ x è y. Î Äàíû îïèñàíèÿ: type Zi = (L, Ma, Mi, J, V, S, D); Venit = array [Zi] of real; var v : Venit; Êîìïîíåíòû ïåðåìåííîé v ïðåäñòàâëÿþò ñîáîé åæåäíåâíûé äîõîä ïðåä- ïðèÿòèÿ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ: à) âû÷èñëÿåò åæåíåäåëüíûé äîõîä ïðåäïðèÿòèÿ; á) ïîäñ÷èòûâàåò ñðåäíèé åæåäíåâíûé äîõîä; â) îïðåäåëÿåò äåíü, êîãäà áûë ïîëó÷åí íàèáîëüøèé äîõîä; ã) îïðåäåëÿåò äåíü, êîãäà áûë ïîëó÷åí íàèìåíüøèé äîõîä. Ï Äàíû îïèñàíèÿ: type Ora = 0..23; Grade = -40..40; Temperatura = array [Ora] of Grade; var t : Temperatura;
  • 13. ! Êîìïîíåíòû ïåðåìåííîé t ïðåäñòàâëÿþò ñîáîé çíà÷åíèÿ òåìïåðàòóðû, èçìå- ðÿåìîé êàæäûé ÷àñ â òå÷åíèå 24 ÷àñîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ: à) âû÷èñëÿåò ñðåäíþþ òåìïåðàòóðó; á) îïðåäåëÿåò ìèíèìàëüíîå è ìàêñèìàëüíîå çíà÷åíèÿ òåìïåðàòóðû; â) îïðåäåëÿåò ÷àñ (÷àñû), â êîòîðûé áûëà çàðåãèñòðèðîâàíà ìàêñèìàëüíàÿ òåìïåðàòóðà; ã) îïðåäåëÿåò ÷àñ (÷àñû), â êîòîðûé áûëà çàðåãèñòðèðîâàíà ìèíèìàëüíàÿ òåìïåðàòóðà. Ð Äàíû îïèñàíèÿ: type Oras = (Chisinau, Orhei, Balti, Tighina, Tiraspol); Zi = (L, Ma, Mi, J, V, S, D); Consum = array [Oras, Zi] of real; var C : Consum; r : Oras; z : Zi; Êîìïîíåíòà C[r,z] ïåðåìåííîé C ïðåäñòàâëÿåò ñîáîé ïîòðåáëåíèå ýëåê- òðîýíåðãèè ãîðîäà r â äåíü z. Íàïèøèòå ïðîãðàììó, êîòîðàÿ: à) âû÷èñëÿåò êîëè÷åñòâî ýëåêòðîýíåðãèè, ïîòðåáëÿåìîé êàæäûì ãîðîäîì çà íåäåëþ; á) âû÷èñëÿåò êîëè÷åñòâî ýëåêòðîýíåðãèè, ïîòðåáëÿåìîé äàííûìè ãîðîäà- ìè åæåäíåâíî; â) îïðåäåëÿåò ãîðîä ñ ìàêñèìàëüíûì åæåíåäåëüíûì ïîòðåáëåíèåì ýëåê- òðîýíåðãèè; ã) îïðåäåëÿåò ãîðîä ñ ìèíèìàëüíûì åæåíåäåëüíûì ïîòðåáëåíèåì ýëåêòðî- ýíåðãèè; ä) îïðåäåëÿåò äåíü, â êîòîðûé áûëî ïîòðåáëåíî íàèáîëüøåå êîëè÷åñòâî ýëåêòðîýíåðãèè; å) îïðåäåëÿåò äåíü ñ íàèìåíüøèì ïîòðåáëåíèåì ýëåêòðîýíåðãèè. Ñ Äàíû îïèñàíèÿ: type Vector = array [1..5] of real; Matrice = array [1..3, 1..4] of real; Linie = array [1..4] of real; Tabel = array [1..3] of Linie; var V : Vector; M : Matrice; L : Linie; T : Tabel; x : real; i : integer; Êàêèå èç ñëåäóþùèõ îïåðàöèé ïðèñâàèâàíèÿ êîððåêòíû? a) T[3]:=T[1]; f) i:=x; b) M:=T; g) L[3]:=i; c) L:=V; h) i:=M[1,2]; d) L[3]:=x; i) x:=V[4]; e) x:=i; j) L[3]:=V[4];
  • 14. k) T[1]:=4; q) M[1,3]:=L[2]; l) T[2]:=V; r) x:=T[1][2]; m) L:=T[3]; s) x:=M[1]; n) T[1,2]:=M[1,2]; t) L:=M[1]; o) T[1,2]:=M[1,2]; u) V[5]:=M[3,4]; p) M[1]:=4; v) L:=M[3,4]. Ò Èñïîëüçóÿ òèï äàííûõ ìàññèâ, íàïèøèòå ïðîãðàììó, êîòîðàÿ ðåàëèçóåò àëãî- ðèòì Ýðàòîñôåíà äëÿ âû÷èñëåíèÿ ïðîñòûõ ÷èñåë, ìåíüøèõ çàäàííîãî n (n≤200). 1.2. Òèï äàííûõ ñòðîêà ñèìâîëîâ  ñòàíäàðòíîì ÿçûêå òèï äàííûõ ñòðîêà ñèìâîëîâ ÿâëÿåòñÿ ÷àñòíûì ñëó÷àåì òèïà array è îïðåäåëÿåòñÿ êîíñòðóêöèåé âèäà Èìÿ òèïà ::= packed array [1..n] of char; Ìíîæåñòâîì çíà÷åíèé äàííîãî òèïà ÿâëÿþòñÿ âñå ñòðîêè, ñîäåðæàùèå ðîâíî n ñèìâîëîâ. Ïðèìåð: Program P80; { Ñòðîêè ñèìâîëîâ ñ ôèêñèðîâàííîé äëèíîé } type Nume = packed array [1..8] of char; Prenume = packed array [1..5] of char; var N : Nume; P : Prenume; begin N:=’Munteanu’; P:=’Mihai’; writeln(N); writeln(P); readln; end. Ðåçóëüòàò, âûâîäèìûé íà ýêðàí: Munteanu Mihai Òàê êàê ñòðîêè ðàçëè÷íîé äëèíû ïðèíàäëåæàò ðàçíûì òèïàì äàííûõ, â ïðîãðàììå P80 íå äîïóñòèìû ïðèñâàèâàíèÿ âèäà: N:= ’Olaru’; P:= ’Ion’.
  • 15. #  òàêèõ ñëó÷àÿõ ïðîãðàììèñòó íåîáõîäèìî çàïîëíèòü ñîîòâåòñòâóþùåå ïðîñòðàíñòâî ïðîáåëàìè äëÿ òîãî, ÷òîáû â ñòðîêå áûëî ðîâíî n ñèìâîëîâ, íàïðèìåð: N:= ’Olaru ’; P:= ’Ion ’. Çíà÷åíèÿ ëþáîé ïåðåìåííîé v òèïà packed array [1..n] of char ìîæíî ââåñòè ñ êëàâèàòóðû òîëüêî ïóòåì ïîî÷åðåäíîãî ñ÷èòûâàíèÿ ñîîòâåò- ñòâóþùèõ êîìïîíåíò: read(v[1]); read(v[2]); ...; read(v[n]). Îäíàêî âûâåñòè âñþ ñòðîêó íà ýêðàí ìîæíî ñ ïîìîùüþ îäíîãî âûçîâà write(v) èëè writeln(v). Îñîáî âûäåëèì òîò ôàêò, ÷òî ñòðîêè ñèìâîëîâ òèïà packed array [1..n] of char ñîäåðæàò ðîâíî n ñèìâîëîâ, ò. å. ÿâëÿþòñÿ ñòðîêàìè ïîñòîÿííîé äëèíû. Èõ äëèíó íåëüçÿ èçìåíÿòü â ïðîöåññå âûïîëíåíèÿ ñîîòâåòñòâóþùåé ïðîãðàììû. Ýòî óñëîæíÿåò ñîçäàíèå ïðîãðàìì, ïðåäíàçíà÷åííûõ äëÿ îáðà- áîòêè ñòðîê ñèìâîëîâ ïðîèçâîëüíîé äëèíû. ×òîáû óñòðàíèòü óêàçàííûé íåäîñòàòîê, ñîâðåìåííûå âåðñèè ÿçûêà ÏÀÑ- ÊÀËÜ ðàçðåøàþò èñïîëüçîâàíèå ñòðîê ñèìâîëîâ ïðîèçâîëüíîé äëèíû.  âåðñèè Turbo PASCAL òèï äàííûõ ñòðîêà ñèìâîëîâ, ìíîæåñòâîì çíà÷å- íèé êîòîðîãî ÿâëÿþòñÿ ñòðîêè ïðîèçâîëüíîé äëèíû, îïðåäåëÿåòñÿ ñ ïîìîùüþ êîíñòðóêöèè âèäà: type Èìÿ òèïà = string; èëè type Èìÿ òèïà = string [nmax]; ãäå nmax – ìàêñèìàëüíàÿ äëèíà, êîòîðóþ ìîãóò èìåòü ñîîòâåòñòâóþùèå ñòðîêè. Ïðè îòñóòñòâèè ïàðàìåòðà nmax ìàêñèìàëüíàÿ äëèíà óñòàíàâëèâàåò- ñÿ ïî óìîë÷àíèþ, êàê ïðàâèëî – 255 ñèìâîëîâ. Ê ñòðîêàì òèïà string ìîæíî ïðèìåíÿòü îïåðàöèþ êîíêàòåíàöèè (ñêëåè- âàíèÿ), îáîçíà÷àåìóþ çíàêîì «+». Òåêóùóþ äëèíó ëþáîé ïåðåìåííîé v òèïà string ìîæíî óçíàòü ñ ïîìîùüþ ñòàíäàðòíîé ôóíêöèè length(v), êîòîðàÿ âîçâðàùàåò çíà÷åíèå òèïà integer. Íåçàâèñèìî îò äëèíû âñå ñòðîêè ñèìâî- ëîâ òèïà string ÿâëÿþòñÿ ñîâìåñòèìûìè. Ïðèìåð: Program P81; { Ñòðîêè ñèìâîëîâ ïðîèçâîëüíîé äëèíû } type Nume = string [8]; Prenume = string [5]; NumePrenume = string; var N : Nume; P : Prenume; NP : NumePrenume; L : integer;
  • 16. $ begin N:=’Munteanu’; L:=length(N); writeln(N, L:4); P:=’Mihai’; L:=length(P); writeln(P, L:4); NP:=N+’ ’+P; L:=length(NP); writeln(NP, L:4); N:=’Olaru’; L:=length(N); writeln(N, L:4); P:=’Ion’; L:=length(P); writeln(P, L:4); NP:=N+’ ’+P; L:=length(NP); writeln(NP, L:4); readln; end. Ðåçóëüòàòû, âûâîäèìûå íà ýêðàí: Munteanu 8 Mihai 5 Munteanu Mihai 14 Olaru 5 Ion 3 Olaru Ion 9 Îòìåòèì, ÷òî â ïðîöåññå âûïîëíåíèÿ äàííîé ïðîãðàììû äëèíà ñòðîê ñèìâîëîâ N, P è NP èçìåíÿåòñÿ. Ê ñòðîêàì ñèìâîëîâ ìîæíî ïðèìåíÿòü îïåðàöèè îòíîøåíèÿ , =, =, =, , . Ñòðîêè ñðàâíèâàþòñÿ ïîñèìâîëüíî, ñëåâà íàïðàâî, â ñîîòâåòñòâèè ñ ïîðÿäêîâûìè íîìåðàìè ñèìâîëîâ òèïà äàííûõ char. Îáà îïåðàíäà äîëæíû îòíîñèòüñÿ ê òèïó packed array [1..n] of char ñ îäèíàêîâûì ÷èñëîì êîìïîíåíò ëèáî ê òèïó string. Åñòåñòâåííî, ÷òî îïåðàíäû òèïà string ìîãóò áûòü ðàçëè÷íîé äëèíû. Íàïðèìåð, ðåçóëüòàòîì îïåðàöèè ’AC’ ’BA’ ÿâëÿåòñÿ true, à ðåçóëüòàòîì îïåðàöèè ’AAAAC’ ’AAAAB’ ÿâëÿåòñÿ false. Ïåðåìåííóþ òèïà ñòðîêà ñèìâîëîâ ìîæíî èñïîëüçîâàòü ïîëíîñòüþ èëè ÷àñòè÷íî, îáðàùàÿñü ê îòäåëüíîìó ñèìâîëó ñòðîêè. Íàïðèìåð, â ñòðîêå P=’Mihai’ èìååì P[1]=’M’, P[2]=’i’, P[3]=’h’ è ò. ä. Ïîñëå âûïîëíåíèÿ ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ P[1]:=’P’; P[2]:=’e’; P[3]:=’t’; P[4]:=’r’; P[5]:=’u’ ïåðåìåííàÿ P ïðèìåò çíà÷åíèå ’Petru’. Ñëåäóþùàÿ ïðîãðàììà ââîäèò ñ êëàâèàòóðû ïðîèçâîëüíûå ñòðîêè ñèìâî- ëîâ è âûâîäèò íà ýêðàí êîëè÷åñòâî ïðîáåëîâ â ñîîòâåòñòâóþùåé ñòðîêå. Ðàáîòà ïðîãðàììû çàâåðøàåòñÿ ïîñëå ââåäåíèÿ ñòðîêè ’Sfîrºit’.
  • 17. % Program P82; { Êîëè÷åñòâî ïðîáåëîâ â ñòðîêå ñèìâîëîâ } var S : string; i, j : integer; begin writeln(’Ââåäèòå ñòðîêó ñèìâîëîâ:’); repeat readln(S); i:=0; for j:=1 to length(S) do if S[j]=’ ’ then i:=i+1; writeln(’Êîëè÷åñòâî ïðîáåëîâ=’, i); until S=’Sfarsit’; end. Âîïðîñû è óïðàæíåíèÿ Ê Êàê îïðåäåëÿåòñÿ òèï äàííûõ ñòðîêà ñèìâîëîâ? Ë Êàêèå îïåðàöèè ìîæíî ïðèìåíÿòü ê ñòðîêàì ñèìâîëîâ? Ì Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó: Program P83; { Îøèáêà } var S : packed array [1..5] of char; begin S:=’12345’; writeln(S); S:=’Sfat’; writeln(S); end. Í Íàïèøèòå ïðîãðàììó, êîòîðàÿ: à) îïðåäåëÿåò, ñêîëüêî ðàç âñòðå÷àåòñÿ â ñòðîêå ñèìâîë ’A’; á) çàìåíÿåò ñèìâîë ’A’ ñèìâîëîì ’*’; â) óäàëÿåò èç ñòðîêè ñèìâîë ’B’; ã) îïðåäåëÿåò, ñêîëüêî ðàç âñòðå÷àåòñÿ â ñòðîêå ñëîã ’MA’; ä) çàìåíÿåò ñëîã ’MA’ ñëîãîì ’TA’; å) óäàëÿåò èç ñòðîêè ñëîã ’TO’. Î Îïðåäåëèòå ðåçóëüòàòû îïåðàöèé îòíîøåíèÿ: a) ’B’ ’A’; f) ’BB ’ ’B B’; b) ’BB’ ’AA’; g) ’A’ = ’a’; c) ’BAAAA’ ’AAAAA’; h) ’Aa’ ’aA’; d) ’CCCCD’ ’CCCCA’; i) ’123’ = ’321’; e) ’A A’ = ’AA’; j) ’12345’ ’12345’.
  • 18. Ï Äàíû ñòðîêè ñèìâîëîâ, ñîñòîÿùèå èç ïðîïèñíûõ áóêâ ëàòèíñêîãî àëôàâèòà è ïðîáåëîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí äàííûå ñòðîêè ñîãëàñíî ñëåäóþùèì ïðàâèëàì: – âñå áóêâû îò ’A’ äî ’Y’ çàìåíÿþòñÿ ïîñëåäóþùèìè áóêâàìè àëôàâèòà; – êàæäàÿ áóêâà ’Z’ çàìåíÿåòñÿ áóêâîé ’A’; – âñå ïðîáåëû çàìåíÿþòñÿ çíàêîì ’–’. Ð Íàïèøèòå ïðîãðàììó, êîòîðàÿ ðàñøèôðîâûâàåò ñòðîêè ñèìâîëîâ, çàøèô- ðîâàííûå ñîãëàñíî ïðàâèëàì èç óïðàæíåíèÿ 6. Ñ Äàíî m (m ≤ 100) ñòðîê, ñîñòîÿùèõ èç ñòðî÷íûõ áóêâ ëàòèíñêîãî àëôàâè- òà. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí äàííûå ñòðîêè â àëôàâèòíîì ïîðÿäêå. Ò Ñòðîêà S ñîñòàâëåíà èç íåñêîëüêèõ ïðåäëîæåíèé, êàæäîå èç êîòîðûõ çàêàí÷è- âàåòñÿ òî÷êîé, âîñêëèöàòåëüíûì èëè âîïðîñèòåëüíûì çíàêîì. Íàïèøèòå ïðî- ãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ïðåäëîæåíèé â äàííîé ñòðîêå. 1.3. Òèï äàííûõ çàïèñü (record) Ìíîæåñòâî çíà÷åíèé òèïà äàííûõ record ñîñòîèò èç çàïèñåé. Çàïèñè ñîñòîÿò èç êîìïîíåíòîâ, íàçûâàåìûõ ïîëÿìè.  îòëè÷èå îò ýëåìåíòîâ ìàññè- âà ïîëÿ ìîãóò îòíîñèòüñÿ ê ðàçíûì òèïàì. Êàæäîå ïîëå èìååò ñâîå èìÿ (èäåíòèôèêàòîð ïîëÿ). Òèï äàííûõ çàïèñü îïðåäåëÿåòñÿ ñòðóêòóðîé âèäà type Èìÿ òèïà = record Èìÿ ïîëÿ 1 : T1; Èìÿ ïîëÿ 2 : T2; ... Èìÿ ïîëÿ n : Tn; end; ãäå T1, T2, … Tn óêàçûâàþò òèï ñîîòâåòñòâóþùèõ ïîëåé. Òèï ëþáîãî ïîëÿ ìîæåò áûòü ïðîèçâîëüíûì, çíà÷èò, ïîëå, â ñâîþ î÷åðåäü, ìîæåò îòíîñèòüñÿ ê òèïó çàïèñü. Òàêèì îáðàçîì ìîæíî îïðåäåëÿòü âëîæåííûå òèïû. Ïðèìåðû: 1) type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; var E1, E2 : Elev; 2) type Punct = record x : real; { êîîðäèíàòà x } y : real; { êîîðäèíàòà y } end; var P1, P2 : Punct;
  • 19. ' 3) type Triunghi = record A : Punct; { âåðøèíà A } B : Punct; { âåðøèíà B } C : Punct; { âåðøèíà C } end; var T1, T2, T3 : Triunghi; Ñòðóêòóðà äàííûõ èç ïðèâåäåííûõ âûøå ïðèìåðîâ ïðåäñòàâëåíà íà ðèñ. 1.4. Åñëè äâå ïåðåìåííûå îòíîñÿòñÿ ê îäíîìó è òîìó æå òèïó çàïèñü, òî ìåæäó íèìè ðàçðåøåíà îïåðàöèÿ ïðèñâàèâàíèÿ. Ïðè òàêîì ïðèñâàèâàíèè âñå ïîëÿ ïåðåìåííîé, ñòîÿùåé â ïðàâîé ÷àñòè, êîïèðóþòñÿ â ïåðåìåííóþ, ñòîÿùóþ â ëåâîé ÷àñòè. Íàïðèìåð, äëÿ òèïîâ äàííûõ è ïåðåìåííûõ, îïðå- äåëåííûõ âûøå, ñëåäóþùèå îïåðàöèè êîððåêòíû: E1:=E2; T2:=T3; P2:=P1 Ê êàæäîìó ýëåìåíòó ëþáîé ïåðåìåííîé òèïà record ìîæíî îáðà- ùàòüñÿ ÿâíî, ïî èìåíè ïåðåìåííîé è íàçâàíèþ ïîëÿ, êîòîðûå ðàçäåëÿ- þòñÿ òî÷êîé. Ïðèìåðû: 1) E1.Nume, E1.Prenume, E1.NotaMedie; 2) E2.Nume, E2.Prenume, E2.NotaMedie; 3) P1.x, P1.y, P2.x, P2.y; 4) T1.A, T1.B, T1.C, T2.A, T2.B, T2.C; 5) T1.A.x, T1.A.y, T2.B.x, T2.B.y. Ðèñ. 1.4. Ñòðóêòóðà äàííûõ òèïà Elev, Punct è Triunghi
  • 20. Î÷åâèäíî, ýëåìåíò E1. Nume îòíîñèòñÿ ê òèïó string; ýëåìåíò P1.x – ê òèïó real; ýëåìåíò T1.A – ê òèïó Punct; ýëåìåíò T1.A.x – ê òèïó real è ò. ä. Ê ýëåìåíòàì äàííûõ òèïà çàïèñü ìîæíî ïðèìåíÿòü âñå îïåðàöèè, äîïóñ- òèìûå â òèïå ñîîòâåòñòâóþùåãî ïîëÿ. Ñëåäóþùàÿ ïðîãðàììà ñðàâíèâàåò ñðåäíèå áàëëû äâóõ ó÷åíèêîâ è âûâîäèò íà ýêðàí èìÿ è ôàìèëèþ ó÷åíèêà ñ áîëåå âûñîêèì ñðåäíèì áàëëîì. Ñ÷èòàåòñÿ, ÷òî ñðåäíèå áàëëû ó÷åíèêîâ ðàçëè÷íû. Program P84; { Äàííûå òèïà Elev } type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; var E1, E2, E3 : Elev; begin writeln(’Ââåäèòå äàííûå î ïåðâîì ó÷åíèêå:’); write(’Ôàìèëèÿ:’); readln(E1.Nume); write(’Èìÿ:’); readln(E1.Prenume); write(’Ñðåäíèé áàëë:’); readln(E1.NotaMedie); writeln(’Ââåäèòå äàííûå î âòîðîì ó÷åíèêå:’); write(’Ôàìèëèÿ:’); readln(E2.Nume); write(’Èìÿ:’); readln(E2.Prenume); write(’Ñðåäíèé áàëë:’); readln(E2.NotaMedie); if E1.NotaMedie E2.NotaMedie then E3:=E1 else E3:=E2; writeln(’Ó÷åíèê ñ íàèáîëåå âûñîêèì ñðåäíèì áàëëîì:’); writeln(E3.Nume, ’ ’, E3.Prenume, ’:’, E3.NotaMedie : 5:2); readln; end. Ëþáîé òèï äàííûõ record ìîæåò ñëóæèòü áàçîâûì òèïîì äëÿ ôîðìèðî- âàíèÿ äðóãèõ ñîñòàâíûõ òèïîâ. Ïðèìåð: type ListaElevilor = array [1..40] of Elev; var LE : ListaElevilor; Î÷åâèäíî, îáîçíà÷åíèå LE[i] óêàçûâàåò íà i-ãî ó÷åíèêà èç ñïèñêà; îáî- çíà÷åíèå LE[i]. Nume óêàçûâàåò íà èìÿ äàííîãî ó÷åíèêà è ò.ä. Ñëåäóþùàÿ ïðîãðàììà ââîäèò ñ êëàâèàòóðû äàííûå îá n ó÷åíèêàõ è âûâîäèò íà ýêðàí èìÿ, ôàìèëèþ è ñðåäíèé áàëë ëó÷øåãî ó÷åíèêà. Ñ÷èòàåòñÿ, ÷òî ñðåäíèå áàëëû ó÷åíèêîâ ðàçëè÷íû.
  • 21. Program P85; { Ìàññèâ ñ ýëåìåíòàìè òèïà Elev } type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; ListaElev = array [1..40] of Elev; var E : Elev; LE : ListaElev; n : 1..40; i : integer; begin write(’n=’); readln(n); for i:=1 to n do begin writeln(’Ââåäèòå äàííûå îá ó÷åíèêå  ’, i); write(’Ôàìèëèÿ: ’); readln(LE[i].Nume); write(’Èìÿ: ’); readln(LE[i].Prenume); write(’Ñðåäíèé áàëë: ’); readln(LE[i].NotaMedie); end; E.NotaMedie:=0; for i:=1 to n do if LE[i].NotaMedie E.NotaMedie then E:=LE[i]; writeln(’Ëó÷øèé ó÷åíèê:’); writeln(E.Nume, ’ ’, E.Prenume, ’:’, E.NotaMedie : 5:2); readln; end.  îáùåì ñëó÷àå òèï äàííûõ çàïèñü îïðåäåëÿåòñÿ ñ ïîìîùüþ ñèíòàêñè÷åñêèõ äèàãðàìì íà ðèñ. 1.5.  äîïîëíåíèå ê ôèêñèðîâàííûì çàïèñÿì (ñ ôèêñèðîâàí- íûì êîëè÷åñòâîì ïîëåé) ÿçûê ÏÀÑÊÀËÜ ïîçâîëÿåò èñïîëüçîâàíèå âàðèàíòíûõ çàïèñåé, êîòîðûå èçó÷àþòñÿ â áîëåå óãëóáëåííûõ êóðñàõ èíôîðìàòèêè. Ðèñ. 1.5. Ñèíòàêñè÷åñêàÿ äèàãðàììà Òèï çàïèñü
  • 22. Âîïðîñû è óïðàæíåíèÿ Ê Óêàæèòå ìíîæåñòâî çíà÷åíèé òèïà äàííûõ çàïèñü. Ë Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.5 ïóòè, êîòîðûå ñîîòâåòñòâó- þò îïðåäåëåíèÿì òèïîâ äàííûõ çàïèñü èç ïðîãðàìì P84 è P85. Ì Íàïèøèòå ìåòàëèíãâèñòè÷åñêèå ôîðìóëû äëÿ ñèíòàêñè÷åñêîé äèàãðàììû íà ðèñ. 1.5. Í Äàíû ñëåäóþùèå òèïû äàííûõ: type Data = record Ziua : 1..31; Luna : 1..12; Anul : integer; end; Persoana = record NumePrenume : string; DataNasterii : Data; end; ListaPersoane = array [1..50] of Persoana; Íàïèøèòå ïðîãðàììó, êîòîðàÿ ââîäèò ñ êëàâèàòóðû äàííûå î n ëèöàõ (n≤50) è âûâîäèò íà ýêðàí: à) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â äåíü z ìåñÿöà; á) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â ìåñÿö l ãîäà; â) ôàìèëèè è èìåíà òåõ, êòî ðîäèëñÿ â ãîä a; ã) ôàìèëèè è èìåíà òåõ, ÷üÿ äàòà ðîæäåíèÿ z.l.a; ä) ôàìèëèþ è èìÿ ñàìîãî ñòàðøåãî ÷åëîâåêà; å) ôàìèëèþ è èìÿ ñàìîãî ìëàäøåãî ÷åëîâåêà; æ) âîçðàñò êàæäîãî ÷åëîâåêà â ãîäàõ, ìåñÿöàõ è äíÿõ; ç) ñïèñîê ëèö ñòàðøå v ëåò; è) ñïèñîê ëèö â àëôàâèòíîì ïîðÿäêå; ê) ñïèñîê ëèö, óïîðÿäî÷åííûé ñîãëàñíî äàòå ðîæäåíèÿ; ë) ñïèñîê ëèö îäíîãî âîçðàñòà (ðîæäåííûõ â îäíîì è òîì æå ãîäó). Î Äàíî n (n≤30) òî÷åê íà åâêëèäîâîé ïëîñêîñòè. Êàæäàÿ òî÷êà i îïðåäåëÿåòñÿ êîîðäèíàòàìè xi, yi. Ðàññòîÿíèå ìåæäó òî÷êàìè i, j âû÷èñëÿåòñÿ ïî ôîðìóëå . Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîîðäèíàòû äâóõ òî÷åê, ðàññòîÿíèå ìåæäó êîòîðûìè ìàêñèìàëüíî. Ï Ïëîùàäü òðåóãîëüíèêà âû÷èñëÿåòñÿ ïî ôîðìóëå Ãåðîíà , ãäå ð – ïîëóïåðèìåòð, a, b è ñ – äëèíû ñîîòâåòñòâóþùèõ ñòîðîí. Èñïîëü- çóÿ òèïû äàííûõ Punct è Triunghi èç äàííîãî ïàðàãðàôà, íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû èíôîðìàöèþ î n òðåóãîëüíè- êàõ (n≤10) è âûâîäèò íà ýêðàí: à) ïëîùàäü êàæäîãî òðåóãîëüíèêà; á) êîîðäèíàòû âåðøèí òðåóãîëüíèêà, ïëîùàäü êîòîðîãî ìàêñèìàëüíà; â) êîîðäèíàòû âåðøèí òðåóãîëüíèêà, ïëîùàäü êîòîðîãî ìèíèìàëüíà; ã) èíôîðìàöèþ î âñåõ òðåóãîëüíèêàõ â ïîðÿäêå âîçðàñòàíèÿ èõ ïëîùàäåé.
  • 23. ! 1.4. Îïåðàòîð with(c) Ê êàæäîìó ýëåìåíòó ëþáîé ïåðåìåííîé òèïà çàïèñü ìîæíî îáðàùàòüñÿ ÿâíî, ïî èìåíè ïåðåìåííîé è íàçâàíèþ ïîëÿ, êîòîðûå ðàçäåëÿþòñÿ òî÷êîé. Íàïðèìåð, ïðè ñëåäóþùåì îïèñàíèè type Angajat = record NumePrenume : string; ZileLucrate : 1..31; PlataPeZi : real; PlataPeLuna : real; end; var A : Angajat; ê ýëåìåíòàì ïåðåìåííîé A ìîæíî îáðàùàòüñÿ ÷åðåç A.NumePrenume, A.ZileLucrate, A.PlataPeZi è A.PlataPeLuna. Òàê êàê èìÿ A ïåðåìåííîé òèïà çàïèñü ïîñòîÿííî ïîâòîðÿåòñÿ, òî òàêîé ñïîñîá îáðàùåíèÿ ê ýëåìåíòàì ÿâëÿåòñÿ î÷åíü ãðîìîçäêèì. Ýòèõ ïîâòîðåíèé ìîæíî èçáåæàòü ïðè èñïîëüçîâàíèè îïåðàòîðà with (c). Ñèíòàêñèñ äàííîãî îïåðàòîðà: Îïåðàòîð with ::= with Ïåðåìåííàÿ {,Ïåðåìåííàÿ} do Îïåðàòîð Ñèíòàêñè÷åñêàÿ äèàãðàììà ïðåäñòàâëåíà íà ðèñ. 1.6. Âíóòðè îïåðàòîðà with ê ýëåìåíòàì îäíîé èëè íåñêîëüêèõ ïåðåìåííûõ òèïà çàïèñü ìîæíî îáðàùàòüñÿ òîëüêî ïî èìåíè ñîîòâåòñòâóþùåãî ïîëÿ. Ïðèìåð: with A do PlataPeLuna:=PlataPeZi*ZileLucrate Ýòîò îïåðàòîð ýêâèâàëåíòåí ñëåäóþùåìó: A.PlataPeLuna:=A.PlataPeZi*A.ZileLucrate Èñïîëüçîâàíèå îïåðàòîðà with òðåáóåò îñîáîãî âíèìàíèÿ îò ïðîãðàììè- ñòà, êîòîðûé îáÿçàí îïðåäåëÿòü îäíîçíà÷íûì îáðàçîì ýëåìåíòû ïåðåìåííûõ òèïà çàïèñü. Âíóòðè îïåðàòîðà with, ïðè ïîÿâëåíèè íåêîòîðîãî èäåíòèôè- êàòîðà, âíà÷àëå ïðîâîäèòñÿ ïðîâåðêà òîãî, ìîæåò ëè îí áûòü èíòåðïðåòèðî- âàí êàê èìÿ ïîëÿ ñîîòâåòñòâóþùåé çàïèñè. Åñëè äà, òî îí áóäåò èíòåðïðå- òèðîâàí êàê èìÿ ïîëÿ, äàæå åñëè â äàííûé ìîìåíò äîñòóïíà äðóãàÿ ïåðå- ìåííàÿ ïîä òàêèì æå èìåíåì. Ðèñ. 1.6. Ñèíòàêñè÷åñêàÿ äèàãðàììà îïåðàòîðà with
  • 24. Ïðèìåð: type Punct = record x : real; y : real; end; Segment = record A : Punct; B : Punct; end; var P : Punct; S : Segment; x : integer;  íàøåì ñëó÷àå èäåíòèôèêàòîð x ìîæåò óêàçûâàòü íà ïåðåìåííóþ x òèïà integer èëè íà ïîëå P.x çàïèñè P.  îïåðàòîðå x:=1 èäåíòèôèêàòîð x óêàçûâàåò íà ïåðåìåííóþ x òèïà integer.  îïåðàòîðå with P do x:=1 èäåíòèôèêàòîð x óêàçûâàåò íà ïîëå P.x ïåðåìåííîé P òèïà Punct. Òàê êàê ïåðåìåííàÿ S òèïà Segment íå ñîäåðæèò ïîëÿ ñ èìåíåì S.x, òî â îïåðàòîðå with S do x:=1 èäåíòèôèêàòîð x áóäåò èíòåðïðåòèðîâàí êàê ïåðåìåííàÿ x òèïà integer. Îïåðàòîð âèäà with v1, v2, ..., vn do Îïåðàòîð, ãäå v1, v2, ..., vn – ïåðåìåííûå òèïà çàïèñü, ýêâèâàëåíòåí îïåðàòîðó: with v1 do with v2 do {...} with vn do Îïåðàòîð. Î÷åâèäíî, ÷òî ïîëÿ çàïèñåé v1, v2, ..., vn äîëæíû áûòü îïðåäåëåíû îäíîç- íà÷íî. Íàïðèìåð, äëÿ ïåðåìåííûõ P è S, îïèñàííûõ âûøå, ìîæíî çàïèñàòü: with P, S do begin x:=1.0; { ññûëêà íà P.x } y:=1.0;
  • 25. # A.x:=0; { ññûëêà íà S.A.x } A.y:=0; B.x:=2.0; { ññûëêà íà S.B.x } B.y:=2.0; end; Êàê ïðàâèëî, îïåðàòîð with èñïîëüçóåòñÿ òîëüêî â òåõ ñëó÷àÿõ, êîãäà ýòî ïðèâîäèò ê çíà÷èòåëüíîìó ñîêðàùåíèþ òåêñòà ïðîãðàììû. Âîïðîñû è óïðàæíåíèÿ Ê Óêàæèòå íà ñèíòàêñè÷åñêîé äèàãðàììå ðèñ. 1.6 ïóòè, êîòîðûå ñîîòâåòñòâó- þò îïåðàòîðàì with èç ïðèìåðîâ, ïðèâåäåííûõ â äàííîì ïàðàãðàôå. Ë Â ÷åì íàçíà÷åíèå îïåðàòîðà with? Ì Èñïîëüçóÿ îïåðàòîð with, èñêëþ÷èòå èç ïðîãðàìì P84 è P85, ðàññìîòðåí- íûõ â ïðåäûäóùåì ïàðàãðàôå, ïîâòîðåíèÿ òèïà E1.Nume, E1.Prenume, ..., LE[i].Nume, LE[i].Prenume. Í Äàíû ñëåäóþùèå òèïû äàííûõ: type Angajat = record NumePrenume : string; ZileLucrate : 1..31; PlataPeZi : real; PlataPeLuna : real; end; ListaDePlata = array [1..50] of Angajat; Åæåìåñÿ÷íàÿ çàðïëàòà êàæäîãî ðàáîòíèêà âû÷èñëÿåòñÿ ïóòåì óìíîæåíèÿ åæåäíåâíîé ïëàòû íà êîëè÷åñòâî îòðàáîòàííûõ äíåé. Íàïèøèòå ïðîãðàì- ìó, êîòîðàÿ: à) âû÷èñëÿåò åæåìåñÿ÷íóþ çàðïëàòó êàæäîãî ðàáîòíèêà; á) âû÷èñëÿåò ñðåäíþþ çàðïëàòó âñåõ ðàáîòíèêîâ, âêëþ÷åííûõ â ñïèñîê; â) âûâîäèò íà ýêðàí äàííûå î âñåõ ðàáîòíèêàõ, åæåìåñÿ÷íàÿ çàðïëàòà êîòîðûõ ìàêñèìàëüíà; ã) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â àëôàâèòíîì ïîðÿäêå; ä) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ åæåäíåâ- íîé ïëàòû; å) óïîðÿäî÷èâàåò ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ åæåìåñÿ÷íîé çàðïëàòû; æ) âûâîäèò íà ýêðàí ñïèñîê ðàáîòíèêîâ â ïîðÿäêå âîçðàñòàíèÿ êîëè÷åñòâà îòðàáîòàííûõ äíåé. Î Îêðóæíîñòü ìîæåò áûòü çàäàíà ÷åðåç êîîðäèíàòû õ, ó öåíòðà è ðàäèóñ r. Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äàííûå îá n îê- ðóæíîñòÿõ (n≤50) è âûâîäèò íà ýêðàí: à) êîîðäèíàòû öåíòðà è ðàäèóñ îêðóæíîñòè, êîòîðàÿ îïèñûâàåò êðóã ìàê- ñèìàëüíîé ïëîùàäè;
  • 26. $ á) êîëè÷åñòâî îêðóæíîñòåé, âõîäÿùèõ â êðóã ñ ìàêñèìàëüíûì ðàäèóñîì, è êîîðäèíàòû ñîîòâåòñòâóþùèõ öåíòðîâ; â) êîîðäèíàòû öåíòðà è ðàäèóñ îêðóæíîñòè, êîòîðàÿ îïèñûâàåò êðóã ìè- íèìàëüíîé ïëîùàäè; ã) êîëè÷åñòâî îêðóæíîñòåé, â êîòîðûå âõîäèò êðóã ñ ìèíèìàëüíûì ðàäèó- ñîì, è êîîðäèíàòû ñîîòâåòñòâóþùèõ öåíòðîâ. 1.5. Òèï äàííûõ ìíîæåñòâî (set) Òèï äàííûõ ìíîæåñòâî (set) îïðåäåëÿåòñÿ ïî îòíîøåíèþ ê áàçîâîìó òèïó, êîòîðûé äîëæåí áûòü ïîðÿäêîâûì: Òèï ìíîæåñòâî ::= [packed] set of Òèï Çíà÷åíèÿìè òèïà äàííûõ set ÿâëÿþòñÿ ìíîæåñòâà, ñîñòîÿùèå èç çíà÷å- íèé áàçîâîãî òèïà. Åñëè áàçîâûé òèï èìååò n çíà÷åíèé, òî òèï ìíîæåñòâî áóäåò èìåòü 2n çíà÷åíèé. Çíà÷åíèå n îãðàíè÷åíî: n≤256.  ÿçûêå ÏÀÑÊÀËÜ ýëåìåíòû ìíîæåñòâà ìîãóò ïåðå÷èñëÿòüñÿ â êâàä- ðàòíûõ ñêîáêàõ „[” è „]”, êîòîðûå ÿâëÿþòñÿ àíàëîãîì ôèãóðíûõ ñêîáîê â ìàòåìàòèêå. Çàïèñü [] îçíà÷àåò ïóñòîå ìíîæåñòâî. Ïðèìåðû: type Indice = 1..10; Zi = (L, Ma, Mi, J, V, S, D); MultimeIndicii = set of Indice; ZileDePrezenta = set of Zi; var MI : MultimeIndicii; ZP : ZileDePrezenta; Ïîðÿäêîâûé òèï Indice èìååò n=10 çíà÷åíèé: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Òèï MultimeIndicii èìååò 210 = 1024 çíà÷åíèé, à èìåííî: [], [1], [2], ..., [1, 2], [1, 3], ..., [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Òàêèì îáðàçîì, ïåðåìåííàÿ MI ìîæåò ïðèíèìàòü ëþáîå èç ýòèõ çíà÷åíèé, íàïðèìåð: MI:= [1, 3]. Ïîðÿäêîâûé òèï Zi èìååò n=7 çíà÷åíèé: L, Ma, Mi, J, V, S, D. Òèï ZileDePrezenta èìååò 27 = 128 çíà÷åíèé, à èìåííî: [], [L], [Ma], [Mi], ..., [L, Ma], [L, Mi], ..., [L, Ma, Mi, J, V, S, D]. Ïåðåìåííàÿ ZP ìîæåò ïðèíèìàòü ëþáîå èç ýòèõ çíà÷åíèé, íàïðèìåð: ZP:= [L, Ma, Mi, V]
  • 27. % Çíà÷åíèÿ òèïà ìíîæåñòâî ìîãóò îïðåäåëÿòüñÿ ÷åðåç êîíñòðóêòîð ìíîæåñò- âà. Ñèíòàêñè÷åñêàÿ äèàãðàììà ãðàììàòè÷åñêîé åäèíèöû Êîíñòðóêòîð ìíî- æåñòâà ïðåäñòàâëåíà íà ðèñ. 1.7. Ðèñ. 1.7. Ñèíòàêñè÷åñêàÿ äèàãðàììà Êîíñòðóêòîð ìíîæåñòâà Êîíñòðóêòîð ñîäåðæèò çíà÷åíèÿ ýëåìåíòîâ ìíîæåñòâà, ðàçäåëåííûõ çàïÿ- òûìè è çàêëþ÷åííûõ â êâàäðàòíûå ñêîáêè. Ýëåìåíò ìîæåò ÿâëÿòüñÿ êîí- êðåòíûì çíà÷åíèåì áàçîâîãî òèïà èëè èíòåðâàëîì âèäà: Âûðàæåíèå..Âûðàæåíèå. Çíà÷åíèÿ äàííûõ âûðàæåíèé ïðåäñòàâëÿþò ñîáîé âåðõíèé è íèæíèé ïðåäåëû èíòåðâàëà. Ïðèìåðû: 1) []; 2) [1, 2, 3, 8]; 3) [1..4, 8..10]; 4) [i-k..i+k]; 5) [L, Ma, V..D]. Ê çíà÷åíèÿì òèïà äàííûõ ìíîæåñòâî ìîæíî ïðèìåíÿòü îáû÷íûå îïå- ðàöèè: + îáúåäèíåíèå; * ïåðåñå÷åíèå; – ðàçíîñòü, ðåçóëüòàò êîòîðûõ îòíîñèòñÿ ê òèïó ìíîæåñòâî, è îïåðàöèè îòíîøåíèÿ: = ðàâåíñòâî; íåðàâåíñòâî; =, = âêëþ÷åíèå; in ïðèíàäëåæíîñòü, ðåçóëüòàò êîòîðûõ îòíîñèòñÿ ê òèïó boolean. Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ðåçóëüòàòû îïåðàöèé +, * è –, ïðèìåíÿåìûõ ê ïåðåìåííûì òèïà MultimeIndicii.
  • 28. Program P86; { Äàííûå òèïà MultimeIndicii } type Indice = 1..10; MultimeIndicii = set of Indice; var A, B, C : MultimeIndicii; i : integer; begin A:= [1..5, 8]; { A ñîäåðæèò 1, 2, 3, 4, 5, 8 } B:= [1..3, 9, 10]; { B ñîäåðæèò 1, 2, 3, 9, 10 } C:= []; { C ÿâëÿåòñÿ ïóñòûì ìíîæåñòâîì } C:=A+B; { C ñîäåðæèò 1, 2, 3, 4, 5, 8, 9, 10 } writeln(’Îáúåäèíåíèå’); for i:=1 to 10 do if i in C then write(i:3); writeln; C:=A*B; { C ñîäåðæèò 1, 2, 3 } writeln(’Ïåðåñå÷åíèå’); for i:=1 to 10 do if i in C then write(i:3); writeln; C:=A-B; { C ñîäåðæèò 4, 5, 8 } writeln(’Ðàçíîñòü’); for i:=1 to 10 do if i in C then write(i:3); writeln; readln; end.  îòëè÷èå îò ìàññèâîâ è çàïèñåé, ê ýëåìåíòàì êîòîðûõ ñóùåñòâóåò ïðÿ- ìîé äîñòóï ñîîòâåòñòâåííî ÷åðåç èíäåêñû è íàçâàíèÿ ïîëåé, ê ýëåìåíòàì ìíîæåñòâà ïðÿìîãî äîñòóïà íåò. Äîïóñêàåòñÿ òîëüêî ïðîâåðêà íà ïðèíàä- ëåæíîñòü ýëåìåíòà ìíîæåñòâó (îïåðàöèÿ îòíîøåíèÿ in). Áëàãîäàðÿ ýòîìó ïðè èñïîëüçîâàíèè òèïîâ äàííûõ ìíîæåñòâî óâåëè÷èâàåòñÿ ñêîðîñòü ðàáîòû è óëó÷øàåòñÿ ÷èòàáåëüíîñòü ïðîãðàìì PASCAL. Íàïðèìåð, îïåðàòîð: if (c=’A’) or (c=’E’) or (c=’I’) or (c=’O’) or (c=’U’) then ... ìîæíî çàìåíèòü áîëåå ïðîñòûì îïåðàòîðîì: if c in [’A’,’E’,’I’,’O’,’U’] then ... Äðóãèì ïðèìåðîì ÿâëÿåòñÿ èñïîëüçîâàíèå òèïîâ äàííûõ ìíîæåñòâî äëÿ âû÷èñëåíèÿ ïðîñòûõ ÷èñåë, ìåíüøèõ çàäàííîãî n, ãäå n – íàòóðàëüíîå ÷èñëî. Äëÿ ýòîãî èñïîëüçóåòñÿ àëãîðèòì Ðåøåòî Ýðàòîñôåíà: 1) â ðåøåòå íàõîäÿòñÿ ÷èñëà 2, 3, 4, ..., n; 2) èç ðåøåòà óäàëÿåòñÿ íàèìåíüøåå ÷èñëî i;
  • 29. ' 3) óêàçàíîå ÷èñëî âêëþ÷àåòñÿ â ìíîæåñòâî ïðîñòûõ ÷èñåë; 4) èç ðåøåòà óäàëÿþòñÿ âñå ÷èñëà m êðàòíûå ÷èñëó i; 5) ïðîöåññ çàâåðøàåòñÿ, êîãäà ðåøåòî ñòàíîâèòñÿ ïóñòûì. Program P87; { Ðåøåòî Ýðàòîñôåíà } const n = 50; type MultimeDeNumere = set of 1..n; var Sita, NumerePrime : MultimeDeNumere; i, m : integer; begin {1} Sita:= [2..n]; NumerePrime:=[]; i:=2; repeat {2} while not (i in Sita) do i:=succ(i); {3} NumerePrime:=NumerePrime+[i]; write(i:4); m:=i; {4} while m=n do begin Sita:=Sita-[m]; m:=m+i; end; {5} until Sita=[]; writeln; readln; end. Öèôðû 1, 2, 3, 4, 5, ñòîÿùèå â ôèãóðíûõ ñêîáêàõ â ëåâîé ÷àñòè ïðîãðàì- ìû, ñîîòâåòñòâóþò ïóíêòàì àëãîðèòìà Ýðàòîñôåíà. Âîïðîñû è óïðàæíåíèÿ Ê Ïåðå÷èñëèòå äîïóñòèìûå çíà÷åíèÿ ïåðåìåííûõ, îïèñàííûõ íèæå: var V : set of ’A’..’C’; S : set of (A, B, C); I : set of ’1’..’2’; J : set of 1..2; Ë Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó: Program P88; { Îøèáêà } type Multime = set of integer; var M : Multime; i : integer; begin M:=[1, 8, 13]; for i:=1 to MaxInt do if i in M then writeln(i); end.
  • 30. ! Ì Äàíû ñëåäóþùèå îïèñàíèÿ: type Culoare = (Galben, Verde, Albastru, Violet); Nuanta = set of Culoare; var NT : Nuanta; Êàêèå çíà÷åíèÿ ìîæåò ïðèíèìàòü ïåðåìåííàÿ NT? Í Íàïèøèòå ìåòàëèíãâèñòè÷åñêóþ ôîðìóëó, êîòîðàÿ ñîîòâåòñòâóåò ñèíòàê- ñè÷åñêîé äèàãðàììå Êîíñòðóêòîð ìíîæåñòâà ðèñ. 1.7. Î Ðàññìàòðèâàåòñÿ òèï äàííûõ MultimeIndicii, îïèñàííûé â ýòîì ïàðàãðà- ôå. Ïåðå÷èñëèòå ýëåìåíòû ìíîæåñòâ, îïðåäåëÿåìûõ ñëåäóþùèìè êîíñò- ðóêòîðàìè: a) []; f) [4..3]; b) [1..10]; g) [1..3, 7..6, 9]; c) [1..3, 9..10]; h) [4-2..7+1]; d) [1+1, 4..7, 9]; i) [7-5..4+4]; e) [3, 7..9]; j) [6, 9, 1..2]. Ï Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí âñå ïîäìíîæåñòâà ìíî- æåñòâà: {1, 2, 3, 4}. Ð Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí âñå ïîäìíîæåñòâà ìíî- æåñòâà: {’A’, ’B’, ’C’, ’D’}. Ñ Äàíà ñòðîêà ñèìâîëîâ, â êîòîðîé ñëîâà ðàçäåëÿþòñÿ ïðîáåëîì èëè ñèìâî- ëàìè: òî÷êà, çàïÿòàÿ, òî÷êà ñ çàïÿòîé, âîñêëèöàòåëüíûé çíàê, âîïðîñè- òåëüíûé çíàê. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñëîâà, âõîäÿùèå â ñîñòàâ ïðîèçâîëüíîé ñòðîêè, ñ÷èòûâàåìîé ñ êëàâèàòóðû. Ò Äàíà ñòðîêà ñèìâîëîâ. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ãëàñíûõ â ñòðîêå. Ó Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äâå ñòðîêè ñèìâî- ëîâ è âûâîäèò íà ýêðàí: à) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ õîòÿ áû â îäíîé èç ñòðîê; á) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ â îáåèõ ñòðîêàõ; â) ñèìâîëû, êîòîðûå âñòðå÷àþòñÿ â ïåðâîé ñòðîêå è íå âñòðå÷àþòñÿ âî âòîðîé. Íàïèøèòå ïðîãðàììó, êîòîðàÿ ïðîâåðÿåò ïðàâèëüíîñòü ââåäåíèÿ â êîì- ïüþòåð èìåíè ÷åëîâåêà (ïîä èìåíåì ïîíèìàåòñÿ ïîñëåäîâàòåëüíîñòü ñèì- âîëîâ, íå ñîäåðæàùàÿ öèôð).  ñîâðåìåííûõ âåðñèÿõ ÿçûêà êîëè÷åñòâî çíà÷åíèé áàçîâîãî òèïà ëþáîãî òèïà ìíîæåñòâî îãðàíè÷åíî, îáû÷íî n≤256. Îòñþäà ñëåäóåò, ÷òî ïðîãðàì- ìà Ð87 íå ìîæåò íàõîäèòü ïðîñòûå ÷èñëà áîëüøå n. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âû÷èñëÿåò ïðîñòûå ÷èñëà èç èíòåðâàëà 8, ..., 10000. Óêàçàíèå. Ðåøåòî èç àëãîðèòìà Ýðàòîñôåíà ìîæíî ïðåäñòàâèòü â âèäå ìàññèâà, ýëåìåíòàìè êîòîðîãî ÿâëÿþòñÿ ìíîæåñòâà.
  • 31. ! 1.6. Ôàéëû Ïîä ôàéëîì ïîíèìàþò ñòðóêòóðó äàííûõ, êîòîðàÿ ñîñòîèò èç ïîñëåäîâà- òåëüíîñòè êîìïîíåíò. Âñå êîìïîíåíòû ôàéëà îòíîñÿòñÿ ê îäíîìó è òîìó æå òèïó, êîòîðûé íàçûâàåòñÿ áàçîâûì. ×èñëî êîìïîíåíòîâ ôàéëà ÿâëÿåòñÿ ïðî- èçâîëüíûì, îäíàêî êîíåö ôàéëà îáîçíà÷àåòñÿ ñïåöèàëüíûì ñèìâîëîì: EOF (End of File – êîíåö ôàéëà). Ôàéë, êîòîðûé íå ñîäåðæèò íè îäíîãî ýëåìåíòà, íàçûâàåòñÿ ïóñòûì ôàéëîì. Ôàéëîâûé òèï äàííûõ îïðåäåëÿåòñÿ ñëåäóþùèì îáðàçîì: Ôàéëîâûé òèï ::= [packed] file of Òèï; ãäå Òèï ÿâëÿåòñÿ áàçîâûì òèïîì. Áàçîâûé òèï ìîæåò áûòü ëþáûì, êðîìå ñàìîãî ôàéëîâîãî òèïà (íå ñóùåñòâóåò “ôàéë ôàéëîâ”). Ïðèìåðû: 1) type FisierNumere = file of integer; var FN : FisierNumere; n : integer; 2) type FisierCaractere = file of char; var FC : FisierCaractere; c : char; 3) type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; FisierElevi = file of Elev; var FE : FisierElevi; E : Elev; Ñòðóêòóðà äàííûõ ôàéëîâîãî òèïà ïðåäñòàâëåíà íà ðèñ. 1.8. Îòìåòèì, ÷òî ñèìâîë EOF, êîòîðûé îçíà÷àåò êîíåö ôàéëà, íå ÿâëÿåòñÿ êîìïîíåíòîì ôàéëà. Ïåðåìåííûå FN, FC, FE ôàéëîâîãî òèïà íàçûâàþòñÿ ëîãè÷åñêèìè ôàéëà- ìè, ôàéëàìè ÿçûêà ÏÀÑÊÀËÜ èëè ïðîñòî ôàéëàìè.  îòëè÷èå îò îñòàëüíûõ òèïîâ äàííûõ, çíà÷åíèÿ êîòîðûõ õðàíÿòñÿ âî âíóòðåííåé ïàìÿòè êîìïüþòå- ðà, äàííûå ôàéëîâ õðàíÿòñÿ íà ïåðèôåðèéíûõ óñòðîéñòâàõ – íîñèòåëÿõ èíôîðìàöèè (íà äèñêàõ, ìàãíèòíûõ ëåíòàõ, îïòè÷åñêèõ äèñêàõ, áóìàãå ïðèí- òåðà èëè íà óñòðîéñòâå ñ÷èòûâàíèÿ äîêóìåíòîâ è äð.). Èíôîðìàöèÿ íà òàêèõ íîñèòåëÿõ õðàíèòñÿ â âèäå âíåøíèõ ôàéëîâ â ñîîòâåòñòâèè ñ òðåáîâàíèÿìè îïåðàöèîííîé ñèñòåìû. Òàêèì îáðàçîì, ïåðåä èñïîëüçîâàíèåì ïåðåìåííóþ ôàéëîâîãî òèïà íåîáõîäèìî ñâÿçàòü ñ íåêîòîðûì âíåøíèì ôàéëîì. Ìåòîäû ñâÿçè çàâèñÿò îò âåðñèè ÿçûêà è îïåðàöèîííîé ñèñòåìû, óñòàíîâëåííîé íà êîìïüþòåðå.  ñòàíäàðòíîé âåðñèè ÿçûêà ñâÿçü îñóùåñòâëÿåòñÿ ïîñðåäñòâîì âêëþ÷åíèÿ ïåðåìåííûõ ôàéëîâîãî òèïà â çàãîëîâîê ïðîãðàììû â êà÷åñòâå àðãóìåíòîâ.
  • 32. !  Turbo PASCAL ñâÿçü ôàéëîâîé ïåðåìåííîé f ñ âíåøíèì ôàéëîì îñóùåñòâëÿåòñÿ âûçîâîì ïðîöåäóðû assign(f, s); ãäå s – ýòî âûðàæåíèå òèïà string, çàäàþùåå ïóòü äîñòóïà è èìÿ âíåøíåãî ôàéëà. Ïðèìåðû: 1) assign(FN, ’A:REZULTATR.DAT’) – ôàéë FN ñâÿçûâàåòñÿ ñ âíåøíèì ôàéëîì R.DAT, íàõîäÿùèìñÿ â êàòàëî- ãå REZULTAT íà äèñêå A. 2) assign(FC, ’C:A.CHR’) – ôàéë FC ñâÿçûâàåòñÿ ñ ôàéëîì A.CHR, íàõîäÿùèìñÿ â êîðíåâîì êàòàëî- ãå äèñêà C. 3) write(’Ââåäèòå èìÿ ôàéëà:’); readln(str); assign(FE, str); – ôàéë FE ñâÿçûâàåòñÿ ñ âíåøíèì ôàéëîì, èìÿ êîòîðîãî ñ÷èòûâàåòñÿ ñ êëàâèàòóðû â ïåðåìåííóþ str òèïà string. Ïîñëå âûïîëíåíèÿ îïåðàòîðà assign (f, s) âñå îïåðàöèè, îñóùåñòâëÿåìûå íàä ôàéëîì f, ôàêòè÷åñêè áóäóò âûïîëíÿòüñÿ íàä âíåøíèì ôàéëîì s. Ñàìûìè ðàñïðîñòðàíåííûìè îïåðàöèÿìè, âûïîëíÿåìûìè íàä ôàéëàìè, ÿâëÿþòñÿ ñ÷èòûâàíèå êîìïîíåíòîâ èç ôàéëà è èõ çàïèñü â ôàéë. Ñ÷èòûâàíèå òåêóùåé êîìïîíåíòû èç ôàéëà îñóùåñòâëÿåòñÿ ñ ïîìîùüþ îïåðàòîðà âûçîâà ïðîöåäóðû read( f, v), ãäå v – ïåðåìåííàÿ, êîòîðàÿ îòíîñèòñÿ ê áàçîâîìó òèïó ôàéëà f. Ðèñ. 1.8. Ñòðóêòóðà äàííûõ òèïà FisierNume, FisierCaractere è FisierElevi
  • 33. !! Çàïèñü ñëåäóþùåé êîìïîíåíòû â ôàéë îñóùåñòâëÿåòñÿ ñ ïîìîùüþ îïåðà- òîðà âûçîâà ïðîöåäóðû: write( f, e), ãäå e – âûðàæåíèå, îòíîñÿùååñÿ ê áàçîâîìó òèïó ôàéëà f. Ïðèìåðû: 1) read(FN, n); 2) write(FC, c); 3) read(FE, E). Ïî òèïàì îïåðàöèé, ïðèìåíÿåìûõ ê êîìïîíåíòàì, ôàéëû ïîäðàçäåëÿþò- ñÿ íà: – âõîäíûå (îòêðûòû òîëüêî äëÿ ÷òåíèÿ); – âûõîäíûå (îòêðûòû òîëüêî äëÿ çàïèñè); – ðàáî÷èå (îòêðûòû è äëÿ ÷òåíèÿ è äëÿ çàïèñè). Ïî ìåòîäó äîñòóïà ê êîìïîíåíòàì ôàéëû ïîäðàçäåëÿþòñÿ íà: – ôàéëû ïîñëåäîâàòåëüíîãî äîñòóïà èëè ïîñëåäîâàòåëüíûå (äîñòóï ê êîì- ïîíåíòå i âîçìîæåí òîëüêî ïîñëå ñ÷èòûâàíèÿ èëè çàïèñè êîìïîíåíòû i–1); – ôàéëû ïðÿìîãî äîñòóïà (ê ëþáîé êîìïîíåíòå åñòü ïðÿìîé äîñòóï ÷åðåç åå ïîðÿäêîâûé íîìåð i â ôàéëå). Îòìåòèì, ÷òî â ñòàíäàðòíîì ÿçûêå äîïóñòèìû òîëüêî âõîäíûå è âûõîä- íûå ôàéëû ïîñëåäîâàòåëüíîãî äîñòóïà. Òèï ôàéëà (âõîäíîé, âûõîäíîé èëè ðàáî÷èé) è ìåòîä äîñòóïà (ïðÿìîé èëè ïîñëåäîâàòåëüíûé) çàäàþòñÿ ïðè îòêðûòèè ôàéëà.  ñòàíäàðòíîì ÿçûêå ñóùåñòâóþò ñëåäóþùèå ïðîöåäóðû äëÿ îòêðûòèÿ ôàéëîâ: reset(f) – îòêðûâàåò ñóùåñòâóþùèé ôàéë äëÿ ÷òåíèÿ; rewrite(f) – ñîçäàåò ïóñòîé ôàéë äëÿ çàïèñè. Ïîñëå çàâåðøåíèÿ îáðàáîòêè êîìïîíåíò ôàéë íóæíî çàêðûòü. Ïðè çàêðû- òèè ôàéëà îïåðàöèîííàÿ ñèñòåìà çàïèñûâàåò ñèìâîë EOF; ðåãèñòðèðóåò òîëüêî ÷òî ñîçäàííûé ôàéë â ñîîòâåòñòâóþùåì êàòàëîãå è ò.ä.  ñòàíäàðòíîì ÿçûêå ïî îêîí÷àíèè ðàáîòû ïðîãðàììû âñå ôàéëû çàêðû- âàþòñÿ àâòîìàòè÷åñêè.  Turbo PASCAL çàêðûòèå ôàéëà f îñóùåñòâëÿåòñÿ ÿâíî ñ ïîìîùüþ îïåðàòîðà ïðîöåäóðû close (f ).  çàêëþ÷åíèå ïðèâåäåì ïîðÿäîê âûçîâà ïðîöåäóð, ïðåäíàçíà÷åííûõ äëÿ îáðàáîòêè äàííûõ ôàéëîâîãî òèïà: 1) assign( f, s) – ñâÿçûâàíèå ôàéëîâîé ïåðåìåííîé f ñ âíåøíèì ôàéëîì s; 2) reset( f)/rewrite( f)– îòêðûòèå ôàéëà f äëÿ ÷òåíèÿ/çàïèñè; 3) read( f, v)/write( f, e) – ÷òåíèå/çàïèñü òåêóùåé êîìïîíåíòû ôàéëà f; 4) close( f) – çàêðûòèå ôàéëà f. Ïîñëå çàêðûòèÿ ôàéëà ïåðåìåííàÿ f ìîæåò áûòü ñâÿçàíà ñ äðóãèì âíåø- íèì ôàéëîì. Òàê êàê çíà÷åíèÿ ïåðåìåííûõ ôàéëîâîãî òèïà õðàíÿòñÿ íà âíåøíèõ íîñèòåëÿõ èíôîðìàöèè, â ÿçûêå ÏÀÑÊÀËÜ îïåðàöèÿ ïðèñâàèâàíèÿ ôàéëîâ çàïðåùåíà.
  • 34. ! Âîïðîñû è óïðàæíåíèÿ Ê Îáúÿñíèòå òåðìèíû ôàéë ÿçûêà ÏÀÑÊÀËÜ, âíåøíèé ôàéë. Ë Ãäå õðàíÿòñÿ äàííûå ôàéëà? Äëÿ ÷åãî íóæíà ïðîöåäóðà assign? Ì Íàðèñóéòå ñòðóêòóðó ñëåäóþùèõ òèïîâ äàííûõ: a) type Tabel = array [1..5, 1..10] of real; FisierTabele = file of Tabel; b) type Multime = set of ’A’..’C’; FisierMultimi = file of Multime; c) type Punct = record x, y:real end; Segment = record A, B:Punct end; FisierSegmente = file of Segment; Í Äëÿ ÷åãî íóæíû ïðîöåäóðû îòêðûòèÿ è çàêðûòèÿ ôàéëîâ? Êàê âûïîëíÿ- þòñÿ ýòè ïðîöåäóðû? Î Äëÿ ÷åãî íóæíû ïðîöåäóðû read è write? Êàêîãî òèïà äîëæíà áûòü ïåðåìåííàÿ v â âûçîâå ïðîöåäóðû read(f,v)? Êàêîãî òèïà äîëæíî áûòü âûðàæåíèå e â âûçîâå ïðîöåäóðû write(f, e)? Ï Êàê êëàññèôèöèðóþòñÿ ôàéëû â çàâèñèìîñòè îò äîïóñòèìûõ îïåðàöèé è îò ìåòîäà äîñòóïà? Ð Ïåðåìåííûå A è B ââåäåíû ïîñðåäñòâîì îïèñàíèÿ var A, B : file of integer; Êîððåêòíà ëè ñëåäóþùàÿ çàïèñü A:=B Îáîñíóéòå âàø îòâåò. 1.7. Ôàéëû ñ ïîñëåäîâàòåëüíûì äîñòóïîì Ðàññìîòðèì ñëåäóþùèå îïèñàíèÿ: type FT = file of T; var f : FT; v : T; ïîñðåäñòâîì êîòîðûõ îïðåäåëÿþòñÿ ôàéëîâûé òèï FT ñ áàçîâûì òèïîì T, ôàéëîâàÿ ïåðåìåííàÿ f è ïåðåìåííàÿ v òèïà T. Äëÿ îòêðûòèÿ âûõîäíîãî ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà èñïîëüçóåòñÿ âûçîâ ïðîöåäóðû rewrite(f). Çàòåì, â ôàéë çàïèñûâàþòñÿ ñîîòâåòñòâóþùèå êîìïîíåíòû. Çàïèñü îòäåëüíûõ êîìïîíåíò ïðîèçâîäèòñÿ ñ ïîìîùüþ ïðîöå- äóðû: write(f, e), ãäå å – âûðàæåíèå òèïà T.
  • 35. !# Îïåðàòîð âèäà write(f, e1, e2, ..., en) ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ write(f, e1); write(f, e2); ...; write(f, en). Ïîñëå çàïèñè ïîñëåäíåé êîìïîíåíòû ôàéë íåîáõîäèìî çàêðûòü. Ïðèìåð: Program P89; { Ñîçäàíèå ôàéëà ñ êîìïîíåíòàìè òèïà Elev } type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; FisierElevi = file of Elev; var FE : FisierElevi; E : Elev; str : string; i, n : integer; begin write(’Ââåäèòå èìÿ ôàéëà: ’); readln(str); assign(FE, str); { ñâÿçûâàåò FE ñ èìåíåì str } rewrite(FE); { îòêðûâàåò ôàéë FE äëÿ çàïèñè } write(’Ââåäèòå êîëè÷åñòâî ó÷åíèêîâ: ’); readln(n); for i:=1 to n do begin writeln(’Ââåäèòå äàííûå îá ó÷åíèêå ’, i); {Ñ÷èòûâàåò ïîëÿ ïåðåìåííîé Å ñ êëàâèàòóðû } write(’Ôàìèëèÿ: ’); readln(E.Nume); write(’Èìÿ: ’); readln(E.Prenume); write(’Ñðåäíÿÿ îöåíêà: ’); readln(E.NotaMedie); {Çàïèñûâàåò çíà÷åíèå ïåðåìåííîé Å â ôàéë FE } write(FE, E); end; close(FE); {Çàêðûâàåò ôàéë FE } readln; end.
  • 36. !$ Äëÿ îòêðûòèÿ âõîäíîãî ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà èñïîëüçóåòñÿ ïðî- öåäóðà reset(f). ×òåíèå òåêóùåãî ýëåìåíòà èç ôàéëà âûïîëíÿåòñÿ ñ ïîìî- ùüþ âûçîâà ïðîöåäóðû: read(f, v). Îïåðàòîð âèäà read(f, v1, v2, ..., vn) ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ: read(f, v1); read (f, v2); ..., read (f, vn). Êîíåö ôàéëà ìîæíî îáíàðóæèòü ñ ïîìîùüþ áóëåâîé ôóíêöèè eof(f), êîòîðàÿ âîçâðàùàåò çíà÷åíèå true ïîñëå ÷òåíèÿ ïîñëåäíåãî ýëåìåíòà. Ïðèìåð: Program P90; { Ñ÷èòûâàíèå ôàéëà ñ ýëåìåíòàìè òèïà Elev } type Elev = record Nume : string; Prenume : string; NotaMedie : real; end; FisierElevi = file of Elev; var FE : FisierElevi; E : Elev; str : string; begin write(’Ââåäèòå èìÿ ôàéëà:  ’); readln(str); assign(FE, str); { ñâÿçûâàåò FE ñ èìåíåì str } reset(FE); { îòêðûâàåò ôàéë FE äëÿ ÷òåíèÿ } while not eof(FE) do begin { ñ÷èòûâàåò E èç ôàéëà FE } read(FE, E); { âûâîäèò E íà ýêðàí } writeln(E.Nume, ’ ’, E.Prenume, ’:’, E.NotaMedie : 5:2); end; close(FE); { çàêðûâàåò ôàéë FE } readln; end. Îòìåòèì, ÷òî ÷èñëî ýëåìåíòîâ ôàéëà çàðàíåå íåèçâåñòíî è íå çàäàåòñÿ â îïèñàíèè ñîîòâåòñòâóþùåãî òèïà. Ñëåäîâàòåëüíî, â âûõîäíîé ôàéë ïîñëåäî-
  • 37. !% âàòåëüíîãî äîñòóïà òåîðåòè÷åñêè ìîæíî çàïèñàòü áåñêîíå÷íîå ìíîæåñòâî ýëåìåíòîâ. Îäíàêî ïðàêòè÷åñêè êîëè÷åñòâî ýëåìåíòîâ îãðàíè÷åíî åìêîñòüþ âíåøíåãî íîñèòåëÿ èíôîðìàöèè. Ñ÷èòûâàíèå ýëåìåíòîâ ëþáîãî âõîäíîãî ôàéëà ïîñëåäîâàòåëüíîãî äîñòóïà çàâåðøàåòñÿ ïðè äîñòèæåíèè ñèìâîëà EOF. Âîïðîñû è óïðàæíåíèÿ Ê Èç ñêîëüêèõ ýëåìåíòîâ ìîæåò ñîñòîÿòü ôàéë?  êàêîì ïîðÿäêå çàïèñûâà- þòñÿ è ñ÷èòûâàþòñÿ ýëåìåíòû ôàéëà ñ ïîñëåäîâàòåëüíûì äîñòóïîì? Ë Äàíû ñëåäóþùèå òèïû äàííûõ: type Data = record Ziua : 1..31; Luna : 1..12; Anul : integer; end; Persoana = record NumePrenume : string; DataNasterii : Data; end; FisierPersoane = file of Persoana; Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû äàííûå îá n ëèöàõ è çàïèñûâàåò èõ â ôàéë. Ñîçäàéòå ôàéëû: FILE1.PRS, FILE2.PRS, FILE3.PRS, â êîòîðûõ äîëæíû ñîäåðæàòüñÿ äàííûå ñîîòâåòñòâåííî î 2, 7 è 10 ëèöàõ. Ì Íàïèøèòå ïðîãðàììó, êîòîðàÿ ÷èòàåò ôàéëû, ñîçäàííûå ïðîãðàììîé èç ïðåäûäóùåãî óïðàæíåíèÿ, è âûâîäèò íà ýêðàí: à) äàííûå î âñåõ ëèöàõ, çàíåñåííûõ â ôàéë; á) äàííûå î ëèöàõ, ðîäèâøèõñÿ â ãîä à; â) äàííûå î ëèöàõ, ó êîãî äàòà ðîæäåíèÿ z.l.a; ã) äàííûå î ñàìîì ñòàðøåì ÷åëîâåêå; ä) äàííûå î ñàìîì ìëàäøåì ÷åëîâåêå. Í Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñðåäíåå àðèôìåòè÷åñêîå ÷èñåë, çàïèñàííûõ â ôàéëå òèïà file of real. Î Â ôàéëå òèïà file of char çàïèñàíû ïðîèçâîëüíûå ñèìâîëû. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ñîãëàñíûõ, ñîäåðæàùèõ- ñÿ â ôàéëå. Ï Ïðîêîììåíòèðóéòå ñëåäóþùóþ ïðîãðàììó: Program P91; { Îøèáêà } type FisierNumere = file of integer; var FN : FisierNumere; i : integer; r : real; s : string; begin Writeln(’Ââåäèòå èìÿ ôàéëà:  ’);
  • 38. ! readln(s); assign(FN, s); rewrite(FN); i:=1; write(FN, i); i:=10; write(FN, i); r:=20; write(FN, r); close(FN); end. 1.8. Òåêñòîâûå ôàéëû Èçâåñòíî, ÷òî äàííûå ôàéëîâ õðàíÿòñÿ íà âíåøíèõ íîñèòåëÿõ èíôîðìà- öèè.  ñëó÷àå, êîãäà ôàéëû îïèñûâàþòñÿ â âèäå file of Ò, ýëåìåíòû òèïà Ò çàïèñûâàþòñÿ íà ñîîòâåòñòâóþùèõ íîñèòåëÿõ â âèäå ïîñëåäîâàòåëüíîñòè äâîè÷íûõ öèôð. Òàêîé ñïîñîá ïðåäñòàâëåíèÿ äàííûõ óäîáåí äëÿ âíåøíåé ïàìÿòè (ìàãíèòíûå äèñêè è ìàãíèòíûå ëåíòû, îïòè÷åñêèå äèñêè è äð.). Äëÿ óñòðîéñòâ ââîäà/âûâîäà (êëàâèàòóðà, ýêðàí, ïðèíòåð è ò.ä.) ñîîòâåòñòâóþùèå äàííûå äîëæíû áûòü ïðåäñòàâëåíû âî âíåøíåé ôîðìå, òî åñòü ÷åðåç ñòðîêè ñèìâîëîâ. Äëÿ òîãî ÷òîáû óïðîñòèòü îáùåíèå ïîëüçîâàòåëÿ è êîìïüþòåðà, â ÿçû- êå ÏÀÑÊÀËÜ èíôîðìàöèÿ, ïðåäíàçíà÷åííàÿ äëÿ ïîëüçîâàòåëÿ, ïðåäñòàâ- ëÿåòñÿ â âèäå òåêñòîâûõ ôàéëîâ. Òåêñòîâûé ôàéë ñîñòîèò èç ïîñëåäîâà- òåëüíîñòè ñèìâîëîâ, ðàçäåëåííûõ íà ñòðîêè (ðèñ. 1.9). Äëèíà ñòðîê – ïðîèçâîëüíà. Êîíåö êàæäîé ñòðîêè îáîçíà÷àåòñÿ ñïåöèàëüíûì ñèìâîëîì EOL (End Of Line – êîíåö ñòðîêè). Òàê êàê äëèíà ñòðîê ïðîèçâîëüíà, òî ïîçèöèþ íåêîòîðîé ñòðîêè â ôàéëå íåëüçÿ çíàòü çàðàíåå. Ñëåäîâàòåëüíî, äîñòóï ê ýëåìåíòàì òåêñòîâîãî ôàéëà ìîæåò áûòü òîëüêî ïîñëåäîâàòåëü- íûì. Òåêñòîâûé ôàéë çàäàåòñÿ îïèñàíèåì âèäà: var f : text; Ðèñ. 1.9. Ñòðóêòóðà òåêñòîâîãî ôàéëà
  • 39. !' ãäå ïðåäîïðåäåëåííûé òèï text èçâåñòåí ëþáîé ïðîãðàììå íà ÿçûêå ÏÀÑÊÀËÜ. Îòìåòèì, ÷òî òèïû text è file of char ðàçëè÷íû, òàê êàê ôàéë file of char íå ñîäåðæèò ñèìâîëîâ EOL (ðèñ.1.8). Îáðàáîòêà òåêñòîâûõ ôàéëîâ ìîæåò îñóùåñòâëÿòüñÿ ñ ïîìîùüþ èçâåñòíûõ ïðîöåäóð, ïðèìåíèìûõ ê ëþáûì òèïàì ôàéëîâ: assign, reset, rewrite, read, write, close.  äîïîëíåíèå ê íèì â ÿçûêå åñòü ñïåöèàëüíûå ïðîöå- äóðû äëÿ îáðàáîòêè ýëåìåíòîâ EOL: writeln(f)– çàïèñûâàåò â ôàéë ýëåìåíò EOL (êîíåö ñòðîêè); readln(f)– ïåðåõîä íà ñëåäóþùóþ ñòðîêó. Êîíåö ñòðîêè îïðåäåëÿåòñÿ ñ ïîìîùüþ áóëåâîé ôóíêöèè eoln(f), êî- òîðàÿ ïðèíèìàåò çíà÷åíèå true ïîñëå ñ÷èòûâàíèÿ ïîñëåäíåãî ñèìâîëà ñòðîêè. Îïåðàòîð âèäà writeln(f, e1, e2, ..., en) ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ: write(f, e1, e2, ..., en); writeln(f). Îïåðàòîð âèäà readln(f, v1, v2, ..., vn) ýêâèâàëåíòåí ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ: read(f, v1, v2, ..., vn); readln(f). Äëÿ ââîäà è âûâîäà äàííûõ èñïîëüçóþòñÿ, êàê ïðàâèëî, ïðåäîïðåäåëåí- íûå òåêñòîâûå ôàéëû Input è Output. Ôàéë Input ïðåäíàçíà÷åí òîëüêî äëÿ ÷òåíèÿ è ñâÿçàí ñî ñòàíäàðòíûì óñòðîéñòâîì ââîäà îïåðàöèîííîé ñèñòå- ìû (êàê ïðàâèëî, ñ êëàâèàòóðîé). Ôàéë Output ïðåäíàçíà÷åí òîëüêî äëÿ çàïèñè è ñâÿçàí ñî ñòàíäàðòíûì óñòðîéñòâîì âûâîäà (êàê ïðàâèëî, ýêðàíîì). Ýòè ôàéëû îòêðûâàþòñÿ è çàêðûâàþòñÿ àâòîìàòè÷åñêè â íà÷àëå è ñîîòâåòñò- âåííî â êîíöå âûïîëíåíèÿ ïðîãðàììû. Åñëè ïðè âûçîâå ïîäïðîãðàìì èìÿ ôàéëà íå óêàçàíî â ñïèñêå ïàðàìåòðîâ, òî ïðåäïîëàãàåòñÿ, ÷òî òåêñòîâûì ôàéëîì ÿâëÿåòñÿ ôàéë Input èëè ôàéë Output â çàâèñèìîñòè îò íàçíà÷åíèÿ ïîäïðîãðàììû. Íàïðèìåð, read(c) ýêâèâàëåíòåí read(Input, c), à write(c) ýêâèâàëåíòåí write(Output, c).  êà÷åñòâå ïðèìåðà ïðèâîäèòñÿ ïðîãðàììà P93, êîòîðàÿ ñîçäàåò íà òåêó- ùåì äèñêå òåêñòîâûé ôàéë FILE.TXT. Ñòðîêè ôàéëà ââîäÿòñÿ ñ êëàâèàòóðû (ôàéë Input). Ïðèçíàêîì êîíöà ñòðîêè ÿâëÿåòñÿ íàæàòèå êëàâèøè EN- TER, à ïðèçíàêîì êîíöà ôàéëà ÿâëÿåòñÿ íàæàòèå êëàâèø CTRL+Z, ENTER. Program P93; { Ñîçäàíèå òåêñòîâîãî ôàéëà FILE.TXT } var F : text; c : char; begin assign(F, ’FILE.TXT’); { ñâÿçûâàåò ôàéë F ñ FILE.TXT }
  • 40. rewrite(F); { îòêðûâàåò F äëÿ çàïèñè } while not eof do { eof(Input) } begin while not eoln do { eoln(Input) } begin read(c); { ñ÷èòûâàåò ñ èç Input } write(F, c); { çàïèñûâàåò ñ â F } end; writeln(F); { çàïèñûâàåò EOL â F } readln; { ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó èç Input } end; close(F); { çàêðûâàåò F } end. Ñëåäóþùàÿ ïðîãðàììà âûâîäèò íà ýêðàí ñîäåðæèìîå ôàéëà FILE.TXT. Program P94; { ×òåíèå òåêñòîâîãî ôàéëà FILE.TXT } var F : text; c : char; begin assign(F, ’FILE.TXT’); { ñâÿçûâàåò F ñ FILE.TXT } reset(F); { îòêðûâàåò F äëÿ ÷òåíèÿ } while not eof(F) do begin while not eoln(F) do begin read(F, c); { ñ÷èòûâàåò ñ èç F } write(c); { çàïèñûâàåò ñ â Output } end; readln(F); { ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó F } writeln; { çàïèñûâàåò EOL â Output } end; close(F); { çàêðûâàåò F } readln; end. Ïîñèìâîëüíîå ÷òåíèå è çàïèñü òåêñòîâûõ ôàéëîâ ÿâëÿþòñÿ äîñòàòî÷íî ñëîæíûìè â ñëó÷àå, êîãäà ïîñëåäîâàòåëüíîñòè ñèìâîëîâ, íàõîäÿùèåñÿ â òåêñòîâîì ôàéëå, èíòåðïðåòèðóþòñÿ êàê äàííûå òèïà integer, real, bool- ean, ñòðîêà ñèìâîëîâ. Ïåðåâîä äàííûõ óêàçàííûõ òèïîâ èç âíóòðåííåãî ïðåäñòàâëåíèÿ âî âíåøíåå ñòàíîâèòñÿ çàäà÷åé ïðîãðàììèñòà. Ïîýòîìó äåé- ñòâèå ïðîöåäóð ÷òåíèÿ/çàïèñè ðàñøèðÿåòñÿ ñëåäóþùèì îáðàçîì. Äëÿ òåêñòîâûõ ôàéëîâ ïåðåìåííàÿ v èç ïðîöåäóðû read(f, v) ìîæåò îòíîñèòüñÿ ê òèïó: integer, real, char èëè ñòðîêà ñèìâîëîâ. Ïðè ÷òåíèè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, êîòîðàÿ çàäàåò çíà÷åíèå ïåðåìåííîé v, áóäåò ïåðåâåäåíà âî âíóòðåííåå ïðåäñòàâëåíèå.
  • 41. Çà âûðàæåíèåì å â ïðîöåäóðå write(f, e) ìîæåò ñëåäîâàòü óêàçàòåëü ôîðìàòà. Çíà÷åíèå âûðàæåíèÿ ìîæåò îòíîñèòüñÿ ê òèïó integer, real, char èëè ñòðîêà ñèìâîëîâ. Ïðè çàïèñè ñîîòâåòñòâóþùåå çíà÷åíèå ïåðåâî- äèòñÿ èç âíóòðåííåãî ïðåäñòàâëåíèÿ â ïîñëåäîâàòåëüíîñòü ñèìâîëîâ. Ïîñëåäîâàòåëüíîñòè ñèìâîëîâ, ñ÷èòûâàåìûå/çàïèñûâàåìûå ñ ïîìîùüþ ïðîöåäóð read/write, ñîîòâåòñòâóþò ñèíòàêñèñó êîíñòàíò òèïà ïåðåìåííîé/ âûðàæåíèÿ v/e.  êà÷åñòâå ïðèìåðà ïðèâîäèòñÿ ïðîãðàììà P95, êîòîðàÿ ñ÷èòûâàåò ñ êëàâèàòóðû ïî òðè âåùåñòâåííûõ ÷èñëà a, b, c è çàïèñûâàåò èõ â ôàéë IN.TXT. Ïîñëå ÷òåíèÿ óêàçàííûõ ÷èñåë, êîòîðûå ïðåäñòàâëÿþò ñîáîé äëèíû ñòîðîí òðåóãîëüíèêà, ïðîãðàììà çàïèñûâàåò â ôàéë OUT.TXT ÷èñëà a, b è c, ïîëóïåðèìåòð ð è ïëîùàäü s òðåóãîëüíèêà.  çàâåðøåíèå ñîäåðæèìîå ôàéëà OUT.TXT âûâîäèòñÿ íà ýêðàí. Program P95; { Îáðàáîòêà ôàéëîâ IN.TXT è OUT.TXT } var F, G : text; a, b, c, p, s : real; str : string; begin assign(F, ’IN.TXT’); { ñâÿçûâàåò F ñ IN.TXT } rewrite(F); { îòêðûâàåò F äëÿ çàïèñè } writeln(’Ââåäèòå âåùåñòâåííûå ÷èñëà a, b, c:’); while not eof do begin readln(a, b, c); { ñ÷èòûâàåò a, b, c ñ êëàâèàòóðû } writeln(F, a:8:2, b:8:2, c:8:2); { scrie a, b, c, in F } end; close(F); { çàêðûâàåò F } reset(F); { îòêðûâàåò F äëÿ ÷òåíèÿ } assign(G, ’OUT.TXT’); { ñâÿçûâàåò G ñ OUT.TXT } rewrite(G); { îòêðûâàåò G äëÿ çàïèñè } while not eof(F) do begin readln(F, a, b, c); { ñ÷èòûâàåò a, b, c èç F } write(G, a:8:2, b:8:2, c:8:2); {çàïèñûâàåò a, b, c â G } p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(G, p:15:2, s:15:4); { çàïèñûâàåò p, s â G } end; close(F); { çàêðûâàåò F } close(G); { çàêðûâàåò G }
  • 42. reset(G); { îòêðûâàåò G äëÿ ÷òåíèÿ } while not eof(G) do begin readln(G, str); { ñ÷èòûâàåò str èç G } writeln(str); { âûâîäèò str íà ýêðàí } end; close(G); { çàêðûâàåò G } readln; end. Äëÿ âõîäíûõ äàííûõ 1 1 1 ENTER 3 4 6 ENTER CTRL+Z ENTER ïðîãðàììà Ð95 âûâîäèò íà ýêðàí: 1.00 1.00 1.00 1.50 0.4330 3.00 4.00 6.00 6.50 5.3327 Âîïðîñû è óïðàæíåíèÿ Ê Â ÷åì ðàçíèöà ìåæäó òåêñòîâûì ôàéëîì è ôàéëîì file of char? Ë ×òî îáîçíà÷àþò ýëåìåíòû EOL è EOF? Ì Â ÷åì ðàçíèöà ìåæäó ïðîöåäóðàìè read è readln? À ìåæäó ïðîöåäóðàìè write è writeln? Í Çàïóñòèòå ñëåäóþùóþ ïðîãðàììó íà âûïîëíåíèå: Program P96; { Ñâÿçûâàíèå ôàéëà FN ñ óñòðîéñòâîì ââîäà } type FisierNumere = file of integer; var FN : FisierNumere; i : integer; begin assign(FN, ’CON’); rewrite(FN); i:=1; write(FN, i); i:=2; write(FN, i); i:=3; write(FN, i); close(FN); readln; end. Îáúÿñíèòå ðåçóëüòàòû, âûâîäèìûå íà ýêðàí. Î Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñîäåðæàíèå ëþáîãî òåê- ñòîâîãî ôàéëà.
  • 43. ! Ï Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ãëàñíûõ, ñîäåðæàùèõñÿ â òåêñòîâîì ôàéëå. Ð Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû çàïèñàíû â òåêñòîâûé ôàéë.  êàæäîé ñòðîêå ôàéëà ñîäåðæàòñÿ äâà öåëûõ è òðè âåùåñòâåííûõ ÷èñëà, ðàçäåëåííûå ïðîáåëàìè. Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñóììó öåëûõ è ñóììó âåùåñòâåííûõ ÷èñåë èç êàæäîé ñòðîêè. Ñ Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû çàïèñàíû â òåêñòîâûé ôàéë.  êàæäîé ñòðîêå ôàéëà ñîäåðæàòñÿ ïî òðè âåùåñòâåííûõ ÷èñëà, ðàçäåëåí- íûõ ïðîáåëàìè, è ïî îäíîìó èç ñëîâ ADMIS, RESPINS. Íàïèøèòå ïðîãðàì- ìó, êîòîðàÿ: à) âûâîäèò ñîäåðæèìîå äàííîãî ôàéëà íà ýêðàí; á) ñîçäàåò ðåçåðâíóþ êîïèþ ôàéëà; â) ñîçäàåò òåêñòîâûé ôàéë, ñòðîêè êîòîðîãî ñîäåðæàò ñðåäíåå àðèôìåòè- ÷åñêîå òðåõ âåùåñòâåííûõ ÷èñåë, âçÿòûõ èç ñîîòâåòñòâóþùèõ ñòðîê âõîä- íîãî ôàéëà; ã) âûâîäèò íà ýêðàí ñòðîêè âõîäíîãî ôàéëà òàêèì îáðàçîì, ÷òî ïåðåä êàæäîé ñòðîêîé ïèøåòñÿ åå ïîðÿäêîâûé íîìåð 1, 2, 3 è ò. ä. Ò Êàæäàÿ ñòðîêà òåêñòîâîãî ôàéëà ñîäåðæèò ñëåäóþùèå äàííûå, ðàçäåëåí- íûå ïðîáåëàìè: – ïîðÿäêîâûé íîìåð (integer); – ôàìèëèÿ (ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, íå ñîäåðæàùàÿ ïðîáåëîâ); – èìÿ (ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, íå ñîäåðæàùàÿ ïðîáåëîâ); – îöåíêà ïî 1-ìó ïðåäìåòó (real); – îöåíêà ïî 2-ìó ïðåäìåòó (real); – îöåíêà ïî 3-ìó ïðåäìåòó (real). Íàïèøèòå ïðîãðàììó, êîòîðàÿ: à) ñîçäàåò ðåçåðâíóþ êîïèþ òåêñòîâîãî ôàéëà; á) âûâîäèò íà ýêðàí ñîäåðæèìîå ôàéëà; â) ñîçäàåò òåêñòîâûé ôàéë, ñòðîêè êîòîðîãî ñîäåðæàò ñëåäóþùèå äàííûå, ðàçäåëÿåìûå ïðîáåëàìè: – ïîðÿäêîâûé íîìåð (integer); – ôàìèëèÿ (string); – èìÿ (string); – ñðåäíèé áàëë (real). Ôàéë, ñîçäàííûé â ïóíêòå â, íåîáõîäèìî âûâåñòè íà ýêðàí.
  • 44. Òåñò äëÿ ñàìîïðîâåðêè ¹ 1 1.Äàíû ñëåäóþùèå òèïû äàííûõ: type Obiect = (Istoria, Geografia, Matematica, Informatica, Fizica); Nota = 1..10; SituatiaScolara = array [Obiect] of Nota; Èçîáðàçèòå íà ðèñóíêå ñòðóêòóðó äàííûõ òèïà SituatiaScolara. 2.Äëÿ ïðèâåäåííûõ íèæå îïèñàíèé óêàæèòå òèï èíäåêñîâ è òèï êîìïîíåíò äàííûõ òèïà OrarulLectiilor: type ZiDeScoala = (L, Ma, Mi, J, V, S); Lectie = 1..6; Obiect = (LimbaRomana, LimbaModerna, Istoria, Geografia, Matematica,Informatica, Fizica, Chimia); OrarulLectiilor = array [ZiDeScoala, Lectie] of Obiect; 3.Äàíû ñëåäóþùèå îïèñàíèÿ è îáúÿâëåíèÿ: type Tablou = array [1..10] of integer; var x, y : Tablou; Íàïèøèòå àðèôìåòè÷åñêîå âûðàæåíèå äëÿ âû÷èñëåíèÿ: a) ñóììû ïåðâûõ ÷åòûðåõ êîìïîíåíò ïåðåìåííîé x; b) ñóììû ïîñëåäíèõ ÷åòûðåõ êîìïîíåíò ïåðåìåííîé y; c) àáñîëþòíîãî çíà÷åíèÿ òðåòüåé êîìïîíåíòû ïåðåìåííîé x; d) àáñîëþòíîãî çíà÷åíèÿ øåñòîé êîìïîíåíòû ïåðåìåííîé y; e) ñóììû ïåðâîé êîìïîíåíòû ïåðåìåííîé x è ïîñëåäíåé êîìïîíåíòû ïåðåìåííîé y. 4.Äàíû n (n≤50) öåëûõ ÷èñåë a1, a2, a3, ..., an. Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ, êîòîðàÿ ââîäèò ñ êëàâèàòóðû ðàññìàòðèâàåìûå ÷èñëà è âûâîäèò èõ íà ýêðàí â ïîðÿäêå, îáðàòíîì ââîäó: an, ..., a3, a2, a1. 5. Êàêèå îïåðàöèè ìîãóò áûòü âûïîëíåíû íàä ñòðîêàìè ñèìâîëîâ òèïà string? Óêà- æèòå òèï ðåçóëüòàòà ýòèõ îïåðàöèé. 6.Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ, êîòîðàÿ âûâîäèò íà ýêðàí ñòðîêó ñèìâîëîâ â ïîðÿäêå, îáðàòíîì òîìó, â êîòîðîì îíà áûëà ââåäåíà ñ êëàâèàòóðû. Íàïðèìåð, ñòðîêà ’soare’ áóäåò âûâåäåíà íà ýêðàí êàê ’eraos’. 7.Äëÿ ïðèâåäåííîãî íèæå îïèñàíèÿ èçîáðàçèòå íà ðèñóíêå ñòðóêòóðó äàííûõ òèïà Data è Persoana: type Data = record Ziua : 1..31; Luna : 1..12; Anul : integer; end; Persoana = record NumePrenume : string;
  • 45. # DataNasterii : Data; end; 8.Äàíû ñëåäóþùèå òèïû äàííûõ: type Angajat = record NumePrenume : string; Salariu : real; end; ListaDePlata = array[1..100] of Angajat; Íàïèøèòå ïðîãðàììó, êîòîðàÿ ââîäèò ñ êëàâèàòóðû äàííûå îá n (n≤100) ñîòðóäíè- êàõ è âûâîäèò íà ýêðàí èíôîðìàöèþ î ñîòðóäíèêå (ñîòðóäíèêàõ), ïîëó÷àþùåì ñàìóþ âûñîêóþ çàðàáîòíóþ ïëàòó. 9.Äëÿ ÷åãî ïðåäíàçíà÷åí îïåðàòîð with? 10.Ïåðå÷èñëèòå âñåâîçìîæíûå çíà÷åíèÿ ïåðåìåííûõ èç ïðèâåäåííûõ íèæå îáúÿâ- ëåíèé: var V : set of ’X’..’Z’; I : set of 8..9; 11.Äàíû ñòðîêè ñèìâîëîâ, ñîñòîÿùèå èç çàãëàâíûõ áóêâ ëàòèíñêîãî àëôàâèòà. Íà- ïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí êîëè÷åñòâî ãëàñíûõ áóêâ â ñ÷èòàííîé ñ êëàâèàòóðû ñòðîêå ñèìâîëîâ S . 12.Ãäå õðàíÿòñÿ äàííûå ôàéëîâûõ ïåðåìåííûõ ÏÀÑÊÀËß? Äëÿ ÷åãî ïðåäíàçíà÷å- íà ïðîöåäóðà assign? 13.Êàê êëàññèôèöèðóþòñÿ ôàéëû â çàâèñèìîñòè îò ñïîñîáà äîñòóïà è äîïóñòèìûõ îïåðàöèé? 14. Äàíû ñëåäóþùèå òèïû äàííûõ: type Angajat = record NumePrenume : string; Salariu : real; end; FisierAngajati = file of Angajat; Íàïèøèòå ïðîãðàììó, êîòîðàÿ ñîçäàåò ôàéë SALARII.DAT è çàïèñûâàåò â íåì äàí- íûå îá n ñîòðóäíèêàõ. Ñîîòâåòñòâóþùèå äàííûå ñ÷èòûâàþòñÿ ñ êëàâèàòóðû. 15.Íàïèøèòå ïðîãðàììó íà ÏÀÑÊÀËÅ, êîòîðàÿ âûâîäèò íà ýêðàí ñîäåðæèìîå ôàé- ëà SALARII.DAT , ñîçäàííîãî â ïðåäûäóùåì ïóíêòå. 16. Âõîäíûå äàííûå íåêîòîðîé ïðîãðàììû õðàíÿòñÿ â òåêñòîâîì ôàéëå REZULTAT.TXT. Êàæäàÿ ñòðîêà ôàéëà ñîäåðæèò ïî äâà âåùåñòâåííûõ ÷èñëà, ðàçäå- ëåííûõ ïðîáåëîì, è ñëîâî BUN èëè DEFECT. Íàïèøèòå ïðîãðàììó, êîòîðàÿ: a) ñîçäàåò òåêñòîâûé ôàéë MEDIA.TXT, êàæäàÿ ñòðîêà êîòîðîãî ñîäåðæèò ÷èñëî, ïðåäñòàâëÿþùåå ñîáîé ñðåäíåå àðèôìåòè÷åñêîå âåùåñòâåííûõ ÷èñåë è ñëîâî BUN èëè DEFECT èç ñîîòâåòñòâóþùåé ñòðîêè âõîäíîãî ôàéëà; b) âûâîäèò íà ýêðàí ñòðîêè ñîçäàííîãî ôàéëà.