28635

Структурный тип - Файл

Лекция

Информатика, кибернетика и программирование

Концепция файла в Паскале. Стандартные процедуры и функции работы с файлами. Особенности работы с типизированными файлами. Концепция файла в Паскале.

Русский

2013-08-20

48 KB

13 чел.

Лекция 20: Структурный тип - Файл.

1. Концепция файла в Паскале.

2. Виды файлов и описание файлов в Паскале.

3. Открытие файлов.

4. Стандартные процедуры и функции работы с файлами.

5. Текстовые файлы .

6. Особенности работы с типизированными файлами.

1. Концепция файла в Паскале.

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

В информатике принято различать два вида файлов: последовательные файлы и файлы с прямым доступом.

Для последовательных файлов (типа картотеки) невозможен непосредственный доступ к любой записи: доступ осуществляется только через предыдущие записи. Например, чтобы прочитать 15-ю запись, необходимо прочесть 1,2, ...14-ю запись, даже если они ненужны. Некоторые типы внешних устройств (такие как клавиатура, листы принтера) допускают только последовательный доступ к записям информации.

Файлы с прямым доступом позволяют получить непосредственный (прямой) доступ к любой записи. Примерами файлов с прямым доступом являются дисковые файлы (файлы на винчестере, флоппи-диске или на CD). Дисковые файлы, разумеется, могут быть организованы и как последовательные файлы.

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

2. Виды файлов и описание файлов в Паскале.

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

-Типизированные файлы: все записи файла имеют один и тот же тип.

-Текстовые файлы: все записи файла имеют тип string.

- Нетипизированные файлы: тип записи файла никак не фиксирован.

Описание файла зависит от его вида:

Текстовый файл - стандартный тип файла со стандартным именем  text.

Типизированный файл описывается в форме:

type <имя типа> = file of <тип записи>;

Нетипизированный файл описывается в форме:

type <имя типа> = file ;

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

Например: type reestr = file of form;

       form= record  name:string[20]; regN:integer;date:string[16] end;

       var: R1:reestr; T:text;

Здесь: reestr - типизированный файл записей типа form; R1 - файловая переменная типа reestr;  Т - файловая переменная типа text (текстовый файл).

Любой программе доступны также две стандартные  файловые переменные: input - файл чтения с клавиатуры, output - файл вывода на экран дисплея.

 

3. Открытие файлов.

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

- связывание файловой переменной с именем конкретного файла на внешнем устройстве;

- инициализация (начальная установка) файла в соответствии с характером последующих операций с файлом;

В Паскале каждое из этих действий выполняется специальной процедурой.

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

assign(<имя файловой переменной>,<имя файла или логического устройства>);

Если второй параметр этой процедуры - пустая строка, то имеется в виду стандартный файл input или output. Во всех других случаях второй параметр - имя файла, соответствующее имени в MS DOS (имя файла содержит явно или неявно путь к файлу), либо имя логического устройства.

Имена логических устройств - это специальные имена, принятые в Турбо Паскале для доступа к стандартным внешним устройствам: con - консоль (клавиатура или экран монитора), prn - принтер (если принтеров несколько, то они именуются LPT1, LPT2 и т.д.), aux - коммуникационный канал, nul - "пустое" устройство.

Инициализация файла указывает направление передачи данных между оперативной памятью и файлом. В Паскале предусмотрены 3 стандартные процедуры инициализации файла: для чтения, для записи (создания файла), для добавления записей в существующий файл. Записи файла нумеруются, начиная с  0.

Инициализация файла для чтения - установка файла для чтения 0-записи:

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

Для текстовых файлов, открытых процедурой reset, недопустимо использовать процедуры вывода в файл (write, writeln), а для типизированных файлов - допустимо  использовать как процедуры read (для чтения записи файла) и write (для обновления записей).

Инициализация файла для создания файла:

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

Эта процедура создает новый пустой файл с именем, указанным ранее в процедуре связывания assign (если имя файла совпадает с ранее существующим файлом, то он стирается). Новый файл подготовлен к добавлению в него информации процедурой write (для типизированных файлов) или write, writeln (для текстовых файлов).

Инициализация файла для добавления записей в конец имеющегося файла:

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

Эта процедура устанавливает файл на конец последней записи и открывает доступ процедурам write, writeln для расширения файла новыми строками. Она применима только к текстовым файлам (для типизированных файлов её функции можно выполнять при открытии файла процедурой reset). Заметим, что для текстовых файлов в Паскале не предусмотрено средств обновления существующих строк-записей.

4. Стандартные процедуры и функции работы с файлами.

В Турбо Паскале предусмотрено около двух десятков стандартных процедур и функций для работы с файлами. Остановимся лишь на важнейших из них.

Процедура close (<файловая переменная>);

Эта процедура закрывает файл, сохраняя связь, установленную соответствующей  процедурой assign. Особенно важна процедура close для режима добавления записей в файл: при её отсутствии  возможны ситуации, когда информация, записываемая в файл, "застрянет" в буфере, в котором накапливаются записи. При нормальном завершении программы функции процедуры close выполняются автоматически (даже при её отсутствии в программе) для всех открытых для чтения файлов.

Процедура erase (<файловая переменная>);

Эта процедура уничтожает файл, ей должна предшествовать процедура close.

Процедура read([<файловая переменная>],<список переменных>);

Выполняет чтение очередных записей из файла типа text или типизированного файла. Для файла input  файловая переменная может быть опущена; переменные списка должны быть типа, соответствующего типу записи файла, им присваиваются значения прочитанных из файла записей.

Процедура write([<файловая переменная>],<список выражений>);

Выполняет добавление очередной записи в файл типа text или типизированный файл. Для файла output файловая переменная может быть опущена; выражения списка должны быть типа, соответствующего типу записи файла.

Функция eof(<файловая переменная>);

Логическая функция, определяющая конец файла. Её значение true, если достигнут конец файла и false в противном случае.

Функция IOResult.

Вырабатывает признак последней операции ввода-вывода. Если операция завершилась успешно, IOResult=0, если неуспешно - IOResult <>0. Эта функция доступна только при отключенном автоконтроле ошибок ввода-вывода (директивой компилятора {$I-}). Функция IOResult часто используется для контроля существования файла при его открытии (это будет проиллюстрировано в последующих примерах программ).

5. Текстовые файлы.

Это специальный вид файлов, широко распространенный для хранения и обработки текстовой информации. В таких файлах удобно хранить различные документы, тексты программ на Турбо Паскале, тексты на естественных языках. Текст, при этом, понимается как последовательность строк символов. Строки (как тип string) могут иметь переменную длину (до 255 символов). Каждая строка файла типа text заканчивается специальным признаком eoln (end of line -конец строки), который кодируется последовательностью кодов ASCII #13 и #10. В конце файла (последней строки) дополнительно указывается признак eof (end of file - конец файла), кодируемый #26.

Логические функции еoln и eof предназначены для проверки признаков конца строки и конца файла соответственно и вырабатывают true при их обнаружении.

Для обращения к строкам-записям текстового файла используются стандартные процедуры read, readln и write, writeln. Особенностями их для текстовых файлов является то, что переменные списка ввода и выражения списка вывода могут быть любыми из типов: числа (целые или вещественные типы), символы (тип char), строки (тип string). Эти типы автоматически  преобразуются в тип записи - строку string.

При работе со стандартным файлом input вводимые с клавиатуры символы запоминаются в буфере, содержимое которого передается процедурам read, readln только после нажатия клавиши Enter (что позволяет редактировать данные при вводе). Кроме того, ввод сопровождается эхо-повтором вводимых символов на экране.

При работе со стандартным файлом output вывод на экран представляет непрерывную последовательность строк и после вывода очередной строки автоматически обеспечивается сдвиг вверх на одну строку. Операторы readln и  writeln отличаются от read и write лишь переходом к следующей строке ввода или вывода.

6. Особенности работы с типизированными файлами.

Типизированные файлы отличаются постоянной длиной своих компонентов-записей, что даёт возможность прямого доступа к каждой записи по её номеру. Наиболее часто этот вид файлов применяется для хранения и обработки структурированной информации, когда компонентом файла является  тип Запись (record).

Доступ к типизированному файлу осуществляется процедурами read и write, а элементами списков ввода (вывода) должны быть переменные (выражения) в точности того же типа, что и компоненты файла. При этом файл, открытый процедурой reset, доступен и для обновления записей с помощью write.

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

seek (<файловая переменная>,<N записи>); - установка файла на запись N.

Для типизированных файлов также доступны функции (типа longint):

filesize (<файловая переменная>), определяющая число записей в файле,

filepos(<файловая переменная>), определяющая номер следующей  записи


 

А также другие работы, которые могут Вас заинтересовать

31500. Фінансовий ринок: сутність, функції та роль в економіці країни 153 KB
  Фінансовий ринок: сутність функції та роль в економіці країни Сутність фінансового ринку необхідність і передумови його створення. Принципи та функції фінансового ринку. Структура фінансового ринку. Сутність фінансового ринку необхідність і передумови його створення Фінансовий ринок є складовою сферою фінансової системи держави.
31501. Регулювання фінансового ринку 119 KB
  Регулювання фінансового ринку Сутність принципи та напрями регулювання фінансового ринку. Рівні та форми регулювання фінансового ринку. Державне регулювання фінансового ринку України. Внутрішнє регулювання фінансового ринку.
31502. РИЗИК І ЦІНА КАПІТАЛУ 194.5 KB
  Розвиток теорій ризику. Формула Фішера що в літературі має назву ефект Фішера виглядає таким чином: Ri=RfIP де Ri ціна капіталу з урахуванням ризику процентна ставка в умовах інфляції; Rf номінальна ставка; IP інфляційна премія рівень інфляції. На вторинному ринку оцінювання фінансових активів здійснюється за допомогою їх переоцінки коригування ринкової ціни так щоб фінансовий актив певного рівня ризику забезпечував відповідний рівень доходу. Особливістю фінансового ризику є ймовірність зазнати збитків у результаті проведення...
31503. РИНОК КАПІТАЛІВ 110.5 KB
  РИНОК КАПІТАЛІВ Основи організації ринку капіталів. Кредитний ринок як складова ринку капіталів. Основи організації ринку капіталів Ринок капіталів це частина фінансового ринку де формується попит і пропозиція на середньостроковий та довгостроковий позиковий капітал. Економічна роль ринку капіталів полягає в його спроможності об'єднати дрібні розрізнені кошти і на основі цього активно впливати на концентрацію і централізацію виробництва та капіталу.
31504. Грошовий ринок 156.5 KB
  Грошовий ринок Сутність та особливості функціонування грошового ринку. Структура грошового ринку та його інструменти. Міжбанківський ринок та операції що здійснюються на міжбанківському ринку. Сутність та особливості функціонування грошового ринку Грошовий ринок у ринковій економіці це система грошових відносин на фінансовому ринку яку формують банківські та спеціальні фінансовокредитні інститути що забезпечують функціонування грошових ресурсів країни їх постійне переміщення під впливом законів попиту та пропозиції.
31505. Поняття і класифікація фінансового посередництва 149.23 KB
  Типи фінансових посередників. Функції фінансових посередників. Суть значення та переваги діяльності фінансових посередників Діяльність фінансових посередників є обов'язковим атрибутом сучасної економіки. В умовах розвинутої ринкової економіки свою діяльність здійснює величезна кількість фінансових посередників які за винагороду надають різні види фінансових послуг В Україні інститут фінансового посередництва знаходиться в стадії становлення та розвитку.
31506. Цінні папери 173.5 KB
  Сутність і характерні ознаки цінних паперів. Типологізація цінних паперів. Роль цінних паперів на фінансовому ринку. Роль приватизаційних паперів на фінансовому ринку.
31507. ПОХІДНІ ЦІННІ ПАПЕРИ ТА ОСОБЛИВОСТІ ФУНКЦІОНУВАННЯ РИНКУ ПОХІДНИХ ЦІННИХ ПАПЕРІВ 171 KB
  ПОХІДНІ ЦІННІ ПАПЕРИ ТА ОСОБЛИВОСТІ ФУНКЦІОНУВАННЯ РИНКУ ПОХІДНИХ ЦІННИХ ПАПЕРІВ. У вітчизняній практиці на фінансовому ринку більш широкого застосування здобули операції з традиційними фінансовими інструментами з угодами предметом яких є грошові кошти або їх еквіваленти такі як кредиторська і дебіторська заборгованість; векселі; акції; облігації; факторинг форфейтинг фінансова оренда; гарантії кредитної лінії страхові угоди фінансового характеру тощо. Серед інструментів ринку похідних цінних паперів розрізняють сурогати цінних...
31508. Умови праці та режими праці й відпочинку 308 KB
  Умови праці та режими праці й відпочинку Зміст учбового матеріалу: 1. Умови праці та фактори їх формування 2. Нормативноправове регулювання та оцінка рівня умов праці 3. Суть працездатності людини та її залежність від режимів праці і відпочинку 4.