Смекни!
smekni.com

Методические указания к лабораторным работам по дисциплине "Информатика" Составители: Викентьева О. Л., к т. н., доцент (стр. 8 из 8)

6)процедура write(<файловая переменная>,<список вывода>) - записывает данные из списка вывода в типизированный или текстовый файл. Для типизированных файлов список вывода содержит одну или более переменных такого же типа, что и компоненты файла.

7)процедура close(<файловая переменная>) - закрывает файл, обеспечивая сохранение в файле всех новых записей и регистрацию файла в каталоге. При этом сохраняется связь файловой переменной с именем файла, установленная ранее процедурой assign. Поэтому в дальнейшем этот файл можно открыть повторно без дополнительного использования процедуры assign.

8)процедура rename(<файловая переменная>,<новое имя>) - переименовывает файл,

<новое имя> - строка, содержащая новое имя файла на диске. Перед выполнением процедуры необходимо закрыть файл, если он был открыт процедурами reset или rewrite.

9)процедура erase(<файловая переменная>) - уничтожает файл. Перед выполнением процедуры необходимо закрыть файл, если он был открыт процедурами reset или rewrite.

К типизированным файлам можно применять также

10) процедуру seek(<файловая переменная>,<номер компонента>), которая устанавливает указатель файла на компонент с указанным номером;

11) функцию filesize(<файловая переменная>), которая возвращает длину файла - количество его компонент;

12) функцию filepos(<файловая переменная>), которая возвращает номер текущего компонента файла. Первый компонент файла имеет номер 0.

3. Постановка задачи:

1) сформировать типизированный файл из элементов, заданной в варианте структуры,

2) распечатать его содержимое,

3) выполнить удаление элементов в соответствии со своим вариантом.

4) выполнить преобразование типизированного файла в текстовый и распечатать текстовый файл.

Формирование, печать, удаление элементов и преобразование файлов оформить в виде подпрограмм. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода.

4. Варианты

1. Структура "Абитуриент":

- фамилия, имя, отчество;

- год рождения;

- оценки вступительных экзаменов (3);

- средний балл аттестата.

Удалить элемент с указанным номером.

2. Структура "Сотрудник":

- фамилия, имя, отчество;

- должность

- год рождения;

- заработная плата.

Удалить элемент с указанной фамилией.

3. Структура "Государство":

- название;

- столица;

- численность населения;

- занимаемая площадь.

Удалить все элементы, у которых численность меньше заданной.

4. Структура "Человек":

- фамилия, имя, отчество;

- домашний адрес;

- номер телефона;

- возраст.

Удалить все элементы с заданным возрастом.

5. Структура "Человек":

- фамилия, имя, отчество;

- год рождения;

- рост;

- вес.

Удалить все элемент с указанным ростом и весом.

6. Структура "Школьник":

- фамилия, имя, отчество;

- класс;

- номер телефона;

- оценки по предметам (математика, физика, русский язык, литература).

Удалить все элементы, у которых есть 2 хотя бы по одному предмету.

7. Структура "Студент":

- фамилия, имя, отчество;

- домашний адрес;

- группа;

- рейтинг.

Удалить все элементы, у которых рейтинг меньше заданного.

8. Структура "Покупатель":

- фамилия, имя, отчество;

- домашний адрес;

- номер телефона;

- номер кредитной карточки.

Удалить 3 элемента из начала файла.

9. Структура "Пациент":

- фамилия, имя, отчество;

- домашний адрес;

- номер медицинской карты;

- номер страхового полиса.

Удалить элемент с заданным номером медицинской карты.

10. Структура "Информация":

- носитель;

- объем;

- название;

- автор.

Удалить первый элемент с заданным объемом информации.

11. Структура "Видеокассета":

- название фильма;

- режиссер;

- продолжительность;

- цена.

Удалить все элементы с ценой выше заданной.

12. Структура "Музыкальный диск":

- название;

- автор;

- продолжительность;

- цена.

Удалить первый элемент с заданной продолжительностью.

13. Структура "Спортивная команда":

- название;

- город;

- количество игроков;

- количество набранных очков.

Удалить все элементы с количеством очков меньше заданного.

14. Структура "Стадион":

- название;

- адрес;

- вместимость;

- виды спорта.

Удалить элемент с заданным названием.

15. Структура "Автомобиль":

- марка;

- год выпуска;

- цена;

- цвет.

Удалить все элементы, у которых год выпуска меньше заданного.

16. Структура "Владелец автомобиля":

- фамилия, имя, отчество;

- номер автомобиля;

- телефон;

- номер техпаспорта.

Удалить элемент с заданным номером.

17. Структура "Фильм":

- название;

- режиссер;

- год выпуска;

- стоимость.

Удалить все элементы, у которых стоимость превышает заданную.

18. Структура "Книга":

- название;

- автор;

- год издания;

- количество страниц.

Удалить 3 элемента из начала файла.

19. Структура "Фильм":

- название;

- режиссер;

- страна;

- приносимая прибыль.

Удалить 2 элемента из конца файла.

20. Структура "Государство":

- название;

- государственный язык;

- денежная единица;

- курс валюты относительно $.

Удалить элемент с указанным названием.

21. Структура "Автомобиль":

- марка;

- серийный номер;

- регистрационный номер;

- год выпуска.

Удалить 3 элемента из начала файла.

22. Структура "Владелец автомобиля":

- фамилия, имя, отчество;

- номер автомобиля;

- номер техпаспорта;

- отделение регистрации ГАИ.

Удалить элемент с заданным номером.

23. Структура "Стадион":

- название;

- год постройки;

- количество площадок;

- виды спорта.

Удалить все элементы, у которых год постройки меньше заданного.

24. Структура "Студент":

- фамилия, имя, отчество;

- номер телефона;

- группа;

- оценки по 3 основным предметам.

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

25. Структура "Студент":

- фамилия, имя, отчество;

- дата рождения;

- домашний адрес;

- рейтинг.

Удалить элементы, у которых даты рождения совпадают.

5. Содержание отчета

1. Постановка задачи.

2. Описание используемых типов данных.

3. Текст подпрограмм для:

· формирования файла,

· печати файла,

· добавления записи в файл или удаления записи из файла,

· преобразования типизированного файла в текстовый,

· печати текстового файла

4. Текст основной программы.

5 Тесты.

6. Методические указания к выполнению работы

1) Если делается попытка открыть не существующий файл, то будет выдана ошибка исполнения программы. Поэтому следует проверить существование файла на диске с помощью следующей нестандартной функции.

Function ExistFile(filename:string):Boolean;

Begin

{отключаем проверку ошибок ввода-вывода}

{$I-}

reset(f);

{включаем проверку ошибок ввода-вывода}

{$I+}

if IoResult=0 then ExistFile:=true else ExistFile:=false;

end:

2) Для ввода одной записи типизированного файла следует написать вспомогательную процедуру.

Procedure MakeRecord (var X:Rec);

Begin

Writeln(‘Введите имя’);

Readln(x.name);

Writeln(‘Введите возраст’);

Readln (x.age);

……..

{аналогично вводятся все поля записи}

end;

3) Для вывода записи типизированного файла следует написать вспомогательную процедуру (аналогично п. 2)

4) Для удаления элементов из файла следует использовать вспомогательный файл (из исходного файла переписываем во вспомогательный все элементы, кроме удаляемого, затем удаляем исходный файл, а вспомогательный переименовываем)

Procedure DelFile(n:lingint);

{удаление записи с номером n}

Var t:file of Rec;{вспомогательный файл}

X:Rec;

I:longint;

Begin

Reset(f);{открываем для чтения исходный файл}

Rewrite(t);{открываем для записи вспомогательный файл}

I:=0;{счетчик записей в файле}

While not eof(f) do

Begin

Read(f,x);{читаем из файла в переменную х очередное значение }

I:=I+1;

If I<>n then

Write(t,x);{записываем х во вспомогательный файл}

End;

Close(f);

Close(t);

Erase(f);{удаляем исходный файл}

Rename (t, filename);{переименовываем вспомогательный}

End;

5) При преобразовании типизированного файла в текстовый следует выполнять чтение записи из типизированного файла и по полям записывать ее в текстовый файл с указанием формата записи (т. е. сколько позиций отводится для записи данного поля).

. . . . . .

Wile not eof(f) do begin

Read(f,x);

Writeln(ft,x.name:20,x.age:10);

End;

6) Текстовый файл удобнее печатать по строкам.

Readln(ft,s);

Writeln(s);