
- •Методичні вказівки для допомоги студентам у вивченні самостійних тем з предмету
- •Урок № 6
- •Особливості інтегрованого середовища програмування Turbo Pascal. Основні пункти меню
- •Урок № 13
- •Поняття рекурсії. Зовнішні оголошення та оголошення процедур та функцій з випередженням
- •Урок № 14
- •Особливості роботи в текстовому режимі
- •Урок № 20
- •Сортування масиву. Методи сортування масиву
- •Урок № 21
- •Рекурсивне сортування масиву методом вибору
- •Урок № 21
- •Алгоритми роботи з двомірними таблицями на мові програмування Pascal
- •Урок № 25
- •Приклади опису багатомірних масивів засобами мови програмування Pascal
- •Урок № 26
- •Робота з елементами двомірного масиву
- •Урок № 27
- •Записи. Види записів. Робота з записами
- •Урок № 30
- •Множини. Дії над множинами
- •Урок № 32
- •Запис/читання файлу. Маніпуляції вмістом файлу
- •Урок № 33
- •Типізовані файли. Текстові файли. Нетипізовані файли
- •Урок № 37
- •Динамічні данні без внутрішніх посилань
- •Урок № 42
- •Робота з кольорами
- •Урок № 43
- •Робота з координатами
- •Урок № 44
- •Принцип виведення точки та лінії на екран
- •Урок № 45
- •Принцип побудови не заповнених геометричних фігур
- •Урок № 46
- •Принцип побудови заповнених геометричних фігур
- •Урок № 47
- •Виведення тексту в графічному режимі
- •Урок № 50
- •Використання модуля mouse Питання для вивчення:
- •Урок № 51
- •Принципи побудови графічного зображення, що рухається
- •Урок № 52
- •Модуль Graphs3d
Урок № 32
(згідно робочої навчальної програми)
Запис/читання файлу. Маніпуляції вмістом файлу
Питання для вивчення:
Зчитування інформації з файлу в змінну символьного типу.
Зчитування інформації з файлу в цілочисельну або речову змінну.
Текстові файли в Паскаль.
Запис в текстовий файл.
Зчитування інформації з файлу в змінну символьного типу. Процедура 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 з англ. «Перезаписувати»).
Питання для контролю вивченого матеріалу:
Яким чином відбувається робота з файлами?
Що являє собою текстовий файл?
Як відбувається читання/запис в текстові файли?
Опрацюйте приклади, розробіть власну програму для роботи з файлами.
Література:
Меженний О.А.Turbo Pascal: М: Издательский дом «Вильямс», 2006. – 336 с., стор. 122-128