Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лабораторна робота № 10



Тема:

Обробка текстових файлів

Мета:

Уміти скласти програму з оброблення текстових файлів

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

Текстовий файл являє собою сукупність символів, об'єднаних в рядки – записи змінної довжини. В кінці кожного рядка розміщується спеціальна ознака кінця рядка – маркер (CR/LF), який в ASCII має код $0D/$0A. Сам текстовий файл закінчується маркером кінця файла ^Z з кодом $1A. Текстові файли можна обробляти лише послідовно. Крім того, введення і виведення даних неможливо виконувати одночасно для одного і того ж текстового файла.

Особливістю роботи з текстовими файлами є те, що параметри, значення яких вводяться та виводяться за допомогою процедур Read, Write, можуть бути не обов'язково типу Char або String. Допускається при введенні використову-вати також величини цілого та дійсного типу, а виведенні, крім цього, величини типу Boolean.

В мові PASCAL введення-виведення інформації здійснюється через спеціальні файлові змінні, які мають складну внутрішню структуру, що відповідає типу Record. Структури файлових типів описано в модулі Dos.

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

Файлові змінні для текстових файлів задаються так:

Var < iдентифікатори >: Text;

10.1.1. Стандартні процедури для текстових файлів

Введемо такі позначення:

FV - ім'я файлової змінної; St - String; Ch - символьна змінна.

З врахуванням введених позначень розглянемо файлові процедури:

Assing(FV,St) – пов'язує файлову змінну FV з зовнішнім ім'ям файла. Повне ім'я файла на диску має вид: St:= [<ім'я диску:>]<ім'я файлу>[.<тип>]; Починаючи з моменту виконання процедури Assign всі дії над файловою змінною FV еквівалентні дії над файлом, заданим значенням літерного рядка St.

Rewrite(FV) – відкриває текстовий файл виключно для запису. Ім'я файла попередньо визначено в процедурі Assign. Якщо процедура Rewrite використовується для створення нового файлу на диску, де вже існує файл з таким ім'ям, він знищується. Поточний вказівник файла встановлюється на його перший елемент.

Append(FV) – відкриває вже існуючий на диску файл для доповнення. На відміну від Rewrite, ця процедура не очищує створений файл, а лише встановлює поточний вказівник файла в його кінець. Таким чином процедура Append використовується тоді, коли необхідно додати нові рядки в кінець вже існуючого файла.

Reset(FV) – відкриває вже створений файл для читання. Вказівник встановлюється при цьому на початок файла. Якщо цю процедуру використати для неіснуючого файлу, виникає помилка введення-виведення.

Close(FV) – закриває файл, позначений змінною FV. В файл записуєтья маркер кінця файла $1A.

Read(FV,Ch) – зчитує наступний символ з файла FV в змінну Ch. Керуючі символи (CR/LF/^Z) при цьому також зчитуються.

Write(FV,Ch) – записує символьну змінну Ch в поточну позицію файла FV.

Readln(FV,St) – зчитує наступний рядок з файлу в змінну St. Маркери кін-ця рядка в змінну не записується.

Writeln(FV,St) – записує в файл FV рядок St. При цьому кінець рядка в файлі FV доповнюється маркерами (CR/LF).

При записі і зчитуванні вказівник файла переміщується послідовно по елементах файла. Розглянемо більш детально ці процедури.

10.1.2. Функції для роботи з текстовими файлами

1. EoLn(FV): Boolean – видає True, якщо наcтупний символ за прочитаним – маркер кінця рядка. В іншому випадку – видає False.

2. EoF(FV): Boolean – видає True, якщо наступний символ за прочитаним – маркер кінця файла.

10.1.3. Приклад обробки інформації в текстових файлах

Створити текстовий файл F.txt, який складається з рядків довжиною 40 символів, причому перший рядок складається з латинських літер 'A', другий – з літер 'B', останній – з літер 'Z'. Скопіювати файл F.txt в файли F1.txt та F2.txt таким чином, щоб в перший з них записувалися рядки, що складаються з голосних літер, а в другий – рядки, що складаються з приголосних літер.

Приклад:

Var

S: String;

Ch: Char;

i: byte;

Q, G, H: Text;

BEGIN

Assign(Q,'F.txt');

Rewrite(Q);

For Ch:='A' to 'Z' do

begin

S:='';

For i:=1 to 40 do S:=S+Ch;

Writeln(Q,S)

end;

Close(Q);

Reset(Q);

Assign(G,'F1.txt');

Rewrite(G);

Assign(H,'F2.txt');

Rewrite(H);

While not Eof(Q) do

begin

Readln(Q,S);

Ch:=S[1];

Case Ch of

'A','E','I','O','U','Y': Writeln(G,S);

Else Writeln(H,S)

end

end;

Close(Q);

Close(G);

Close(H)

END.





Дата публикования: 2014-11-04; Прочитано: 325 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...