- •Языки моделирования мсэ
- •Содержание:
- •Синтаксис и семантика в sdl. Ознакомление с бнф и с синтаксическими графами
- •Оборудование
- •7 Теоретическая часть
- •7.1 Назначение языка спецификаций и описаний sdl
- •7.2 Грамматика языка sdl
- •7.3 Синтаксис языка sdl
- •7.4 Нормальная и расширенная формы Бэкуса-Наура
- •8 Практическая часть
- •Составление диаграммы блока
- •Оборудование
- •7 Теоретическая часть
- •7.1 Описание структуры блока sdl
- •Синтаксис
- •7.3 Диаграмма блока
- •7.4 Комментарии и расширение текста
- •8 Практическая часть
- •Составление диаграммы системы
- •Оборудование
- •7 Теоретическая часть
- •7.1 Описание структуры системы sdl
- •Синтаксис
- •Семантика
- •Синтаксис
- •7.3 Диаграмма системы
- •7.4 Комментарии и расширение текста
- •8 Практическая часть
- •Составление диаграммы процесса
- •Оборудование
- •7 Теоретическая часть
- •7.1 Описание динамического поведения системы sdl
- •7.1.1 Процесс
- •7.1.2 Создание и уничтожение процесса
- •8 Практическая часть
- •Составление диаграммы процедуры
- •Оборудование
- •7.1.2 Вызов процедуры
- •7.1.3 Диаграмма процедуры
- •8 Практическая часть
- •Составление матрицы состояние/сигнал
- •Оборудование
- •7.1.2 Матрицы состояний/сигналов
- •8 Практическая часть
- •Ознакомление с языком mml
- •Оборудование
- •7 Теоретическая часть
- •7.1 Язык диалога mml
- •7.2 Язык диалога axe-10
- •8 Практическая часть
- •Разработка программ на языке chill
- •Оборудование
- •7 Теоретическая часть
- •7.2 Основные понятия
- •7.2.1 Значения и их типы
- •7.2.2 Имена объектов программ
- •7.2.5 Оператор присваивания
- •7.2.6 Области памяти с режимом «только для чтения»
- •7.2.7 Выражение
- •7.2.8 Константы
- •7.3 Структура программ
- •7.3.1 Обозримость и время жизни объектов программы
- •7.3.2 Модули
- •7.3.3 Блоки
- •7.3.4 Процедуры
- •7.3.5 Процессы
- •7.4 Пример технологической программы
- •8 Практическая часть
7.2.5 Оператор присваивания
Оператор присваивания является наиболее употребимым при написании программ. С помощью этого оператора вновь вычисленное значение запоминается в области памяти. Знаком операции присваивания является «:=». Присваивание является двухместной операцией .
Слева от знака «: = » располагается область памяти, представленная именем, справа – значение, которое должно быть ей присвоено. В общем случае присваиваемое значение может быть задано выражением, вычисляющим значение требуемого типа. Действие оператора присваивания заканчивается знаком «;».
Значения могут быть получены с помощью выражений. Приведем несколько простейших примеров присваиваний:
-
X:=10; /* ОБЛАСТИ ПАМЯТИ X ПРИСВАИВАЕТСЯ КОНКРЕТНЫЙ ЛИТЕРАЛ */
-
Y:=X; /* ОБЛАСТИ ПАМЯТИ Y ПРИСВАИВАЕТСЯ ЗНАЧЕНИЕ, ХРАНЯЩЕЕСЯ В X */
-
J:=J+1;
-
НОМ:= ВВОД_НОМ ( );
Смысл операций в строках 1 и 2 раскрыт в комментариях. В строке 3 области памяти J присваивается значение, которое является результатом вычисления арифметического выражения. Конкретно в строке 3 к содержимому области памяти с именем J прибавляется единица. В дальнейшей программе именно это новое значение будет фигурировать под именем J. В строке 4 области памяти НОМ присваивается значение, полученное в результате выполнения процедуры ВВОД_НОМ ( ). Здесь и в ряде примеров, приводимых ниже, используются значения, полученные в результате выполнения процедур. Значения могут быть получены с помощью процедур.
При использовании оператора присваивания необходимо помнить, что тип, заданный оператором описания для области памяти слева от «: = », должен совпадать с типом присваиваемого значения.
В CHILL предусмотрена возможность производить присваивания начальных значений областям памяти одновременно с их описанием.
Например:
-
DСL НОМ_ЛИН INT : = 0;
-
DСL X,Y,Z BOOL: = TRUE;
В строке 5 области памяти, описываемой именем НОМ_ЛИН имеющей тип INT, присвоено нулевое начальное значение. В строке 6 каждой из областей памяти X, Y, Z булевского типа присвоено начальное значение TRUE.
7.2.6 Области памяти с режимом «только для чтения»
Совмещение описания областей памяти с одновременной инициализацией используется также для создания специфической области памяти, из которой допускается только считывание значений. Попытка записи в нее блокируется, при этом выдается сообщение об ошибке. Создание области памяти с режимом «только для чтения» обеспечивается словом READ, которое следует поместить непосредственно перед указанием типа. Например:
DCL ЧИСЛО_ЛИНИЙ READ INT : = 100 000;
Описанную таким образом область памяти, предназначенную только для чтения, рекомендуется использовать в тех случаях, когда вычисленное один раз значение заданного типа, запоминаемое в области памяти, не должно меняться. Режим «только для чтения» может быть реализован не только для трех рассмотренных простейших типов INT, BOOL, CHAR, но и для других, определяемых в CHILL типов.
7.2.7 Выражение
Выражение предназначается для вычисления нового значения по исходным другим значениям с помощью операций. Операции могут быть одноместными и двухместными. Значения, участвующие в операции, называются операндами. В двухместных операциях участвуют два операнда: один слева от знака операции, другой справа. В одноместной операции участвует один операнд, расположенный справа от знака операции.
В простейшем случае выражением может являться: некоторое знамение – литерал, область памяти, заданная именем, одноместная или двухместная операция.
В CHILL предусмотрены следующие стандартные операции:
-
арифметические операции;
-
операции отношения;
-
булевские (или логические) операции;
Из вышеприведенного следует, что во всех случаях использования двухместных операций оба операнда должны принадлежать одному и тому же типу. Выражение, с помощью которого производится вычисление значения, может быть достаточно сложным. В нем может быть использовано несколько операций, обращение к подпрограмме, выражение в скобках. Поэтому (как и в математике) определен порядок очередности выполнения операций, задаваемый приоритетами операций. Операция с более высоким приоритетом выполняется раньше.
Из приведенного следует, что наивысшим приоритетом из числа приведенных обладают одноместные операции арифметического и логического отрицания (– (минус) и NOT), но еще более высоким приоритетом обладает скобочная конструкция, поэтому во всех сомнительных случаях или для того, чтобы нарушить правила приоритета, следует использовать скобки, пример I* (X + J), операция «+» заключена в скобки, позволяет выполнить сложение X и J раньше, чем операцию умножения, имеющую более высокий приоритет.
В CHILL кроме различных операций определены следующие стандартные функции (встроенные подпрограммы):
ABC (X) – вычисляет абсолютное значение.
PRED (X) – результатом является предшествующее X значение упорядоченного ряда, если оно существует, например результатом PRED (С) с учетом строки 4 является значение
'Е';
SUCC (X) – результатом является следующее за X значение упорядоченного ряда, если оно существует, например результатом SUCC (С) является значение 'G';
NUM (X) – результатом является порядковый номер (X) в упорядоченном ряде.
Аргументами стандартных функций PRED, SUCC и NUM могут являться значения любого упорядоченного типа.
Очевидно, что в результате выполнения функций PRED и SUCC получается значение, принадлежащее к тому же типу, что и аргумент, в то время как результатом выполнения функции NUM являются целочисленные значения.
Следует также отметить, что функция PRED (X) невыполнима, если аргументом является наименьшее значение упорядоченного ряда, а функция SUCC (X) невыполнима, если аргументом является наибольшее значение упорядоченного ряда.