ПРИКЛАД ПРОГРАМИ РОЗШИРЕННЯ ФАЙЛА



ЛАБОРАТОРНА РОБОТА №16

Тема: ФАЙЛИ.

МЕТА: Навчитись писати програмні модулі для створення файла з типом на магнітному диску та занесення даних до цього файла, а також складати програмні модулі для обробки даних, прочитаних з типізованого файлу за індивідуальними завданнями

    

ТЕОРЕТИЧНІ ВІДОМОСТІ.

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

 Файл - це набір однотипових даних на магнітному диску, який має ім'я

.

ОБ’ЯВА ФАЙЛУ З ТИПОМ

Опис файлового типу складається з ключового слова FILE, за яким іде ключове слово OF, а потім - опис типу елементів файлу.

Элементами файла можуть бути об’єкти будь-яких відомих типів, за винятком файла.

Наприклад:

Опис файлу, який складається з елементів записного типу:

1. Спочатку описуємо файловий тип:

<ім’я типу> = FILE OF RECORD

                          <поле>:<тип>;

                         ...

                         <поле>:<тип>;

                END;

2. Потім опишемо змінну для доступу до файлу:

<Ім’я1>: FILE OF <ім’я типу>;

3. І накінець опишемо змінну для доступу до запису:

<ім’я2>: <ім’я типу>;

 

ПРИКЛАД ОПИСУ ФАЙЛА

 

Для прикладу опишемо файл, який складається із відомих вам записів, які вміщують інформацію про студента: 

- Номер по списку,

- Прізвище, ініціали,

-  місце проживання.

TYPE

   INFORM = RECORD

            Num: byte;         {номер студента}

            FIO: string [20];   {Прізвище та ініціали}

            Adr: string[20];      {домашня адреса}

END;

 

VAR

  FV: FILE OF INFORM; {змінна для доступу до файлу}

  RV: INFORM;      {змінна для доступу до запису}

 

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

Дії з записом - читання запису з диску, зміна значень полів, записування запису на диск - призводяться за допомогою змінної RV.

 

СТВОРЕННЯ ФАЙЛА

 

Перед тим, як щось робити з даними файла, його треба створити. Алгоритм створення досить простий:

· привласнити файлу ім'я;

· відкрити файл як новий;

· увести дані з клавіатури;

· записати їх у файл;

· закрити файл.

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

Assign(FV,'<ім'я>') - привласнити файлу, визначеному FV ім'я 'ім'я'.

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

FV - відома файлова змінна;

<ім'я> - повинно складатися не більш ніж з 8 символів+3 символ на розширення.

Наприклад: Assign(FV,'VOVA.DOC'); ASSIGN(FV,'d:/TP70/DAT/OCEN.DAT');

    

Rewrite(FV)- відчинити поки ще не існуючий (новий) файл.

Reset(FV) - відчинити вже існуючий на диску файл.

Write(FV,RV) - записати запис, визначений RV у файл FV.     

Close(FV) - закрити файл.

Erase(FV) - знищити файл FV на диску.

От і всі стандартні процедури для створення файла, що вам треба знати.

 

ПРИКЛАД СТВОРЕННЯ ФАЙЛА

 

Створюємо файл даних про студентів гpупи на основі відомого запису типу INFORM. Умовимося, що у файлі не може бути більш 55 записів. Якщо введений номер студента = 55, то це буде служити ознакою закінчення введння даних у файл.

 PROGRAM CREATION_INFO_SYSTEM;           - заголовок

 Uses CRT;                                                                 - підключення CRT

 TYPE INFORM = RECORD                                    - опис типу

   Num : byte;                                                         - номер

   FIO : string[20];                                                  - ім'я

   Adr : string[20];                                                  - адреса

END;                                                                     - кінець запису

 VAR                                                                           - роздів описів

FV : FILE OF INFORM;                                         - змінна для файла

RV : INFORM;                                                        - змінна для запису

 BEGIN                                                                       - розділ операторів

Assign(FV,'INFORM. DOC')                                   - привласнимо файлу ім'я

Rewrite(FV);                                                             - відкриття як нового

WHILE True DO BEGIN                                         - введення в циклі WHILE

Write('Номер:'); Readln(RV. Num);                      - запит-введення

IF RV. Number=55 THEN BEGIN Close(FV);Halt;END; - перевірка на вихід

Write('Ф. И.О.:');Readln(RV. FIO);                      - запит-запровадження

Write('Адреса:'); Readln(RV. Adr);                       - запит-введення

Write(FV,RV);                                                         - запис у файл

END;                                                                          - кінець WHILE

 END.                                                                           - кінець програми

 

ОБРОБКА ДАНИХ ФАЙЛА

 

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

· привласнити файлу ім'я

· відчинити вже існуючий файл

· вважати запис

· опрацювати значення поля

· прочитати інший запис

· опрацювати значення поля і т.д.

· закрити файл

              

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

    

Assign(FV,<ім'я>)- привласнити файлу ім'я .

Reset(FV)  - відчинити вже існуючий на диску файл

Read(FV,RV) - прочитати запис

Close(FV)  - закрити файл

Seek(FV,N) - підставити вказівник файлу під запис або прочитати запис номер N

FileSize(FV) - функція повертає кількість записів у файлі FV

EOF(FV)    - функція, повертає значення True, якщо при читанні записів досяг-нутий кінець файла.

    

ПРИКЛАД ОБРОБКИ ФАЙЛА

 

Як приклад доступу до файла й опрацювання записів вирішимо таку задачу:

 виведемо на екран файл INFORM. DOC, створений нами раніше. Використовуємо

для цього оператор WHILE із перевіркою на кінець файла: WHILE not EOF(FV) DO :

поки не досягнутий кінець файла, роби... :

    

PROGRAM OUTPUT_INFO_SYSTEM;            - заголовок

Uses CRT;                                                             - підключення CRT

TYPE INFORM = RECORD                                - опис типу

    Num : byte;                                                     - номер

    FIO : string[20];                                              - ім'я

    Adr : string[20];                                              - адреса

  END;                                                                 - кінець запису

VAR                                                                       - роздів описів

FV : FILE OF INFORM;                                     - змінна файлового типу

RV : INFORM;                                                    - змінна записного типу

BEGIN                                                                   - розділ операторів

Assign(FV,'INFORM. DOC')                               - привласнимо файлу ім'я

Reset(FV);                                                             - відкриття файлу для читання

Writeln('Содержимое файла:');                           - заголовок

WHILE not EOF(FV) DO BEGIN                       - цикл WHILE

Read(FV, RV);                        - запит-введення

Writeln(RV. Num:3,RV. FIO:20,RV. Adr:20);  -виведення даних запису

END;                                                                     - кінець WHILE

Close(FV);                                                            - закрити файл

End.

РОЗШИРЕННЯ ФАЙЛА

 

Файл на диску можна корегувати, наприклад, розширювати за рахунок внесення нових записів, починаючи з кінця файла. Технологія розширення проста:     

· відчинити вже існуючий на диску файл;

· за допомогою Seek підвести файловый покажчик за останній запис;

· внести в циклі N новиx записів

· закрити файл:

ПРИКЛАД ПРОГРАМИ РОЗШИРЕННЯ ФАЙЛА

Як приклад розширимо створений нами раніше файл INFORM. DOC.

 PROGRAM CORRECT_INFO_SYSTEM;      - заголовок

 Uses CRT;                                                          - підключення CRT

 TYPE INFORM = RECORD                             - опис типу

   Num : byte;                                              - номер

   FIO : string[20];                                       - ім'я

   Adr : string[20];                                       - адреса

END;                                                             - кінець запису

 VAR                                                                   - роздів описів

FV:FILE OF INFORM;RV:INFORM;            - опис перемінних

 BEGIN                                                               - розділ операторів

Assign(FV,'INFORM. DOC')                           - привласнимо файлу ім'я

Reset(FV);                                                         - відкриття як нового

Seek(FV,FileSize(FV));                                    - підведення до кінця файла

WHILE True DO BEGIN                                 - введення в циклі WHILE

Write('Номер:'); Readln(RV. Num);             - запит-введення

IF RV. Num=55 THEN BEGIN Close(FV);Halt;END; - перевірка на вихід

Write('. И.О.:');Readln(RV. FIO);                - запит-введення

Write('Адрес:'); Readln(RV. Adr);                - запит-введення

Write(FV,RV);                                                - запис у файл

END;                                                                 - кінець WHILE

Close(FV);                                                        - закрити файл

 END.                                                                  - кінець програми

 

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

Пpоцедуpа READ(FV,<ім'я змінних> . читає з файла значення змінних і pазміщує їх у пам'яті компьютеpа в <ім'я змінних>.

Пpоцедуpа WRITE(FV,<имя пеpеменных>) . записує інфоpмацію из пpогpами у

файл.

Пpоцедуpа SEEK(FV,N) . дозволяє явно змінити значення вказівника файла,

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

_Функція FileSize(FV) . - повертає загальну кількість компонентів у файлі.

_Функція FilePos(FV) . - дозволяє отримати номеp поточної компоненти. Пеpша компонента має номеp 0, остання - FileSize(fv).

_Пpоцедуpа TRUNCATE(FV) . -використовується для відсікнення хвостової части-ни файла, починаючи з позиції вказівника включно.

_Пpоцедуpа RENAME(FV,<нове ім'я>) . - пеpеіменовує файл на диску.

 

Індивідуальні завдання

“Програмування обробки файлів з типом”                                             

1.

А) Створити файл, що вміщує дані про телефони абонентів у формі записів з полями :

"прізвище абонента “; “адреса” , “рік установки” , “ номер телефону “

і примітка ( телефон окремий чи на паралельному сполученні).

Б) Написати програму , яка дасть змогу визначити :

- по прізвищу абонента - номер телефону;

- якщо таких прізвищ декілька, знайти номер телефону за адресою

- кількість телефонів, які встановлені у вказаному користувачем році.

 2.

А) Створити файл, що вміщує дані про особисту колекцію книголюба. Структура запису:


Дата добавления: 2018-04-04; просмотров: 243; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!