ПрагмаСофтСтудия 2.1
В окнах Прорисовка и Функции есть возможность создать один интересный элемент. Он универсальный и подходит для вызова сразу трёх сущностей проекта: функции прорисовки, функции вычисления и вычислительного узла. В рамках одной задачи имена функций и узлов, а также входных и выходных переменных уникальны. Это даёт возможность программе определить, что необходимо вызвать, просто, по заданному имени. Например, вы указываете имя функции прорисовки, и программа пытается интерпретировать вашу запись именно, как вызов функции прорисовки.
Синтаксис вызова для всех трёх случаев приведён ниже.
name([in1[,…]])
name([in1[,…]])(out)
name([in1[,…])(out1[,…])
Параметр name – это имя, вызываемой функции или узла. in1 – это входное значение, передаваемое в функцию или узел. out и out1 – выходное значение, возвращаемое из функции или узла.
В качестве входных значений может использоваться любое формульное выражение так же, как и число, строка, константа, имя входной, выходной или локальной переменной с указанием индекса или без. В качестве выходных значений может выступать имя локальной или выходной (только для дерева Прорисовка) переменной с указанием индекса или без. Индекс, как обычно, допустимо задавать не только непосредственным значением, но и формульным выражением.
Функции прорисовки не возвращают значений, поэтому при их вызове указывается только одна пара круглых скобок с входными параметрами или без них.
В квадратные скобки заключены необязательные параметры. Это означает, что может быть одно, два и более входных значения, или не быть их вовсе, и круглые скобки останутся пустыми. В случае вычислительного узла минимум одно выходное значение должно быть указано всегда. Всё это зависит от того, сколько входных и выходных параметров было задано при создании функции или узла.
Попробуем создать вызов функции или вычислительного узла. Нажмите правой кнопкой мыши на каком-либо элементе дерева окна Прорисовка, появится контекстное меню.
Место, где будет создан вызов зависит от того, на каком элементе вы нажали при вызове контекстного меню. Нажатие на элементе проекта , задачи
или группы
, создаёт формулу в виде последнего, самого нижнего дочернего элемента в ветви проекта
, задачи
или группы
, соответственно. В остальных случаях формула создаётся последней в той же ветви, что и выделенный элемент.
Далее, в контекстном меню выберите опцию Добавить вызов функции или узла..., откроется окно Создание нового вызова функции или вычислительного узла. Предположим, мы ввели в его поле редактирования следующий текст.
В данном случае это будет означать не только по имени, но ещё и по цветовой подсветке, что мы собираемся вызвать вычислительный узел Node. Далее идут две пары круглых скобок, соответственно, с входными и выходными параметрами.
Входных аргумента три. Первый передаётся, как абсолютное значение локальной переменной val1. Второй аргумент извлекается из массива локальной переменной val2 по индексу получаемому в результате вычисления выражения max(0,i). Далее, значение входной переменной val3 обрамляется фигурными скобками. Полученная строка передаётся в качестве третьего входного параметра.
Выходных параметра два. После отработки вычислительного узла первое выходное значение будет записано в локальную переменную res1. Второе - в выходную переменную res2 по индексу 1, т.е. во второй элемент её массива.
Нажатие на кнопку OK внизу окна заканчивает создание вызова функции или вычислительного узла. В дереве рабочего окна в конце родительской ветви появится новый элемент. Внутри корневой ветви элемента задачи это могло бы выглядеть примерно так.
Для наглядности промежуточные элементы выше формулы удалены. Вспомогательная пиктограмма означает, что этот элемент является вызовом функции или вычислительного узла, а метка
, что элемент в данный момент активен и участвует в работе проекта.
Как было сказано выше, данный вид формул создаётся и в дереве окна Функции. В этом случае формула должна размещаться в приделах элемента функции. Иначе говоря, она должна быть потомком элемента с пиктограммой или
.
Функция вычисления не может производить прорисовку графики. Это означает, что она не только не может содержать примитивов, но и вызов функции прорисовки
для неё также запрещён. Элемент
, созданный внутри функции вычисления
, может выполнять только вызов функции вычисления
или вычислительного узла
.
Вызов функции или вычислительного узла имеет 5 свойств. Они отображаются в окне Свойства, как отдельные строки, и называются полями. Чтобы их увидеть, выделите элемент формулы в дереве. При этом для описанного выше выражения окно Свойства будет иметь следующий вид.
Ниже приведено описание полей свойств формулы.
Выражение |
Поле содержит выражение вызова функции или вычислительного узла. Текст выражения можно вводить непосредственно в правую часть поля. Но удобнее это делать в отдельном специально предназначенном для этого окне. Чтобы его увидеть, выделите поле и нажмите на кнопку |
Описание |
Поле позволяет пользователю задать любой произвольный текст, который с его точки зрения как-то характеризует формулу. Это может быть описание действий, которые совершает формула, назначение её переменных, вида и особенностей выходного результата и т.д.. Если поле выделено, то в его правой части отображается кнопка Описание формулы также приводится в виде одиночной строки во втором столбце дерева справа от элемента формулы. Если описание многострочное, то его строки объединяются в одну. |
Активность |
Активность формулы определяется состоянием данного поля. В целом активность - это участие формулы в процессе моделирования, генерации документации и программного кода, а также во всём, что с этим связано. Отсутствие активности равносильно отсутствию самой формулы в проекте. Значение поля Есть устанавливает метку Чтобы изменить активность формулы, выделите данное поле и нажмите кнопку |
Рисунок при документогенерации |
Поле разрешает или запрещает |
Конечный элемент |
Это свойство появилось для поддержания функциональности одного из созданных нами генераторов документации. В его идеологии, многие элементы деревьев могут помечаться, как конечные |