![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Тема:
Обробка текстових файлів
Мета:
Уміти скласти програму з оброблення текстових файлів
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; Прочитано: 343 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!