русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ЛАБОРАТОРНА РОБОТА 2


Дата додавання: 2014-11-27; переглядів: 960.


Тема: Обробка даних типізованих файлів

 

Теоретичні відомості щодо виконання лабораторної роботи

 

Розрізнюють два типи файлів: послідовного і довільного доступу. Послідовні файли складаються з елементів різної довжини, між якими стоять роздільники. Щоб звернутися до потрібного елемента у послідовному файлі, необхідно передивитися по черзі кожний елемент з самого початку , поки не буде знайдено потрібний. Файли довільного доступу складаються з однотипних елементів, як масиви. До будь-якого елемента в такому файлі можна звернутися, вказавши його порядковий номер.

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

Опис такого файлового типу має структуру:

Var <ім’я файлової змінної> : File of<базовий тип>;

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

На відміну від текстових файлів, типізовані файли допускають операції читання і запису незалежно від того, якою процедурою, Reset чи Rewrite, був відкритий файл. Процедурою Reset відкривається файли, які вже існують, а процедурою Rewrite - нові. Закриваються файли процедурою Close. Для читання та запису даних використовуються ті самі чотири процедури: Read, ReadLn і Write, WriteLn, які зовнішньо нечим не відрізняються від тих, що використовуються для текстових файлів. Однак, враховуючи те, що елементи типізованого файлу мають однаковий розмір і не потребують роздільників, процедури ReadLn та WriteLn для них не мають сенсу.

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

Seek(<файлова змінна>, <номер елемента>:LongInt) - встановлює покажчик файлу на елемент, номером якого є другий параметр. Треба пам’ятати, що перший елемент у файлі має номер 0.

Функція FilePos(<файлова змінна>):LongInt - повертає поточний номер рядка на який вказує показник файлу (нумерація починається з нуля).

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

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

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

Щоб створити послідовний файл, треба виконати такі стандартні дії:

- у відповідність файловій змінній поставити ім’я зовнішнього файлу (процедура Assign);

- відкрити новий файл (процедура Rewrite);

- до файлу записати дані, що несуть потрібну інформацію (процедура Write);

- закрити створений файл (процедура Close).

Щоб обробити дані, що зберігаються у файлі, треба дістати доступ до його елементів (компонент). Для цього потрібно:

- у відповідність файловій змінній поставити ім’я зовнішнього файлу (процедура Assign);

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

- послідовно зчитати компоненти файлу до потрібного (процедура Read); виконати обробку;

- закрити файл (процедура Close).

П р и к л а д. Створити файл f_in, компонентами якого є цілі числа. У файл f_out записати всі компоненти файлу f_in, що є парними числами.

Program Example_1;

Var

f_in,f_out:File of Integer; {вхідний та вихідний файли цілих чисел}

x,k:Integer;

Procedure Input;

{Процедура зчитування вхідного файлу та створення нового}

Begin

Assign(f_in,'file.dat');Reset(f_in);

Assign(f_out,'file.rez');Rewrite(f_out);

While Not Eof(f_in) do

Begin

Read(f_in,x);

If Odd(x)=False Then Write(f_out,x);

End;

Close(f_out);Close(f_in);

End;{Input}

{-------------------------------------------------------------------------------}

Procedure Out;

{Процедура виводу створеного файлу, елементи якого - парні числа}

Begin

Assign(f_out,'file.rez');Reset(f_out);

WriteLn(#10#13#10#13,

'Н О В И Й Ф А Й Л З П А Р Н И М И Ч И С Л А М И':60,

#10#13);

k:=0;

While Not Eof(f_out) do

Begin

Read(f_out,x);

Inc(k);

If k<=20 Then Write(x:3) Else Begin k:=0;WriteLn End;

End;

Close(f_out);

End;{Out}

{--------------------------------------------------------------------------------}

Procedure Create;

{Процедура створення вхідного файлу file.dat}

Const n=50; {кількість цілих чисел}

Var i:Integer;

Begin

Assign(f_in,'file.dat');Rewrite(f_in);

WriteLn('П О Ч А Т К О В И Й Ф А Й Л':50,#10#13);

k:=0;

For i:=1 to n do

Begin

x:=Round(Random(100));

Inc(k);

{вивід чисел на екран по 20 у рядок}

If k<=20 Then Write(x:3) Else Begin k:=0;WriteLn End;

Write(f_in,x);

End;

Close(f_in);

End;{Create}

 

Begin

Create; Input; Out;

ReadLn

End.

 

Контрольні питання

1. Які файли називаються типізованими?

2. Принципи роботи з типізованими файлами.

3. Які файли називаються файлами послідовного і довільного доступу?

4. Особливості запису та зчитування інформації типізованих файлів?

5. Як організувати доступ до будь-якого елемента (компонента) типізованого файлу?

Завдання та пояснення щодо виконання лабораторної роботи

 

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

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

З кожного варіанту завдання необхідно:

- створити початковий текстовий файл (будь-яким чином) ;

- виконати заданий варіант обробки і зберегти отримані результати в новому текстовому файлі;

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

 

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

 

1. Заданий файл f, компонентами якого є цілі числа. Отримати файл g, де будуть усі компоненти файлу f, що: 1) є парними числами; 2) є квадратами цілих чисел.

2. Заданий файл f, компонентами якого є цілі числа. Записати до файлу g всі парні числа, а у файл h - всі непарні. Порядок розміщення чисел повинен зберігатися.

3. У заданому файлі f, компоненти якого - дійсні числа, знайти: а) суму компонент файлу f; б) добуток компонент файлу f.

4. У заданому файлі f, компоненти якого - дійсні числа, знайти: а) суму квадратів компонент файлу f; б) модуль суми і квадрат добутку компонент файлу f.

5. У заданому файлі f, компоненти якого - цілі числа, знайти кількість парних чисел. Надрукувати всі парні числа.

6. Задані символьні файли f і d. Визначити, чи співпадають компоненти файлу f з компонентами файлу d. Якщо ні, то визначити номер першої компоненти, починаючи з якої файли f і d відрізняються між собою.

7. Заданий файл f, компоненти якого - натуральні числа. Кількість чисел у файлі кратна 4. Перші два числа з кожних чотирьох задають координати лівого верхнього кута прямокутника, наступні два - координати правого нижнього кута. Обчислити площі, що задані в файлі f.

8. Заданий файл f, компоненти якого є цілі числа. Записати до файлу g всі компоненти файлу f, що є непарними й не кратними трьом.

9. Заданий символьний файл f. Записати до файлу g компоненти файлу f в зворотному порядку, виключивши всі символи "*".

10. Заданий символьний файл f. Утворити файл g, вилучивши з файлу f повторні входження одного й того самого символу.

11. Заданий файл цілих чисел f. Використовуючи допоміжний файл h, переписати компоненти файлу f до файлу g таким чином, щоб спочатку йшли всі додатні числа, потім - усі від’ємні і не було двох сусідніх однакових чисел.

12. Заданий файл цілих чисел (від 0…100) f. Визначити, скільки серед компонент файлу f чисел, що є факторіалом числа.

13. Задані файли f і d, компонентами яких є цілі числа. Утворити впорядкований файл g, з компонентів файлу f до якого додаються компоненти файлу d, яких немає у файлі f.

14. Заданий файл цілих чисел (від 0…150) f. Записати до файлу g компоненти файлу f, які є числами Фібоначчі (Un=Un-1+Un-2).

15. Заданий файл дійсних чисел f. Вилучити з файлу f числа з максимальним і мінімальним значеннями.

16. Заданий файл цілих чисел f. Записати до файлу g компоненти файлу f, номери яких є не парними та не кратними трьом.

17. Заданий файл дійсних чисел f. Обчислити математичне сподівання (середнє значення) значень компонентів файлу f. Утворити файл g, компонентами якого є значення дисперсії.

18. Заданий числовий файл f. Записати до файлу g всі позитивні числа, а у файл h - всі негативні. Порядок розміщення чисел повинен зберігатися.

19. Заданий числовий файл f (значення яких від 0…50). Записати до файлів f10, f20, f30, f40, f50, які відповідають десяткам значень компонент файлу f. Порядок розміщення чисел повинен зберігатися.

20. Заданий файл цілих чисел f. Утворити файл g, вилучивши з файлу f повторні входження одного й того самого значення.

 

 


<== попередня лекція | наступна лекція ==>
ЛАБОРАТОРНА РОБОТА 1 | ЛАБОРАТОРНА РОБОТА 3


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн