Запис/читання файлу. Маніпуляції вмістом файлу
Питання для вивчення: 1. Зчитування інформації з файлу в змінну символьного типу. 2. Зчитування інформації з файлу в цілочисельну або речову змінну. 3. Текстові файли в Паскаль. 4. Запис в текстовий файл. Зчитування інформації з файлу в змінну символьного типу. Процедура Read може зчитувати інформацію в змінні 4-х типів: строкового, символьного, цілочисельного, речового. У разі символьних змінних зчитування відбувається по одному символу. Наприклад, якщо в файлі записано слово «Pascal», то в змінну типу Char буде записаний перший символ «P». Процедура Write в цьому випадку виведе на екран тільки одну букву «P». Наприклад, змінимо наш текстовий файл text.txt, записавши в нього слова «Turbo Pascal» і «Programmirovanie». Зчитування інформації з текстового файлу в символьну змінну. Program file2; Uses crt; var fl: text; str: char; i: integer; begin clrscr; assign (fl, 'programs \ text.txt'); reset (fl); read (fl, str); write (str); close (fl); readln end. У рядку № 4 ми оголошуємо символьну змінну для зчитування в неї інформації з файлу. Так як змінна символьного типу може зберігати лише один символ, то результатом програми буде виведена на екран буква «T». Для того щоб з файлу були прочитані і виведені на екран всі символи необхідно використовувати цикл з ознакою кінця файлу. Program file2_3; Uses crt; var fl: text; str: char; i: integer; begin clrscr; assign (fl, 'programs \ text.txt'); reset (fl); while not Eof (fl) do begin read (fl, str); write (str); end; close (fl); readln end. У рядку № 10 записуємо цикл. Функція Eof означає кінець файлу (End of file). У дужках після слова Eof вказується назва файлової змінної, яка пов'язана з файлом. Таким чином, рядок № 10 означає: поки не буде кінець файлу «fl», повинні виконуватися дії, після слова «do». Після слова «do» розташовані 2 оператора, які повинні бути виконані в циклі. Рядок № 12. Перший оператор зчитує черзі символи з файлу в змінну «str». Рядок № 13. Другий оператор виводить ці символи на екран. Зчитування інформації з файлу в цілочисельну або речову змінну. Зчитування інформації з файлу в цілочисельну або речову змінну аналогічно описаному в попередньому уроці способу. Наприклад, якщо у файлі записані числа: 10 25 63 42 58, то в цілочисельну змінну буде записано тільки число 10. Для того щоб всі числа були зчитані з файлу і виведені на екран також використовують цикл з ознакою кінця файлу. Напишемо програму, яка підраховує кількість позитивних чисел, що зберігаються в текстовому файлі. Для цього в директорії, де зберігаються наші програми необхідно створити текстовий файл. Я створив текстовий файл «chislo.dat» і помістив туди кілька чисел. Зверніть увагу, що даного файлу я присвоїв розширення «. dat». Справа в тому, що текстові файли не обов'язково повинні мати розширення «. Txt». У файлі формату «. Dat» також можуть зберігатися текстові дані і такі файли можна відкрити будь-яким текстовим. Зчитування інформації з файлу в цілочисельну або речову змінну. program file4; uses crt; var f: text; a: integer; k: integer; begin clrscr; assign (f, 'programs / chislo.dat'); reset (f); k: = 0; while not eof (f) do begin read (f, a); if a> 0 then inc (k); end; close (f); writeln ('k =', k); readln end. Рядок № 3. Створюємо файлову змінну «f», для доступу до файлу. Рядок № 4. Цілочисельну змінну «a» будемо використовувати в якості буферної змінної. У неї ми будемо зчитувати числа з файлу для визначення, чи є ці числа позитивними або негативними. Рядок № 5. Змінну «k» будемо використовувати для зберігання кількості позитивних чисел. Рядок № 8. Пов'язуємо файлову змінну «f» з файлом «chislo.dat», що зберігається на жорсткому диску «С» в директорії «FPC \ 2.2.2 \ bin \ i386-win32 \ Programs». Рядок № 9. Відкриваємо цей текстовий файл для читання. Рядок № 10. Обнуляем змінну для підрахунку кількості позитивних чисел. Рядок № 11. Вказуємо умова. Поки немає кінця файлу, повинні виконуватися дії в рядках № 13 - № 14. Рядок № 13. Читаємо з файлу число і записуємо його в буферну змінну «a». Рядок № 14. Перевіряємо умову. Якщо значення змінної «a» (тобто число, лічене з файлу) більше 0, тоді збільшуємо змінну «k» на одиницю. Рядок № 17. Виводимо на екран кількість позитивних чисел. Текстові файли в Паскаль. Для текстових файлів в Паскаль крім процедур Read і Write визначені процедури Readln і Writeln. Справа в тому, що при використанні стрічкової змінної за допомогою процедури Read можна зчитувати лише перший рядок файлу в цю змінну. Наприклад, створимо текстовий файл «text.txt» і запишемо в нього 3 рядки: «pascal», «admin» і «turbo». А тепер запустіть програму "file1" з першого уроку, присвяченого файлів. Як бачите, на екран вивелося одне слово «pascal», а слова «admin» і «turbo» не вивелися, тому вони розташовані в 2-й і 3-й рядку. Для того щоб з файлу були прочитані всі рядки необхідно використовувати цикл із ознакою кінця файлу. Крім того, процедура Read не пристосована для зчитування послідовності рядків. Замість неї необхідно використовувати процедуру Readln. Текстові файли в Паскаль. Program file5; Uses crt; var fl: text; str: string; begin clrscr; assign (fl, 'programs \ text.txt'); reset (fl); while not Eof (fl) do begin readln (fl, str); write (str); end; close (fl); readln end. У рядку № 9 записуємо цикл. Функція Eof при читанні файлу (при використанні процедури Reset) позначає кінець файлу. Таким чином, цикл в рядку № 9 буде продовжуватися до тих пір, поки не наступить кінець файлу (тобто поки не буде прочитана остання рядок у файлі). У циклі записано 2 операції (вони полягають в операторні дужки begin .. end). Рядок № 11. Перша операція в циклі - це операція читання з файлу та присвоєння змінної «str» значення файлової змінної «fl». В результаті роботи процедури Readln з файлу буде прочитана перший рядок, а покажчик перейде на початок другого рядка. Таким чином, в циклі будуть прочитані всі 3 рядки. Рядок № 12. Друга операція - виведення значення змінної «str» на екран. Запис в текстовий файл. Відкриття файлу для читання за допомогою процедури Reset. Однак текстовий файл можна відкривати не тільки для читання, але і для запису в нього інформації. Для запису інформації у файл використовується процедура Rewrite. Запис в текстовий файл. Program file6; Uses crt; var fl: text; str: string; begin clrscr; assign (fl, 'programs \ text.txt'); rewrite read (str); write (fl, str); close (fl); end. У рядку № 8 записуємо процедуру Rewrite. Дана процедура відкриває файл, вказаний в дужках після слова Rewrite, для запису в нього інформації. У нашому випадку в дужках після слова Rewrite стоїть змінна «fl», яка пов'язана з текстовим файлом «text.txt» за допомогою процедури Assign (рядок № 7). Тому цей текстовий файл і буде відкритий для запису. Рядок № 9. Процедура Read забезпечує введення рядковий інформації (після слова Read в круглих дужках стоїть строкою змінна str). Завдяки цій процедурі ми зможемо вводити з клавіатури різні слова. Ці слова будуть записані в строкову змінну «str» Рядок № 10. Процедура Write забезпечує запис інформації в текстовий файл. Запис у рядку № 10 означає, що в текстовий файл («fl») буде записана інформація із змінної «str» (тобто та інформація, яку ми введемо з клавіатури). Після запуску програми введіть якесь слово (наприклад, «programmirovanie») і натисніть Enter. Тепер подивимося наш текстовий файл «text.txt» (C: \ FPC \ 2.2.2 \ bin \ i386-win32 \ Programs). Якщо ви пам'ятаєте, то після минулого уроку там були записані слова «pascal», «admin» і «turbo». Тепер у файлі «text.txt» записано слово «programmirovanie». Це означає, що процедура Rewrite дозволяє записувати інформація в файл, але при цьому видаляє всю стару інформацію (Rewrite з англ. «Перезаписувати»). Питання для контролю вивченого матеріалу: 1. Яким чином відбувається робота з файлами? 2. Що являє собою текстовий файл? 3. Як відбувається читання/запис в текстові файли? 4. Опрацюйте приклади, розробіть власну програму для роботи з файлами. Література: Меженний О.А.Turbo Pascal: М: Издательский дом «Вильямс», 2006. – 336 с., стор. 122-128
Урок № 33 (згідно робочої навчальної програми) ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|