- •§4. Файлы
- •4.1. Общие положения
- •4.2. Классификация файлов.
- •4.3. Файловый тип данных.
- •4.4. Стандартные процедуры для работы с файлами
- •4.5. Типизированные файлы
- •4.6. Текстовые файлы
- •4.7. Дополнительные процедуры и функции, используемые при работе с файлами
- •4.8. Стандартные файлы
- •Задачи для самостоятельного решения.
- •§5. Использование стандартных библиотечных модулей
- •5.1. Модуль crt
- •5.1.1. Программирование клавиатуры
- •5.1.2. Текстовый вывод на экран
- •5.2. Модуль graph
- •5.2.1. Переход в графический режим и возврат в текстовый.
- •5.2.2. Инициализация графического режима
- •5.2.3. Экран и окно в графическом режиме
- •5.2.4. Рисование линий и точек.
- •5.2.5. Рисование многоугольников
- •5.2.6. Рисование дуг, окружностей, эллипсов
- •5.2.7. Краски, палитры, заполнения
- •5.2.8 Вывод текста
- •Задачи для самостоятельного решения.
- •Литература
4.3. Файловый тип данных.
Способы объявления файлов различной логической структуры:
типизированные файлы (задаются предложением FILE OF ...);
текстовые файлы (определяются типом TEXT);
нетипизированные файлы (определяются типом FILE).
Переменные файлового типа могут быть описаны в программе либо с использованием раздела типов Type, либо явно в разделе переменных Var.
Первый способ объявления файловой переменной (с использованием раздела типов Type):
Type <имя типа 1> = File of <базовый тип элементов>;
<имя типа 2> = Text;
<имя типа 3> = File;
Var <имя файловой переменной 1>:<имя типа 1>;
<имя файловой переменной 2>:<имя типа 2>;
<имя файловой переменной 3>:<имя типа 3>;
Второй способ объявления файловой переменной (в разделе переменных Var ):
Var
<имя файловой переменной 1>: File of <базовый тип элементов>;
<имя файловой переменной 2>: File;
<имя файловой переменной 3>: Text;
Например,
первый способ: |
Второй способ: |
Type File_1 = File of integer; File_2 = Text; File_3 = File; Var F1 : File_1; F2 : File_2; F3 : File_3; |
Var F1 : File of integer ; F2 : Text; F3 : File;
|
С помощью файловых переменных F1, F2, F3, соответственно, описываются типизированный, текстовый и нетипизированный файлы.
С каждым файлом можно связать понятие - текущий указатель. Это неявно описанная буферная переменная, которая указывает на номер конкретного компонента файла. Начальный компонент имеет нулевой номер. Например, на рисунке текущий указатель "смотрит" на компонент с номером (k).
-
(0)
(1)
...
(k)
(k+1)
...
eof
Д
ействия
с файлами производятся поэлементно,
причем в них участвует тот элемент, на
который "смотрит" текущий указатель,
перемещающийся в результате выполнения
действия на следующий элемент.
4.4. Стандартные процедуры для работы с файлами
Процедура ASSIGN. Для работы с каким - либо физическим файлом, находящимся на магнитных носителях, необходимо первоначально связать его с файловой переменной (логическим файлом), с помощью которой будет осуществляться доступ к этому физическому файлу. Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT - для ввода данных и OUTPUT - для вывода на экран. Другие файлы, а также логические устройства, становятся доступны программе только после выполнения особой процедуры, которая заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла.
Для установления связи между файловой переменной и именем файла на внешнем устройстве в Турбо Паскале имеется стандартная процедура Assign.
Формат вызова процедуры в программе:
Assign (<имя файловой переменной>, ’<имя внешнего файла>’);
Второй параметр в процедуре Assign является выражением строкового типа, поэтому заключается в апострофы. В общем виде это выражение может быть записано следующим образом: 'имя диска:\имя каталога\имя подкаталога\...\имя файла'. Если имена диска и каталога не указаны, то выбирается текущий диск и текущий каталог. Если вместо имени внешнего файла стоят два апострофа без пробела ( '' ), то файл связывается со стандартным файлом ввода INPUT или со стандартным файлом вывода OUTPUT.
Например,
Assign (F1, ‘a:int.dat’);
Все операции, выполняемые над переменной F1, будут выполняться над файлом, хранящимся на диске A и имеющем имя ‘int.dat’.
Assign (F1, 'c:\bp\prog\int1.pas');
Все операции, выполняемые над переменной F1, будут выполняться над файлом, хранящимся на диске С в каталоге bp, подкаталоге prog и имеющем имя ‘int1.pas’.
Процедура Reset. Данная процедура открывает существующий физический файл, который был связан с файловой переменной. Если под файловой переменной подразумевается текстовый файл, то он будет доступен для чтения только при последовательном доступе к элементам. Если под файловой переменной подразумевается типизированный файл, то он будет открыт и для чтения и для записи как при последовательном доступе к элементам, так и при прямом.
Формат вызова процедуры в программе:
Reset (<имя файловой переменной>);
При этом текущий указатель устанавливается на первый элемент файла (с номером 0).
Процедура Rewrite. Данная процедура создает новый физический файл, имя которого связано с файловой переменной. Если такой физический файл уже существует, то он удаляется, и на его месте создается новый пустой файл.
Формат вызова процедуры в программе:
Rewrite (<имя файловой переменной >);
При открытии файла указатель текущей позиции устанавливается в его начало.
Процедура Close. После завершения работы с файлом положено осуществлять закрытие файла. При этом, в случае необходимости, в содержимое файла вносятся все произведенные изменения.
Формат вызова процедуры в программе:
Close (<имя файловой переменной>);
Процедура Rename. Данная процедура используется для переименования физических файлов.
Формат вызова процедуры в программе:
Rename (<имя файловой переменной>, ’<имя внешнего файла>’);
Процедура Erase. Данная процедура используется для уничтожения физических файлов.
Формат вызова процедуры в программе:
Erase (<имя файловой переменной>);
Заметим, что процедуры Rename и Erase можно выполнять только для файловых переменных, которые уже связаны с каким - либо физическим файлом. Перед выполнением этих процедур необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.
