Снос зданий:
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

ляет, какой вариант секции подрйзумевается в данном конкретном случае. Приведем примеры объявлений типов записи:

1, тес 1 = RECORD one: REAL;

two: (red . . green]; threer-fNTEGER;

Тип rec 1 определяет запись, состоящую из трех фиксированных полей: one, two, three, вслед за которыми указан их тнп.

2. гес 2 = RECORD а, Ь: ТО;

CASE с : BOOLEAN OF TRUE: d : REAL; e: INTEGER 1 FALSE : f : Tl; g: T2 END; . h : к : REAL; CASE 1 : color OF red : m I CARDINAL yellow : n : INTEGER 1 green : 0 : BOOLEAN END END

В данном примере запись содержит фиксированные поля а, b (типа ТО), h, к (типа REAL) и два изменяемых поля. Типы изменяемых полей определяются\значением поля с типа BOOLEAN й поля 1 типа color, соответственно.

Множества содержат все возможные значения некоторого-заданного типа. Тип должен быть либо поддиапазонный для целых величии от О до Wordsize-1, либо поддиапазонный тип перечисляемого типа со значениями, не превыщающими Wordsize (Wordsize для микроэвм Электроника-60 имеет емкость 16 бит).

Стандартный тип BITSET определяется как: BITSET = SET OF [О .. Wordsize - 1).

Примеры определения множественных типов:-

digits = SET OFI0 .. 9] chars = SET OF [A .. Zj

Переменные указательного типа могут ссылаться на другие переменные, имеющие некоторый тип Т. В этом случае необходимо объявить в программе, что указательный тип Р может ссылаться на переменные типа Т, например, р1 = POINTER ТО Т.

В программе объявлен тип р1. Переменные данного типа могут ссылаться на переменные типа Т. г*! s-

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

ргос Тур-= PROCEDURE (VAR х, у : REAL;

VAR z : CARDINAL)



Стандартный тип PROC определяет процедурный тип без параметров: PROC= PROCEDURE.

Объявление переменных записывается в виде: список ндентн-фикатороБ : тип - и связывает их с идентификатором, определенным типом данных н структурой. Примеры объявлений переменных:

X, у : CARDINAL

г ! REAL I, J ; BOOLEAN W : ARRAY [1.. 1 0]OF RECORD ch : CHAR;

h : REAL; CASE о : [ A , В , С' ] OF A:p, r: INTEGER B : 1, к: CARDINAL I С':f:CHAR END END

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

Объявление процедуры выглядит следующим образом;

PROCEDURE идентификатор [формальные параметры] ;

{объявления} [BEGIN последовательность утверждений] END идентификатор

После символа END повторяется идентификатор процедуры. Пример объявления процедуры:

PROCEDURE Read (VAR х : CARDINAL); VAR i: CARDINAL; ch : CHAR; BEGIN i: = 0; REPEAT Read Char (ch); -UNTIL (ch > = 0 & (ch < = 9

REPEAT i: = 1 0 jfc i -i- (CARDINAL (ch) - CARDINAL { 0 );

ReadChar (ch); UNTIL (ch < 0 ) OR (ch > 9

X :=ri;

END Read

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

Формальные параметры могут быть двух типов: параметры-виачения и параметры-переменные. Параметры-переменные ука-

6*461 225



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

Модуль содержит набор объявлений и утверждений, расположенных между символами MODULE и END.

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

Последовательность утверждений, которые представляют тело модуля (блок), выполняется, когда вызывается процедура, по отношению к которой модуль является локальным. Если в процедуре объявлено несколько модулей, то модули выполняются в той последовательности, в которой они размещаются в процедуре:

MODULE идентификатор [приоритет] {список импорта} {список экспорта} {объявления} [BEGIN последовательность утверждений] END идентификатор

Приоритет записывается в виде [целое] и играет роль, когда реализуется мультипрограммное выполнение. Форматы импорти-)уемого и экспортируемого списков следующие: FROM идентификатор] IMPORT список идентификаторов

EXPORT [QUALIFIED] список идентификаторов ;

Символ QUALIFIED применяется, если идентификаторы из списка идентификаторов EXPORT должны вне данного модуля использоваться только с указанием префиксуемого имени модуля. Символ FROM указывает имя модуля, из которого получены объекты, перечисленные в списке IA№ORT. В этом случае идентификаторы из списка могут использоваться обычным образом, без префиксов.

Пример объявления модуля:

MODULE Linelnput;

IMPORT inchr, outchr;

EXPORT read, Newline, NewFile, eoln, eof, Ino;

CONST LF = 12 c; CR = 15 c; FS = 34;

VAR Ino: CARDINAL; (* число строк *)

ch: CHAR; (* последний прочитанный символ *)

eof, eoln: BOOLEAN;

PROCEDURE Newfile;

BEGIN

IF NOT eof THEN

REPEAT inchr (ch) UNTIL ch = FS;

END;

eof: = FALSE; eoln: = FALSE; Ino; = 0 END NewFile;



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