Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операції над файлами



Мета роботи: знайомство з файлами. Отримання навичок роботи з текстовими файлами.

Постановка задачі: розробити алгоритм рішення завдання за заданим варіантом, скласти програму мовою Pascal, відлагодити її, виконати розрахунки для кількох варіантів вхідних даних, відповісти на контрольні питання.

Теоретичні відомості:

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

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

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

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

<ім'я> = FILEOF <тип>;

<ім'я> = TEXT;

<ім'я> = FILE;

Тут <ім'я> - ім'я файлового типу (правильний ідентифікатор);

file, of - зарезервовані слова (Eng. - файл, з);

text - ім'я стандартного типу текстових файлів;

<тип> - будь-який тип Турбо Паскаля, крім файлів.

Наприклад:

var

fl: fileofchar;

f2: text;

f3: file;

Залежно від способу оголошення можна виділити три види файлів:

· типізовані файли (задаються пропозицією FILEOF...);

· текстові файли (визначаються типом TEXT);

· не типізовані файли (визначаються типом FILE).

У наших прикладах F1 - типізований файл, F2 - текстовий файл, F3 - не типізований файл. Вид файлу, загалом кажучи, визначає спосіб зберігання інформації у файлі. Однак у Pascal немає засобів контролю виду раніше створених файлів. При оголошенні вже існуючих файлів програміст повинен сам стежити за відповідністю виду оголошення характеру файлу.

Турбо Паскаль уводить ряд процедур і функцій, застосовних для будь-яких типів файлів:

Assign, Reset, Rewrite, Close, Rename, Erase, Eof, IOResult.

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

Приклад:

var

fi, fo: text;

begin

assign (fi, 'AUX');

assign (fо, 'LPT2');

end.

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

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

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

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

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

Процедура Rename (var f; NewName: String) дозволяє перейменувати фізичний файл на диску, пов'язаний з логічним файлом f. Перейменування можливо після закриття файлу.

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

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

Дано масив з 5 елементів. Необхідно впорядкувати всі елементи по зростанню. Введення й вивід елементів здійснювати за допомогою файлів.

program SortNew;

Var a: array [1..5] ofinteger;

i, j, temp: integer;

f1, f2: text;

name1, name2: string [20];

Begin

writeln ('Введить імя вхідного файлу);

readln (name1);

assign (f1, name1);

reset (f1);

for i:=1 to 5 do { Читання масиву з файлу }

read (f1, a[i]);

close (f1);

writeln ('Введить імя вихідного файлу’); { Створення вихідного файлу }

readln (name2);

assign (f2, name2);

rewrite (f2);

for i:=1 to 4 do

for j:=i+1 to 5 do

Begin

if a[i]>a[j] then

begin

temp:=a[i];

a[i]:=a[j];

a[j]:=temp;

end;

end;

writeln ('Отриманий масив: ');

for i:=1 to 5 do

Write (f2, a[i]);

close (f2)

END.

Варіанти завдань для самостійної роботи:

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

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

1. Що таке файл?

2. Які дії і в якій послідовності необхідно виконувати при роботі з файлами?

3. Для чого потрібна процедура assign?

4. Як працює оператор вводу із файлами?

5. Як працює оператор виводу із файлами?

6. Як відкрити файл для читання?

7. Як відкрити файл для запису?

8. Як закрити файл?


Додаток 1

Типи даних

Цілі типи

Назва Довжина, байт Діапазон значень Потужність типу
Byte   От 0 до 255  
ShortInt   От -128 до +128  
Word   От 0 до 65 535  
Integer   От -32 768 до + 32 767  
LongInt   От -2 147 483 648 до + 2 147 483 647  

Дійсні типи

Назва Довжина, байт Діапазон десяткового порядку Кількість значущих цифр
Single   -45…+38 7..8
Real   -39…+38 11..12
Double   -324…+308 14..16
Extended   -4951…+4932 19..20
Comp   -2*1063 +1…+2*1063 -1 19..20

Додаток 2

Математичні функції, використовувані при складанні виражень:

Ім'я функції Математичне значення Тип результату
a mod b Залишок від діления a на b Ціле
a div b Ціла частина ділення a на b Ціле
abs(a) |a| Співпадає з типом аргументу
sqr(a) a2 Співпадає з типом аргументу
sqrt(a) √a Дійсне
sin(a), cos(a), arctan(a) sin a, cos a, arctg a Дійсне
ln(a) ln a Дійсне
exp(a) ex Дійсне
ln(a)/ln(b) logba Дійсне
exp(x*ln(a)) ax Дійсне
trunc виділяє цілу частину дійсного аргументу шляхом відсікання дробової частини Ціле
round округляє аргумент до найближчого цілого Ціле

Додаток 3





Дата публикования: 2015-11-01; Прочитано: 276 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...