Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все лабы.doc
Скачиваний:
9
Добавлен:
05.11.2018
Размер:
1.86 Mб
Скачать

Лабораторна робота 12 файли і файлові типи даних

Мета роботи: виробити практичні навички в написанні та налагодженні програм при роботі з файловими типами даних.

Файли

Файл являє собою послідовність компонентів одного типу й однієї довжини. Число компонентів у файлі не фіксовано. У кожний момент доступний тільки один компонент. Говорять, що на цей компонент установлений покажчик файла.

У файлах послідовного доступу (ми будемо розглядати зараз тільки такі файли) почати писати у файл можна тільки із самого його початку, дописуючи нові компоненти послідовно один за одним. Для читання також треба починати перегляд файла із самого початку.

Файловий тип даних

Загальний вид опису файлового типу - type T = file of Tk;

Тут Т - ідентифікатор типу; Тк - тип компонента (будь-який, крім типу file). Кожну змінну-файл треба описати у розділі var. Наприклад, файл F цілих чисел:

type AA = file of integer;

var f:AA;

Файл може бути описаний і безпосередньо при описі змінної, наприклад: var f:file of real;

Часто компонентами файлу є записи. У цьому випадку файлову змінну можна описати так:

type zap = record

N : integer;

Fio : array[1..3] of string;

ok : real

end;

var fa:file of zap; ra:zap;

Процедури обробки файлів

Робота з файлами (надалі розглянемо файл з ім'ям F) проводиться за допомогою наступних стандартних процедур:

1 assign(F,ST) - присвоєння імені файла. Ім'я файла, що є значенням строкового вираження ST, привласнюється перемінній файлового типу F. Наприклад

assign(F,’ a : fil.dat ’);

2 rewrite(F) - підготовка до запису інформації в початок файла F; створення нового файла.

3 write(F,A) - запис значення змінної A у файл F.

4 reset(F) - підготовка до читання інформації з початку файла F.

5 read(F,A) - читання компонентів файла в змінну A.

6 close(F) - закриття файла, призначеного змінній F. Якщо файл був відкритий, ніколи не слід виходити з програми, попередньо не закривши його.

Для того, щоб визначити готовність файла до читання або до запису інформації, існує стандартна функція eof(F). Якщо покажчик файла просунувся на кінець файла (готовність до запису), то ця функція набуває значення true, в інших випадках - false. Зокрема, процедура rewrite очищує файл і встановлює покажчик на ознаку кінця файла. Функції eof(F) привласнюється значення true. Навпроти, процедура reset установлює покажчик файла на перший компонент, а функції eof(F) привласнюється значення false.

Функцію eof(F) можна використовувати в умовному операторі після if чи в операторі циклу while. Якщо потрібно після if чи після while помістити не умову кінця, а умову того, що файл не закінчений, то застосовується наступна конструкція, наприклад:

while not eof(f) do read(f, a);

Приклад виконання завдання лабораторної роботи

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

Програма має вид:

program pr37;

uses crt;

var f:file Of integer;

x,n,s,k:integer; c:char;

begin clrscr;

assign(f,'d:\fa.dat');

rewrite(f);

WRITELN('УВОДЬ ЦІЛІ ЧИСЛА'); READ(X);

while x<>0 do begin

n:=sqr(x); write(f,n);

read(x) end;

RESET(F); CLRSCR;

WRITELN('ЗМІСТ ФАЙЛУ:');

s:=0; k:=0;

while not eof(f) do

begin

read(f,x); write(x:4);

if x mod 2 =0 then

S:=S+X ELSE K:=K+1 END;

CLOSE(F); WRITELN;

WRITELN('СУМА ПАРНИХ ЧИСЕЛ =',S:5);

WRITELN('КІЛЬКІСТЬ НЕПАРНИХ ЧИСЕЛ =',K:2);

c:=readkey

end.

У цій програмі ознакою кінця запису в файл є введення числа нуль.