Общие сведения о языке программирования |
Тип | Описание |
integer | Целое значащее 32-битное число. По-умолчанию задание целого числа происходит в десятичном представлении (x = 15). Также доступен ввод в бинарном (x = 0b1111) и шестнадцатиричном представлении (x = 0xF) с испльзованием префиксов 0b и 0x соответственно. |
double | 64-разрядные числа двойной точности стандарта IEEE-754 с плавающей запятой и знаком. |
complex | Комплексное 128-битное число. Имеет формат вывода a±bi, где a – действительная часть, b – комплексная часть. Можно задать комплексное число также в виде (a,b). |
intarray | Массив (вектор-строка) целых чисел. |
array | Массив (вектор-строка) действительных чисел. |
carray | Массив (вектор-строка) комплексных чисел. |
matrix | Матрица действительных чисел. |
cmatrix | Матрица комплексных чисел. |
boolean | Двоичное 1-битное значение, может иметь значение 0 или 1. |
color | Цвет – эквивалентен типу integer (см rgbtocolor). |
point | Геометрическая точка – эквивалентна комплексному числу, имеет формат вывода (a,b), где a – абсцисса, b –ордината. |
string | Строка символов. |
tEnum | Перечисление - имеет несколько возможных значений, задается индексом необходимого значения в списке возможных. |
Кроме стандартных типов переменных могут быть переменные сложного типа – записи.
Запись декларируется при указании типа данных переменной в соответствии со следующим форматом:
"имя поля" 1>{:"тип поля 1"}{="начальное значение поля 1"}{…}
Пример:
var newrec :(x = 0.0, y = 0.0);
Доступ к полю сложной переменной производится при помощи оператора « -> » в соответствии со следующим форматом:
Пример:
А = newrec -> x;
Задание булевского числа:
var bool_value: boolean; bool_value = TRUE; //или FALSE
Задание целого числа в двоичном формате:
var binary_value: integer; binary_value = 0b101;
Задание целого числа в шестнадцатеричном формате:
var hex_value: integer; hex_value = 0x1F;
Задание целого числа в десятичном формате
var dec_value: integer; dec_value = 100;
Задание вещественного числа:
var real_value: double; real_value = -100.5e3;
Задание комплексного числа:
var comp_value: complex; //Точка эквивалентна комплексному comp_value = -100.5e3 + 5i; //или comp_value = (-100.5e3, 5);
Задание строки:
var str_value: string; str_value = "строка 123";
Задание вектора:
var vec: array; vec = [1, 3, 5, 7.0e1];
Задание вектора нулевой длины:
var x[], y[];
Задание целочисленного вектора:
var intvec: intarray; intvec = [2,0x4,6,0b1000];
Задание матрицы:
var m: matrix; m = [[1, 2], [3, 4]];
Задание комплексной матрицы:
var cm: cmatrix; cm = [[1 + 2i, (2, 3)], [(3, 7), 4 + 10i]];
Задание перечисляемого типа:
var z: TENUM; initialization // Присвоение перечисляемого списка для отображения z->items = "a1"+CLRF+"a2"; end; // Присвоение номера z = 1; // тоже самое другим способом z->value = 0;
В блоке "Язык программирования" доступны следующие системные переменные, касающиеся расчетного ядра:
Переменная | Тип данных | Назначение |
isgetcount | Двоичное (Boolean) | Флаг определения размерностей блока |
time | Вещественное (double) | Модельное время |
stepsize | Вещественное (double) | Шаг интегрирования |
goodstep | Двоичное (Boolean) | Флаг «хорошего» шага |
getderi | Двоичное (Boolean) | Флаг вычисления значений производных |
setstepflag | Двоичное (Boolean) | Флаг принудительного присвоения шага |
newstepvalue | Вещественное (double) | Принудительное значение шага при setstepflag = 1 |
Переменная goodstep принимает значение 1, если вычисления производятся в конечной точке шага интегрирования, и при этом удовлетворяется условие заданной точности; во всех других случаях переменная goodstep принимает значение 0. Переменная getderi принимает значение 1 при вычислении матрицы Якоби посредством численного дифференцирования; во всех других случаях переменная goodstep принимает значение 0.
Кроме описаных выше переменных расчетного ядра доступен также ряд зарезервированных переменных, содержащих значения некоторых часто используемых параметров.
BLOCKRESULT | Присваивание этой переменной единицы приведет к остановке выполнения расчета блока (в т.ч. промежуточных шагов). Может быть использована для принудительного прекращения выполнения работы модели. Доступна только в блоке типа 0985.dita#. Рекомендуется использовать для остановки на этапе расчета. Для остановки на этапе инициализации следует использовать переменную project_error_flag. |
CHANGE | Флаг принудительной перерисовки графического контейнера. |
CONTAINER_NAME | Имя графического контейнера, в котором написан скрипт. |
CONTAINER_WIDTH | Ширина текущего графического контейнера. Допускает присвоение. |
CONTAINER_HEIGHT | Высота текущего графического контейнера. Допускает присвоение. |
CURRENT_PROJECT_FILE_NAME | Имя текущего открытого файла проекта |
CURRENT_SELECTED_DATA_OBJECT | Содержит идентификатор данных объекта, выделенного в редакторе свойств. |
CURRENT_SELECTED_PROPERTY_NAME | Строковая переменная, содержит имя последнего выделенного свойства или параметра, выбранного пользователем в редакторе свойств объекта. |
DYNAMIC_PROPERTY_ITEMS | Переменная для указания через скрипт подсказки выбора (для скриптов внутри свойств блока) |
CURRENT_REG_OBJECT_ID | Идентификатор блока, из которого была вызвана форма управления. Предполагается использование в скрипте внешней (по отношению к блоку) формы управления (окна анимации). |
EDITOR_MAX_ACTIONS_COUNT | Глубина списка отмены действий (по Ctrl + Z) |
GLOBALCOLOR | Цвет фона главного окна |
GROUPCOLOR | Цвет фона группы |
IS_REG_MODE_FLAG | Переменная окна анимации, имеет значение TRUE, если окно открыто в режиме управления объектом. |
IS_PROJECT_IS_LOADING_FLAG | Переменная проекта, имеет значение TRUE, когда проект находится в состоянии загрузки из файла. Может применяться для оптимизации инициализации скриптов в моделях. |
KLINE | К-т масштабирования линий внутри контейнера |
LAST_ACTIVE_HWND | Указатель на последнее активное окно (хэндл) |
LAST_ACTIVE_PROJECT_ID | Ссылка окна последнего активного проекта |
LAST_ACTIVE_SCREEN_ID | screen_id последнего активного окна |
NOT_BRING_TO_FRONT_SELECTED_FLAG | Переменная управляет подавлением вывода объекта на передний план при выделении. Если TRUE, то объект не будет выводиться на передний план при выделении. Управление переменной можно осуществлять через меню схемного окна: Вид → Дополнительно → Не отрисовывать сверху выделенный объект. |
OBJECTID_BY_MMOVE | Переменная содержит идентификатор объекта, над которым находится указатель мыши (см. описание демо примера objectid_by_mmove.dita#) |
OLD_PROJECT_NAME | Имя предыдущего файла, загруженного в окно |
PAINTSTEP | Флаг, выставляемый при перерисовке изображения окна. |
PARENTOBJECT | Ссылка на объект-владелец контейнера (для того чтобы изнутри контейнера осуществлять операции с объектом) |
PRJINITED | Флаг, выставляемый в единицу после завершения инициализации проекта. Пока инициализация не завершена, флаг имеет значение ноль. |
PRJINITIALIZING | Флаг, выставляемый в единицу в процессе инициализации модели на расчет. Когда инициализация завершена, флаг сбрасывается в ноль. |
PROJECT_ERROR_FLAG | Общепроектная переменная, присваивание которой единицы приводит к остановке расчёта проекта. Эквивалентна использованию функции seterrorflag. Доступна только в блоке типа 0985.dita#. Рекомендуется использовать для остановки на этапе инициализации. Для остановки на этапе расчета следует использовать переменную blockresult. |
PROJECT_NO_INIT_DATAMGR_FLAG | Флаг, значение TRUE которого запрещает инициализацию meneger_dannyh.dita# менеджера данных при запуске проекта. Может быть установлен в секции initialization скрипта проекта для ускорения запуска при наличии большого колическтва элементов менеджера данных. |
REG_MODAL_FLAG | Флаг, указывающий, что эту форму надо открывать модально в режиме управления по ссылке. Используется для создания панелей управления, работающих в модальном режиме – для этого в их секции инициализации надо установить REG_MODAL_FLAG = 1. |
RESTARTSTEP | Шаг сохранения рестартов |
SELF_CONTAINER_ID | Идентификатор собственного графического контейнера |
SCALEX | К-т масштабирования контейнера по оси X |
SCALEY | К-т масштабирования контейнера по оси Y |
SCREEN_ID | Идентификатор окна редактора – произвольная строка, присваиваемая в скрипте |
SNAPSTEP | Шаг привязки объектов к сетке |
SUBMODEL | Указатель на блок-родитель субмодели |
SYSTEM_DB_ROOT | Путь хранения разлычных файлов данных, установленный для графической оболочки. |
WIRES_START_POINTS_DEFAULT_SIZE | Коэффициент масштабирования размеров точек ветвления линий связи относительно их толщины. Для каждой линии связи может быть задано индивидуальное значение в свойстве с именем StartPointSize. |