Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

Присвоение значений полям вложенных записей

Ниже приведен пример прямого присвоения значений полям первой записи USP[1] в массиве записей USP – успеваемость группы. Уровень вложения соответствует числу разделителей имен, то есть точек в идентификаторе поля.

USP[1].TAB := 910678; {Уровень вложения 1}

USP[1].ATT.D1 := TRUE; {Уровень вложения 2}

USP[1].ATT.D2 := TRUE;

USP[1].ATT.D3 := FALSE;

USP[1].ATT.D4 := TRUE;

USP[1].ATT.D5 := FALSE;

Используем оператор WITH для этого же примера.

WITH USP[1] {Уровень вложения 1}

DO BEGIN

TAB := 910678;

WITH ATT {Уровень вложения 2}

DO BEGIN

D1 := TRUE;

D2 := TRUE;

D3 := FALSE;

D4 := TRUE;

D5 := FALSE

END

END;

Из нашего примера видно, что в конкретном случае использование оператора WITH существенно усложнило структуру программы.

3 Файлы записей

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

Напомним, что файл - это структурированный тип данных, состоящий из компонентов одного типа. Файлы записей часто называют базой данных и относят к так называемым типизированным файлам. Типизированный Файл с точки зрения языка ПАСКАЛЬ - это структурированный тип данных, состоящий из последовательности компонентов одного типа и одной длины. Для типизированных файлов файловый тип и файловую переменную задают с помощью следующей синтаксической конструкции:

TYPE <Имя типа файла> = FILE OF <Тип компонент файла>;

VAR <Идентификатор файловой переменной>: <Имя типа файла>;

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

Определение типа файлов начинается ключевыми словами FILE OF, после которого задается тип компонентов файла, который описывает, что содержит данный файл. Далее следует идентификатор предварительно определенного типа файла. Число компонентов, называемое длиной файла, определением типа файла не фиксируется.

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

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

Type Student = record

Tab: Longint; {Номер зачетной книжки}

Fio: String[20]; {Фамилия И.О.}

Data: String[8]; {Дата рождения}

Grup: String[7]; {Номер группы}

Stepa: Real {Размер стипендии, руб.}

end;

Var Std: Student; Mstd: array[0..19] of Student;

Fstd: File of Student;

В этом примере имя типа файла в явном виде не используется. Для описания файла, использован второй способ, так называемое неявное определение файлового типа, непосредственно в разделе VAR:

Var F: file of <тип компонент>;

где F - переменная для доступа к файлу (файловая переменная).

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