Текстовые файлы
Среди всех файлов особое место занимают текстовые файлы. Особенностью текстовых файлов является объединение в них символов в строки. Каждая строка кончается специальным символом конца строки. Этот специальный символ (литера) не входит в стандартный тип 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