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(<файловая переменная>), определяющая номер следующей  записи


 

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

36777. ИССЛЕДОВАНИЕ СХЕМ НА ОСНОВЕ ОПЕРАЦИОННОГО УСИЛИТЕЛЯ 1.87 MB
  Интегральные микросхемы предназначены для выполнения различных операций как с аналоговыми так и с цифровыми электрическими сигналами. С помощью определенных внешних цепей часть выходного сигнала можно направить обратно на вход. Цель обратной связи в этом случае представляет собой единственный резистор RОС который служит для передачи части выходного сигнала обратно на вход.8 можно представить в виде: ...
36778. Виртуальный хостинг на основе IP-адресов 45 KB
  2 и необходимо создать виртуальные хосты с именами ваша_фамилия1.com и ваша_фамилия2. Для этого откройте файл etc hosts и допишите в него строки: ваша_фамилия1.com ваша_фамилия2.
36780. Исследование параметров усилителя звуковой частоты 72.5 KB
  Столетовых Кафедра Управление качеством и техническое регулирование Лабораторная работа №7 Тема: Исследование параметров усилителя звуковой частоты Выполнил: ст. Владимир 2010 Цель работы: получить практические навыки работы с электронным осциллографом и звуковым генератором при измерении чувствительности номинальной и максимальной мощности усилителя звуковой частоты. Общие сведения В состав лабораторной установки входит усилитель звуковой частоты осциллограф вольтметр переменного тока звуковой генератор и эквивалент нагрузки Rэ...
36781. МЕДИКО-ТАКТИЧЕСКАЯ ХАРАКТЕРИСТИКА ПОРАЖАЮЩИХ ФАКТОРОВ СОВРЕМЕННЫХ ВИДОВ ОРУЖИЯ 174 KB
  Кризисный характер экономического развития большой группы государств, реальный рост разрыва между экономически развитыми и отсталыми странами, провоцируют политические режимы некоторых стран к попытке решения экономических и внутренних политических проблем вооруженным путем.
36782. Сведения о некоторых командах ОС UNIX для выполнения лабораторной работы 119.5 KB
  Права доступа SUID SGID sticky r w x r w x r w x Права доступа к файлам и каталогам несколько различаются: Права доступа Файл Каталог r чтение чтение из файла получение списка файлов каталога w запись запись в файл изменение содержимого каталога создание и удаление файлов в нем x исполнение исполнение файла если он является сценарием или программой вход в каталог и осуществление в нем поиска Разрешения установленные для каталога имеют более высокий приоритет чем разрешения установленные для файлов этого каталога. Специальные...
36783. Работа с текстом. Форматирование абзацев 950.5 KB
  Выделять можно с помощью мыши и с помощью клавиатуры. Выделение с помощью мыши Фирма Microsoft разрабатывая Word поставила себе целью сделать выделение различных фрагментов текста максимально удобным. Объем фрагмента который вы выделяете зависит от количества щелчков левой кнопки мыши как показано в таблице. Простой щелчок Перемещает в указанное место курсор вставки Двойной щелчок Выделяет слово Тройной щелчок в любом месте текста Выделяет весь абзац Щелчок в любом месте предложения при нажатой клавише [Ctrl] Выделяет все предложение С...
36785. Исследование магнитных полей с помощью измерительной катушки 167 KB
  Приборы и принадлежности: два коротких соленоида планшеты из оргстекла с отверстиями для фиксации измерительной катушки датчик магнитного поля измерительная катушка длинный соленоид блок питания переменного тока амперметр блок сопряжения компьютер. Теоретическая часть В лабораторной работе измерение и исследование переменных магнитных полей осуществляются с помощью датчика измерительной катушки. При помещении датчика в переменное магнитное поле в нем возникает ЭДС индукции величина которой определяется по формуле:...