28635

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

Лекция

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

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

Русский

2013-08-20

48 KB

15 чел.

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


 

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

30551. Технические каналы утечки информации, классификация и характеристика 26.65 KB
  Для исключения утечки персональных данных за счет побочных электромагнитных излучений и наводок в информационных системах 1 класса могут применяться следующие методы и способы защиты информации: использование технических средств в защищенном исполнении; использование средств защиты информации прошедших в установленном порядке процедуру оценки соответствия; размещение объектов защиты в соответствии с предписанием на эксплуатацию; размещение понижающих трансформаторных подстанций электропитания и контуров заземления; обеспечение...
30552. Оптические каналы утечки информации 67.52 KB
  Отраженный от объекта свет содержит информацию о его внешнем виде видовых признаках а излучаемый объектом свет о параметрах излучений признаках сигналов. Длина протяженность канала утечки зависит от мощности света от объекта свойств среды распространения и чувствительности фотоприемника. Способы и средства противодействия наблюдению в оптическом диапазоне В интересах защиты информации об объекте его демаскирующих признаков необходимо уменьшать контраст объект фон снижать яркость объекта и не допускать наблюдателя близко к объекту.
30553. Структура оптического канала утечки информации 87.73 KB
  Выступление: Оптические каналы утечки информации Структура оптического канала утечки информации Объект наблюдения в оптическом канале утечки информации является одновременно источником информации и источником сигнала потому что световые лучи несущие информацию о видовых признаках объекта представляют собой отраженные объектом лучи внешнего источника или его собственные излучения. Излучаемый свет содержит информацию об уровне и спектральном составе источников видимого света а в инфракрасном диапазоне по характеристикам излучений можно также...
30554. Радиоэлектронные каналы утечки информации 18.65 KB
  Радиоэлектронный канал относится к наиболее информативным каналам утечки в силу следующих его особенностей: независимость функционирования канала от времени суток и года существенно меньшая зависимость его параметров по сравнению с другими каналами от метеоусловий; высокая достоверность добываемой информации особенно при перехвате ее в функциональных каналах связи за исключением случаев дезинформации; большой объем добываемой информации; оперативность получения информации вплоть до реального масштаба времени; скрытность перехвата...
30555. Акустические каналы утечки информации 701.6 KB
  Часть III дополнительно Оценка громкости звука Уровень звука дБ Источник звука Очень тихий 0 10 Усредненный порог чувствительности уха Тихий шепот 1. Порог слышимости соответствует мощности звука 1012 Вт или звуковому давлению на барабанную перепонку уха человека 2105 Па Абсолютный порог минимальное значение воздействующего раздражителя при котором возникает ощущение. Под воздействием звука Рак = 70 дБ кирпичная стена толщиной 05 м совершает вибрационные колебания с ускорением а≈3·105g.
30556. Задачи и принципы инженерно-технической защиты информации 50.5 KB
  Задачи Инженернотехническая защита информации одна из основных составляющих комплекса мер по защите информации составляющей государственную коммерческую и личную тайну. Этот комплекс включает нормативноправовые документы организационные и технические меры направленные на обеспечение безопасности секретной и конфиденциальной информации. Инженернотехническая защита информации включает комплекс организационных и технических мер по обеспечению информационной безопасности техническими средствами и решает следующие задачи:...
30557. Способы и средства инженерной защиты и технической охраны объектов 20.37 KB
  Проникновение злоумышленника может быть скрытным с механическим разрушением инженерных конструкций и средств охраны с помощью инструмента или взрыва и в редких случаях в виде вооруженного нападения с нейтрализацией охранников. Люди и средства ИЗТОО образуют систему охраны. В общем случае структура системы охраны объектов.
30558. Теорема о среднем для действительных функций одного действительного переменного. Теорема Ферма; теорема Ролля, теорема Лагранжа. Примеры, показывающие существенность каждого условия в теореме Ролля: теоретическая интерпретация 91.81 KB
  Все вышеперечисленные теоремы являются основными теоремами дифференциального исчисления поэтому сначала введем понятие дифференцируемости функции. Понятие дифференцируемости функции. Выражение ∆x называется дифференциалом функции fx в точке x0 соответствующим приращению аргумента ∆x и обозначается символом dy или dfx0. При этом приращение функции ∆y определяется главным образом первым слагаемым т.
30559. Первообразная и неопределенный ∫. Опр. первообразной. Опр. неопределенного ∫, свойства. Опр. по Риману. Необходимое и достаточное условие интегрируемости. Ньютон-Лейбниц 23.61 KB
  Функция Fx называется первообразной для функции fx на интервале b если в любой точке х из интервала b функция Fx дифференцируема и имеет производную Fx=fx. Совокупность всех первообразных функций для данной функции fx на интервале b называется неопределенным интегралом от функции fx на этом интервале и обозначается где fxdx подынтегральное выражение fx подынтегральная функция x переменная интегрирования. Операцию нахождения первообразной восстановление функции по ее производной называют интегрированием...