ТЕМА №8: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.
ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. ТР5.
ЦЕЛИ И ЗАДАЧИ: Дать представление о файлах и средствах их обработки с помощью ТР5. Приобретение навыков составления программ с использованием файлов различного типа
ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:
Учащиеся должны знать:
- Что такое файл;
- Какие бывают файлы;
- Что такое файловая переменная;
- Как описываются типизированные файлы;
- Процедуры и функции работы с файлами;
- Процедуры и функции работы с типизированными и текстовыми файлами;
- Как описываются текстовые файлы.
Учащиеся должны уметь:
- Правильно описывать типизированные и текстовые файлы;
- Правильно пользоваться файловой переменной;
- Составлять программы с использованием типизированных и текстовых файлов;
- Составлять простейшие программы с использованием процедур и функций работы с типизированными и текстовыми файлами.
ПЛАН-СОДЕРЖАНИЕ УРОКА
Основные понятия
Мы все время рассматривали задачи, в которых данные поступают с клавиатуры, а результаты выводятся на экран. Ни исходные данные, ни результаты не сохраняются. А если данных слишком много? Как записать их на диск? Для этого необходимо исходные данные и результаты оформить в виде файлов, которые хранятся на диске.
Файлы – это поименованная структура данных на техническом носителе, представляющая собой последовательность элементов (записей) одного типа или - это массив переменной длины неограниченного размера.
Файл может быть компонентом другой структуры, но не должен входить в другой файл.
Отличие файла от массива: размещение на внешнем носителе, длина файла не задается, место элемента не определяется индексом.
Файлы бывают:
- типизированные
- нетипизированные
- текстовые
Файл объявляется в разделе описания переменных с указанием типа элементов файла.
Например:
Var F1: file of integer; F2: file of char; F3: text; F4: file;
Типизированными файлами называются файлы, в описании которых присутствует указание типа. Типизированные файлы – это файлы с прямым доступом к компонентам (записям).
Нетипизированный файл – это просто последовательность байтов, без конкретизации структуры.
Файл, компонентами которого являются данные символьного типа, называется текстовым. Отличие текстовых файлов от типизированных - наличие строковой структуры. В текстовые файлы можно записывать любую информацию, в том числе числа. При этом они (числа) автоматически преобразуются в строковые величины, а при считывании из файла – обратное преобразование в числа.
Описание файлов:
Тип файла |
Описание файла |
Типизированный |
Var F1: file of integer; F2: file of char; |
Нетипизированный |
Var F3: file; |
Текстовый |
Var F: text; |
Файловая переменная - это переменная, используемая в программах для обозначения файла и обращения к нему. Она не может использоваться как обычная переменная (слева от знака присваивания, в логических и арифметических выражениях).
Особенности файловой переменной:
1. Ей нельзя присваивать какие-либо значения
2. Она не может участвовать в логических операциях
3. Она не может входить в математические выражения
При работе с файлом используется понятие указателя или индекса файла, т.е. положение магнитной головки в определенном месте файла. Перед началом работы файл должен быть создан или открыт, по окончании работы – закрыт.
При работе с файловыми переменными, используются специальные процедуры и функции:
Процедура |
Назначение |
Замечание |
Assign(f, ‘name’) |
Связывает файловую переменную с конкретным файлом (привязывает переменную к имени файла). Ставится перед первым использованием файловой переменной. |
Можно имя файла ’name’ задавать через строковую переменную (S): Assign(f, S) |
Reset(f) |
Открывает существующий файл и устанавливает указатель на начало записи. |
Для любых файлов |
Rewrite(f) |
Создает новый пустой файл, устанавливает указатель - на начало файла. Если файл существовал, то его содержимое уничтожается. |
Для любых файлов |
Close(f) |
Закрывает открытый файл |
Для любых файлов |
Erase(f) |
Стирает предварительно закрытый файл |
Для любых файлов |
Rename(f, f1) |
Переименовывает файл f в файл f1. Файл f должен быть предварительно закрыт |
Для любых файлов |
EOF(f) |
Получение сведений о конце файла True, если указатель указывает на метку конца файла, иначе - False |
Логическая функция. |
Read(f,v1,…vn) |
Считывает записи из файла f в переменные v1, …vn |
Для типизированных и нетипизированных файлов |
Write(f,v1,…vn) |
Записывает в файл f значения переменных v1,…vn |
Для типизированных и нетипизированных файлов |
Readln(f,v1,…vn) |
Считывает записи из файла f в переменные v1, …vn |
в типизированных файлах недопустимо |
Writeln(f,v1,…vn) |
Записывает в файл f значения переменных v1,…vn |
в типизированных файлах недопустимо |
N:=filesize(F); |
Определение количества записей в файле |
Функция |
Eoln(f) |
True, если указатель на метке конца строки, иначе - False |
Логическая функция. Для текстовых файлов |
Append(f) |
Открывает файл и устанавливает указатель на метку конца файла |
Применяется для добавления записей |
N:=filepos(f) |
Выдает номер записи, на которую указывает указатель записи. Первая запись имеет номер 0. |
Функция |
seek(f,n) |
Устанавливает указатель на запись с номером n |
|
truncate(f) |
Отсекает все записи, находящиеся после указателя и в этой позиции записывает метку конца файла. |
§ Пример записи типизированных файлов:
var f: filt of integer;
assign(f, ‘file’); … rewrite(f); …write(f, v1,v2,…, vn); clos(f);
§ Пример считывания типизированных файлов:
var f: filt of integer;
assign(f, ‘file’); … reset(f); … read(f, v1,v2,…, vn); clos(f);