Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Процедуры и функции, которые применимы для всех категорий файловСодержание книги
Поиск на нашем сайте
Процедуры Read(F, Х1,Х2,...,ХN) — считывает в переменную X1 один элемент файла F (или несколько элементов в переменные X1,..., ХN), начиная чтение с элемента, на котором установлен указатель. Write(F, Xl, X2,...,XN) — записывает одно (X1) или более (X1,.... ХN) значений переменных в файл F, начиная с той позиции, на которую установлен указатель. Close(F) — закрывает файл F. Erase(F) — удаляет внешний файл, связанный с файловой переменной F. Rename(F, NewName) — присваивает внешнему файлу, связанному с файловой переменной F, новое имя NewName. Функции. Eof(F) – конец файла - принимает значение True, если указатель находится за последней компонентой файла, и False - противном случае. IOResult – возвращает условный признак последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает ноль. В противном случае она возвращает код ошибки ввода-вывода. Следует помнить, что функция IOResult становится доступной при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а директива {$I+} включает автоконтроль.
Процедуры и функции для типизированных файлов
Процедуры Seek(F, N) – смещает указатель файла к компоненту с номером N. При этом первый компонент файла имеет номер N = 0, второй – N = 1 и т.д. Truncate(F) – удаляет часть файла, начиная с текущего компонента и до конца файла. Функции. FilePos(F) – возвращает порядковый номер компонента файла, на котором стоит указатель файла. FiIeSize(F) – возвращает значение, которое содержит размер (число компонент) файла.
Работа с файлами Работа с разными категориями файлов несколько отличается друг от друга, но общие требования к работе со всеми категориями файлов одинаковы: - файл должен быть открыт для работы с ним; - файл должен быть создан и записан на внешний носитель (запись файла); - файл может быть считан с внешнего носителя в оперативную память (чтение файла) и обработан; - обработанный файл может быть снова записан на внешний носитель; - файл должен быть закрыт по окончании работы с ним.
Рассмотрим пять основных операций с внешними файлами: 1) запись в файл; 2) чтение файла; 3) добавление данных к файлу; 4) запись и чтение файла; 5) прямая выборка элементов файла.
Запись в файл
Под записью в файл понимается вывод результатов программы из оперативной памяти ЭВМ на диск, т.е. создание нового файла на внешнем устройстве. Внешний файл, в который записываются данные из программы, называют выходным. Для записи файла в программе необходимо выполнить следующие действия: 1) описать файловую переменную; 2) связать ее с выходным файлом (Assign); 3) открыть файл для записи (Rewrite); 4) вывести данные из программы в файл (Write); 5) закрыть файл для записи (Close); Общая форма записи в файл имеет следующий вид: Rewrite(F); .......... Write(F,Al,A2,...,An); .......... Close(F); Здесь F — имя файла; Al, A2,..., An — выражения (в том числе константы и переменные) того же типа, что и элементы файла. Процедура Rewrite осуществляет подготовку к записи информации в файл F (очищает файл и устанавливает указатель в начало файла). Оператор Write записывает значения выражений Al, A2,.... An по одному в конец файла F (после имеющейся в нем информации). Пример 3.1. Создать файл данных с именем D:\APPDOS\FP1.DAT, содержащий фамилии студентов и год их рождения. Решение. Возможный вариант программы: Program Prim31; Type Stud = Record Fio: String; Year: Integer; End; Var F: File of Stud; St: Stud; C: Char; Begin Assign(F, 'D:\APPDOS\FP1.DAT'); Rewrite(F); C:='Д'; While (C='Д') OR (C ='д') Do Begin {Ввод с клавиатуры двух полей записи} Write('Введите фамилию '); Readln(St.Fio); Write('Введите год '); Readln(St.Year); {Запись в файл. Элементом файла является вся запись} Write(F, St); Writeln('Продолжим ввод?(д/н)'); Readln(C); End; Close(F); End.
Чтение файла
Под чтением файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память ПЭВМ. Для чтения файла в программе необходимо выполнить следующие действия: 1) описать файловую переменную; 2) связать ее с внешним файлом (Assign); 3) открыть файл для чтения (Reset); 4) ввести данные файла в программу (Read); 5) закрыть файл для чтения (Close). Общая структура фрагмента программы, составленной для чтения файла, имеет вид: Reset(F); ........ Read(F,Xl.X2,...,XN); ........ Close(F); Тип переменных X1, Х2,..., XN должен соответствовать базовому типу элементов файла (это условие необязательно для текстовых файлов). Процедура Reset осуществляет подготовку к чтению из файла F (открывает файл и устанавливает указатель на первый элемент файла). Оператор Read последовательно присваивает переменным X1, Х2,..., XN значения из файла F. Количество этих переменных не должно превышать количества данных, которые могут быть введены из файла. В противном случае выполнение программы прекращается. Вместо Read (F,X1,X2,...,ХN) можно использовать несколько операторов Read: Read(F, Xl); Read(F, X2);...; Read(F, XN); После чтения очередного элемента указатель файла устанавливается на следующий за прочитанным элемент файла. Процедура Close выполняет закрытие файла F. Пример 3.2. Из созданного программой Prim31 файла c именем D:\APPDOS\FP1.DAT вывести на экран информацию о студентах, родившихся в 1985 г.. Полученные данные записать (для отчета) в файл с именем D:\APPDOS\FP2.DAT. Решение. Возможный вариант программы: Program Prim32; Type Stud = Record Fio: String; Year: Integer; End; Var St: Stud; F1, F2: File of Stud; Begin Assign(F1, 'D:\APPDOS\FP1.DAT'); Assign(F2, 'D:\APPDOS\FP2.DAT'); Reset(F1); Rewrite(F2); Writeln('Список студентов, родившихся в 1985 году'); { Пока не достигнут конец файла F1, осуществляется считывание из него данных, их обработка и запись в новый файл} While Not EOF(F1) Do Begin {Чтение записи из файла} Read(F1, St); If St.Year = 1985 Then Begin {Вывод записи на экран} Writeln(St.Fio, St.Year:6); {Вывод записи в файл} Write(F2, St); End; End; Close(F1); Close(F2); End. Заметим, что в этом примере мы используем файл D:\APPDOS\FP1.DAT, пребывая в полной уверенности, что такой файл на диске существует. Действительно, в предыдущем примере мы создали такой файл. Однако если делается попытка инициировать чтение несуществующего файла, возникает ошибка периода исполнения, которая может быть сообщена программе ненулевым значением функции IOResult. Поэтому более правильно было бы убедиться в наличии файла на диске прежде, чем начать работу с файлом в новой программе. Ниже приводится вариант программы, в которой устанавливается существование требуемого файла на диске: Program Prim32а; Label 10; Type Stud = Record Fio: String; Year: Integer; End; Var St: Stud; F1, F2: File of Stud; Begin Assign(F1, 'D:\APPDOS\FP1.DAT'); {$I-} Reset(F1); {$I+} If IOResult <> 0 Then Begin Writeln(‘Файл не существует’); GoTo 10 End Else Begin Assign(F2, 'D:\APPDOS\FP2.DAT'); Rewrite(F2); Writeln('Список студентов, родившихся в 1985 году'); { Пока не достигнут конец файла F1, осуществляется считывание из него данных, их обработка и запись в новый файл} While Not EOF(F1) Do Begin {Чтение записи из файла} Read(F1, St); If St.Year = 1970 Then Begin {Вывод записи на экран} Writeln(St.Fio, St.Year:6); {Вывод записи в файл} Write(F2, St); End; End; Close(F1); Close(F2); 10: End; End. Пример 3.3. Составить программу для вычисления среднего арифметического положительных значений элементов файла с именем File1.Dat. Решение. В данной программе для чтения файла используется оператор цикла с постусловием Repeat. Программа Program Prim33; Var F: File of Real; S, X: Real; N: Integer; Begin Assign(F, ‘File1.Dat’); Reset(F); N:=0; S:=0; Repeat Read(F, X); If X > 0 Then Begin S:= S + X; N:= N + 1; End; Until Eof(F); S:= S / N; Writeln(‘Среднее арифметическое = ‘, S); End. Мы рассмотрели два основных действия над последовательными файлами:их чтение и запись. Все остальные действия представляют собой сочетание записи и чтения файла.
Добавление данных к файлу
В Турбо Паскале разрешается обращаться к типизированному файлу, открытом процедурой Reset (т.е. для чтения информации), с помощью процедуры Write (т.е. для записи информации). Пусть необходимо к уже существующему типизированному файлу добавить ряд элементов. Для этого надо выполнить следующие действия: 1) открыть уже существующий файл F процедурой Reset; 2) установить указатель файла за последним его компонентом процедурой Seek следующим образом: Seek(F,FileSize(F)); 3) записать дополнительные данные (Write); 4) закрыть файл (Close).
Пример 3.4. Пусть уже создан файл F, состоящий из целых чисел 1, 2, 3, 4, 5. Необходимо добавить к этому файлу числа 10, 20, 30. Решение. Возможный вариант программы: Program Рrim34; Var F: File of Integer; I,X: Integer; Begin Assign(F, 'F'); Reset(F); Seek(F, FileSize(F)); For I:=1 to 3 do Begin X:=10*I; Write(F, I) End; Close(F); End. В результате выполнения программы получим файл F, состоящий из чисел 1, 2, 3, 4, 5, 10, 20, 30.
|
||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 231; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.234.50 (0.008 с.) |