Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
алгоритмизация павлодар.doc
Скачиваний:
14
Добавлен:
21.02.2016
Размер:
1.01 Mб
Скачать

Лабораторная работа №9

Тема: Программирование задач обработки структур данных, расположенных на внешних носителях.

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

1.Теоретические сведения.

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

..…

ОКНО

Файловый тип определяется в программе с помощью соответствующего описания:

TYPE <имя типа> = FILE OF <тип элемента>

Например, определение типов

CONST

MAX = 80;

TYPE

M=1. . MAX;

F = ARRAY [M] OF CHAR;

FF = FILE OF F;

задает файл FF , элементами которого являются массивы символов длинной M. Файловый тип можно определить и в разделе переменных:

VAR <имя файла>: FILE OF <тип элементов>;

Переменная, имеющая смысл файла, описывается в разделе переменных. Над файлами можно выполнять некоторые действия: запись (создание и пополнение файла) и чтение.

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

Рассмотрим некоторые процедуры, которые можно выполнять над файлами:

1) связь программного имени файла с дисковым именем файла

ASSIGN (F, ‘A: FILE. EXE’);

F- программное имя файла;

A- имя диска;

FILE.EXE- дисковое имя и расширение (с этим расширением хранится на диске созданный файл).

2) открытие существующего файла на диске для чтение (файловое окно установится на начало файла)

RESET (F);

3) открытие нового файла на диске для записи (файловое окно устанавливается на начало файла)

REWRITE (F);

4) чтение из файла

READ (F, V);

V -имя переменной.

Через текущее окно считывается компоненты файла в переменную V. V имеет тип компоненты файла.

5) запись в файл

WRITE (F, V);

Записывается значение V в компоненту файла.

6) открытие файла и установка окна для добавления символов

в конец существующего файла

APPEND (F);

7) закрытие файла.

CLOSE (F);

Пример: Создать, а затем прочитать файл, в котором содержатся квадраты чисел от 1 до 100.

PROGRAM KO;

VAR F: FILE OF REAL; {определение файла}

V: REAL; I: INTEGER;

BEGIN

ASSIGN (F,’A: REL.DAT’); {связь программного имени

файла F с дисковым REL.DAT}

REWRITE (F); {открытие файла для записи}

FOR I: =1 TO 100 DO {начало цикла}

BEGIN

V: =SQR (I); {вычисление очередного

значения квадрата числа}

WRITE (F, V); {запись полученного значения

V в файл}

END; {конец файла}

CLOSE (F); {закрытие файла}

RESET (F); {открытие файла для чтения}

FOR I: =1 TO100 DO

BEGIN

READ (F, V); {чтение из файла}

WRITE (V); {вывод прочитанного

значения}

END;

CLOSE (F); {закрытие файла}

END.

В приведенном примере было заранее известно, что должно быть прочитано 100 значений. Если это заранее не известно, то непрерывно должна быть проверка на признак конца файла. Для этого используют функцию EOF(F). Эта функция дает значение TRUE, если окно на конце файла и FALSE –в противном случае.

Важное место среди данных файлового типа занимают текстовые файлы, т.е. файлы, компоненты которых относятся к символьному типу CHAR. Для описания текстовых файлов определен стандартный тип TEXT. Например,

VAR F: TEXT;

Отличительной особенностью текстовых файлов является деление их на строки с помощью специального маркера конца строки. С маркером конца строки связана стандартная функция EOLN. Она дает значение TRUE, если прочитаны все литеры в строке и FALSE в противном случае. Есть еще две специальные процедуры для текстового файла:

1) READLN(F)-пропустить все символы текущей строки,

включая маркер конца строки, и установить

указатель на начало следующей строки;

2) WRITELN(F)-поставить маркер конца строки в текущем

окне.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]