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; |