Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Паскаль.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
309.25 Кб
Скачать

Лабораторна робота №7

Файли

Типізовані файли

Теоретичні відомості

Файл це структура даних з однорідними компонентами, які звуться записами. Існує три типи файлів: типізовані файли, записи яких мають жорстку структуру, частіше всього Record; текстові файли, що складаються з символів та рядків; нетипізовані файли, у яких можуть передаватися блоки по 128 байт у кожному. В тих випадках, коли даних багато або їх треба довго збеігати, застосовують файли. Файл –сукупність даних будь-якого типу. На відміну від масиву файл зберігається на диску. Кількість даних при його опису не задається. За способом доступу до даних файли поділяються на два види послідовного доступу та прямого доступу. У файлах послідовного доступу записи можуть мати різну довжину, а у файлах прямого доступу- тільки однакову. Для того щоб не мати помилок текстові поля повинні мати достатню кількість символів. Під поняттям файлу розуміють з одного боку файлову змінну, яку використовують в програмі, а з іншого боку ім'я файлу на диску. Файл на диску ніяк не описується. Тим часом файлова змінна описується в програмі. Приклад опису типованого цілочисельного файлу. Var f1:file of integer; Приклад опису типованого файлу з записами, які знаходяться в масиві Mas.

Type sprav_book=record

Surname:string50];

Index: string[6];

Telepfone: string[14];

End;

Var

Mas: Array[1..20] of sprav_book;

F:file of Mas;

Елементи файлу нумеруються, починаючи з 0, вони мають однакову довжину и тип. Файл має ознаку початку та кінця, який розпізнається функцією Eof (скорочено від End of file). Далі треба зв'язати файлову змінну з конкретним файлом на диску. Для цього використовують оператор Assign. Assign(f,’spravochnic.txt’); Де f- це ім'я файлу в програмі, а spravochnic.txt –його ім'я на диску. Далі вказується напрям передачі даних- з памяті в файл, або з файлу в память. Для запису в файл він відкривається оператором Rewrite, а для читання оператором Reset. Після того, як робота з файлом закінчена його закривають оператором Close. Процедура Seek(f,7) установить вказівник перед записом 7. Процедура Filesize(f)-визначає розмір файлу.

Процедури та функції для типізованих файлів.

Типізованіі файли

Assign (f,name)- ставить у відповідність файлову змінну f спеціфікації файлу Name у вигляді: ’диск:\каталог:\ім’я ’

Reset(f)-відкриває уже існуючий файл f та позиціонує покажчик запису на початок файлу.

Rewrite(f)-створює новий файл f, покажчик запису встановлюється на початок файлу.

Close(f)-закриває файл f.

Eof(f)-функція приймає значення True, якщо покажчик вказує на кінець файлу, інакше False.

Erase(f) –знищує файл f, який перед тим треба закрити.

Rename(f,s)- переіменування закритого файлу f у файл s.

Read(f,s1,s2)-читання з файлу f у змінні s1,s2.

Seek(f,n)-позиціонування покажчика запису на запис з номером n.

Filepos(f)- функція визначає номер запису, на який вказує покажчик.

Filesize(f)-функція визначає кількість записів у файлі f.

Алгоритм обробки файлів.

  1. Встановити відповідність файлової змінної та реального файлу на диску.

  2. Відкрити файл для читання, або для запису.

  3. Читати запис файлу в оперативну память.

  4. Обробити дані в памяті.

  5. Записати результати з памяті у файл.

  6. Закрити файл.

В а р і а н т и з а в д а н ь

  1. Створити файл цілих чисел. Перемістити цілі додатні , парні числа до другого файлу, від’ємні та непарні у третій файл. Шляхом читання другого та третього файлів створити четвертий файл, у якому парні та непарні числа чергуються.

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

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

  4. Створити файл цілих та дробових чисел, вводячи дані з клавіатури. Попарно скласти два числа, що знаходяться поруч (перше+друге, третє+ четверте). Якщо сума ціле число то переписати такі числа в вихідний файл. Підрахувати кількість таких сум.

  5. Створити файл записів з полями: прізвище, телефон, плата. Вилучити з файлу абонентів, що не сплатили.Переписати прізвища в алфавітному порядку.

  6. Ввести з клавіатури записи і занести їх у файл. Структура запису: автор та назва книги. Вилучити із файлу всі записи, у яких прізвище починається на задану букву.

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

  8. Заданий файл F, компонентами якого є цілі числа однозначні та двозначні (в межах від 1 до 50). Створити два вихідні файли. Один з яких містить числа однозначні, а другий двозначні.

  1. Заданий файл записів з полями: прізвище, телефон, не відсортований (номера телефону може не бути). Вилучити з файлу абонентів у яких немає номеру телефону. Вихідний файл відсортувати за номером телефону.

  1. Заданий файл записів з полями Прізвище та прохідний бал. Відсортувати заданий файл за балом. В цьому ж файлі видалити ті записи, в яких не набрано прохідного балу.

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

  1. Заданий файл цілих чисел. Записати в вихідний файл всі числа, що діляться на 3 та не діляться на 9.

  1. Заданий файл цілих чисел. В вихідний файл переписати всі від'ємні числа без повторень, дописати кількість повторів чисел.

  1. Пряма на площині задається рівнянням Ах+Ву+С=0, А та В не дорівнюють 0. Якийсь файл містить коефіцієнти декількох прямих. Переписати в вихідний файл всі коефіцієнти тих прямих,які є паралельними до даної

  1. Створити два файли даних з полями прізвище та ціна за деяку послугу. Якщо прізвища повторюються, то просумувати ціну послуг, переписати дані в вихідний файл..