Інтерактивний матеріал для уроку з інформатики за новою програмою на тему: "Файли. Зчитування даних з файлу. Lazarus. 10 клас." Розробила Цодікова Любов Михайлівна.
Файли. Зчитування даних з файлу. LAZARUSЦодікова Любов Михайлівна
Номер слайду 2
Файли. Файл - це область зовнішньої пам'яті ПК, яка має ім'я. Тобто, файл - це частина ПЗУ - постійний запам'ятовуючий пристрій, яким може бути жорсткий диск, дискета, флеш-карта, CD або DVD. В операційних системах існують різні файлові структури, або, як ще кажуть, таблиці розміщення файлів. Наприклад, в Windows це може бути FAT32 або NTFS.
Номер слайду 3
Типи файлів. Текстові файли. Це файли, призначені для роботи з текстом. Типізовані файли. Такі файли можуть зберігати масив записів якогось одного певного типу. Це може бути дуже зручно для створення файла з даними. Нетипізовані файли. Це файли для побайтовой роботи з даними будь-якого типу. Можуть використовуватися для копіювання або перенесення файлів, тим більше що відсутність типу робить такі файли більш універсальними, сумісними з будь-яким існуючим типом. Крім того, у нетипізований файлів обмін даними між пам'яттю і диском більш швидкісний, що важливо при обробці файлів великого розміру.
Номер слайду 4
Доступ до файлу. Щоб відкрити доступ до файлу, потрібно створити файлову змінну одним з трьох способів:var f1: Text. File; //текстовий файл f2: File of <тип>; //типізований файл f3: File; //нетипізований файл. Приклад:var My. F: File of Char; //типізований символьний файл
Номер слайду 5
Процедура Assign. File. Для роботи з файлами мало оголосити змінну файлового типу, потрібно ще цю змінну "прив'язати" до конкретного файлу. Робиться це за допомогою процедури Assign. File в яку передається два параметри - ім'я файлової змінної, до якої "прив'язується" файл, і ім'я існуючого файлу, з яким ми хочемо працювати. Якщо ім'я файлу вказано без адреси, то процедура має на увазі, що файл знаходиться в цій папці. Assign. File(f1,'c:\01\myfile.txt'); // зв'язали файлову змінну з файлом
Номер слайду 6
Перевірка існування файла робиться за допомогою функції File. Exists яка повертає True, якщо зазначений файл існує, та False в іншому випадку. Приклад:var f1: Text. File; //текстовий файл begin if File. Exists('c:\01\myfile.txt') then begin Assign. File(f1, 'c:\01\myfile.txt'); // зв'язали файлову змінну з файлом ... // подальша робота з файлом end; //if
Номер слайду 7
Після того, як ми зв'язали файлову змінну з файлом, ми можемо звертатися до неї, як до файлу. Ми можемо відкрити її, вважати чи записати інформацію, закрити. А після роботи з файлом його обов'язково потрібно закрити! Робиться це процедурою Close. File, в яку передається всього один параметр - ім'я файлової змінної, наприклад: Close. File(f1);// закрили файл, з яким була пов'язана файлова змінна f1
Номер слайду 8
Виняткова ситуація. Це будь-яка помилка програми, яка може статися під час роботи. Наприклад, ви відкрили якийсь мережевий файл і почали роботу з ним. А інший користувач в цей час взяв, та видалив цей файл. Або ви намагаєтесь працювати з файлом, який містить вірус. Як тільки ви звернулися до нього, ваш антивірус втручається, і видаляє файл, або переносить його в карантин. Або ж ваш файл "битий" - містить помилку, і не може прочитати. При спробі читання з неіснуючого файлу, або записи в нього, або при роботі з "битим" файлом відбудеться помилка і виникне виняткова ситуація.
Номер слайду 9
Блок try-finally-end. Коли є ризик виникнення виняткової ситуації, програміст ЗАВЖДИ повинен її обробити. Для цього існує блок try-finally-end:try //блок кода, у якому може виникнути помилкаfinally //код, який повинен виконатися в будь-якому випадку, наприклад, код закриття файлу end;Між службовими словами try-finally ви вписуєте потенційно небезпечний код. Тобто, код, який може викликати помилку. А між finally-end вказуєте той код, який повинен бути виконаний в будь-якому випадку, навіть при виникненні помилки.
Номер слайду 10
Приклад: Var f1: Text. File; //текстовий файл begin try Assign. File(f1,'c:\01\myfile.txt');// зв'язали файлову змінну з файлом …; // подальша робота з файлом - читання / запис finally Close. File(f1);//після закінчення закриваємо файл end; //try
Номер слайду 11
Блок try-except-endЄ й інший спосіб обробки виняткових ситуацій - блок try-except-end:try //блок кода, у якому може виникнути помилкаexcept //код, який виконається в тому випадку, якщо в блоці між try-except сталася помилка end;
Номер слайду 12
Приклад: Var f1: Text. File; //текстовий файл begin try Assign. File(f1,'c:\01\myfile.txt');// зв'язали файлову змінну з файлом …; // подальша робота з файлом - читання / запис Close. File(f1); // після закінчення закриваємо файл except Show. Message('Увага! Сталася помилка відкриття файлу.'); end; //try
Номер слайду 13
Ініціювання. Після зв'язування файлової змінної з файлом, цей файл потрібно ініціювати, тобто, вказати напрямок передачі даних - з файлу (читання), в файл (запис), і в обох напрямках. Якщо ми відкриваємо файл для читання, нам слід скористатися стандартною процедурою Reset: Reset(f1); При цьому покажчик встановлюється в початок файлу, в нульову позицію. Якщо нам потрібно створити новий файл, або перезаписати існуючий, використовується процедура Rewrite: Rewrite(f2);
Номер слайду 14
Якщо файл вже існував, він буде перезаписаний без будь-яких попереджень. Якщо ж нам потрібно відкрити для запису існуючий файл, не видаляючи міститься в ньому інформації, скористаємося процедурою Append: Append(f1);Файл буде відкрито для записи, а покажчик переміститься в кінець файлу. Однак, процедура Append застосовна тільки до текстових файлів, тобто до змінних типу Text. File. Під час роботи з файлами можна використовувати функції Bof і Eof - перша повертає істину, якщо покажчик знаходиться на початку файлу, друга - якщо в кінці. Обидві функції мають параметр - файлову змінну: if Eof(f1) then Show. Message(' Досягнуто кінець файлу.');
Номер слайду 15
Функція IOResult, яка повертає нуль при відсутності помилок введення-виведення, і номер помилки в іншому випадку. Але використовувати цю функцію просто так не вийде. Lazarus автоматично обробляє помилки введення-виведення. Перш ніж використовувати IOResult, потрібно дати процесору команду відключити автоматичну обробку цих помилок. Для цього існує директива процесора {$I-}. Потім ми виконуємо небезпечну ділянку коду, де може статися помилка, після чого знову включаємо автоконтроль операцій введення-виведення директивою {$I+}. Потім викликаємо IOResult. Якщо операція відбулася успішно, то функція поверне нуль.
Номер слайду 16
Приклад: Var f1: Text. File; Begin Assign. File(f1, 'My. Text.txt'); // зв'язали файл зі змінною {$I-} // відключили автоконтроль введення-виведення Reset(f1);// намагаємося відкрити файл для читання {$I+} //знову включили автоконтроль введення-виведенняif IOResult <> 0 then b. Show. Message(' Увага! Сталася помилка відкриття файлу.');end;