
Файловые переменные.pptx
- Количество слайдов: 21
Язык программирования TURBO PASCAL
Файлы. Файловые переменные В этом уроке вы познакомитесь еще с одним типом переменной – Файловой. Если данные для вашей программы записаны во внешнем файле, или требуется результаты вашей программы записать во внешний файл с целью дальнейшего использования этих данных другой программой, то целесообразно использовать файловые переменные.
Файлы В Паскале понятие файла употребляется в двух смыслах: Ø как поименованная информация на внешнем носителе; Ø как переменная файлового типа (внутренний файл). В программе между этими объектами устанавливается связь. С элементами файла можно выполнять только две операции: • читать из файла • записывать в файл.
Файловые переменные Описание файловой переменной: Var < имя переменной>: File of <тип элемента > Например: Var Fi : File of integer; {файл целых чисел} Fr : File of real; {файл вещественных чисел} Fc : File of char; {файл символов}
На внешнем носителе файл можно представить как последовательную цепочку элементов, пронумерованных от 0, заканчивающуюся специальным кодом, называемым маркером конца (<м. к. >. Эл. 0 Эл. 1 . . . Эл. N м. к. Количество элементов, хранящихся в данный момент в файле, называется текущей длиной.
Открыть файл для записи Для того чтобы начать запись в файл, его следует открыть для записи. Это обеспечивает процедура: Rewrite (FV) где FV – имя файловой переменной. При этом указатель текущей записи устанавливается на начало файла. Если в файле есть информация, то она исчезает.
Выполнение процедуры Rewrite До: Эл. 0 Эл. 1 . . . Эл. N м. к. После: Позиция указателя
Запись в файл осуществляется процедурой Write(FV, V) где V – переменная того же типа, что и файл FV До: Эл. 0 Эл. 1 . . . Эл. N м. к. Write(FV, V) После: Эл. 0 Эл. 1 . . . Эл. N V м. к.
Пример 1. В файловую переменную Fx занести 20 вещественных чисел, последовательно вводимых с клавиатуры. Var Fx: File of real; x: real; i: byte; Begin Rewrite (Fx); For i: =1 to 20 do Begin Write(‘? ’); Readln(x); Write(Fx, x); End.
Открытие файла для чтения Для чтения элементов из файла его следует сначала открыть. Это делает процедура Reset (FV ) Указатель устанавливается на начало файла. При этом вся информация в файле сохраняется. До: После: Эл. 0 Эл. 1 . . . Эл. N м. к.
Чтение из файла осуществляется процедурой Read (FV, V), где V – переменная того же типа, что и файл FV. Значение текущего элемента записывается в переменную V; указатель смещается к следующему элементу До: Эл. 0 Эл. 1 После: Эл. 0 Эл. 1 . . . Эл. K+1 . . . Эл. N м. к. Read (FV, V); . . . Эл. K+1 Эл. N
Доступ к элементам файла может быть последовательным или прямым. В стандартном Паскале реализован только последова тельный доступ. Принцип последовательного доступа: для того чтобы прочитать n-ю запись файла, сначала нужно прочитать все предыдущие записи с 1 -й по (n-1)-ю. Пример 2. В переменной x получить 10 -й элемент вещественного файла Fx. Program A; Var Fx : File of real; x : real; Begin Reset (Fx); For i : =1 to 10 do Read (Fx , x); End.
Функция Eof (FV) проверяет маркер конца файла (end of File). Это логическая функция, которая получает значение true, если указатель установлен на маркер конца, в противном случае – false. Пример 3. Просуммировать все числа из файла Fx, описанного в предыдущем примере. Reset (Fx); Sx : = 0; While Not Eof (Fx) do Bedin Read (Fx, x); Sx : = Sx + x End; То же самое с помощью цикла Repeat : Repeat Read (Fx, x); Sx : = Sx + x Until Eof (Fx)
Внешние файлы В Турбо Паскале все внешние устройства (дисплей, клавиатура, принтер, диски и т. д. ) трактуются как логические устройства с файловой структурой организации данных. Все немагнитные внешние устройства однофайловые. Иначе говоря, с каждым из них связан один файл со стандартным именем. Стандартные имена логических устройств определяются операционной системой, в среде которой работает Паскаль. В системе MS DOS определены следующие имена: CON - логическое устройство, связанное при вводе с клавиатурой, при выводе – с экраном; PRN (принтер) – логическое имя файла, связанного с устройством печати; INPUT – логическое имя стандартного устройства ввода, связанного с клавиатурой; OUTPUT – логическое имя стандартного устройства вывода на экран. Список файлов на диске хранится в директории (каталоге) диска. Каталог содержит идентификаторы файлов, объем занимаемой памяти, дату и время создания файла. Идентификатор файла состоит из имени и типа файла: < имя файла>. <тип файла> Имя содержит от 1 до 8 латинских букв и (или) цифр; тип – тип (от 0 до 3 символов, указывающий вид информации.
Например: PROGRAM. PAS – в файле текст программы на Паскале; NUMBER. DAT - файл числовых данных; NAMES. TXT – текстовый файл. Для организации связи между файловой переменной и внешним файлом используется процедура назначения: Assign (<Имя файловой переменной>, <идентификатор внешнего файла>); <идентификатор внешнего файла> - строковая константа или переменная. Например: Assign (Fi, ‘Number. dat’); Работа с файлом в программе завершается его закрытием с помощью процедуры: Close (<имя файловой переменной>);
Примеры использования файлов Для создания и заполнения файла требуется следующая последовательность действий: 1. Описать файловую переменную. 2. Описать переменную того же типа, что и файл. 3. Произвести назначение (Assign). 4. Открыть файл для записи (Rewrite). 5. Записать в файл данные (Write). 6. Закрыть файл (Close).
Пример 4. Создать файл, содержащий среднесуточные температуры за некоторое количество дней. Можно взять за признак конца ввода какое-либо число. Например, 9999. Program Task 1; Var Ft : File of Real; T : Real; {Объявление файловой переменной } Begin Assign(Ft, ‘Temp. dat’); {Процедура назначения } Rewrite (Ft); { Открыть файл для записи} Writeln(‘ Введите данные’); Readln (T); While T < > 9999 do Begin Write (Ft, T); {Запись данных в файл } Write (‘? ’); Readln (T); {Ввод данных с клавиатуры } End; Writeln (‘ Ввод данных закончен!’); Close (Ft) {Закрытие внешнего файла } End.
В результате работы этой программы на диске будет создан файл с именем Temp. dat, в котором сохранится введенная информация. Для последовательного чтения данных из файла требуется выполнить следующие действия: 1. 2. 3. 4. 5. 6. Описать файловую переменную. Описать переменную того же типа. Выполнить назначение (Assign). Открыть файл для чтения (Reset). В цикле читать из файла (Read). Закрыть файл (Close).
Пример 5. Определить среднюю температуру для значений, хранящихся в файле Temp. dat. Program Task 2; Var Ft : File of real; { Объявление файловой переменной} t, st : real; n : integer; Begin Assign (Ft, ’Temp. dat’ ); {Процедура назначения } Reset(Ft); { Открыть файл для чтения} St : = 0; While Not Eof(Ft) do { Цикл «Пока не конец файла» } Begin Read (Ft, T); { Чтение из файла } St : = St + T End; n : = File. Size (Ft); { Определяет размер файла} St : = St/n; Writeln (‘Средняя температура за’ , n: 3, ‘суток =‘, St: 7: 2, град’); Close (Ft) { Закрытие файла } End.
Работа с файлами Особенности: • имя файла упоминается только в команде assign, обращение к файлу идет через файловую переменную • файл, который открывается на чтение, должен существовать • если файл, который открывается на запись, существует, старое содержимое уничтожается • данные записываются в файл в текстовом виде • при завершении программы все файлы закрываются автоматически • после закрытия файла переменную f можно использовать еще раз для работы с другим файлом 20
Домашнее задание В файле input. txt записаны числа, сколько их – неизвестно. « 4» : Найти среднее арифметическое всех чисел и записать его в файл output. txt. « 5» : Найти минимальное и максимальное числа и записать их в файл output. txt. 21
Файловые переменные.pptx