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

 

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

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

 

ПРИМЕР 3. Определить количество строк в файле с именем 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  
              ^    
              окно    

 

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

 

ПРИМЕР 4. Посчитать число знаков препинания в указанном текстовом файле:

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).


ЛИТЕРАТУРА

 

1. Немнюгин С. А., Turbo Pascal: Программирование на языке высокого уровня: Учебник для вузов 2-е изд. – СПб: Питер, 2007г.

2. Павловская Т. А., Паскаль. Программирование на языке высокого уровня: Учебник для вузов – СПб: Питер, 2004г.

3. Ставровский А. Б., Турбо Паскаль 7.0: Учебник для вузов – Киев: BHV «Ирина», 2001г.

4 Фаронов В. В., Система программирования Delphi – СПб: БХВ – Петербург, 2006г.
Оглавление

1.1. Языки программирования. 3

1.2. Трансляторы.. 4

1.3. История создания языков. 5

1.4. Базовые структуры языков программирования. 6

II. ОПИСАНИЕ ЯЗЫКА ПАСКАЛЬ.. 8

2.1. Основные объекты языка.. 8

2.2. Структура Паскаль - программы.. 9

2.3. Типизация данных.. 11

2.4. Объявление данных.. 14

III. ПРОСТЫЕ ОПЕРАТОРЫ. ВВОД/ВЫВОД ДАННЫХ.. 16

3.1. Оператор присваивания и выражения. 16

3.2. Операторы процедур. Ввод/вывод информации.. 19

IV. СТРУКТУРНЫЕ ОПЕРАТОРЫ. ОРГАНИЗАЦИЯ ВЕТВЛЕНИЙ И ЦИКЛОВ.. 23

4.1. Составной и пустой операторы.. 23

4.2. Организация ветвлений. Операторы выбора.. 24

4.3. Организация циклов. Операторы повторения. 29

V. ОРГАНИЗАЦИЯ ПОДПРОГРАММ. ПРОЦЕДУРЫ И ФУНКЦИИ.. 35

5.1. Процедуры и их типизация. 35

5.2. Функции пользователя. Рекурсивные функции.. 49

5.3 Модульное программирование. 54

VI. МАССИВЫ. ДАННЫЕ ТИПА ARRAY.. 57

6.1 Одномерные массивы.. 57

6.2. Многомерные массивы.. 59

6.3. Способы работы с массивами.. 60

VII. ОБРАБОТКА ЛИТЕРНЫХ ВЕЛИЧИН. ДАННЫЕ ТИПА CHAR И STRING.. 62

7.1. Тип данных CHAR.. 62

7.2. Массивы литер. 64

7.3. Тип данных STRING.. 65

7.4. Строковые функции и процедуры.. 66

IIX. КОМБИНИРОВАННЫЙ ТИП - ЗАПИСИ. ДАННЫЕ ТИПА RECORD.. 69

8.1. Определение типа RECORD.. 69

8.2. Оператор WITH.. 71

IX. ФАЙЛОВЫЙ ТИП.. 75

9.1. Определение и описание файла.. 76

9.2. Типы файлов. Процедуры работы с файлами.. 77

9.3. Буферная переменная. 80

9.4. Основные приемы работы с файлами.. 82

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

ЛИТЕРАТУРА.. 89