Лабораторная работа №7. Файлы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №7. Файлы



Файлы

Файловый тип переменной

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

Структура описания файловой переменной:

Var <имя переменной>: File of <тип элемента>;

Где<тип элемента> может быть любым, кроме файлового.

Файл можно представить как последовательную цепочку элементов (Эл.), пронумерованных от 0, заканчивающуюся специальным кодом, называемым маркером конца.

Количество элементов, хранящихся в данный момент в файле, называется его текущей длиной. Существует специальная ячейка памяти, которая хранит адрес элементов файла, предназначенного для текущей обработки (записи или чтения). Этот адрес называется указателем или окном файла.

Для того чтобы начать запись в файл, его следует открыть для записи. Это обеспечивает процедура rewrite(FV); где FV- имя файловой переменной. При этом указатель устанавливается на начало файла. Если в файле есть информация, то она исчезает.

 

Запись в файл

Запись в файл осуществляется процедурой Write (FV,V);где V- переменная того же типа, что и файл FV. Запись происходит туда, где установлено окно. Сначала записывается значение, затем указатель смещается в следующую позицию. Если новый элемент вносится в конец файла, то сдвигается маркер конца.

Для чтения элементов файла с его начала следует открыть файл для чтения. Это делает процедура Reset (FV).

В результате указатель устанавливается на начало файла. При этом вся информация в файле сохраняется.

 

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

Чтение из файла осуществляется процедурой Read(FV,V); где v- переменная того же типа, что и файл FV. Значение текущего элемента файла записывается в переменную v; указатель смещается к следующему элементу.

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

Принцип последовательного доступа: для того чтобы прочитать n-ю запись файла, сначала нужно прочитать все предыдущие записи с 1-й по (n-1)-ю.

Функция Eof (FV) проверяет маркер конца файла (end of file).

Это логическая функция, которая получает значение true, если указатель установлен на маркер конца, в противном случае-false.

Замечание: согласно стандарту в файл, открытый оператором Rewrite, можно только записывать информацию, а файл, открытый оператором Reset, можно использовать только для чтения. Допускается запись (Write) в файл, открытый для чтения (Reset).Это создает определенные удобства для модификации файлов.

 

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

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

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

Var <идентификатор>: text;

Текстовый файл представляет собой символьную последовательность, разделенную на строки. Каждая строка заканчивается специальным кодом- маркером конца строки. Весь файл заканчивается маркером конца файла.

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

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

Для работы с текстовыми файлами наряду с процедурами Read и Write употребляются процедуры Readln и Writeln.

Readln (FV,<список ввода>)

Эта процедура читает строку из файла с именем FV, помещая прочитанное в переменные из списка ввода.

Writeln (FV,<список вывода>)

Процедура записывает в файл FV значения из списка вывода, после чего выставляет маркер конца строки.

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

Eoln(FV)

(End of line - конец строки). Это логическая функция, которая принимает значение true, если указатель файла достиг маркера конца строки и false- в противном случае.

 

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

Файл выглядит примерно так:

TFH.......<First record type, первый тип записи>

TBH.......<Second record type, второй тип записи>

TAB........<Third record type, третий тип записи>

TAA........<Fourth record type, четвертый тип записи>

Вы можете поймать больше одного зайца в случае объявления переменной записи, но если сделаете это правильно. type

TDataTag = array [1..3] of Char;

TDataTags = array [0..NumOfTags - 1] of TDataTag;

TDataRec = packed record

tagfield: TDataTag;

case integer of

0: (поля для тэга TFH);

1: (поля для тэга TBH);

2:..

....

end;

TMultiRec = packed record

case Boolean of

false: (строка: array [0..1024] of Char);

{ должно установить строку максимально возможной длины }

true: (data: TDataRec);

end;

 

Const

DataTags: TDataTags = ('TFH', 'TBH',....);

Var

rec: TMultirec;

 

ReadLn(datafile, rec.line);

case IndexFromDataTag(rec.data.tagfield) of

0:...

1:...

end;

Типы файлов для Delphi

Формат.CAB-файлов

Это формат файлов, который Delphi предлагает теперь своим пользователям для размещения в Интернете. Cabinet-формат является эффективным средством для упаковки нескольких файлов. Cabinet-формат имеет две ключевых характеристики: в отдельном кабинете (.cab-файл) могут храниться несколько файлов, и сжатие данных выполняется в зависимости от типа файлов, что значительно увеличивает коэффициент сжатия. Создание Cabinet-файла зависит также от количества упаковываемых файлов и ожидаемого к ним типа доступа (последовательный, произвольный, одновременный ко всем файлам или доступ к нескольким файлам, в одно и тоже время). Delphi не пользуется преимуществами сжатия файлов в зависимости от их типа.

Формат.LIC-файлов

В действительности, как такового, формата.lic-файла не существует. Обычно это такие же текстовые файлы, содержащие одну или две ключевых строки.

Формат.INF-файлов

Все inf-файлы состоят из секций и пунктов. Каждая именованная секция содержит соответствующие пункты. Все inf-файлы начинаются с заголовочной секции. После заголовка включенные секции могут располагаться в любом порядке. Каждый заголовок представляет собой строку с [Именем Заголовка]. Далее следуют пункты: ItemA = ItemDetail. Для получения дополнительной информации обратитесь к документу "Device Information File Reference".

Формат.dpr-файлов

.dpr-файл является центральным файлом delphi-проекта. Для программы он является первой точкой входа. dpr содержит ссылки на другие файлы проекта и связывает формы с соответствующими модулями. Данный файл нужно редактировать с предельной осторожностью, так как неумелые действия могут привести к тому, что вы не сможете загрузить ваш проект. Этот файл является критическим при загрузке и перемещении (копировании) проекта.

Формат.pas-файлов

Это стандартный текстовый файл, который можно редактировать в текстовом редакторе. Данный файл нужно редактировать с некоторой долей осторожности, поскольку это может закончиться потерей некоторых преимуществ двух других инструментов. К примеру, добавление кода для кнопки с декларацией типа никак не отразится на соответствующем.dfm-файле формы. Все pas-файлы являются критическими при пересборке проекта.

Формат.dfm-файлов

Данный файл содержит описание объектов, расположенных на форме. Содержимое файла можно увидеть в виде текста, вызвав правой кнопкой мыши контекстное меню и выбрав пункт "view as text", или же с помощью конвертора convert.exe (расположенного в каталоге bin), также позволяющего перевести файл в текстовый вид и обратно. Данный файл нужно редактировать очень осторожно, поскольку это может закончиться тем, что IDE не сможет загрузить форму. Этот файл является критическим при перемещении и пересборке проекта.

Формат.DOF-файлов

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

Формат.DSK-файлов

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

Формат.DPK-файлов

Данный файл содержит исходный код пакета (аналогично.DPR-файлу стандартного проекта Delphi). Подобно файлу.DPR,.DPK-файл также является простым текстовым файлом, который можно редактировать (см. предупреждение выше) в стандартном редакторе. Одной из причин, по которой вы можете это сделать - использование компилятора командной строки.

Формат.DCP-файлов

Данный бинарный image-файл состоит фактически из реально скомпилированного пакета. Информация о символах и дополнительных заголовках, требуемых IDE, полностью содержится в.DCP-файле. Чтобы собрать (build) проект, IDE должен иметь доступ к этому файлу.

Формат.DPL-файла

В действительности это выполняемый runtime-пакет. Данный файл является Windows DLL с интегрированными Delphi-специфическими характеристиками. Данный файл необходим в случае развертывания приложения, использующего пакеты.

Формат.DCI-файла

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

Формат.DCT-файла

Это "частный" бинарный файл, содержащий информацию об определенных пользователями шаблонах компонентов. Данный файл не может быть отредактирован никакими способами через IDE. Поскольку данный файл является "личным" файлом IDE, то совместимость с последующими версиями Delphi не гарантируется.

Формат.TLB-файла

.TLB-файл является "частным" двоичным файлом библиотеки типов. Обеспечивает информацией для идентификации типов объектов и интерфейсов, доступных в ActiveX сервере. Подобно модулю или заголовочному файлу,.TLB служит в качестве хранилища для необходимой символьной информации приложения. Поскольку данный файл является "личным", то совместимость с последующими версиями Delphi не гарантируется.

Формат.DRO-файла

Данный текстовый файл содержит информацию об объектном хранилище. Каждый пункт данного файла содержит специфическую информацию о каждом доступном элементе в хранилище объектов. Хотя этот файл и является простым текстовым файлом, мы настоятельно не рекомендуем править его вручную. Хранилище может редактироваться только с помощью меню Tools|Repository в самом IDE.

Формат.RES-файла

Это стандартный двоичный windows-формата файл ресурсов, включающий в себя информацию о приложении. По умолчанию, Delphi создает новый.RES-файл при каждой компиляции проекта в исполняемое приложение.

Формат.DB-файла

Файлы с таким расширением - стандартные файлы Paradox.

Формат.DBF-файла

Файлы с таким расширением - стандартные dBASE-файлы.

Фомат.GDB-файла

Файлы с таким расширением - стандартные Interbase-файлы.

Формат.DMT-файла

Этот "частный" бинарный файл содержит встроенные и определенные пользователем шаблоны меню. Данный файл не может быть отредактирован никакими способами через IDE. Поскольку данный файл является "личным", то совместимость с последующими версиями Delphi не гарантируется.

Формат.DBI-файла

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

Формат.DEM-файла

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

Формат.OCX-файла

.OCX-файл является специализированной DLL, которая содержит все или несколько функций, связанных с элементом управления ActiveX. Файл OCX задумывался как "обертка", которая содержала бы сам объект, и средства для связи с другими объектами и серверами.


Примеры

 

Пример 1.

В текстовом файле Note.txt определить длину самой большой строки.

 

+
-
+
-
-
+
Начало
Max:=0
Not eof
K:=0
Not eolf
Наиб.строка им. Max знаков
Конец
k>max
Max:= k
note
Note,c
K:=k+1

 

 

Var Note: Text;

Max, K: Integer; C: Char;

Begin

Assing (Note,’Note.txt’);

Reset (Note);

Max:=0;

While Not Eof (Note) Do

Begin

K:=0;

While Not Eoln (Note) Do

Begin

Read (Note, C); K:=K+1

End;

If K>Max Then Max:=K;

Readln (Note)

End;

Writeln(‘Наибольшая строка имеет’,Max,’знаков ‘);

Close (Note)

End.

7.3. Контрольные вопросы

 

1. В каких случаях используются файлы?

2. Может ли файловая переменная совпадать с именем файла?

3. Как можно обработать заданные элементы файла последовательного доступа?

4. Для чего используются процедуры Close, Assign, Write?

5. В чём заключается принцип последовательного доступа?

6. Файловый тип переменной – это…

7. Опишите структуру файловой переменной.

8. Маркер конца – это…

9. Что называется текущей длиной?

10. Какой процедурой осуществляется запись в файл?

11. Какой процедурой осуществляется чтение из файла?

12. Опишите принцип последовательности доступа.

13. Какие типы файлов существуют в Delphi? Опишите их.

 

 

Задания к лабораторной работе №7

Файлы

 

Вариант 1.

1. Записать в файл последовательного доступа N произвольных натуральных чисел. Переписать в другой файл последовательного доступа те элементы, которые кратны K. Вывести полученный файл на печать.

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

 

Вариант 2.

1.Заполнить файл последовательного доступа N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму максимального и минимального элементов этого файла.

2. Дан файл bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Определить, имеется ли книга с названием «Информатика». Если да, то напечатать фамилию автора и год издания. Если таких книг несколько, то напечатать все имеющиеся о них сведения.

 

Вариант 3.

1.Записать файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла f, кроме тех, которые кратны K. Вывести полученный файл на печать.

2.Дан файл T, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона. Найти фамилию и инициалы сотрудника по его номеру телефона.

 

Вариант 4.

1. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти количество удвоенных нечётных чисел среди компонентов файла.

2. Багаж пассажира характеризуется количеством вещей и их общим весом. Дан файл bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно действительного (вес в килограммах). Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее М кг.

 

Вариант 5.

1.Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти количество квадратов нечётных чисел среди компонентов файла.

2. Дан файл T, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы и номер телефона. Найти номера телефонов всех сотрудников, чьи фамилии совпадают.

 

Вариант 6.

1.Записать в файл прямого доступа N действительных чисел. Найти наибольшее из значений модулей компонентов с нечётными номерами.

2. Дан файл tovar, содержащий сведения об экспортируемых товарах: указываются наименование товара, страна, импортирующая товар, и объем поставляемой партии в штуках. Составить список стран, в которые экспортируется данный товар, и указать общий объем его экспорта.

 

Вариант 7.

1. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные вхождения чисел. Порядок следования чисел сохранить.

2. Дан файл assort, содержащий сведения об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы (например, игрушка может предназначаться для детей от 2 до 5 лет). Получить название игрушек, цена которых не превышает 140 руб. и которые подходят детям 5 лет.

 

Вариант 8.

1.Записать в файл последовательного доступа N действительных чисел. Найти разность первого и последнего компонентов файла.

2. Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Есть ли среди них дата вашего рождения?

 

Вариант 9.

1.Записать в файл f N целых чисел, полученных с помощью генератора случайных чисел. Заполнить файл g целыми числами, которые являются произведениями соседних компонентов файла f.

2.Дан файл assort, содержащий сведения об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы (например, игрушка может предназначаться для детей от 2 до 5 лет). Получить название 3-х самых дорогих игрушек. Есть ли среди них те, которые подходят для семилетнего ребенка?

 

Вариант 10.

1. Багаж пассажира характеризуется количеством вещей и их общим весом. Дан файл bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно действительного (вес в килограммах).

Найти багаж, средний вес одной вещи в котором отличается не более чем на m кг от общего среднего веса одной вещи.

2. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти количество кубов чётных чисел среди компонентов файла.

 

Вариант 11.

1. Дан файл bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Найти названия книг данного автора, изданных начиная с 1960 г.

2. Записать в файл последовательного доступа N действительных чисел. Найти разность наибольшего из этих чисел со средним арифметическим всех положительных чисел файла.

и номер телефона. Найти номер телефона сотрудника по его фамилии и инициалам

 

Вариант 12.

1.Дан файл T, который содержит номера телефонов сотрудников учреждения: указываются фамилия, инициалы

и номер телефона. Найти номер телефона сотрудника по его фамилии и инициалам

2. Записать в файл последовательного доступа N действительных чисел. Найти среднее геометрическое компонентов файла.

 

Вариант 13.

1. Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти год с наименьшим номером.

2. Дан файл assort, содержащий сведения об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы (например, игрушка может предназначаться для детей от 2 до 5 лет). Получить название игрушек, цена которых превышает 140 руб. и которые не подходят детям младше 3 лет.

 

Вариант 14.

1.Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти все весенние даты.

2. Записать в файл последовательного доступа К натуральных чисел: а1, а2,…,ак (числа получить с помощью датчика случайных чисел). Сформировать новый файл последовательного доступа, элементами которого являются числа а1, а1*а2, а1*а2*а3, …, а1*а2*а3* …*ак.

 

Вариант 15.

1. Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти самую позднюю дату.

2. Дан файл tovar, содержащий сведения об экспортируемых товарах: указываются наименование товара, страна, импортирующая товар, и объем поставляемой партии в штуках. Составить список товаров, импортируемых данной страной и наименование товара, объем поставляемой партии, которого наименьший.

 


Литература:

  1. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. – М.; Наука, 1988.
  2. Артемова Ф.Ш., Волкова Е.М., Хальфутдинова Р.Р. Практикум по решению задач на ЭВМ. – Уфа.; изд-во БГПУ, 2003.
  3. Безменов Н.И. Turbo Pascal 7.0. Руководство программиста. – М.; Изд-во Эксмо, 2006.
  4. Белоусова Л.И. Сборник задач по курсу информатики. – М.; изд-во «Экзамен», 2007.
  5. Гейн А.Г., Житомерский В.Г., Линецкий Е.В. Основы информатики и вычислительной техники: Проб. учеб. для 10-11 кл. ср. шк. 2-е изд. – М.; Просвещение, 1992.
  6. Брудно А.Л., Каплан Л.И., Олимпиады по программированию для школьников/ Под ред. Б.Н. Наумова. – 2-е изд., доп. и перераб. М.; Наука, 1990.
  7. Дантеншон, Д. Мишел, Д. Тейлор. Программирование в среде Delphi. перевод с англ-го. - К.; НиПФ «Диа Софт ЛТД»,1995.
  8. Джон Матчо, Девид Р., Фолкнер. Delphi: перевод с английского. – М.; Бином, 1995.
  9. Ершов А.П., Монахов В.М. Бешенков С.А.Основы информтики и вычислительной техники: Проб. учеб. пособие для сред. учеб. заведений. В 2-х ч. – М.; Просвещение, ч.1.,1985.
  10. Есаян А.Р., Ефимов В.Н., Лапицкая Л.П. Информатика: Учеб. пособие для пед. высш. учеб. заведений. – М.; Просвещение, 1990.
  11. Косневски Ч. Занимательная математика и персональный компьютер. – пер. с англ. – М.; Мир, 1987.
  12. Курочкин В.М. Язык компьютера. Пер. с англ. – М.; Мир, 1989.
  13. Лишнер Рей. Секреты Delphi 2.0 –перевод с английского – К.; НиПФ «Диа Софт ЛТД»,1996.
  14. Могилев А.В. Информатика: учебное пособие для ВУЗов. – М.; Изд. Центр «Академия», 2002.
  15. Перельман Я.И. Живая математика: Математические рассказы и головоломки. 6-е изд. – М.; ФИЗМАТГИЗ,1959.
  16. Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. – М.; Наука, 1989.
  17. Попов В.Б. Паскаль и Делфи. – СПб.; Питер,2004.
  18. Рубенкинг Н. Программирование в среде Delphi для чайников. – М.; Бином, 2000.
  19. Руденко В.Д., Макарчук А.М., Патланжоглу М.А. Курс информатики / Под ред. Мадзигона В.Н. – К.;Феникс, 1998.
  20. Семакин И.Г., Шестаков А.П. Основы программирования. – М.; Мастерство, 2002.
  21. Фадеева А.А. Тесты. Программирование. – М.; ООО «Агентство «КРПА Олимп»: ООО «Изд-во АСТ»», 2004.

 



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 396; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.23.123 (0.099 с.)