Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ПАСКАЛЕ.doc
Скачиваний:
12
Добавлен:
04.09.2019
Размер:
2.98 Mб
Скачать

10.4. Текстовые файлы

Среди всех файлов особое место занимают текстовые файлы. Особенностью текстовых файлов является объединение в них символов в строки. Каждая строка кончается специальным символом конца строки. Этот специальный символ (литера) не входит в стандартный тип CHAR и не имеет графического представления. Нас и не интересует вид этого символа. Главное, что с ним связана логическая функция EOLN (конец строки). EOLN (F) = TRUE, если окно указывает на признак конца строки. Заметим, что если EOLN (F) = TRUE, то при чтении элементов из файла в символьную переменную она принимает значение пробела (пробел – аналог конца строки). Для записи в файл признака конца строки служит стандартная процедура WRITELN.

Текстовые файлы, т.е. файлы с делением на строки, описываются с помощью слова TEXT, например: VAR X, D: TEXT.

П р и м е р 1. Определить количество строк в файле с именем BOOK.

program NOMBRELINE;

var K: integer; BOOK : text; S: char;

begin {Формирование файла BOOK}

assign (BOOK,'f1'); rewrite (BOOK); read (S);

while S<> '.' do begin

while S <> '#' do begin

write (BOOK, S); read (S); end;

writeln (book); read (S); end; close (BOOK);

{Подсчет числа строк в текст; BOOK}

K := 0; reset (BOOK); writeln ;

while not eof (BOOK) do

begin

if eoln (BOOK) then K := K + 1; read (BOOK, S); write (S);

end;

writeln ('В текстовом файле BOOK ', K,' – строк');

end.

Пояснение. В программе сначала формируется текстовый файл, у которого строки кончаются символом «$», а сам текст – символом «.». Текст вводится с клавиатуры в виде непрерывной цепочки, например:

Наша Маша громко плачет,$Уронила в речку мячик.$Тише, Машенька, не плачь,$Не утонет в речке мяч.$.

Во второй части программы с помощью функции EOLN подсчитывается число строк текста, и текст выводится на экран построчно:

Наша Маша громко плачет,

Уронила в речку мячик.

Тише, Машенька, не плачь,

Не утонет в речке мяч.

Итак, для записи литеры «конец строки» используется процедура WRITELN (F), где F находится в режиме записи.

Схема работы процедуры WRITELN

T

a

g

c

d

^

окно

WRITELN (T):

T

a

g

c

d

#

^

окно

Таким образом, сформированный файл легко выводится на печать построчно с помощью оператора WRITE, так как признак конца строки в файле инициирует переход на другую строку экрана (эффект оператора WRITELN).

В режиме чтения для работы с литерой «конец строки» есть процедура READLN. По этой процедуре окно файла устанавливается на первый элемент следующей строки файла.

Схема работы процедуры READLN

T

d

b

c

d

#

e

f

^

окно

READLN (T):

T

d

b

c

d

#

e

f

^

окно

Файлы как переменные величины могут выступать в качестве аргументов и результатов при создании функций-процедур, причем эти переменные должны быть всегда оформлены как параметры-переменные, даже если файл в процедуре играет роль аргумента.

П р и м е р 2. Посчитать число знаков препинания в указанном текстовом файле.

function PUNCTUATION (var CHARFILE: text): integer;

var SYMBOLNOMB: integer;

SYMBOL: char;

begin

SYMBOLNOMB := 0; reset (CHARFILE);

while not eof (CHARFILE) do

begin

read (CHARFILE, SYMBOL);

if SYMBOL in ['.',',',' ',':','...] then

SYMBOLNOMB := SYMBOLNOMB + 1

end;

PUNCTUATIОN := SYMBOLNOMB

end.

С помощью этой функции можно теперь произвести подсчет числа вхождений знаков препинания в любой текст, представленный некоторым текстовым файлом. Рассмотрим в качестве примера фрагмент программ для файла с именем FIL:

assign (FIL, 'FIL');

reset (FIL);

n := PUNCTUATION (FIL);

close (FIL);

writeln ('число знаков препинания в тексте FIL =', n).