Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні ОП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
569 Кб
Скачать
☆

Операції над текстовими файлами

Зчитування і запис текстових файлів

Зчитування даних із текстового файлу здійснюється процедурами Read та Readln за таким синтаксисом:

Read(<файлова змінна>;<список введення>);

Readln(<файлова змінна>;<список введення>);

Тут <список введення> є переліком змінних символьного, рядкового, цілочислового або дійсного типу.

Після зчитування певного компонента файловий покажчик зсувається до наступного компонента. Якщо виконується зчитування з файлу до змінної типу char, то процедура Read зчитує один символ. Коли досягнуто кінця рядка, результатом зчитування є символ кінця рядка, #13, а коли досягнуто кінця файлу, зчитується символ кінця файлу, #26.

Під час зчитування значення до змінної цілочислового або дійсного типу спочатку виділяється підрядок, в якому видалені всі ведучі пробіли, символи табуляції (#9) і маркери кінця рядка. Далі зчитуються всі символи, що утворюють число зі знаком. Зчитування припиняється при виявленні першого пробілу, маркера кінця рядка або символу табуляції. Зчитаний рядок цифрових символів перетворюється на число, що присвоюється відповідній змінній. Наступна операція зчитування починається з пробілу (маркера кінця рядка, символу табуляції тощо).

Під час зчитування даних до змінної типу string процедура Read зчитує всі символи до маркера кінця рядка. Якщо кількість символів рядка у файлі більша за кількість, вказану в оголошенні рядкової змінної, то зайві символи не зчитуються. Якщо процедурою Read певний рядок було зчитано повністю, то під час наступного її виклику зчитування починається з маркера кінця рядка, а значить, буде зчитано рядок нульової довжини. Отже, процедура Read не переводить файловий покажчик на наступний рядок символів і тому її не можна використовувати для зчитування послідовності рядків.

Приклад

Розглянемо приклад зчитування даних із текстового файлу у змінні різних типів. Результат роботи програми зображено на рис. 1. Програма опрацьовувала файл, який містив такі дані: 5 -20 1 2 3 4 5 string.

Program ex9_4;

var f:text;

  a,i:integer;

  b:real;

  s:string;

  mas:array[1..5] of integer;

begin

  writeln('reading from the text file');

  Assign(f,'f.txt');

  reset(f);

  read(f,a,b);

  for i:=1 to 5 do

    read(f,mas[i]);

    readln(f,s);

  writeln('a=',a,' b=',b,' s=',s);

  writeln('array of integers: ');

  for i:=1 to 5 do

    write(mas[i],'');

  writeln;

  close(f);

  readln;

end.

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

Приклад

Наведемо програму, що виводить на екран перші п'ять рядків текстового файла.

Program ex9_5;

var f:text;

  s:string;

  i:integer;

begin

  writeln('reading rows from the text file');

  assign(f,'t.txt');

  reset(f);

  for i:=1 to 5 do

    begin

      readln(f,s);

      writeln(s);

    end;

  close(f);

  readln;

end.

Запис до текстового файлу здійснюється за допомогою процедур Write та Writeln, що мають такий синтаксис:

Write(<файлова змінна>;<список виведення>);

Writeln(<файлова змінна>;<список виведення>);

Тут <файлова змінна> — змінна типу text; <список виведення> — перелік змінних або виразів символьного, рядкового, цілочислового, дійсного чи логічного типу.

Процес запису до текстового файлу даних різних типів проілюстрований у наведеному далі прикладі.

Приклад

Program ex9_6;

var f:text;

  s:string;

  a,i:integer;

  b:real;

begin

  writeln('Usage of the procedure writeln to file');

  Assign(f,'example.txt');

  rewrite(f);

  for i:=1 to 5 do

    begin

      writeln('enter integer, real, string');

      readln(a,b,s);

      writeln(f,'a=',,' b=',b,' s=',s);

    end;

  close(f);

  readln;

end.

Під час зчитування з текстового файлу кількість його рядків зазвичай є невідомою. Тому для зчитування з файлу всіх даних потрібно використовувати функцію Eof, яка визначає, чи досягнуто кінця файлу. Наведемо синтаксис цієї функції.

Еоf(<файлова змінна>) : boolean;

Дана функція повертає значення булевого типу. Якщо файловий покажчик посилається на кінець файлу, буде повернено значення true. Отже, послідовне зчитування всіх компонентів із файлу, розмір якого невідомий, може бути реалізоване таким циклом:

While not eof(f) do

  Readln(f,s):

Порядок виконання роботи:

  1. Створити текстовий файл:

1) File->New

2)набрати текст програми

3)зберегти з розширенням *.txt;

  1. Записати текст програми обробки текстового файлу згідно умови завдання;

  2. Запустити програму на виконання і перевірити правильність роботи програми.

  3. Відповісти на контрольні запитання та оформити звіт.

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

  1. Дайте поняття фізичного та логічного файлу.

  2. Чим файли і масиви схожі? Чим вони відрізняються?

  3. Чим відрізняються бінарні файли від текстових?

  4. Який метод доступу до компонентів текстового файлу?

  5. Як зв’язати логічний файл з фізичним?

  6. Які способи відкриття файлу надає мова Pascal?

  7. Як зчитувати та записувати дані у тестовий файл?

Звіт повинен містити:

  1. Тему, мету, обладнання лабораторної роботи.

  2. Завдання згідно варіанту.

  3. Текст програми.

  4. Результат виконання програми.

  5. Аналіз допущених під час роботи помилок.

  6. Відповіді на контрольні запитання

  7. Висновки.

Викладач Смерека А.Г.

Завдання до лабораторної роботи №7

Варіант 1. Порівняти кількість букв „а" в двох текстових файлах.

Варіант 2. Підрахувати в текстовому файлі кількість голосних букв.

Варіант 3. Підрахувати кількість слів текстового файлу, враховуючи, що слова розділені одним пробілом.

Варіант 4 Підраховує в текстовому файлі кількість рядків, довжина яких співпадає з заданим числом.

Варіант 5. Підрахувати кількість рядків текстового файлу, що починаються з приголосної літери.

Варіант 6. Роздрукувати на екран текстовий файл, додаючи на початку кожного ряду його порядковий номер.

Варіант 7. Створити текстовий файл значень функції cos (x) на відрізку [-2л;; 2л] з кроком 0,1.

Варіант 8. Існують два текстових файли, в яких записані латинські літери. Створити новий файл, в який переписати спочатку всі елементи першого файлу, а потім всі елементи другого.

Варіанті 9. В текстовому файлі, замінити букви „а" на „о", букви „и" замінити буквами „і".

Варіант 10. Надрукувати вміст текстового файлу на екран, друкуючи по три слова в кожному рядку.

Варіанті 11. Текстовий файл, зашифрувати методом Піфагора з кроком З і записати в новий файл.

Варіанті 12 Переписати текстовий файл в новий файл, відкидаючи всі коментарі (текст в фігурних {} дужках разом із дужками).

Варіанті 13. Заданий текстовий файл переписати в новий файл, розбиваючи його текст на рядки так, щоб кожний рядок закінчувався знаком питання. Завдання до лабораторної роботи № б .

Варіант 14. Створити текстовий файл з п (п- задається користувачем) рядків, в першому з яких - одна цифра „1", в другому - дві цифри „2" і так далі.

Варіант 15. Із заданого файлу зчитати літери до першої крапки і переписати їх в новий текстовий файл, формуючи в ньому рядки по 10 літер.