Стандартні підпрограми для обробки файлів
Завдання (інструкційна картка) для лабораторної роботи
Тема дисципліни.Тип даних, файли
Інструкційна картка
Лабораторного заняття № 1
Тема. Робота з файлами
Мета заняття. Сформувати практичні вміння та навички створювати програми з використанням стандартних процедур та функцій для роботи з файлами, розглянути приклади типових програм по обробці файлових типів даних. Формувати якості особистості студентів та пізнавальний інтерес; показати значення теми для програмування та розв’язування задач; спонукати до пізнавальної, наукової, творчої діяльності; розвивати самостійність, увагу, відповідальність та творче мислення.
Методичне забезпечення
1. Глинський Я. М. Паскаль: навчальний посібник / Глинський Я. М., Анохін В. Є., Ряжська В. А. – Львів: СПД Глинський, 2010. – 192 с.
2. Нога Л. В. Конспект лекцій з дисципліни “Основи програмування та алгоритмічні мови” Частина 1 і 2 / Нога Л. В. – Херсон: Веселка, 2006. – 134 с.
3. Інструкційні картки.
Матеріально-технічне забезпечення
1. Комп’ютери, конспекти лекцій.
2. Інструкційні картки до лабораторного заняття, роздруковані завдання по варіантах.
Питання для актуалізації опорних знань
1. Що таке файлова змінна?
2. Як файл готувати до запису даних?
3. Як файл готувати до зчитування даних?
4. Яким чином організується прямий доступ до даних?
5. Які основні операції виконують над файловою змінною?
6. Чи правильно, що елементи файлу повинні бути одного типу?
7. Чи правильно, що файл відрізняється від масиву тільки тим, що розмір файлу довільний, а розмір масиву фіксований?
8. В яке місце файлу можна добавляти новий елемент: в початок, в кінець, в середину, куди завгодно?
9. Чи можна порівнювати файлові змінні або присвоювати один файл другому?
Правила техніки безпеки
Перед початком роботи потрібно перевірити стан обладнання, робочого місця.
Під час роботи потрібно дотримуватися правил експлуатації комп’ютерного обладнання.
При роботі за комп’ютером слід дотримуватись правил особистої безпеки, зберігати відстань від рівня очей до монітора, від робочого стола до тіла.
Забороняється ходити по комп’ютерній лабораторії, розливати рідину на підлогу, столи, обладнання, заходити з їжею, розмовляти між собою.
Загальні відомості з теми
Опис файлового типу складається з ключового слова File, за яким ідуть ключове слово of та тип елементів файлу. Елементами файлу можуть бути об’єкти довільного типу, крім файлового. Змінна файлового типу є досить специфічною, її не можна використовувати у виразах та в операторі присвоєння. Файлова змінна ототожнюється з деяким фізичним файлом і потім у програмі лише визначає файл, над яким виконуються операції.
Наприклад,
Type complex = Record
re,im: Real
end;
comp_fil = File of complex;
Var f: comp_fil;
h: File of Integer;
Тут файлова змінна f зображає файл, елементи якого мають записний тип complex, h – файл, елементи якого є цілі числа.
Послідовність елементів файлу встановлює їхній природний порядок, причому в кожен момент безпосередньо доступним є один елемент файлу. Для доступу до елемента існує абстрактний вказівник файлу. Виконувати певні операції можна лише з тим елементом, на якому встановлено вказівник. Інші елементи стають доступними в міру пересування вказівника файлу. У кожному файлі є мітка його кінця. Вказівник не може бути переміщений за цей кінець. Якщо вказівник файлу міститься на мітці кінця, то під час записування у файл деякої величини мітка його кінця разом із вказівником переміщуються далі, а під час зчитування з файлу фіксується помилка введення-виведення. Над одним і тим самим файлом можна одночасно проводити операції зчитування і записування елементів.
Стандартні підпрограми для обробки файлів
Вони призначені для організації і ефективної обробки файлів. У подальшому filevar означає будь-який файловий тип, anystring – будь-який рядковий тип, filetype – тип, що збігається з типом елементів файлу.
Процедури
Assing(Var f: filevar; s: anystring) – файлова змінна f ототожнюється з фізичним файлом з іменем s. Ім’я s містить основне або розширене ім’я файлу, а також може містити ім’я дисководу. Будь-яка робота з файлом повинна починатися з цієї процедури.
Наприклад, процедура Assign(h,’a:myfile.dta’) ототожнює файлову зміну h фізичним файлом ‘myfile.dta’, що міститься в дисководі A.
Close(Var f:filevar) – закриття файлу f. В цьому випадку у файл записується мітка кінця файлу і вносяться необхідні зміни в директорій. Ця процедура необхідна для збереження результатів під час створення чи поновлення файлів.
Erase(Var f:filevar) – файл f витирається з диска.
Flush(Var f:filevar) – очищає буфер файлу f. Коли відбувається запис у файл, то дані записуються в нього не відразу. Спочатку накопичуються у буфері, що міститься в оперативній пам’яті, а коли буфер заповниться, відбувається запис у файл. Процедура Flush записує вміст буфера в тому стані, в якому він є в момент виклику процедури у файл. Якщо перед закриттям файлу буфер не був порожнім, то процедура Close автоматично переносить його вміст у файл.
Read(Var f:filevar; Var a1,…,an:filetype) – зчитування елементів з файлу f і присвоєння їх значень змінним із списку. Список повинен складатися хоча б з однієї змінної, інакше не виконуватимуться ніякі дії. Зчитування починається з поточного місцезнаходження вказівника файлу, а після закінчення процедури він встановлюється на першому непрочитаному елементі. Якщо тип деякої змінної зі списку не збігається з типом елементів файлу, то фіксується помилка введення-виведення.
Rename(Var f:filevar; s:anystring) – ім’я файлу f замінюється іменем, заданим рядком s. Нове ім’я не повинно збігатися з іменами вже існуючих файлів.
Reset(Var f:filevar) – відкриває вже існуючий файл f. Вказівник файлу встановлюється на перший елемент. Якщо такого файлу не існує, то виникає помилка введення-виведення.
Rewrite(Var f:filevar) – утворює новий файл f. Якщо такий вже існував, то він очищається. Вказівник файлу знаходиться на початку файлу.
Seek(Var f:filevar; n:Integer) – встановлює вказівник файлу f на n-й елемент. Перший елемент має номер 0, другий – 1 і т.д.
Write(Var f:filevar; a1,….,an:filetype) – запис у файл f значень змінних із списку. Список повинен складатися хоча б з однієї змінної, інакше не виконуватимуться ніякі дії. Після виконання процедури вказівник файлу міститься після останнього записаного елемента. Якщо тип деякої змінної зі списку не збігається з типом елементів, то фіксується помилка введення.
Процедури Flush, Read, Seek, Write застосовуються лише до відкритих файлів, а процедури Erase і Rename – до закритих файлів. Порушення цього правила призводить до виникнення помилки введення-виведення
Функції
Eof(Var f:filevar):Boolean – має значення True, якщо вказівник файлу міститься на мітці кінця файлу, і False – в іншому випадку.
FilePos(Var f:filevar):Integer – визначає номер елемента, в якому міститься вказівник файлу.
FileSize(Var f:filevar):Integer– визначає кількість елементів у файлі.
Усі три функції повинні застосовуватись до відкритих файлів.