Мегаобучалка Главная | О нас | Обратная связь


Операции для работы с файлами последовательного доступа



2015-12-04 1057 Обсуждений (0)
Операции для работы с файлами последовательного доступа 0.00 из 5.00 0 оценок




 

Множества значений или переменных с одним об­щим именем называются структурированными (состав­ными) типами. Имеется несколько способов построе­ния составных типов, каждый из которых отличается способом обращения к отдельным компонентам и, сле­довательно, способом обозначения компонентов, входящих в данные структурированных типов.

По способу организации и типу компонентов выде­ляют четыре основные разновидности структурирован­ных типов:

· регулярный тип (массивы);

· комбинированный тип (записи);

· файловый тип (файлы);

· множественный тип (множества).

Использование структурированных типов данных позволяет решать разнообразные и достаточно сложные задачи.

В задачах, которые мы рассматривали, данные по­ступали с клавиатуры, а результаты выводились на экран дисплея. Поэтому ни исходные данные, ни результаты не сохранялись. Всякий раз при выполнении одной и той же программы, особенно во время ее отладки, при­ходилось заново вводить исходные данные. А если их очень много? Тогда удобно оформить исходные данные и результаты в виде файлов, которые можно хранить на диске точно так же, как и программы.

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

С другой стороны, файл − это одна из многих структур в программировании. Файл в таком понимании называют логическим файлом, т.е. существующим только в нашем логическом представлении при написании программы.

Структура физического файла представляет собой простую последовательность байт носителя информации.

Структура логического файла − это способ восприятия файла в программе. Образно говоря, это "шаблон" ("окно"), через который мы смотрим на физическую структуру файла. В Паскале таким "шаблонам" соответствуют типы данных, допустимые в качестве компонент файлов.

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

Файл последовательного доступа можно сравнить с магнитной лентой, на которой записаны песни. Для того чтобы найти конкретную песню, надо перемотать кассету на начало и прослушивать песню за песней до тех пор, пока не будет найдена нужная.

Зачем нужны файлы? Объем информации, которую можно сохранить в файле, очень велик. Он значительно больше, чем объем, который можно хранить в оператив­ной памяти, например, при использовании массивов.

Файлы классифицируются по двум признакам:

По методу доступа − последовательный, прямой доступ.

По типу (логической структуре) − типизированные, текстовые, нетипизированные.

Объявление файловой переменной в разделе описа­ния переменных имеет вид:

 

Var <имя файла>: File Of

<тип элементов;>

Например,

Var Ft: File Of Integer;

{файл, элементами которого являются целые числа}

М: File Of Char;

{файл, элементами которого являются символы}

Type File_Integer=File Of Integer;

File_Char=File Of Char;

Var F1: File_Integer;

F2: File_Char;

Так как в описании указывается тип элементов, такие файлы называются типизированными. Все эле­менты файла пронумерованы, начиная с нуля.

С каждым файлом связан так называемый файло­вый указатель. Это неявно описанная переменная, ко­торая указывает на некоторый элемент файла.

(0) (1) … (k) (k+1) …

             

 

файловый указатель

Все операции производятся с элементом, который определен файловым указателем.

Обработка файлов

Связь переменной файлового типа с файлом на диске

 

Для установления связи между файловой перемен­ной и файлом на диске имеется стандартная процедура Assign.

Assign(<имя файловой переменной>,

'<имя файла на диске>');

Например, Assign (F1,'A:INT.DAT');

После установления такого соответствия все опера­ции, выполняемые над переменной F1, будут выпол­няться над физическим файлом, хранящимся на диске А и имею­щим имя INT.DAT.

Файл в каждый момент времени может находиться в одном из двух состояний: либо он открыт только для записи, либо только для чтения.

 

Чтение из файла

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

Для чтения из файла необходимо открыть файл для чтения посредством процедуры

Reset (<имя файловой переменной>);

Собственно чтение данных из файла выполняется процедурой

Read (<имя файловой переменной>,

<имя переменной>);

Переменная должна иметь тот же тип, что и ком­поненты файла. Отметим, что если оператор ввода име­ет вид Read(<имя переменной>), то данные вво­дятся с клавиатуры, а если Read (<имя файловой переменной>, <имя переменной>), то данные вво­дятся из файла, хранящегося на диске.

 

Закрытие файла

После того как данные из файла прочитаны, его не­обходимо закрыть посредством процедуры

Close (<имя файловой переменной>).

Общая схема чтения данных из файла, таким обра­зом, следующая:

Reset (<имя файловой переменной>);

Read (<имя файловой переменной>,

<имя переменной>);

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

 

Признак конца файла

 

Так как число элементов файла не известно зара­нее, необходимо уметь определять, что файл кончил­ся. Для этого используется логическая функция

EOF(<имя файловой переменной>)

(EOF - End Of file). Она принимает истинное значение (True), если достигнут конец файла, и ложное (False) − в противном случае.

Пример

Прочитаем из файла целые числа и выведем их на экран:

ProgramExample_82;

Var F1: File of Integer;

n: Integer;

Begin

Assign(F1, 'A:INT.DAT');

{связываем файловую переменную с файлом

на диске}

Reset(F1); {открываем файл для чтения}

While Not EOF(F1) Do

{пока не достигнут конец файла F1}

Begin

Read(F1, n);

{считываем очередное число}

Write(n,' '); {выводим его на экран}

End;

Close(F1); {закрываем файл}

Readln;

End.

 

Запись в файл

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

Для записи в файл необходимо открыть файл для записи посредством процедуры

Rewrite (<имя файловой переменной>);

 

Собственно запись данных в файл выполняется про­цедурой

Write (<имя файловой переменной>,

<значение>);

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

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

Rewrite(<имя файловой переменной>);

Write (<имя файловой переменной>,

<значение>);

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

 

После выполнения процедур открытия файла для чте­ния или для записи (Reset или Rewrite) текущий указа­тель "смотрит" на первый элемент (элемент с номером 0).

 

 

§33. Прямой доступ к элементам файла

 

Несмотря на то, что в стандартном Паскале имеют­ся лишь файлы последовательного доступа, Турбо Пас­каль содержит процедуры и функции для более эффек­тивной работы с файлами. В частности, имеется воз­можность осуществлять прямой доступ к элементам файла.

Установка указателя

 

Процедура

Seek (<имя файловой переменной>, N)

устанавливает файловый указатель на N-й элемент. На­пример, Seek (F1, 3). Напомним, что элементы файла нумеруются с нуля.

Определение номера элемента

Функция

FilePos (<имя файловой перемен­ной>)

возвращает номер элемента, на который "смот­рит" файловый указатель.

Пример

Найти номер элемента, с которым будет выполняться следующая операция.

Решение

Воспользуемся функцией FilePos:

N:=FilePos(F1).

 



2015-12-04 1057 Обсуждений (0)
Операции для работы с файлами последовательного доступа 0.00 из 5.00 0 оценок









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

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1057)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)