Снос зданий:
ecosnos.ru
Главная  Микроустройства: номенклатура изделий электронной промышленности 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [ 79 ] 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

Для именования некоторого массива в программе используются индексы, которые в общем случае могут быть выражениями. Например, если в программе объявлен некоторый массив А и переменные i и j:

var i,j: integer; A:ZETA;

TO обращение к ij-му элементу массива А записывается в программе обычным образом А [i, j}.

Запись - это структура, состоящая из конечного числа компонентов различного типа, называемых полями.

Ф-1 -О

Тип

-СЮ-<Е

Простой тип

-(гееоп/у

Рис. 7.3.

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

Список поля в объявлении записи строится в соответствии со следующими правилами:

(список поля) :: = (фиксированная часть) 1 (фиксированная часть); (вариантная часть)] (вариантная часть) (фиксированная часть): : = (секция записи) { ; (секция записи)} (секция записи) : : = (идентификатор поля) {, (идентификатор поля) }: (тип) i (пусто) (вариантная часть) : : = case (tag поле) (идентификатор типа) of (вариант) {; (вариант)} (вариант) : : = (список меток случая) : ((список поля))- (пувто) (список меток случая) :: = (метка случая){, (метка случая)} (метка случая) ;:= (константа) (tag поле) i : =(идентификатор) : 1 (пусто)



Следующий пример содержит объивление записи alfa, содержащей фиксированную часть и переменное поле, определяемое двумя вариантами. Имеем:

type decision = (little, middle, large); tp = record 1, m: real end; alfa = record 1: packed array [1..10] of char; j, к : real case s : decision of little, middle: (z: integer; x: array [1..10] of char); large : (f: Boolean; d : tp) end;

Переменная часть записи alfa имеет структуру z : integer; x: erray, [I..10] of char, если поле s содержит значение little или middle и имеет структуру f : Boolean; d: record 1, m : real end, если поле s содержит значение large.

Обращение к определенному полю достаточно просто. Если Q - имя некоторой переменной типа alfa, то обращение к полям описывается следующим образом:

Q.i = toys; Q.j = 12.7: . Q.s = middle; Q.z = 107; и T. д.

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

with Q. tp do begin i = toys; j = 12.7; г = 107; m = 63.8; end (with).

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

type (идентификатор) = set of (базисный тип); type days=(mon, tue, wdn, thr, fri, str, sun); week = set of days;

Операции над множествами достаточно просты:

var X: days;

V, у ; week; {Объявление переменных}

V = [топ, tue]; {операции над множествами v и у} X = tue;

y = v -[х]; {и скалярной переменной х}

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



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

(объявление файлового типа) :: = type (идентификатор) = file of

(тип);

Например, утверждения:

lype data = file of integer; var a : data;

объявляют файл a типа integer.

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

Указательный тип используется для именования переменных, которые создаются динамически.процедурой new, а именно:

(объявление указательного типа) :: --= type (идентификатор) =

f(идентификатор типа)

Например, утверждение lype link = f person; объявляет указательный тип link, который связывается с ранее объявленным типом person. Последующее утверждение var р : link объявляет указательную переменную р, которая является указателем на динамически создаваемые переменные типа person.

Объявление и обозначение переменных. Объявления переменных состоят из списка идентификаторов, за которыми следует их тип (рис. 7.4). Например, утверждение

var i, ] : integer; f: t real; z : alfa;

объявляет переменные i и j стандартного типа integer, указательную переменную f, которая может ссылаться на динамически созда-иаемые и уничтожаемые данные типа real и переменную z типа alfa. Тип alfa должен быть предварительно объявлен утверждением type. На рис. 7.5 изображен синтаксический граф формирования обозначений переменных в целом, компонентных либо ссылочных переменных.

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

К компонентной переменной ссылаются посредством указания имени переменной, за которым следует селектор, выделяющий компонент. Форма селектора зависит от структурного типа переменной:

(компонентная переменная) : : = (индексированная переменная)

(указатель поля) (буфер файла)

Индексированная переменная ссылается к компоненту п-мерной массивной переменной с помощью наименования этой переменной, за которым следует п индексных выражений, например, аЬс [1 -\- ], к], Z [monday, tuesday, Wednesday].

Указатель поля ссылается к компоненту записи с помощью имени записи, за которым следует идентификатор поля. Например, ссылка к полям переменной ор типа alfa .(тип alfa был объявлен



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [ 79 ] 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95