Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
61
Добавлен:
04.06.2015
Размер:
7.62 Mб
Скачать

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

Они предназначены для хранения данных только одного типа Паскаля: файл целых чисел, вещественных чисел, символов, массивов одного размера, строк одной длины, записей. Не существует только файла файлов и файла объектов.

Перед началом работы с файлом его необходимо описать(объявить), указав его имя и типкомпонентов(элементов).

Объявить файл можно двумя способами:

1.указаниемего имени и типа в разделе описания переменныхVar:

Var f_int : File Of Integer; описан файл целых чисел f_int,

f_int – имя логического файла – файловой переменной

Внимание! При описании файла его размерне указывается.

Структура файла целых чисел:

EOFEnd Of File– метка конца файла: символ с кодом26 (CTRL+Z).

Var f_char : File Of Char; описан файл символов f_char,

f_char – имя логического файла – файловой переменной

Структура файла символов:

2.указаниемего типа в разделе определения типовTYPEи имени – в разделе описания переменныхVar:

Type TFile_int : File Of Integer;

Var f_int : tFile_Int;

Таким образом, можно перечислить отличия файла от, например, массива:

  • файлы располагаются во внешней памяти– сохраняются после окончания работы программы,

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

  • текущее количество элементов файла в каждый момент работы программы неизвестно, но всегда известно, где конец файла (меткаEOF),

  • в любой момент программно можно определить длину файла, добавлять в него новые элементы, считывать их, урезать его, переименовывать и даже уничтожить.

Перед началом работы с файлом необходимо связать имя логического файла (файловую переменную) с физическим файлом на внешнем носителе:

Assign(имя файловой переменной, ‘путь к физическому файлу’);

Assign(f_int,’D:\User\f_int.dat’);

f_int– имя файловой переменной (логического файла),

D:\User\f_int.dat- полный путь к физическому файлу на внешнем носителе: дискD:директория (папка)Userфайлf_int_dat.

Внимание! Желательно совпадение имени физического файла и имени файловой переменной; расширение имени типизированного файла.dat.

После установления пути к физическому файлу его можно открыть:

а)открытиенового файла длязаписив него данных:

ReWrite(f_int);

При этом на внешнем носителе создаетсяновый физический файл с заданным именем. Если файл с таким же именем уже существовал, то оночищается. С каждым файлом связан указатель текущего элемента (записи). В этом случае этот указатель становится в начало файла – элемент с номером0.

Внимание! Нумерация элементов файлов начинаетсяс нуля!

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

ReSet(f_int);

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

Запись в открытый для записи файл осуществляется оператором

Write(файловая переменная, имя записываемой переменной);

Например,

Write(f_int, n); записать в файл f_int значение переменной n

Внимание! ОператорWriteLnиспользовать нельзя.

В этом случае значение переменной nзаписывается в файл на то место, где стоит указатель текущей записи. Если там была какая-то запись, то она заменяется новой. После записи указатель автоматически перемещается на следующую позицию. Если указатель перед этим находился на меткеEOF- в конце файла, то новая запись помещается в конец файла и файл автоматически расширяется.

Из открытого для чтения файла можно прочитать все записи и вывести их, например, на экран:

ReSet(f_int); открываем файл f_int для чтения

While Not(EOF(f_int) Do пока не конец файла f_int

Begin

Read(f_int,n); читаем из него очередную запись в переменную n

Write(n:5); выводим прочитанное значение на экран

End;

WriteLn; текстовый курсор – в начало новой строки на экране

Внимание! ОператорReadLnпри чтении типизированных файлов использовать нельзя.

Таким образом, типизированный файл читается с помощью цикла с предусловием While. Условие окончания цикла – чтение метки конца циклаEOF.

После окончания работы с файлом он должен быть закрыт оператором:

Close(файловая переменная);

Например,

Close(f_int);

Примерзаписать в целочисленный файл несколько чисел, вводимых с экрана. Конец ввода – число0. Прочитать эти числа из файла и вывести их на экран в одну строку.

Интерфейспрограммы:

Введите число: 3

Введите число: -1

Введите число: 5

Введите число: 12

Введите число: -6

Введите число: 0

Введены числа:

3 -1 5 12 -6

Программа:

Program File_1;

Uses CRT;