Лабораторна робота №8 тема: Опрацювання файлів послідовного доступу у тр
МЕТА: Ознайомитись з можливостями мови Турбо Паскаль (ТР) в опрацюванні файлів.
ЗНАТИ: особливості опрацювання текстових файлів у ТР. Вивчити стандартні процедури і функції опрацювання файлів.
ВМІТИ: вивчений матеріал застосовувати при створенні власних нескладних програм опрацювання файлів.
ОБЛАДНАННЯ: технічне забезпечення: ПЕОМ, програмне забезпечення: система програмування Turbo Pascal 6.0.
Короткі теоретичні відомості
Текстовими є файли, в яких:
- інформація подається у текстовому вигляді за допомогою символів у коді ASCII;
- вміст може поділятися на рядки. Ознакою кінця рядка є символ #13 (код 13 – CR). Він може бути об’єднаний з символом переведення рядка #10 (код 10 – LF);
- кінець файла позначається явно символом ^Z (код 26);
- при запису чисел, рядків і логічних значень вони перетворюються у символьний (текстовий) вигляд;
при читанні чисел і рядків вони автоматично перетворюються з текстового подання у машинне.
Таблиця 3. Процедури і функції для роботи
З текстовими файлами
Назва |
Призначення |
Assign(F, Str) |
Надання імені текстовому файлу. |
Rewrite(F) |
Відкриття нового текстового файла для запису. |
Reset(F) |
Відкриття існуючого текстового файла для читання. |
Append(F) |
Відкриття існуючого текстового файла для дописування інформації. |
Close(F) |
Закриття текстового файла. |
Read(F, Ch) |
Зчитування символу Ch з текстового файла F. |
Write(F, Ch) |
Запис символьної змінної Ch у файл F. |
Readln(F, Str) |
Читання з файла F рядка Str. |
Writeln(F, Str) |
Запис рядка Str у файл F. |
Eoln(F) |
Перевірка кінця рядка або кінця файла |
SeekEoln(F) |
Функція повертає TRUE, якщо досягнуто кінець рядка або кінець файла, або перед ними стоять лише пропуски і (або) символи табуляції (#9), інакше – FALSE |
SeekEof(F) |
Функція повертає TRUE, якщо досягнуто кінець файла, або перед ними стоять лише пропуски, ознаки кінців рядків і (або) символи табуляції. |
Для роботи з текстовим файлом необхідно:
1) Визначити файлову змінну (змінну логічного файла):
Var F : Text;
З текстового файла можна зчитувати інформацію і записувати інформацію у файл. Нові дані завжди записуються в кінець файла.
2) Після визначення файлової змінної необхідно пов’язати її з іменем фізичного файла на диску. Для цього призначена процедура
Assign(Var Файлова_змінна : Файловий_тип; Ім’я_файла : String);
Приклад. Assign(f, ‘ABC.txt’); Assign(f, ‘c:\DOC\klm.doc’);
Readln(Filname); Assign(f, Filname);
3) Після пов’язування файлової змінної з фізичним файлом необхідно відкрити файл, тобто підготувати його для опрацювання. Текстовий файл можна відкривати трьома способами:
а) Reset(Var Файлова_змінна : Text); – відкриває текстовий файл для зчитування з нього інформації;
б) Rewrite(Var Файлова_змінна : Text); – відкриває файл для запису. Ця процедура служить для створення нового файлу. Якщо файл з таким ім’ям вже існує, дані з нього будуть знищені;
в) Append(Var Файлова_змінна : Text); – відкриває текстовий файл для дописування в нього інформації.
Приклад. Rewrite(f); Reset(f); Append(f);
Для зчитування даних з текстового файла використовуються процедури:
Read(Var Файлова_змінна: Text; Змінна1 [, Змінна2,…, ЗміннаN]: Char); – читання з файла даних символьного типу;
Readln(Var Файлова_змінна: Text; Змінна1: String); – читання з файла рядкових даних;
Readln(Var Файлова_змінна: Text); – перехід на новий рядок у файлі. При цьому пропускаються всі символи, включаючи пропуски і маркер кінця рядка, тобто відбувається перехід на новий рядок. Така форма запису процедури може використовуватися для підрахунку кількості компонентів у файлі:
St := 0; {лічильник рядків}
While not EOF(F) do
begin
ReadLn(F); {пропуск рядка}
St := St +1
end;
Write(‘У файлі знаходиться ’, St:4, ‘ рядків’);
Для запису даних у текстовий файл використовуються процедури:
Write(Var Файлова_змінна: Text; Змінна1 [, Змінна2,…, ЗміннаN]: Char); – запис до файла даних символьного типу;
Writeln(Var Файлова_змінна: Text; Змінна1: String); – запис до файла рядкових даних;
Writeln(Var Файлова_змінна: Text); – запис у файл порожнього рядка. Застосовується для запису у файл порожнього рядка, тобто записується тільки маркер кінця рядка. Ця властивість використовується для внесення у текстові документи рядків-пропусків. Наприклад, документ, що зберігається у файлі, починається з 5 рядків-пропусків. Відповідний фрагмент програми може виглядати так:
for i :=1 to 5 do WriteLn(F);
Якщо не використовується і файлова змінна F: WriteLn; то за замовчуванням розуміється стандартний файл виведення на екран Output і виконується пропуск рядка. Наприклад, якщо при виведенні на екран треба пропустити 7 рядків, можна записати:
for i :=1 to 7 do WriteLn
Для визначення кінця рядка у файлі і кінця файла призначені функції:
EOLn(Var Файлова_змінна: Text): Boolean; – повертає TRUE, якщо досягнуто кінець рядка або кінець файла, інакше – FALSE
EOF(Var Файлова_змінна: Text): Boolean; – повертає TRUE, якщо досягнуто кінець файла, FALSE в інших випадках.
Після опрацювання файла його необхідно закрити. Для цього призначена процедура
Close( Var Файлова_змінна: Text);
Схема створення текстового файла:
оголосити файлову змінну як текстову;
надати файлу ім’я (Assign);
відкрити файл для запису (Rewrite);
підготувати рядок для запису (наприклад, ввести з клавіатури);
записати рядок у файл (Writeln);
закрити файл (Close).
Пункти 4) і 5) повторюються необхідну кількість разів.
Схема опрацювання текстового файла:
1) надати файлу ім’я (Assign);
2) відкрити файл для читання (Reset);
3) прочитати елемент файла (Readln);
4) опрацювати елемент (наприклад, надрукувати);
5) закрити файл (Close).
Пункти 3) і 4) повторюються необхідну кількість разів.
Схема коректування текстового файла:
1) надати файлу ім’я (Assign);
2) відкрити файл для внесення нових елементів (Append);
3) записати новий елемент (Writeln);
4) закрити файл (Close).
Пункт 3) повторюється необхідну кількість разів.