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

PROCEDURE NewLine;

BEGIN

IF NOT eoln THEN

REPEAT inchr (ch) UNTIL ch = LF;

oiitchr (CR); uutchr (LF)

END;

eoln: = FALSE; INC(lno) END NewLine; PROCEDURE read (VAR x : CHAR); BEGIN

LOOP inchr (ch); outchr(ch);

lFch> = - THEN

x: = ch; EXIT

ELSIF ch: = LF THEN

X : = , ; eoln:= TRUE; EXIT

ELSIF ch = FS THEN

X : = ; eoln : = TRUE; eol: = TRUE; EXIT END END

END read;

BEGIN eof: = TRUE; eoln : = TRUE END Linelnput

Текст, поступающий на вход компилятора как единое целое, называется единицей компиляции. В Модула-2 различают 3 типа единиц компиляции: главные модули, определяющие, реализующие.

Главный модуль содержит основную программу и состоит из так называемого программного модуля. В частности, главный модуль не содержит списка EXPORT. Импортируемые объекты определяются в других (отдельно скомпилированных) программных частях, которые делятся иа определяющие и реализующие модули.

Определяющие модули (DEFINITION MODULE) специфицируют имена и назначение объектов, доступных для пользователя, а также для модулей, которые используют (импортируют) эти объекты, .j:;

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

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

выражение = простое-выражение [отношение простое-выражение]. простое-Быражение = [ -}- I - ] {терм {операция-типа-сложения терм};

терм = фактор {операция-типа-умножения фактор} 8* 227



фактор = число I строка множество обозначение [действительные na-раметры] I ( выражение ) I NOT фактор

обозначение = квалифицируем ый-идентификатор { . идентификатор 1 [ список-выражений ] f }. дейстБИтельные-параметры = ( [Список выражений] ).

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

7.1. Типы операций языка П1одула-2

Класс

Операция

Тип операндов

Арифме-

Сложение

CARDINAL, IN-

тические

TEGER

Вычитание

е., L..

Умножение

С..., I...

Деление веществен-

REAL

ных

Деление целых

С..., L..

Остаток от деле-

С..., L..

ния целых

Логиче-

Логическое ИЛИ

BOOLEAN

И

Отрицание

Операции

Объединение множеств

над мно-

Вычитание множеств

S...

жествами

Пересечениие мно-

S...

жеств

Симметричная раз-

S...

ность множеств

Операции

Равенство

отношений

#, О

Неравенство

<

Меньше или равно

(включение множест-

>

> =

Больше или равно

(включение множест-

Содержится

(принадлежит мно-

жеству)



объект является элементом какой-нибудь записи, Приведем примеры выражений:

к + т* р. Z a[i]/tt.key р OR q

zANDfORoANU NOTj (Q < = к) & (k< 100) nIN{0, 5 . . . 10, 15}

В табл. 7.1 перечислены все типы операций языка Moдyлa 2 используемые для формирования выражений.

Операции = и $t применимы не только к обычным типам, но и к множествам и указателям. Выражение вида х INS должно содержать элементе типа SET OF Т, где Т совместим с типом для х. Операция присваивания обозначается оператором := . Слева от символа := размещается обозначение, а справа - выражение. Обозначение указывает переменную, тип которой согласуется с типом выражения. Примеры присваивания значений:

i : - к

j: = I = q

1: = log 2 (г 4- О)

ЛЧп]: =d/h4- 0,23

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

Процедуры ввода-вывода содержатся в утилите INOUT, предназначенной для выполнения ввода-вывода иа стандартных устройствах ввода-вывода или последовательных файлах. Стандартными устройствами являются экран и клавиатура. Процедуры ввода-вывода могут быть связаны с файлами вызовом процедуры Open 10, которая запращивает имя файла для чтения или записи. После кы- полнеиия Close 10 процедуры ввода-вывода вновь связываются со стандартными устройствами.

Ниже приведен определяющий модуль, в котором содержатся спецификации на процедуры ввода-вывода, используемые в системе RT-11:

DEFINITION MODULE InOut; FROM SYSTEM IMPORT WORD; EXPORT QUALIFIED

Strleng, String, OpenIO, CloselO, Read,

Readint, Write, Writeint, WriteCard, WriteOct,

WriteHex, Writeln, WriteString, ShowString;

CONST Strleng = 80;

ТУРЕ String = ARRAy [O..StrLeng - 1] OF CHAR} PROCEDURE OpenIO; PROCEDURE CloselO; PROCEDURE Read (VAR ch.CHAR);

PROCEDURE Readint (VAR x : INTEGER; VAR next Charl CHAR; VAR IsNum;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