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

Тип процедуры (BYTE или ADDRESS) должен быть указан в том случае, если процедура является процедурой-функциеА и возвращает значение в точку вызова. Процедура-функция возвращает управление вызываемой программе оператором RETURN (выражение), а процедура-подпрограмма - оператором RETURN. С процедурой могут быть связаны атрибуты, определяющие ее назначение н возможности. Например, атрибут INTERRUPT (п = = 0 - 7) указывает, что процедура предназначена для обработки прерываний. Процедура активизируется, когда прерывание поступает по каналу с кодом п. Атрибут REENTRANT указывает, что процедура является реентерабельной и допускает повторное вхождение до заверщения ее выполнения.

Пример. В данном примере объявлена процедура, выполняющая суммирование элементов массива с 0-го по п-й,

SUMMARRAY: PROCEDURE (PTR, N) BYTE REENTRANT; DECLARE PTR ADDRESS,

(ARRAY BASED PTR) (N) BYTE. N BYTE;

IF N = 0 THEN RETURN ARRAY (0);

ELSE RETURN ARRAY (N) -f SUMMARRAY (PTR, N - 1);

END SUMMARRAY;

Процедура-функция вызывается указателем функции: (имя) 1((спнсок аргументов))], процедура-подпрограмма вызывается оператором CALL (имя) [((список аргументов))]; Например, про-, цедура SUMMARRAY вызывается следующим образом: Z = = SUMMARRAY (Q, 100);.

Язык ]М[одула-2

Модула-2 [15] иредиазначен для системного программирования Иа мини- р микроэвм. Его предшественниками являются языки Паскаль [14, 55] и Модула [73]. От этих языков Модула-2 унаследовал модульный принцип и последовательный строгий синтаксис. Это отражено как в структурах данных, так н в сложных управляющих структурах.

Язык является, в основном, машинно-независимым, за исключением ограничений, накладываемых на длину слова.

Машинио-завнсимые объекты сосредоточивают в специальных модулях и нх использование достаточно эффективно маскируется и отделяется. В этих случаях язык обеспечивает средства для смягчения ограничений на совместимость типов данных. Модула-2 содержит значительное число стандартных модулей (так называемых -модулей нижнего уровня) для управления вводом-выводом^ обра- ботки файлов, выделения памяти, диспетчеризации процессов ИТ. д.

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



Алфавит языка. Алфавит языка включает большие и малые буквы латипского алфавита: от А до Z и от а до г, цифры: от О до 9 и'специальные символы: +, -, , /, &, , (,), [,], {,},Т, , =, tt. <.). : .

Идентификаторы. Идентификаторы - последовательности букв и цифр: идент = буква {буква! цифра}. Например: scan, Modula, First Symbol.

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

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

IF THEN ELSE AND END ELSIF POINTER и t. д.

Данные в языке Модула-2. Числа в языке могут быть представлены в двух основных формах: целые числа и вещественные.

Целые числа представляют собой последовательности цифр. В этом случае числа являются десятичными. Если числа оканчиваются литерами В, Н или С, то это, соответственно, восьмеричные, шестнадцатеричные числа или последовательности литер, имеющие 8-битовое внутреннее представление в вычислительном комплексе. Целые числа имеют тип INTEGER или тип CARDINAL.

Вещественные числа всегда содержат десятичную точку, кроме того, они могут содержать десятичный порядок в форме: Е f + I - ] цифра (цифра}, например, 2567,.376В, 21EFH, АВЗС, 7.45, 7.21 ЗЕ-12, I.E4.

Сроки в языке Модула-2 представлены последовательностями литер,заключенных в одиночные (апострофы) или двойные кавычки,

т. е. строка = , , {литера алфавита} , , , , {литера алфавита} .

Строка может состоять из одной литеры или нескольких и имеет, соответственно, тип CHAR или тип ARRAY [О ... п - 1] OF CHAR.

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

Объявление констант связывает идентификатор с некоторой постоянной величиной и записывается в виде: идентификатор = константное выражение, которое может содержать арифметические операторы и операторы отношений, а также идентификаторы, квалифицируемые идентификаторы, числа, строки, множества. Квалифицируемые идентификаторы записываются в виде; идентификатор { . идентификатор}.



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

N = 16 lit = N- 1 allset = {б . . Size of Word)

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

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

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

Примеры объявлений типов:

color= (red, green, blue)

index = {1 ... 80}

card = ARRAY index OF CHAR

Базисные типы обозначаются стандартными идентификаторами: INTEGER, CARDINAL, BOOLEAN, CHAR, REAL. Переменные типа INTEGER принимают целые значения в диапазоне (-32768, -h32767), переменные типа CARDINAL - значения в диапазоне (О, 66535), переменные типа BOOLEAN - значения TRUE или FALSE, переменные типа CHAR значения символов из множества символов ASCII (ISO), переменные типа REAL - значения вещественных чисел.

Перечисление - это список идентификаторов, которые являются значениями для объявляемого типа данных, например,

(red, yellow, green, blue) (monday, tuesday, Wednesday)

Некоторый Тип может быть определен как поддиапазонный другого типа, базисного или перечисляемого (за исклю^еинем типа REAL), указанием нижней и верхней границ диапазона.

Примеры объявления поддиапазонного типа:

- int = [О .. N - 1] latch = [А'..О'] color = [red .. green]

Массив представляет собой структуру, состоящую из компонентов, имеющих один и тот же thii, называемый компонентным. -Элементы массива определяются индексами, которые принадлежат к индексному типу. Массивный тип определяет одновременно компонентный и индексный типы, например:

matr = ARRAY [1 .. 10], [l ..20] OF REAL boolar = ARRAY [1 .. N1 OF BOOLEAN

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



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