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’.
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]
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.
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(’Ââåäèòå èìÿ ôàéëà: ’);
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.
Îáúÿñíèòå ðåçóëüòàòû, âûâîäèìûå íà ýêðàí.
Î Íàïèøèòå ïðîãðàììó, êîòîðàÿ âûâîäèò íà ýêðàí ñîäåðæàíèå ëþáîãî òåê-
ñòîâîãî ôàéëà.