Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка-Паскальукрnew.doc
Скачиваний:
18
Добавлен:
10.02.2016
Размер:
444.42 Кб
Скачать

Лабораторна робота №5 Файлові типи й файлові змінні. Операції над файлами.

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

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

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

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

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

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

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

<ім'я> = FILE OF <тип>; 

<ім'я> = TEXT

<ім'я> = FILE;

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

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

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

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

Наприклад:

var

fl : file of char;

f2 : text;

f3 : file;

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

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

  • текстові файли (визначаються типом 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] of integer;

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. Як закрити файл?