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

3.3.1 Лабораторные задания

Сконструировать консольное приложение в соответствии с одним из приведенных ниже заданий.

Программа должна иметь следующую структуру

Рисунок 3.3 – Структура разрабатываемой программы

Назначение компонент:

  • Главная программа – осуществляет вызов подпрограмм обработки данных.

Для вызова подпрограммы необходимо указать номер пункта меню. Меню может быть организовано, например, так:

    1. Создание массива записей.

    2. Просмотр массива записей.

    3. Выход

  • Процедуры обработки данных:

  • Создание массива записей – ввод исходных данных массива записей

  • Просмотр массива записей – отображение данных массива записей на дисплее.

Ввод-вывод данных осуществляется в табличном виде.

Структуры для лабораторных заданий:

1.

2.

3.

Boolean

Real

[1 .. .. 2]

4.

Boolean

Integer

[ 1 .. .. 2 ]

5 .

Char

Real

[ 1 .. .. 2 ]

6.

7.

8.

Integer

Real

[ 1 .. .. 2 ]

9.

String[2]

Boolean

[ 1 .. .. 2 ]

10.

String[3]

Real

[ 1 .. .. 2 ]

3.4 Файлы.

3.4.1 Основные понятия и операции

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

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

Файл – это структура данных, обладающая двумя основными свойствами:

  • Обычно она располагается на каком-либо внешнем носителе (например, магнитная лента, магнитный или оптический диск) и, следовательно, ее размер может быть значительно больше, чем размеры других типов структур данных;

  • Ее время жизни может значительно превышать время выполнения программы, создавшей ее.

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

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

<имя файловой переменной> : file of T; {Т – тип компонентов файла}

Перед выполнением любой операции над файлом файловая переменная должна быть предварительно инициализирована – сопоставлена с физическим файлом:

AssignFile(<имя файловой переменной>, <путь к файлу и его имя>);

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

Последовательный доступ к компонентам файла

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

В режиме записи указатель текущей позиции в файле всегда расположен после последнего компонента файла, и единственно возможной операцией в этом режиме является запись очередного компонента файла, в результате чего файл «расширяется».

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

Основные операции над файлами с последовательным доступом к их компонентам таковы.

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

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

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

Чтение. Операция чтения передает содержимое текущего компонента (определяемого указателем текущей позиции файла) в переменную программы.

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

Проверка конца файла (EofEnd of file). Операция чтения не может быть выполнена, если указатель текущей позиции достиг конца файла. Так как длина файла не фиксирована, требуется проводить явную проверку на достижение конца файла.

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

Схема формирования файла:

var

F: file of T;

a: T;

begin

AssignFile(F, <путь к файлу и его имя>);

Rewrite(F); { Открытие файла для записи – создание пустого файла }

<цикл формирования файла>

begin

<получить значение а>;

write(F, a); { записать а в конец файла }

end;

CloseFile(F); { закрыть файл }

end.

Схема просмотра (использования файла):

var

F: file of T;

a: T;

begin

AssignFile(F, <путь к файлу и его имя>);

Reset(F); { Открытие файла для чтения, Файл уже существует }

while not Eof(F) do begin { пока не конец файла выполнять}

read(F, a); { прочитать данные из файла в переменную а }

<использовать а >;

end;

CloseFile(F); { закрыть файл }

end.