Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования PASCALΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор АлСксандр Π¦Π²Π΅Ρ‚ΠΊΠΎΠ²

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ просмотрим вСсь массив, окаТСтся, Ρ‡Ρ‚ΠΎ наша пСрСмСнная содСрТит искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

{ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ максимального значСния}

max:=A[1];

for i:=2 to N do if A[i]>max then max:=A[i]; writeln('Maximum=',max);


НапишСм Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, использовав ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания:

Program Massiv;

Const N = 10;

Var A : array [1..N] of integer;

i, max : integer;

begin

for i:=1 to N do // Π’Π²ΠΎΠ΄ массива

begin

write( 'Π’Π²eΠ΄ΠΈΡ‚Π΅ ',i,'-ΠΉ элСмСнт: ');

readln(A[i])

end;

max:=A[1]; // Поиск максимального значСния

for i:=2 to N do

if A[i]>max then

max:=A[i];

writeln( 'Maximum=',max);

end.

- 35 -


Π—Π°Π΄Π°Π½ΠΈΠ΅ 12

1. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСкст. Π—Π½Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массива ΠΈ способы Π΅Π³ΠΎ описания. (2 Π±Π°Π»Π»Π°)

2. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Π²ΠΎΠ΄ΠΈΡ‚ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ значСния массива, состоящСго ΠΈΠ· 10 элСмСнтов, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ. (2 Π±Π°Π»Π»Π°)

3. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π° элСмСнты массива Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» for i:=N downto 1 do). (1 Π±Π°Π»Π»)

4. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π½Π° стр. 35 Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. (2 Π±Π°Π»Π»Π°)

5. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСляла ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива. (1 Π±Π°Π»Π»)

6. * ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±Ρ‹ опрСдСляла срСднСС арифмСтичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов массива (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π±ΡƒΠ΄Π΅Ρ‚ вСщСствСнная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΈΠΏΠ° real) (* 3 Π±Π°Π»Π»Π°)

7. * ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±Ρ‹ Π²Π²ΠΎΠ΄ΠΈΠ»Π° значСния элСмСнтов цСлочислСнного массива, Π° Π·Π°Ρ‚Π΅ΠΌ рисовала Π±Ρ‹ N окруТностСй, радиусы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹ Ρ€Π°Π²Π½ΡΠ»ΠΈΡΡŒ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ значСниям.

(* 3 Π±Π°Π»Π»Π°)


Π—Π°Π΄Π°Ρ‡ΠΈ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ *, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΈΡ… Π±Π°Π»Π»Ρ‹ – Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

- 36 -

Π’Π΅ΠΌΠ° β„–13. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массивов

Π’Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅


ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ программирования, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сталкиваСтся Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ программист – это Π·Π°Π΄Π°Ρ‡Π° сортировки массива. Под сортировкой понимаСтся упорядочиваниС элСмСнтов массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ) Π±Π΅Π· создания ΠΊΠΎΠΏΠΈΠΈ массива (Ρ‚.Π΅. Β«Π½Π° мСстС»).

Π‘Π°ΠΌΡ‹ΠΉ простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ – это линСйная сортировка. Рассмотрим рис. 13.1.

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сравнСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта со всСми ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ, ΠΏΡ€ΠΈ Ссли ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ сравнСнии (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сразу 4 ΠΈ 2) выяснится, Ρ‡Ρ‚ΠΎ элСмСнты стоят Π² Β«Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΒ» порядкС – пСрСставим ΠΈΡ… мСстами, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ сравнСниС

(рис. 13.2). По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнтС массива находится ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт (Рис. 13.4).

Рис 13.1

Рис 13.2

Рис 13.3

Рис 13.4

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΊ нСотсортированному «остатку» массива (рис. 13.5) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ пСрСставим Π΄Π²Π° послСдних элСмСнта (рис. 13.6-13.7).

Рис 13.5

Рис 13.6

Рис 13.7

Рис 13.8

Алгоритм Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ сортировки ΠΎΡ‡Π΅Π½ΡŒ прост, Π½ΠΎ Π½Π΅ экономичСн, срСднСС число просмотров ΠΈ пСрСстановок ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρƒ числа элСмСнтов (Ρ‚ΠΎΡ‡Π½Π΅Π΅ -N2 /2 ).

- 37 -

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сортировки. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали массив Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Massiv (стр. 34). Часто для экономии памяти массив ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· var-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (стр. 32), Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ прСдполагаСтся Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’.Π΅. Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ print ΠΌΠΎΠ³ Π±Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

procedure print (var m : Massiv); .


Program LinerSort;

Const N = 10; // Число элСмСнтов массива

Type Massiv = array [1..N] of integer; // ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Massiv

procedure swap(var x,y: integer); // ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° элСмСнтов мСстами

var z : integer;

begin

z:=x; x:=y; y:=z;

end;

procedure print(m : Massiv); // Π’Ρ‹Π²ΠΎΠ΄ массива

var i : integer;

begin

for i:=1 to N do write(m[i]:5);

writeln; // Новая строка

end;

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

var a : Massiv; i,j : integer;

begin

// Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива случайными числами Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 99

for i:=1 to N do a[i]:=random(100);

print(a); // Π’Ρ‹Π²ΠΎΠ΄ массива

for i:=1 to N-1 do // Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π΄ΠΎ N-1 (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!)

for j:=i+1 to N do // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΎΡ‚ i+1 (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!) if (a[i]>a[j]) then swap(a[i],a[j]); // ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° элСмСнтов

print(a); // Π’Ρ‹Π²ΠΎΠ΄ отсортированного массива

end.


Π—Π°Π΄Π°Π½ΠΈΠ΅ 13

1. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСкст. ΠžΡ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ сортировку массива Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (здСсь ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ var-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ). (2 Π±Π°Π»Π»Π°)

2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ сортировки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π»ΠΈ Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ сколько Ρ€Π°Π· происходят пСрСстановки Π² процСссС сортировки. ВыяснитС этот вопрос для N=10, 100, 1000.

(3Π±Π°Π»Π»Π°) - 38 -

Π’Π΅ΠΌΠ° β„–14 Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

Многим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ трСбуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ языкС Pascal ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ прСдусмотрСны ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Π’ ABC Pascal Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° Ρ„Π°ΠΉΠ»ΠΎΠ²: тСкстовыС ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅. Π’ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΎΠ±ΠΌΠ΅Π½ с внСшними устройствами производится Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ прСобразования Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚.Π΅., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числа Ρ‚ΠΈΠΏΠ° integer нСпосрСдствСнно ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° диск, занимая ΠΏΠΎ 4 Π±Π°ΠΉΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° просмотра Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½Π° Π½Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ лишь бСссмыслСнный Π½Π°Π±ΠΎΡ€ Π·Π½Π°ΠΊΠΎΠ². Однако ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° для Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ максимальной. Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΡ‹ рассмотрим ΠΏΠΎΠ·ΠΆΠ΅ Π² связи с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… record.

Π Π°Π±ΠΎΡ‚Π° с тСкстовым Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. ЧисловыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Ρ†ΠΈΡ„Ρ€Ρ‹ Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ (стр. 15 ΠΈ стр. 26). Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… выводится Π±Π΅Π· ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ тСкстовый Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π»ΠΈΠ±ΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π½Π° запись

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ тСкстовый Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² простом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ (notepad, aditor, Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ABC Pascal, [ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² Word[12]]). Π’ тСкстовом Ρ„Π°ΠΉΠ»Π΅ ABC Pascal ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Win-1251, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚.

ВСкстовый Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ (Π² соотвСтствии с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ) ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° ABC Pascal.

Рассмотрим сразу простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 10 чисСл Π² тСкстовый Ρ„Π°ΠΉΠ» table.txt.

Program TextOut;

const name = 'text.txt'; // имя Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

var f : text; // файловая пСрСмСнная

n : integer; // пСрСмСнная для Ρ†ΠΈΠΊΠ»Π° for

begin

assign (f,name); // связываниС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π° дискС

rewrite (f); // созданиС ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π° запись

for n:=1 to 10 do writeln(f,n:2,sqr(n):4); // Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» writeln(f,...);

close (f); // Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, сохранСниС всСх Π΅Ρ‰Π΅ нСзаписанных Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° диск

end.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

1. f : text – пСрСмСнная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ встроСнного Ρ‚ΠΈΠΏΠ° «тСкстовый Ρ„Π°ΠΉΠ»Β»;

2. assign (f,name) – сопоставлСниС Ρ„Π°ΠΉΠ»Ρƒ f Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ„Π°ΠΉΠ»Π° name Π½Π° дискС;

3. rewrite (f) – «пСрСзаписываСт» Ρ„Π°ΠΉΠ» f, Ρ‚.Π΅. Π»ΠΈΠ±ΠΎ создаСт Π½ΠΎΠ²Ρ‹ΠΉ пустой Ρ„Π°ΠΉΠ», Π»ΠΈΠ±ΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ старый (Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны поэтому) ΠΈ ΠΎΠΏΡΡ‚ΡŒ создаСт Π½ΠΎΠ²Ρ‹ΠΉ пустой Ρ„Π°ΠΉΠ»;

4. writeln (f,…) – модификация ΡƒΠΆΠ΅ извСстного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° writeln, отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – имя Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

5. close (f) – Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ, особСнно Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π½Π° запись (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅), ΠΈΠ½Π°Ρ‡Π΅ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ утСряна.

- 39 -

ВмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° rewrite, Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ append, Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ дозаписи Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°.[13]

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ чтСния ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² качСствС Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ созданный Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ» text.txt.

Program TextIn;

Uses CRT;

const name = 'text.txt'; // имя Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

var f : text; // файловая пСрСмСнная

a,b : integer; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для чтСния

begin

assign (f,name); // связываниС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π° дискС