Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль - лекциии.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1 Mб
Скачать

Створення текстових файлів.

Текстові файли можна створити декількома способами.

Перший – текстовий файл створюється посимвольно.

Задача: написати програму по символьного формування рядків файлу.

Program p1;

Const n=5;

Var f: text;

i:integer;

sim: char;

Begin

Assign (f, ‘tek1’);

Rewrite (f);

For i:=1 to n do

Begin

Repeat

Read (sim); {вводимо симв. з клавіатури}

Write (f, sim) {запис в файл}

Until (sim = #13);

end;

close (f);

Reset (f);

While not eof(f) do

Begin

While not eoln(f) do

Begin

Read (f, sim);

Write (sim);

End;

Readln (f);

Writeln (f);

End;

End.

Формування файлу здійснюється за допомогою вкладених циклів. Зовнішній цикл забезпечує формування n рядків. У внутрішньому циклі організовано введення та запис в файл символа за символом до тих пір, поки не буде натиснута клавіша Enter. Саме її код (#13) входить до умови виконання циклу Repeat. Читання створеного файлу також виконується в двох циклах. Внутрішній цикл організує посимвольне читання рядку, доки не зустрінеться ознака кінця рядку. Оператор Readln (f) спрацьовує тільки після закінчення внутрішнього циклу, що забезпечує перехід на новий рядок.

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

Другий – текстовий файл можна сформувати, використовуючи готові рядки (дані String).

Задача: написати програму створення та читання текстового файлу.

Uses CRT;

Const ob =’Grupa’;

Var fam: string[25];

spisok: text;

simv: char;

Begin

Assign (spisok, ob);

Rewrite (spisok);

Repeat

Writeln (‘Вв. наступне прізвище’);

Readln (fam);

Writeln (spisok, fam);

Writeln (‘для продовження роботи введіть будь-який символ’);

Writeln (‘для закінчення – необхідно ввести символ N (прописний)’);

Readln (simv)

Until simv = ‘N’;

Close (spisok);

Reset (spisok);

Writeln;

Writeln (‘зміст файлу’);

While not eof(spisok) do begin

Readln (spisok, fam);

Writeln (fam);

end;

End.

В циклі вводиться рядок, натискується Enter та будь-яка клавіша, як ознака припинення формування файлу. Цикл завершиться після введення символу N. Зверніть увагу на те, що рядок записується у файл за одне виконання оператора Writeln, а при читанні такого файлу вживають оператор Readln. Такий спосіб обробки файлу використовується в тих випадках, коли рядок якимсь чином створюється в оперативній памяті, а потім записується на диск, або прочитаний з файлу рядок аналізується в памяті як звичайний рядок String.

Третій – текстові файли можна створити у будь-якому текстовому редактору, тобто не програмним шляхом, а обробляти в самій програмі.

Задача: в файлі test2 записані цілі додатні та від’ємні числа. Кількість рядків та кількість чисел в кожному рядку невідома. Треба обчислити суму та кількість відємних чисел в кожному рядку, загальну кількість чисел у рядку та загальну кількість рядків.

Program pf3;

Var f: text;

i, j, x, s, kol: integer;

Begin

Clrscr;

Assign (Var f, ‘test2’); {файл створено в текстовому редактору}

Reset (Var f);

i:=0; {загальна кількість рядків}

while not eof(f) do

begin

j:=0; { загальна кількість чисел у рядку }

s:=0; {сума від’ємних чисел}

kol:=0; {кількість від’ємних чисел }

inc(i);

while not eoln(f) do

begin

read (f, x);

write (lst, x:5); {підключення модуля, який підтримує файл lst – якщо потрібно вивести результат на принтер}

ins (j);

if x<0 then begin

s:=s+x;

kol:=kol+1;

end;

end;

writeln (lst);

writeln (lst, ‘s=’, s:5; ‘kol=’, kol:5, ‘j=’, j:5);

Readln (f);

End;

Writeln (lst, ‘загальна кількість рядків=’, i:5);

Close (f);

End.

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

Вказана можливість значно полегшує вирішення задачі коригування файлу. Текстовий файл можна виправляти у будь-якому текстовому редакторі, що значно зручніше, ніж використовувати програмні засоби.