Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка_ОТтаП_Ч2

.pdf
Скачиваний:
14
Добавлен:
12.05.2015
Размер:
1.16 Mб
Скачать

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

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

1.Який тип даних замінює собою тип String?

2.Як резервується пам’ять під змінну типу String?

3.Які стандартні арифметичні операції можна застосовувати до змінних типу рядок?

4.Які стандартні процедури роботи зі рядками Ви знаєте?

5.Яке призначення процедур Insert, Delete, Val?

6.Які функції для роботи з рядками Ви знаєте?

40

9. Заняття № 9. Робота з файлами.

Мета роботи – оволодіти прийомами роботи із файлами та файловими змінними.

9.1. Поняття файлу. Імена файлів.

Файлом називають або довільну поіменовану область зовнішньої пам’яті комп’ютера (жорсткого диску, гнучкого диску, «флешки» тощо), або логічний пристрій – потенційне джерело або приймач інформації [4].

Будь-який файл має три характерні особливості:

1)в нього є ім’я, що дає можливість одночасно працювати з декількома файлами;

2)він містить данні. Ці дані можуть бути даними будь-якого типу, окрім файлового;

3)довжина файлу обмежується тільки обсягом зовнішньої пам’яті.

Ім’ям файлу може бути вираз рядкового типу, який

задовольняє наступним умовам:

ім’я містить до восьми дозволених символів, до яких відносяться: літери латинського алфавіту, цифри і такі символи: ! @ # $ % ^ & ( ) ’ ~ - _

за ім’ям може слідувати розширення – послідовність до трьох дозволених символів, відокремлене від імені крапкою.

Наприклад:

Laba08.pas

Перед іменем можна вказувати шлях до файлу, який може складатися

з імені диску – це одна з літер від A до Z, після якої ставиться двокрапка (наприклад A: або C:);

за іменем диску через символ «\» може вказуватись ім’я папки або послідовності папок, яка містить цей файл.

Наприклад:

C:\MyFiles\ Laba08.pas

Це значить, що файл з ім’ям Laba08.pas знаходиться на диску C: в папці з ім’ям MyFiles.

41

Змінну файлового типу можна задати одним з трьох способів:

<ім’я_змінної>:File of <тип_даних>; <ім’я_змінної>:Text; <ім’я_змінної>:File;

де <ім’я_змінної> – ім’я змінної, File of оголошення типізованого файлу, тобто файлу що містить данні лише одного типу мови Паскаль, Text оголошення текстового файлу (про них детальніше в наступному розділі), File оголошення не типізованого файлу.

Наприклад:

Var

f1:file of integer; f2:text;

f3:file;

9.2. Текстові файли.

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

Текстовий файл мовою Паскаль розглядається як сукупність рядків змінної довжини. Зчитування даних в текстовому файлі можливе тільки послідовно, рядок за рядком, починаючи з першого. При створенні текстового файлу в кінці кожного рядка ставиться нетермінальна (не видима на екрані) ознака EOLN (кінець рядка – End of Line), а в кінці всього файлу – ознака EOF (кінець файлу – End of File) [1].

9.3. Процедури для роботи з файлами.

Щоб прочитати данні з файлу або записати в файл мовою Паскаль, спочатку треба пов’язати змінну файлового типу з ім’ям фалу за допомогою стандартної процедури Assign:

Assign(<файлова_змінна>,<ім’я_файлу>);

42

Наприклад:

Var

f:text; {змінна типу текстовий файл}

Begin

Assign(f,’C:\MyFiles\Data.txt’); {пов’язує

змінну f з файлом на ім’я Data.txt,

який знаходиться на диску C: в папці

MyFiles}

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

Reset(<файлова_змінна>) – відкриває файл для читання, після чого стає можливим читання даних з файлу за допомогою процедур Read та Readln;

Rewrite(<файлова_змінна>) – створює файл для запису, якщо ж такий файл вже існує то при виконанні процедури Rewrite всі дані цього файлу стираються. Нові ж дані можна записувати в цей файл за допомогою операторів Write та

Writeln.

Append(<файлова_змінна>) – відкриває існуючий текстовий файл для дописування нових даних в кінець. Дописування даних можна виконати за допомогою операторів

Write та Writeln.

Зауваження: При записуванні в файл за допомогою процедур Write та Writeln, і при зчитуванні даних з файлу за допомогою процедур Read та Readln, попереду переліку для запису/зчитування треба вказати змінну файлового типу, пов’язану з відповідним файлом.

Після виконання операцій вводу/виводу для файлу, його необхідно закрити за допомогою оператора Close:

Close(<файлова_змінна>);

Наприклад:

Program Name_80;

Var

f,f1:text; {змінні типу текстовий файл}

43

i,j:integer;

s:string; Begin

Assign(f,’C:\MyFiles\Data.txt’); {пов’язує змінну f з файлом}

Reset(f); {відкриває файл для читання} Readln(f,i,j); {зчитує з файлу цілі числа в

змінні i та j}

Readln(f,s); {зчитує з файлу рядок} Close(f); {закриває файл} Assign(f1,’C:\MyFiles\New.txt’); {пов’язує

змінну f з файлом}

Rewrite(f1); {створює новий файл для запису}

Writeln(f1,s); {записує в файл рядок} Writeln(f1,i); {записує в файл ціле число} Close(f1); {закриває файл}

End.

9.4. Функції для роботи з файлами.

При роботі з відкритими для читання текстовими файлами можна використовувати наступні функції:

Eoln(<файлова_змінна>) – повертає істину, якщо при зчитуванні даних за допомогою оператору Read(<файлова_змінна>,…), досягнуто кінець рядку;

Eof(<файлова_змінна>) – повертає істину, якщо при зчитуванні даних за допомогою операторів

Read(<файлова_змінна>,…) або

Readln(<файлова_змінна>,…) , досягнуто кінець файлу.

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

Program Name_91;

Var

f:text; {змінна типу текстовий файл}

ch:char; {символьна змінна}

Begin

Assign(f,’C:\MyFiles\Text.txt’); {пов’язує

змінну f з файлом}

44

Reset(f); {відкриває файл для читання}

While Not Eof(f) do {поки не кінець файлу} Begin

Read(f,ch); {зчитуємо з файлу один символ в змінну ch}

Write(ch); {виводимо зчитаний символ на екран}

End;

End.

Seekeoln(<файлова_змінна>) – пропускає всі пробіли та символи табуляції до кінця рядка або до першого значущого символу, і повертає істину, якщо досягнуто кінця рядка;

Seekeof(<файлова_змінна>) – пропускає всі пробіли, символи табуляції та символи кінця рядка до кінця файлу або до першого значущого символу, і повертає істину, якщо досягнуто кінця файлу.

9.5. Приклад.

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

Складемо алгоритм виконання роботи.

1. Спочатку треба зчитати числа a, b та x за допомогою процедури Read:

Read(a,b,х);

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

Assign(f,’D:\F0.txt’); {зв’язує змінну f з

файлом F0}

Rewrite(f); {відкриває файл для запису}

3. За допомогою циклу While запишемо в нього числа від a до b до з кроком x:

While a<=b do {поки a не більше b}

45

begin

Write(f, a:7:4,’ ’); {запишемо в f нове значення a, відокремлюючи від попереднього пробілом}

a:=a+x; {збільшуємо значення a на x} end;

4.Закриємо файл для запису за допомогою Close(f).

5.Відкриємо цей же файл для читання:

Reset(f);

6. Створимо для запису квадратів і кубів чисел нові файли.

Assign(f2,’D:\F2.txt’);

Assign(f3,’D:\F3.txt’);

Rewrite(f2);

Rewrite(f3);

7. Тепер за допомогою циклу зчитаємо числа з файлу f та запишемо значення квадратів в файл f2, а кубі – в файл f3.

While Not Eof(f) Do {поки не кінець файлу}

Begin

Read(f,x); {зчитуємо з файлу f число в змінну х}

Write(f2,x*x:10:3,’ ’); {записуємо квадрат х в f2}

Write(f3,x*x*x:10:3,’ ’); {записуємо куб х в f3}

End;

8. В кінці програми не забудьмо закрити всі три файли. Складемо блок-схему алгоритму програми (рис. 9.1):

46

Початок

a, b, x

Assign(f, ’D:\F0.txt’);

Rewrite(f);

Ні

a<=b

Так

Write(f, a:7:4, ’ ’); a := a + x;

Close(f); Reset(f);

Assign(f2, ’D:\F2.txt’); Rewrite(f2);

Assign(f3, ’D:\F3.txt’); Rewrite(f3);

Ні

Not Eof(f)

Так

Read(f, x); Write(f2, x*x:10:3, ’ ’);

Write(f3, x*x*x:10:3, ’ ’);

Close(f);

Close(f2);

Close(f3);

Кінець

Рисунок 9.1.

Повний текст програми.

Program Laba_8;

Var

f,f2,f3:text; {файлові змінні}

a,b,x:real; {дійсні змінні}

Begin

Writeln(’Введіть значення a, b, х’);

47

Readln(a,b,х); {зчитаємо значення a, b, х}

Assign(f,’D:\F0.txt’); {пов’язує змінну f з файлом F0.txt}

Rewrite(f); {відкриває файл для запису}

While a<=b do {поки a не більше b} Begin

Write(f,a:7:4,’ ’);{запишемо в f нове значення a, відокремлюючи від попереднього пробілом}

a:=a+x; {збільшуємо значення a на x} End;

Close(f); {закриємо f для запису} Reset(f); {відкриємо f для читання}

Assign(f2,’D:\F2.txt’); {пов’язує змінну f2

з файлом F2.txt} Assign(f3,’D:\F3.txt’); {пов’язує змінну f3

з файлом F3.txt}

Rewrite(f2); {відкриємо f2 для запису} Rewrite(f3); {відкриємо f3 для запису}

While Not Eof(f) Do {поки не кінець файлу} Begin

Read(f,x); {зчитуємо з файлу f число в змінну х}

Write(f2,x*x:10:3,’ ’); {записуємо квадрат х в f2}

Write(f3,x*x*x:10:3,’ ’); {записуємо куб х в f3}

End;

Close(f); {закриємо f} Close(f2); {закриємо f2} Close(f3); {закриємо f3}

End.

9.6.Порядок виконання роботи.

1.Вибрати індивідуальне завдання. Номер варіанту відповідає номеру студента у списку групи.

2.Ознайомитись із теоретичним матеріалом.

3.Скласти алгоритм для розв’язання завдання.

48

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

5.Підготувати звіт по роботі.

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

Скласти алгоритм i програму розв’язання задач

1.Створіть файл f цілих чисел від А до В (значення вводяться із клавіатури). Проаналізувавши в програмі створений файл, створіть ще 3 файли:

що містить від’ємні числа,

що містить додатні числа,

що містить нуль.

Виведіть на екран вміст файлів.

2.Створіть файл f цілих чисел від А до В (значення чисел вводяться із клавіатури). Проаналізувавши в програмі створений файл, створіть ще 3 файли:

що містить від’ємні числа,

що містить парні числа,

що містить непарні числа.

Виведіть на екран вміст файлів.

3.Вводячи числа із клавіатури та аналізуючи їх у програмі створіть два файли: файл додатних чисел і файл невід’ємних чисел. Виведіть на екран вміст файлів.

4.Створіть файл f цілих чисел (значення вводяться із клавіатури). Проаналізувавши в програмі створений файл, створіть файл, що містить суми першого й k-го числа, другого й (k+1)-го числа, третього й (k+2)-го числа й так далі. Виведіть на екран вміст файлів.

5.Створіть файл f цілих чисел (значення вводяться із клавіатури). Проаналізувавши в програмі створений файл, створіть файл, що містить добуток першого й k-го числа, другого й (k-1)-го числа, третього й (k-2)-го числа і так далі. Виведіть на екран вміст файлів.

49