
- •5.5.2. Стандартные функции для данных типа char
- •5.5.3. Определение переменных строкового типа. Особенности типа string
- •5.5.4. Строковые выражения
- •5.5.5. Строковые процедуры и функции
- •5.6. Пример программы
- •5.7. Варианты заданий
- •5.8. Содержание отчета (см. П. 1.10)
- •5.9. Контрольные вопросы
- •6.4. Порядок выполнения работы
- •5. Устно ответить на контрольные вопросы (п.6.9).
- •6. Оформить отчет (см. П. 1.10).
- •6.5. Справки по структуре и операторам Pascal-программы, использующей пользовательские процедуры и функции
- •6.5.1. Описание процедуры. Оператор процедуры
- •Структура описания процедуры
- •6.5.2. Описание функции. Указатель функции
- •6.5.3. Локализация имен в Turbo Pascal
- •6.6. Варианты заданий
- •6.7. Содержание отчета (см. П. 1.10)
- •6.8. Контрольные вопросы
- •5. Устно ответить на контрольные вопросы (п. 7.9).
- •6. Оформить отчет (см. П. 1.10).
- •7.5. Справки по файловым процедурам и функциям
- •7.5.1. Описание файловых переменных
- •7.5.2. Установочные и завершающие операции с файлами
- •7.5.3. Операции ввода-вывода
- •7.5.4. Операции перемещения по файлу, определение параметров файла
- •7.5.5. Обработка ошибок ввода-вывода
- •7.5.6. Текстовые файлы
- •7.6. Пример структуры программы
- •7.7. Варианты заданий
- •7.8. Содержание отчета (см. П. 1.10)
- •7.9. Контрольные вопросы
- •Основная литература
- •Дополнительная литература
- •Приложение. Титульный лист
- •Отчет о лабораторных работах по дисциплине «Информатика и программирование»
5. Устно ответить на контрольные вопросы (п. 7.9).
6. Оформить отчет (см. П. 1.10).
7.5. Справки по файловым процедурам и функциям
Файл – поименованная область памяти на внешнем запоминающем устройстве, предназначенная для хранения данных.
Файл можно представить как список значений одного и того же (базового) типа; количество значений в программе не ограничивается.
Все элементы файла считаются пронумерованными; начальный элемент имеет нулевой номер.
Как правило, действия с файлом (чтение из файла, запись в файл) производятся поэлементно; в действиях участвует тот элемент файла, который обозначается текущим указателем. Текущий указатель можно понимать как скрытую переменную (то есть неявно описанную вместе с файловой переменной), которая обозначает («указывает») на некоторый конкретный элемент файла. При выполнении операций текущий указатель может автоматически (без явного указания в программе) перемещаться.
7.5.1. Описание файловых переменных
Для работы с файлами в программе должны быть определены переменные файловых типов, которые считаются представителями файлов в Pascal-программе.
Переменные файлового типа определяются по следующему правилу:
<Имя переменной> : file of <базовый тип>;
где «базовый тип» – любой допустимый в Turbo Pascal тип, кроме файлового типа.
Примеры описаний файловых типов и переменных:
Type Person = record
Name : string[40];
Tarif : Longint
end;
FP = file of Person;
Var F1, F2 : FP; {F1, F2 - файловые переменные для представления
в программе файлов, которые могут содержать записи типа Person}
Symb_F : file of char; {переменная для работы с файлами, которые могут
содержать символы}
Table : file of String[80]; {переменная для работы с файлами, которые могут содержать символы}
InputData : file of real;
F : file of integer;
7.5.2. Установочные и завершающие операции с файлами
В эту группу входят четыре операции, реализованные в виде стандартных процедур со следующими именами: Assign, Reset, Rewrite, Flush, Close.
Процедура Assign предназначена для установления связи между конкретным физическим файлом на магнитном носителе и переменной файлового типа, которая будет являться представителем этого файла в программе.
Правило обращения к процедуре Assign:
Assign (F, S);
F – имя файловой переменной,
S – строковое выражение, образующее имя файла по правилам, принятым в операционной системе MS-DOS (может включать в себя обозначение дисковода, цепочку каталогов и имя файла).
Примеры: Assign (F, ‘D:\MYDIR\MyFile.dta’ );
После выполнения данного вызова файловая переменная F будет связана с дисковым файлом MyFile.dta, расположенным в каталоге MYDIR из корневого каталога диска D).
.................
S:=’RESULT.DAT’;
Assign (F1, S);
.................
write(‘Введите имя файла для сохранения данных:’);
readln(S); Assign (F2, S);
.................
Процедура Reset(F) предназначена для открытия файлов для чтения. При этом файловая переменная F должна быть уже связана с конкретным дисковым файлом с помощью процедуры Assign.
Под открытием в данном случае понимается поиск файла на внешнем носителе, образование специальных системных буферов для обменов с ним и установка текущего указателя файла на его начало (то есть на нулевой элемент).
Процедура Reset(F) предполагает, что открываемый дисковый файл уже существует, в противном случае возникает ошибка.
Процедура Rewrite(F) предназначена для открытия файлов для записи. При этом файловая переменная F должна быть уже связана с конкретным дисковым файлом с помощью процедуры Assign.
Процедура Rewrite допускает, что открываемый файл может еще не существовать; в этом случае она создает заданный файл. Если же файл существует, то Rewrite очищает его.
Процедура Flush(F) используется для завершения обменов с файлом без его закрытия. Обмены с файлами всегда реализуются через некоторый буфер в оперативной памяти, поэтому в процессе записи в файл последние записываемые элементы могут еще находиться («застрять») в буфере. Процедура Flush вызывает принудительный сброс этих элементов в файл.
Процедура Close(F) завершает действия с файлом. При этом ликвидируются внутренние буферы, образованные при открытии файла, оставшиеся в буфере данные сохраняются в файле.