trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]  [ДАЛЕЕ]

2. Типизированные файлы.

   Типизированный файл - это файл, состоящий из элементов любого типа данных, кроме файлового, например:

type Mas = array[1..10] of real;
Mno = set of 1..10;
Zap = record
FIO : string[30];
SEX : char;
end;
var F1: file of integer; {Элементы файла - целые числа}
F2: file of real; {Элементы файла - вещественные числа}
F3: file of char; {Каждый элемент файла - символ}
F4: file of Mas; {Каждый элемент файла - массив}
F5: file of Mno; {Каждый элемент файла - множество}
F6: file of Zap; {Каждый элемент файла - запись}

   Для осуществления передачи данных из типизированного файла в программу (чтение данных) используется процедура:
- Read(F, X1[, X2,..., Xn]) - считывает в переменную X1 (пересылка данных в программу из файла) один элемент файла F (или несколько элементов в переменные X1,..., Xn), начиная чтение с элемента, на который указывает текущий указатель. Если F опущено, то подразумевается стандартный файл Input.
Процедура чтения выполнима только в случае, если Eof(F) = False;

   Для осуществления пересылки данных из программы в типизированный файл (запись данных) используется процедура:
- Write(F, X1[, X2,..., Xn]); - записывают одно (X1) или более (X1, X2,..., Xn) значений переменных в файл F, начиная с той позиции, на которую установлен указатель. Если F опущено, то подразумевается стандартный файл Output. Write выполним только в случае, если Eof(F) = True.

   2.1. Основные операции с внешними типизированными файлами.

К основным операциям с внешними файлами можно отнести:
  • запись данных в файл;
  • чтение данных из файла;
  • добавление данных в файл;
  • изменение данных в файле.

   В каждом случае предполагается, что файл F в программе уже связан с процедурой Assign с внешним файлом на диске.

      2.1.1. Запись данных в файл.

Под записью данных в файл понимается вывод результатов исполнения программы из оперативной памяти ЭВМ на диск. Файл, в который записываются данные из программы, называют выходным.

   Для записи файла в программе необходимо выполнить следующие действия:

  1. открыть новый файл для записи (Rewrite);
  2. вывести данные из программы в файл (Write);
  3. закрыть файл для записи (Close);
Общая форма записи в файл имеет следующий вид:

Rewrite(F);
...........
Write(F, A1, A2, ..., An);
...........
Close(F);

   Здесь F - имя файла; A1, A2,..., An - выражения (в том числе константы и переменные) того же типа, что и элементы файла.

   Процедура Rewrite осуществляет подготовку к записи информации в новый файл F (очищает файл и устанавливает указатель в начале файла). Оператор Write записывает значения выражений A1, A2, ..., An по одному в конец файла F (после имеющейся в нем информации).

Пример: Программа, с помощью которой происходит запись данных о студентах в новый типизированный файл (имя файла вводит пользователь).
[program DemoWrite]

      2.1.2. Чтение данных из файла.

   Под чтением файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память ЭВМ. Файл, из которого читаются данные, называют входным файлом. Для чтения файла в программе необходимо выполнить следующие действия:

  1. открыть файл для чтения (Reset);
  2. ввести данные файла в программу (Read);
  3. закрыть файл для чтения (Close).

   Общая структура фрагмента программы, составленной для чтения файла, имеет вид:

Reset(F);
.........
Read(F, X1, X2, ...., Xn);
.........
Close(F);

   Тип переменных X1, X2,..., Xn должен соответствовать базовому типу элементов файла (это условие не обязательно для текстовых файлов). Процедура Reset осуществляет подготовку к чтению из файла F (открывает файл и устанавливает указатель на первый элемент файла).

   Оператор Read последовательно присваивает переменным X1, X2, ..., Xn значения из файла F. Количество этих переменных не должно превышать количества данных, которые могут быть введены из файла. В противном случае выполнение программы прекращается. Вместо Read(F, X1, X2,..., Xn) можно использовать несколько операторов Read:

Read(F, X1); Read(F, X2); ... Read(F, Xn);

   После чтения очередного элемента указатель файла устанавливается на следующий за прочитанным элемент файла.

   Процедура Close выполняет закрытие файла F.

Пример: Чтение данных из файла F1 в переменную X1.
while not EOF(F1) do { ... пока не конец файла ... }
begin
.......................{ Пока не достигнут конец файла F1, осу-}
Read(F1, X1); {ществляется считывание (из файла F1)}
.......................{данных в переменную X1 }
end;

Пример: Программа, с помощью которой происходит чтение данных из типизированного файла.
[program DemoRead]

      2.1.3. Добавление данных в файл.

   Пусть необходимо к уже существующему файлу добавить ряд элементов. Для этого надо выполнить следующие действия:

  • для типизированных файлов открыть уже существующий файл F процедурой Reset;
  • установить указатель файла за его последней записью процедурой Seek следующим образом: Seek(F, FileSize(F));
  • записать дополнительные данные (Write);
  • закрыть файл (Close);
Пример: Программа, с помощью которой можно добавлять информацию в типизированный файл.
[program DemoAdd]

      2.1.4. Изменение элементов файла.

   Турбо Паскаль позволяет осуществлять прямой выбор элементов файла. Для этого используется процедура Seek:

Seek(F, N);

где F - имя файла, который был ранее открыт процедурой Reset; N - целое положительное число или выражение, соответствующее порядковому номеру элемента в файле.

   После выполнения процедуры Seek(F,N) указатель текущего элемента в файле переместится к элементу с номером N. Теперь этот элемент можно прочитать операторами Read и Write. Каждое повторное использование этих операторов будет осуществлять последовательное чтение или запись элементов файла, начиная с последующего (N + 1 - го) элемента.

   Используя процедуру Seek, можно корректировать отдельные элементы файла непосредственно. Для этого необходимо выполнить следующие действия:

  1. открыть корректируемый файл (Reset);
  2. подвести указатель файла к корректируемому элементу (с помощью Seek);
  3. считать корректируемый элемент (Read);
  4. откорректировать элемент файла;
  5. повторить процедуру подвода указателя файла (Seek);
  6. записать откорректированный элемент (Write);
  7. закрыть файл (Close).
Пример: Пусть на диске существует файл GR.DAT, каждый элемент которого представляет собой запись, содержащую фамилию, имя и возраст студента. Необходимо обновить данные этого файла путем увеличения возраста всех студентов на единицу. Подвод указателя к корректируемому элементу выполнен в цикле с помощью подпрограммы Seek.
[program DemoSeek]

   Изменение информации в файле можно осуществлять и другим способом, переписывая данные из одного файла в другой:

  1. открывается корректируемый ("старый") файл (Reset);
  2. открывается "новый" файл для записи информации (Rewrite);
  3. считывается элемент (запись) из "старого" файла (Read). Далее данный элемент изменяют (или не изменяют);
  4. измененный (или не измененный) элемент записывается в "новый" файл (Write). Третий и четвертый пункты повторяют до тех пор, пока не наступит конец файла;
  5. закрываются "новый" и "старый" файлы (Close);
  6. удаляется "старый" файл (Erase);
  7. "новому" файлу присваивается "старое" имя, т.е. "новый" файл переименовывается (Rename).
Пример: Пусть на диске существует файл GR.DAT, каждый элемент которого представляет собой запись, содержащую фамилию, имя и возраст студента. Программа, с помощью которой происходит редактирование данных типизированного файла.
[program DemoEdit]

[НАЗАД]  [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz