- •Лабораторна робота 13. Робота з множинними типами даних . . . 76 Лабораторна робота 14. Створення й обробка файлів . . . . . . . . . . 79
- •Порядок виконання лабораторних робіт
- •Типи даних
- •Оператор привласнювання
- •Оператори уводу-виводу
- •Завдання до лабораторної роботи
- •Умовний оператор
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 4 нестандартні й обмежені типи даних. Оператор варіанта
- •Нестандартні типи даних
- •Обмежені типи даних
- •Оператор вибору варіанта
- •Оператор циклу for
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 5 регулярні типи даних. Селективна обробка масивів
- •Регулярні типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 7 вкладені цикли. Обробка двовимірних масивів
- •Загальні вказівки
- •Завдання до лабораторної роботи
- •Лабораторна робота 8 процедури і функції
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 9 обробка символьних даних
- •Символьний тип даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 10 обробка строкових даних
- •Строковий тип даних
- •Процедури
- •Функції
- •Завдання до лабораторної роботи
- •Лабораторна робота 11 комбіновані типи даних
- •Приклади виконання завдання лабораторної роботи
- •Завдання до лабораторної роботи
- •Лабораторна робота 12 файли і файлові типи даних
- •Файловий тип даних
- •Процедури обробки файлів
- •Завдання до лабораторної роботи
- •Лабораторна робота 13 робота з множинними типами даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 14 створення й оброблення файлів
- •Файли з типом
- •Процедури для роботи з файлами з типом
- •Функції для обробки файлів з типом
- •Завдання до лабораторної роботи
- •Лабораторна робота 15 коректування файлів
- •Завдання до лабораторної роботи
- •Процедури роботи з екраном
- •Процедури установлення текстових режимів I управління кольором
- •Процедури управління курсором
- •Процедура установлення текстових вікон
- •Завдання до лабораторної роботи
- •Лабораторна робота 17 перевірка достовірності даних
- •Вибір критеріїв достовірності
- •Типові алгоритми уводу I перевірки достовірності даних
- •Завдання до лабораторної роботи
- •Лабораторна робота 18 графічні засоби мови паскаль
- •Графічні процедури мови Паскаль
- •Завдання до лабораторної роботи
- •Порядок виконання лабораторної роботи
- •Розрахунок масштабу I зрушення графіка
- •Процедура для креслення графіка
- •Завдання до лабораторної роботи
- •Порядок виконання роботи
- •Список рекомендованої літератури
- •Додаток а
Лабораторна робота 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.
У цій програмі ознакою кінця запису в файл є введення числа нуль.