Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posibnik_paskal.pdf
Скачиваний:
230
Добавлен:
11.02.2016
Размер:
2.43 Mб
Скачать

«Turbo Pascal »

Значенко О.П.

Знищення файлу

Процедура Erase знищує існуючий файл з диску. При цьому файлова змінна попередньо має бути пов’язана з реально існуючим файлом.

Приклад Знищення файлу lesson. dat

Assign (f,' а:\ lesson. dat’); Erase (f);

Приклад програми виведення на екран вмісту файлу

Program Р2; Var

f:file of integer; n:integer;

Begin

Writeln('Вміст файлу’); Assign(f,' а:\ numbers.dat');

Reset(f); {відкриття файлу для читання} While not EOF(f) do {доки не буде досягнуто кінець

файлу}

 

Begin

 

Read(f,n);

{прочитати компонент файлу}

Writeln(n); {вивести прочитаний компонент на

екран}

 

End;

 

Close (f);

{закриття файлу}

Readln;

 

End.

 

Послідовний та прямий доступ до файлу

Файл – це послідовна структура даних. Після його відкриття доступний перший компонент. Можна послідовно зчитувати чи записувати один компонент файлу за іншим.

Для прямого доступу до компонентів файлу використовуються вбудовані

45

«Turbo Pascal » Значенко О.П.

процедури та функції Турбо Паскаля, які дозволяють визначити позицію необхідного компоненту у файлі та вказати безпосередньо на нього. При прямому доступі до файлу його компоненти нумеруються від нуля до n-1, де n – число компонентів у файлі. (0 – перший компонент)

Функція filesize(f), де f – файлова змінна, що повертає значення типу longint, тобто число реальних компонентів відкритого файлу f. (для пустого файлу вона покарне значення 0 )

Функція filepos(f) повертає значення типу longint - поточну позицію у файлі f, що має бути відкритий. Якщо файл щойно відкритий то значення filepos(f) = 0. Після зчитування останнього компоненту з файлу значення filepos(f) співпадає зі значенням filesize(f), що вказує на досягнення кінця файлу.

If filepos(f) = filesize(f) then

Writeln(' досягнуто кінця файлу')

Приклад програми визначення кількість компонентів файлу цілих чисел, та виведення вмісту файлу на екран.

Program Р3;

 

Var

 

f:file of integer;

{типізований файл}

i:word;

 

n:integer

{компоненти файлу}

Begin

 

Assign(f,'a:\numbers.dat');

{встановлення відповідності}

Reset(f);

{відкриття в режимі читання}

Writeln (' у файлі numbers. dat', filesize(f), 'чисел');

for i:=1 to filesize(f) do

 

Begin

 

Read(f, n);

 

Write(n, ' ');

 

End;

 

Close (f);

{закриття файлу}

Readln;

 

End.

 

46

«Turbo Pascal »

Значенко О.П.

Процедура seek(f,n)

встановлює покажчик у відкритому файлі f на

компонент з номером n. (нумерація починається з нуля).

Процедура truncate(f), де f – ім’я файлової змінної, відсікає частину відкритого файлу, починаючи з поточного компоненту та підтягує на його місце кінець файлу.

Приклад. Записати у файл 5 елементів масиву,зчитати їх, знайти сумму та дописати її у файл.

PROGRAM Р4;

VAR

f:file of integer; i,s,t:integer;

a:array [1..10] of integer;

BEGIN s:=0;

Assign(f,'d:\numbers.dat');

Rewrite(f); for i:=1 to 5 do

Begin

write('a[',i,']='); Readln(a[i]); Write(f,a[i]);

End; Close (f);

Reset(f);

for i:=1 to filesize(f) do

Begin

Read(f, a[i]); s:=s+a[i];

End;

seek(f,filesize(f)); write(f,s);

close(f);

reset(f);

for i:=1 to filesize(f) do begin

read(f,a[i]); Write(' ',a[i], ' ');

end; close(f); Readln;

END.

47

«Turbo Pascal »

Значенко О.П.

 

Робота з текстовими файлами

При роботі з тестовими файлами дія процедур rewrite, reset, close, rename, erase та функції eof аналогічна їх дії при роботі з типізованими файлами.

При роботі з текстовими файлами користуються процедурою append – спеціальне відкриття файлу для запису в існуючи файли додаткової інформації у кінець файлу.

Запис у текстовий файл та зчитування даних може здійснюватися за допомогою процедур write, writeln, read, readln.

Особливість даних операторів полягає у тоиму, що перед записом даних у текстовий файл за допомогою процедури write відбувається їх перетворення у тип string. Дія оператора writeln відрізняється тим, що він записує у текстовий рядок символ кінця рядка.

При зчитуванні даних відбувається перетворення з рядкового до необхідного типу даних. Якщо перетворення неможливе, то генерується код помилки, значення якої можна дізнатися звернувшись до функції IOResult.

Правила роботи з текстовими файлами:

1.Коли вводяться числові значення, два числа вважаються розділеними, якщо між ними є хоча б один пробіл, символ табуляції чи символ кінця рядку.

2.При введенні рядків початок поточного рядка іде одразу за останнім до цього символом. Вводиться кількість символів, рівне оголошеній довжині рядка. Якщо при зчитуванні зустрічається символ «кінець рядка», то робота з цим рядком закінчується. Сам символ кінця рядка є розділювачем та у змінну ніколи не зчитується.

3.Процедура readln зчитує значення поточного рядка файла, курсор переводиться на новий рядок файлу, і в подальшому введення здійснюється

з неї.

48

«Turbo Pascal »

Значенко О.П.

Приклад: Написати програму складання двохб матриць , результуючу матрицю вивести на екран дисплея та у текстовий файл.

PROGRAM Р5; Var

f:text;

i,j,k:integer;

a,b,c:array [1..3,1..3] of integer;

Begin

Assign(f,'d:\matrix.txt');

Rewrite(f); randomize;

For i:=1 to 3 do for j:=1 to 3 do a[i,j]:=random(5);

For i:=1 to 3 do begin

for j:=1 to 3 do write(a[i,j], ' '); writeln;

end;

writeln('------');

For i:=1 to 3 do for j:=1 to 3 do b[i,j]:=random(5);

For i:=1 to 3 do begin

for j:=1 to 3 do write(b[i,j], ' '); writeln;

end;

writeln('------');

For i:=1 to 3 do begin

for j:=1 to 3 do begin

c[i,j]:=a[i,j]+b[i,j]; write(c[i,j], ' '); write(f, c[i,j]);

end; writeln;

writeln(f); {переведеня курсора у файлі на новий рядок}

end; Close (f); Readln;

End.

49

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]