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

Приложения

Приложение 1

Структура текстового файла

Структура физического файла, то есть поименованной области памяти на внешнем носителе, есть простая последовательность байтов :

байт

байт

байт

байт

байт

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

Код симв

Код симв

Код симв

Код симв

Eoln

Код симв

Код симв

Eoln

Код симв

Код симв

Код симв

Eoln

Код симв

Код симв

Код симв

Код симв

Eof

Каждому файлу с Pascal ставится в соответствие переменная, называемая файловой переменной. Она, как и все переменные, должна быть описана в разделе описания переменных. Текстовый файл можно рассматривать как последовательность символов, раз­битую на строки длиной от 0 до 256 символов. Для описания используется стан­дартный тип Text:

Var F: text; {F - файловая переменная}

Каждая строка текстового файла завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строки chr(13) и возврат каретки chr(10).

Приложение 2

Процедуры работы с текстовым файлом

Перед началом работы с конкретным файлом надо связать с ним файловую переменную. Для этого используется специальная процедура Assign (Var f; Name: string). Здесь f – файловая переменная, а Name – имя файла. Если файл расположен не в текущем каталоге, то надо указывать его полное имя.

Пример.

Var f1, f2 : text;

St: string;

Begin

Assign (f1; d: \a064\Dan.txt)

Write(‘Введите имя файла”);

Readln(St);

Assign (f2; St)

End.

Здесь описаны 2 файловые переменные f1 и f2. Далее в тексте программы файловая переменная f1 связывается с файлом Dan.txt, а f2 – с файлом, имя которого пользователь задаёт в текстовой строке St.

После связывания имени файловой переменной с именем файла следует открыть файл. Открытие текстового файла можно произвести двумя стандартными процедурами:

  • процедура Rewrite (f) создаёт новый физический файл с тем именем, которое связано с файловой переменной f. Если уже есть физический файл с таким именем, то на его месте создаётся новый пустой файл с таким же именем. Указатель текущей позиции устанавливается на его начало. Этот способ открытия используется, когда надо производить запись в файл;

  • процедура Reset (f) открывает уже существующий физический файл, связанный с файловой переменной f. Он будет открыт только для чтения. Если физический файл с таким именем отсутствует, то возникает ошибка.

  • процедура Append( f) открывает уже существующий файл и указатель текущей позиции устанавливается на конец файла. После такого открытия текстовый файл можно только дополнять информацией

Для работы с текстовыми файлами используются процедуры: Read и Readln для чтения из файла и Write и Writeln для записи в файл

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

Readln(var F : text; VI [,V2,...Vn]);

Writeln(var F : text; VI [,V2,...Vn]);

где V1 ...Vn переменные разных типов.

Т.е. по сравнению с уже привычным использованием этих процедур, в состав параметров входит файловая переменная.

При использовании этих процедур происходит перевод переменных, входящих в состав параметров в строку символов при записи в файл (Write и Writeln) и обратный перевод из строки символов в типы данных из списка ввода при чтении из файла (Read и Readln) . Т.е. если NN - целое число, равное 123, а RR - вещественное число равное 0.45, то при выполнении процедуры Writeln(f, NN, RR ) в текстовый файл будет записана строка символов:

123 0.45

При чтении из файла этой строки результат чтения будет зависеть от того, переменные какого типа будут использованы в процедуре Readln. Если будет переменная St определена как строка символов:

Var St: string;

то после выполнения процедуры Readln (f, St ) переменная St примет значение: St = ‘123 0.45’ . А если :

Var А: byte; R: real;

то после выполнения Readln (f, А, R ) переменные примут значения: А=123, R=0.45.

При организации операций ввода-вывода используются специальные функции Eoln, Eof, SeekEoln, SeekEof.

Функция Eoln(var F: text) возвращает булевское значение True, если текущая файловая позиция находится на маркере конца строки или всего файла. Во всех других случаях значение функции будет False. Функция SeekEoln(var F: text) аналогична Eoln, отличие в том, что возвращает True, игнорируя пробелы и табуляции, которые находятся между маркером конца строки и текущей позиции.

Функция Eof(var F: text) возвращает булевское значение True, если указатель конца файла находится сразу за последним компонентом, и False — в противном случае. Функция SeekEoln(var F: text) аналогична Eof , но игнорирует пробелы и табуляции, которые находятся между маркером конца строки и текущей позиции.

Приложение 3