русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-23; просмотров: 942; Нарушение авторских прав


1. Назначение.

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

2. Описание файловых переменных для типизированных файлов.

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

Var

<имя_файловой_переменной> : File of <тип_компонентов>;

где <тип_компонентов> - любой стандартный тип, определенный в Pascal (кроме файлового) либо тип, определенный пользователем в разделе Type (кроме файлового).

Пример.

Type Stroka=Srtring[15];

Var

F1 : File of Integer; {файл с целочисленными компонентами}

F2 : File of Stroka; {файл со строковыми компонентами}

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

а) К типизированным файлам применимы процедуры Assign, Reset, Rewrite, Close, Rename, Erase и функция Eof.

б) Функция FileSize.

Назначение: определение числа компонентов (размера файла).
Синтаксис: FileSize( F ), где F – файловая переменная.
Описание работы: - функция FileSize возвращает целое число в диапазоне от 0 до 231-1, которое равно количеству компонентов в файле; - если файл пуст, то функция возвратит 0.
Примечание: - аргументом функции не может быть файловая переменная текстового файла; - файл должен быть открыт до применения функции.

в) Функция FilePos.

Назначение: определение текущей позиции указателя обработки.
Синтаксис: FilePos( F ), где F – файловая переменная.
Описание работы: - функция FilePos возвращает целое число в диапазоне от 0 до 231-1, которое равно текущей позиции (или номеру компонента, на который установлен указатель); - если текущая позиция соответствует началу файла, то функция возвратит 0; - если текущая позиция соответствует концу файла, то FilePos( F ) = = FileSize( F ).
Примечание: - аргументом функции не может переменная текстового файла; - файл должен быть открыт до вызова функции.

г) Процедура Seek.



Назначение: непосредственный доступ к заданному компоненту файла прямого доступа.
Синтаксис: Seek( F, N ), где F – файловая переменная, N – номер нужного компонента, представляет собой целое число в диапазоне от 0 до 231-1.
Описание работы: - процедура Seek перемещает текущий указатель к компоненту с номером N (первый компонент в файле имеет номер 0); - для расширения файла предусмотрена возможность перемещения на конец файла, это осуществляется с помощью функции FileSize: Seek(F, FileSize(F)).
Примечание: - процедуру Seek нельзя использовать для текстовых файлов; - файл должен быть открыт до вызова этой процедуры.

д) Процедура Truncate.

Назначение: усечение файла
Синтаксис: Truncate( F ), где F – файловая переменная.
Описание работы: процедура Truncate отсекает часть файла от текущего положения указателя до конца, при этом текущая позиция файла становится концом файла.
Примечание: - процедура Truncate не может применяться к текстовым файлам; - файл должен быть открыт до вызова процедуры.

Задача 1. Создать файл Lab.dat из 20 целых чисел.

Program Dat; Uses Crt; Var F : File of Iinteger; i, j: Integer; Begin Assign(F, ‘Lab.dat’); {$I-} Rewrite(F); {$I+} If Ioresult <>0 Then Begin Writeln (‘Нет места на диске’); Halt; End; Randomize; For i:=1 to 20 Do Begin j:=Random(100); Write(F, j); End; Close(F); End. {файловая переменная} {рабочие переменные} {установление связи F с внешним файлом} {отключение контроля ошибок ввода/вывода} {открытие файла для записи} {включение контроля ошибок ввода/вывода} {если Ioresult ¹ 0} {то вывод «На диске нет места»} { и окончание работы программы} {формирование типизированного файла} {закрытие файла}

Связь между файловой переменной и внешним файлом устанавливается процедурой Assign. Открытие файла для записи осуществляется процедурой Rewrite. Если на диске нет места, то на экране появляется соответствующее сообщение и файл не создается. При наличии места на диске с помощью оператора For создается файл из 20 целых чисел. При этом каждый раз используется генератор случайных чисел, который инициализируется процедурой Randomize. Запись в файл производится через переменную j, т. к. с помощью процедуры Write (Writeln) в типизированный файл можно записать только значение переменной, выражения в этом случае использовать нельзя.

Задача

Заменить нулем все компоненты с нечетными номерами файла Lab.dat, созданного с помощью программы Dat.

Program Prim; Uses Crt; Var F: File of Iinteger; Name: String; Size, i, II, j: Integer; Procedure Wywod; Begin While not Eof(F) Do Begin Read(F, J); Write(J, ‘ ’); End; Writeln; End; Begin Repeat Write(‘Входной файл >’); Readln(Name); Assign(F, Name); {$I-} Reset(F); {$I+} II:= Ioresult; If II<>0 Then Writeln(‘Файл’,Name,’ не найден’); Until II=0; Wywod; Writeln(‘Для продолжения нажать Enter’); Readln; Size:=FileSize(F); For i:=1 to (Size div 2) Do Begin Seek(F, 2*i - 1); j:=0; Write(F, j); End; Writeln(‘Результирующий файл’); Seek(F, 0); Wywod; Close(F); Readln; End. {файловая переменная} {имя файла} {рабочие переменные} {процедура вывода файла на экран} {в цикле} {ввод имени файла Lab.dat} {установление связь F с внешним файлом} {отключение контроля ошибок ввода/вывода} {открытие файла для чтения для записи} {включение контроля ошибок ввода/вывода} {присваивание II значения Ioresult} {если II ¹ 0} {то вывод сообщения «Файл…не найден»} {постусловие: пока не открыт нужный файл} {вывод исходного файла} {Size = число компонентов в файле} {в цикле по i} {перемещение указателя к следующему} {нечетному компоненту} {замена нулем нечетного компонента} {конец цикла For} {перемещение указателя в начало файла} {вывод полученного файла} {закрытие файла}

Объяснить (!!!). Открытие файла для чтения осуществляется стандартной процедурой Reset. С помощью процедуры Reset можно также открыть файл для его корректировки. Значение стандартной функции Ioresult присваивается рабочей переменной II, так как после повторного обращения к функции Ioresult (после вывода сообщения «Файл не найден») ее значение меняется, т. к. вывод на экран всегда корректен. Если открывается несуществующий файл на диске, то на экране появится сообщение «Файл не найден» и снова будет запрашиваться имя входного файла. В данном примере надо ввести имя файла Lab.dat. С помощью стандартной функции Filesize определяется число компонентов в файле. Для перемещения указателя обработки к заданному компоненту используется процедура Seek. При определения длины файла оператором

Size:=Filesize(F);

и организации доступа к компонентам файла с помощью операторов вызова процедуры Seek

Seek(F, 2*I-1) (Seek(F, 0))

используются переменная Size типа Integer и выражение 2*i - 1 типа Integer. Для вывода на экран результирующего файла текущую позицию в файле надо переместить в начало. Для этого применяется процедура

Seek(F, 0);

Внутренняя процедура Wywod используется для вывода исходного и результирующего файлов.

Результаты выполнения программы Prim.



<== предыдущая лекция | следующая лекция ==>
Текстовые файлы | Тип – запись


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.306 сек.