Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава10 задание.doc
Скачиваний:
2
Добавлен:
29.08.2019
Размер:
108.03 Кб
Скачать

Program Demo; {Вывод на экран чисел из файла}

Var

A:array[1..100] of integer; {входной массив}

nA : integer; {фактический объем массива}

j : integer; {рабочая переменная}

fl : text; {файловая переменная}

begin

Assign(fl,’input.txt’);

{$I-}

reset(fl);

{$I+}

if IOResult=0 then begin

readln(fl,nA); {из текущей строки взять

только значение числа и после этого

перейти на начало следующей строки}

writeln(’Объем массива = ’,nA);

for j:=1 to nA do begin

read(fl,A[j]);

write(A[j]:4);

if (j mod 3)=0 then

writeln; {сменить строку}

{end if}

end; {for}

if (nA mod 3)<>0 then

writeln; {сменить строку}

{end if}

end

else

writeln(’Ошибка открытия файла’);

{end if}

end.

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

Объем массива = 5

12 -3 5

70 65

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

10.7. Нетипизированные файлы

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

Объявление:

var <fp> : file;

{здесь fp – файловая переменная}

Назначение файла:

assign ( <fp>, <имя физического файла>);

Открытие файла:

reset (<fp>, <size>);

Открыть файл для чтения, установив размер записи равным size байтов.

rewrite (<fp>, <size>);

Открыть файл для записи, установив размер записи равным size байтов.

Примеры.

reset(FromF, 1); {открыть файл с размером записи в 1 байт}

reset(fil, 256); {открыть файл с размером записи в 256 байтов}

rewrite(ToF, 12); {открыть файл с размером записи в 12 байт}

Чтение и запись

BlockRead(<fp>,<buf>,

<size>,<k>);

Прочитать size записей из файла fp в буфер buf. Вернуть в переменной k, сколько записей прочитано фактически.

BlockWrite(<fp>,<buf>,

<size>,<k>);

Записать size записей в файл fp из буфера buf. Вернуть в переменной k, сколько записей помещено в файл фактически.

Запись процедуры закрытия файла совпадает с рассмотренными выше.

Примеры использования нетипизированного файла можно найти в литературе и во встроенной в Турбо Паскаль справочной системе.

10.8. Пример. Программа работы с файлами

Задача. Разработать простую программу сопровождения базы данных.

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

Требуемые операции:

  • занесение новых данных с клавиатуры

  • просмотр содержимого базы данных на экране

  • сохранение данных в типизированном файле

  • загрузка (восстановление) данных из файла

  • вывод содержимого базы данных в текстовый файл в табличном виде

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

Примечание. В оперативной памяти содержимое базы данных должно размещаться в массиве записей.

Вначале приведем сценарий.

П

Операции базы данных:

добавить запись (1)

просмотреть содержимое (2)

искать неуспевающих (3)

вывести в текстовый файл (4)

сохранить базу (5)

конец работы (6)

Введите номер операции _

осле запуска программы на экране появляется следующее меню:

Примечание. Восстановление содержимого базы данных из типизированного файла (загрузка) производится автоматически в момент запуска программы из файла с именем ‘group.dat’. Если файл с этим именем не найден, база создается вновь, как пустая. Запись в этот файл должна происходить по желанию пользователя (операция 5), только в том случае, если в этот момент массив не пуст.

После того как пользователь вводит номер операции, в зависимости от введенного номера, выполняются следующие действия:

Операция 1. «Добавить запись».