Смекни!
smekni.com

Курс лекций по основам программирования Учебно-методическое пособие (стр. 7 из 9)

Пример:

В Basic В Pascal

Тип структура запись

Структура (запись в Pascal) –есть конечная совокупность данных, возможно, разного типа.

В Basic для описания структур используется оператор TYPE. Его формат:

TYPE <имя>

<базовые типы>

END TYPE

В Pascal описание записи имеет следующий формат:

record

<базовые типы>

End;

Описание записи как типа, в Паскале должно быть выполнено в еще одном разделе описания (в дополнение к var и label) – в разделе описания типов. Его заголовок – type. В целом описание нового типа – запись – в Паскале выглядит почти аналогично бейсиковскому:

type <имя записи> = record

<базовые типы>

end;

В Basic с помощью оператора TYPE можно описывать только двухуровневые типы. Но описанная в Basic структура переходит в разряд базовых типов и ее имя можно использовать в последующих описаниях структур.

Описание приведенной выше структуры "Студент" может быть выполнена в Бейсике следующим образом

:

TYPE BD

DAY AS INTEGER

MON AS INTEGER DIM Student AS TypS

YEAR AS INTEGER DIM ST1,ST2 AS TypS

END TYPE ST1.FIO = Иванов

TYPE TypS ST2.BDAY/DAY = 12

FIO AS STRING языковый способ добираться до

ADRESS AS STRING конкретных данных в структуре

BDAY AS BD

END TYPE

Аналогичное описание в Паскале будет таким:

В Pascal:

type

BD=record

Day :integer;

Mon :integer;

Year :integer;

End;

TypS = record

fio: string;

address :string;

BDay: BD;

end;

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

DIM Student, St1,St2 AS TypS

а в Паскале

Student,St1,St2:TypS;

Задают три переменные нового типа Student, St1, St2. Оператор присваивания допускает работу с ними как с обычными переменными:

Student:=St1;

Для работы с простыми данными из структуры (записи) Student надо записать ее имя, а потом через точку имена подструктур (подзаписей) нижнего уровня, например,

St1.Fio:='Иванов'; St2.BDay.Day:=12;

Описание записи в Паскале можно выполнить непосредственно в разделе описания переменных, то есть не используя описание нового типа:

Var

Student,St1,St2: record;

Fio: string;

Address: string;

BDay: record;

Day: integer;

Mon: integer;

Year: record;

End;

End;

В Бейсике такая возможность отсутствует.

6. Обработка файлов данных.

6.1. Общие понятия

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

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

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

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

Существует 2 противоположных способа организации файлов:

1) Последовательная организация файла

2) Произвольная организация файла (прямая, случайная, выборочная, рандомизированая)

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

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

В соответствии со способами организации определяют 2 метода доступа:

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

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

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

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

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

К устройствам последовательного доступа относится стриммер(устройство памяти на магнитной ленте).Другими устройствами последовательного доступа являются принтер, клавиатура, мышь.

6.2 Основные операции по обработке файлов.


Открытие файла чтение-запись данных закрытие файла

I (ввод-вывод записей) II III

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

I.Открытие файла выполняется по-разному. Открытие входного файла – поиск этого файла на диске по указанным именам. После этого операционная система разрешает программе доступ к записям файла и как правило, запрещает доступ к файлу из других программ.

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

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

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

6.3 Операторы (процедуры) обработки файлов в Basic и Pascal.

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

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

В Basic в соответствии между именами и константами устанавливается при открытии файла.

В Pascal файловая переменная предварительно должна быть описана в разделе описания переменных Var.

<файловая переменная>: file of <пр. тип>;

Пример: Var S: file of TypeS;

Соответствие между файловой переменной и именем файла устанавливается специальной процедурой под названием Assign. Её формат записи:

Assign(<файловая переменная>, <имя файла>);

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

1) Открытие файла.

В Бейсике работа с файлом начинается оператором открытия файла. Его формат:

OPEN <имя файла> FOR <тип файла> AS # n

Здесь <имя файла> - либо его спецификация, либо полное имя при работе в текущем каталоге; n – целое число; <тип файла> - одно из слов INPUT, OUTPUT или RANDOM. Рассмотрим подробнее:

INPUT - открытие входного существующего файла с последовательной для ввода записей.;

OUTPUT - открытие выходного файла с последовательной организацией для вывода записей. Если файл с указанным в операторе именем уже существует, ОС его уничтожит и подготовит программу для формирования нового файла.

RANDOM – открывает файл с прямой организацией. Файлы RANDOM в Бейсике являются обновляемыми файлами. Если файл RANDOM с указанным в операторе именем существует, то он открывается для обработки. Если он не существует, то файловая система подготавливается к вводу записей в этот файл.