Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posibnik_paskal.pdf
Скачиваний:
230
Добавлен:
11.02.2016
Размер:
2.43 Mб
Скачать

«Turbo Pascal »

Значенко О.П.

ТЕМА 8. СТАНДАРТНІ ЗАСОБИ ОБРОБКИ ФАЙЛІВ

Розвинута мова програмування повинна містити засоби для організації збереження інформації на зовнішніх носіях та доступу до цієї інформації.

Файл – це поіменована структура даних, яка представляє собою послідовність елементів одного типа. Кількість елементів файлу практично не обмежена.

Існує три класа файлів – типізовані, безтипові та текстові.

Текстовим – називають файл, що складається із символів. Вони організуються по рядкам, кожен з яких закінчується символом «кінець рядка». Кінець файлу позначається символом «кінець файлу».

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

Файли, що складаються із компонентів одного типу, число яких на початку не визначено називаються типізованими. Вони закінчуються символом «кінець файлу», зберігаються у двійковому вигляді та не переглядаються за допомогою текстових редакторів.

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

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

VAR

 

a: file of char

{файл символів}

b: file of real

{файл дійсних чисел}

c: file of integer {файл цілих чисел}

Файл компонентами якого є дані символьного типу називається текстовим, тому запис: VAR a: file of char еквівалентний A: text

Безтипові файли описуються: VAR b: file;

41

«Turbo Pascal »

Значенко О.П.

Обробка типізованих файлів

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

Розглянемо етапи, які необхідно виконати для кожної операції при роботі з файлом.

Операція запису

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

1.Опис файлу.

Опис файлу може бути в розділі типів або в розділі змінних. Нехай файл f складається з цілих чисел. Його опис має вигляд:

Var f:file of integer; a: integer

де а — компонента файла, даного того самого типу, що й записи файлу. Тип даних файла вказується після слова of в описі — це може бути числовий або символьний тип, масив або запис. Складений тип запису файла необхідно попередньо описати в розділі Tуре.

2.Встановлення відповідності між логічним та фізичним

іменами файла.

Логічне ім'я — це ім'я змінної з розділу vаг. За цим іменем до файла звертаються в програмі. Фізичне ім'я —це ім'я, під яким файл записаний на диску. Оператор встановлення відповідності між іменами файлів має такий вигляд:

assign (<логічне ім'я файла>,’ <фізичне ім'я>’);

Для наведеного опису цей оператор має вигляд: assign (f, ‘File.dat’);

42

«Turbo Pascal »

Значенко О.П.

Фізичне ім'я взято в апострофи Воно з'явиться в змісті

диска в тому

самому каталозі в якому знаходиться файл turbo.exe

 

3.Відкриття файлу для операції «запис».

 

Ця дія виконується оператором rewrite (f);

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

Файл може містити довільну кількість даних. Обмеження розміру файлу в програмі ніяк не оговорюється. В оперативній пам'яті досить однієї області, яка збігається за форматом із записами файлу, а на диску файл може бути такого розміру, скільки є вільного простору в момент його створення.

Запис даних у файл здійснюється за допомогою оператора :write (f, a);

Приклад програми створення та

запису у файл 5 цілих чисел

Program Р1;

 

Var

 

f:file of integer;

{типізований файл}

i:integer;

 

n:integer;

{компоненти файлу}

Begin

 

Writeln('Введіть 5 чисел ');

 

Assign(f,'a:\numbers.dat');

{встановлення відповідності}

Rewrite(f);

{відкриття в режимі запису}

for i:=1 to 5 do

 

Begin

 

Readln(n);

 

Write(f,n);

{запис у файл}

End;

 

Close (f);

{закриття файлу}

Writeln (' введені данні записано в файл a:\numbers. dat');

Readln;

End.

Для дописування даних в кінець файлу використовується процедура

Append(f)

43

«Turbo Pascal » Значенко О.П.

Операція читання

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

Перші два кроки - опис і встановлення відповідності імен - такі самі, як і для операції запису. Якщо з файлом виконуються різні операції то перед виконанням наступної операції його необхідно закрити оператором: Close (f).

Відкриття файлу для читання проводиться оператором reset (f); Для читання даних із файлу використовується оператор: read (f, a);

Після створення файлу і кількох перетворень може бути невідома кількість його записів. Тому при читанні даних із файлу зручно використовувати спеціальну функцію, яка контролює ознаку кінця файлу. Ця функція набуває значення «істинно», якщо трапляється ознака кінця файлу, і «хибно», якщо прочитано інший запис. Оскільки при відкритті файлу для читання вже зчитується перший його запис, який містить ім'я файлу, то можна поставити контроль ознаки кінця файлу, навіть не зчитавши жодного запису оператором read (f, a);

Аналіз ознаки кінця файлу виконується функцією eof(f, a);

Оскільки кількість записів у файлі невідома, то використовувати при читанні даних файлу цикл «перелік» не можна, використовується цикл «доки». Його заголовок While not eof (f) do треба розуміти так: поки не зустрілась ознака кінця файлу, виконувати цикл.

Перейменування файлу

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

Приклад Перейменувати файл lesson. dat на urok.dat

Assign (f,' а:\lesson. dat '); Rename (f,' а:\urok. dat ');

44

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]