Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ.doc
Скачиваний:
23
Добавлен:
28.10.2018
Размер:
543.74 Кб
Скачать
  1. Процедури і функції для роботи з файлами.

Файл - це одномірний масив байтів, що має як мінімум один твердий зв'язок (ім'я файлу). Файли можуть містити інформацію у двійковому або в текстовому виді. Файли містять дані, сценарії оболонки або програми. Крім того, деякі імена файлів являють собою такі абстрактні об'єкти, як сокети й драйвери пристроїв.

Передбачено безліч функцій для роботи з файлами. Більшість цих функцій можна віднести до однієї з наступних двох категорій:

Функції для створення файлів.

Функції для керування файлами.

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

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

При роботі з файлами існує певний порядок дій, якого необхідно дотримуватися. От всі ці дії:

Створення (опис) файлової змінної;

Зв'язування цієї змінної з конкретним файлом на диску або із пристроєм вводу-висновку (екран, клавіатура, принтер і т.п.);

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

Дії з файлом: читання або запис;

Закриття файлу.

Програмування доступу до файлу в язиці Turbo Pascal починається з опису файлової змінної (змінної файлового типу). Цей опис будується за допомогою службового слова file, після якого може бути зазначений тип окремих елементів файлу.

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

Текстовий файл є файлом послідовного доступу, і його можна представити як набір рядків довільної довжини. Логічно послідовний файл можна представити як іменований ланцюжок байтів, що має початок і кінець. Послідовний файл відрізняється від файлів з іншою організацією тим, що читання (або запис) з файлу (у файл) ведуться байт за байтом від початку до кінця.

Також існують так називані "типізовані" файли, тобто файли, що мають тип. Цей тип визначає, якого роду інформація втримується у файлі й задається в параметрі.

Нетипизований файл - файл, у якому ми вказуємо як тип файлу просто File, тобто без типу.

Те одержуємо "нетипизований" файл, читання й запис у який відрізняється від роботи з файлами інших типів. Ці дії виробляються шляхом вказівки кількості байт, які потрібно прочитати, а також вказівкою області пам'яті, у яку потрібно прочитати ці дані.

Кожній програмі доступні два стандартних файли input (клавіатура) і output (екран). Це - текстові файли. Будь-які інші файли стають доступними після виконання спеціальних процедур.

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

Відкриття файлу - це вже більше ускладнений процес, ніж зв'язування з ним змінної. Тут ураховується, навіщо відкривається файл - для запису або читання, а також залежно від типу файлу процедури виконують різні дії.

Цей процес полягає у використанні однієї із трьох наявних процедур:

1. Відкриття файлу на читання. Це може бути текстовий, типізований або не типізований файл. У випадку з текстовим файлом, він відкривається тільки на читання. У випадку з типізованим і не типізованим файлом - він відкривається на читання й запис.

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

3. Процедура створення нового файлу або перезаписування існуючого.

Читання файлів. Читання файлів виробляється за допомогою відмінно відомих нам процедур Read і Readln. Вони використаються також, як і при читанні інформації із клавітури. Відмінність лише в тім, що перед змінної, у яку міститься лічене значення, указується змінна файлового типу (дескриптор файлу).

Запис у файли вироблятися точно так само, як і запис на екран - за допомогою процедур Write і Writeln. Як і у випадку із читанням, перед записуваною у файл змінної вказується дескриптор файлу.

TURBO PASCAL уводить ряд процедур і функцій,  застосовних для  будь-яких типів файлів:  Assign,  Reset,  Rewrite,  Close,  Rename, Erase, Eof,

Процедура Assign зв'язує логічний файл із фізичним файлом,  повне  ім'я  якого  задане  в  рядку FileName.

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

Процедура Rewrite відкриває логічний файл для наступного запису  даних.  Після успішного виконання цієї процедури файл готовий до запису в нього першого  елемента.

Процедура Close закриває  відкритий до цього логічний файл. Виклик процедури Close необхідний при завершенні роботи з файлом. 

Логічна функція EOF Boolean повертає значення TRUE, коли при читанні досягнуть кінець файлу.  Це означає, що вже прочитано останній елемент у файлі або файл після відкриття виявився порожній.

Процедура Rename дозволяє перейменувати фізичний файл на диску, пов'язаний з логічним файлом. Перейменування можливо після закриття файлу.

Процедура Erase знищує фізичний файл на диску, що був пов'язаний з файлової змінної.  Файл до моменту виклику процедури Erase повинен бути закритий.

Пример. Запись текстового файла на диск и ввод в него текста.

program wtf;

type fil=text;

var f1:fil; name:string[35]; txt:string;

begin

write('Введите имя файла для записи текста>');

readln(name);

writeln;

assign(f1,name);

rewrite(f1);

writeln('Введите текст для записи (для окончания-Enter):');

writeln;

repeat

write(':>');

readln(txt);

writeln(f1,txt);

until txt='';

close(f1);

writeln;

writeln('Ввод окончен, нажмите Enter.');

readln;

end.