Смекни!
smekni.com

Составление программ для решения задач на языке программирования Turbo Pascal (стр. 2 из 4)

Способы объявления файловых типов.

Общий вид объявления файлового типа

TYPE <тип файл> = FILE [OF <тип компонент>] ;

для текстовых файлов:

TYPE <тип файл> = TEXT;

для файлов записей:

TYPE <тип файл> = FILE OF <тип запись>;

для нетипизированных файлов:

TYPE <тип файл> = FILE;

Для того, чтобы использовать в программе файловые типы данных, необходимо объявить переменные файлового типа одним из следующих способов:

Способы объявления переменной файлового типа

1 способ:

TYPE <тип файл> = FILE [OF <тип компонент>] ;

VAR <программный файл>: <тип файл>;

2 способ:

VAR <програм. файл>: FILE [OF <тип компонент>] ;

Переменные файлового типа называют программными файлами. Файлы имеют начальную метку и конечную метку.

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

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

Рис. Файл и текущий указатель файла

Операции для работы с файлами

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

ASSIGN (<програм. файл>, ‘полное имя файла на диске’);

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

для создаваемого файла:

REWRITE (<программный файл>);

для существующего файла:

RESET (<программный файл>);

3. Операции обмена информацией между операционной памятью и программными файлами:

ввод информации из файла в ОП:

READ (<программный файл>, <переменная>);

вывод информации:

WRITE (<программный файл>,<переменная>);

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

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

SEEK (<программный файл>, № компоненты);

5. Закрытие файла:

CLOSE (<программный файл>);

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

6. Некоторые дополнительные операции над файлами могут очень полезны:

определяет закончился ли файл:

EOF (<программный файл>)

определяет размер файла в компонентах:

FILESIZE (<программный файл>)

определяет номер текущей компоненты:

FILE POS (<программный файл>)

Последовательность работы с файлами записей:

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

Объявить тип запись.

Объявить программный файл, компоненты которого имеют тип запись.

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

Открыть файл существующий или создаваемый.

Для обмена информации использовать операторы ввода или вывода.

Выполнить закрытие файла.

Особенности работы с текстовыми файлами

Текстовые файлы - это файлы компонентами которых являются символьные строки. Среди текстовых файлов следует выделить стандартные текстовые файлы. Существуют особенности обработки текстовых файлов:

Стандартные текстовые файлы:

INPUT - стандартный файл ввода;

OUTPUT - стандартный файл вывода.

2. Стандартные файлы можно связать с дисковым файлом:

ASSIGN (OUTPUT, ‘дисковый файл‘);

3. Открытие текстового файла:

для чтения: RESET (<программный файл>);

для создания: REWRITE (<программный файл>);

для дополнения: APPEND (<программный файл>);

4. Обмен информацией с текстовым файлом:

чтение: READLN (<программный файл>, переменная);

запись: WRITEL] (<программный файл>, переменная);

где <переменная> должна быть объявлена как строка символов.

Работа с файлами без типа

чтение блока данных:

BLOCKREAD (<программный файл>, переменная, n [, m]);

запись блока данных:

BLOCKWRITE (<программный файл>, переменная n [, m]);

где переменная - переменная любого типа

n - размер блока,

m - необязательный параметр, определяющий размер блока в записях.

При чтении блока данных формируется значение m.

1. Условие и постановка задачи

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

Структура записи:

Фамилия, Имя, Отчество

Дата рождения

Город

Улица

Дом

Квартира

№ паспорта

2) Внести 5-10 записей

3) Изменение записей в справочнике

4) Дополнение записей в справочнике

5) Поиск по фамилии в справочнике

1.1 Входная информация

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

Фамилия, Имя, Отчество

Дата рождения

Город

Улица

Дом

Квартира

№ паспорта

Теперь покажем, как описывается входная программа, так как в последствии мы увидим её в тексте программы.

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

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

Название переменной Тип переменной Назначение
RecBook Запись (record) для упрощения решения задачи
Поля записи
StFIO string [20] хранение ФИО физического лица
StData string [8] хранение даты рождения
StGorod string [15] хранение города, где проживает физическое лицо
StUlica string [16] хранение улицы
StDom string [8] хранение № дома
StKvartira string [10] хранение № квартиры
StNomer_Pasporta string [15] хранение № паспорта

1.2 Выходная информация

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

Название переменной Тип переменной Назначение
BookFile файл типа RecBook хранение данных

1.3 Промежуточная информация

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

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

Название переменной Тип переменной Назначение
Work RecBook для доступа к полям записи
VID byte для выбора вызова различных процедур
End_Menu boolean для выхода из меню
Name string [12] хранение имени файла
Rez_Find boolean результат поиска
NumRec longint локальная переменная принимает значение номера изменяемой записи
Count integer количество записей

2. Формализация задачи

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

Задача может выполнять следующие действия:

создания файла записей

просмотр списка справочника

изменение записи справочника

дополнение записи в справочник

поиск физического лица по названию улицы

3. Алгоритм решения задачи

3.1 Словесный алгоритм

Алгоритм - последовательность действий, необходимых для решения задачи.

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

На первой стадии разработки программы были описаны все переменные и их типы.

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