Составители:
типов происходит в процессе инициализации модели и устанавливает для
каждого порта актора конкретный тип данных, которые он воспринимает,
исходя из информации о зависимостях между типами данных портов,
декларируемой акторами. Ограничения, накладываемые на порт, могут быть
менее строгими, чем указание его конкретного типа, благодаря возможности
преобразования данных одних типов к другим (рис. 1.6).
Например, ограничение на порт может заключаться в том, что тип данных,
которые он воспринимает, может быть больше или равен конкретному типу. Под
«больше» понимается то, что данный тип соединен нисходящим путем в графе
на рис. 1.6. В случае несоответствия ограничениям, то есть невозможности
разрешения типов, инициализация модели завершается с ошибкой. Ошибка
может быть устранена вручную.
В Ptolemy II разработан довольно мощный язык выражений, позволяющий
не только выполнять математические операции над данными, получая значение
результата, но и создавать переменные различных типов, в том числе и
произвольных составных, выполнять преобразования типов, выполнять
сложные встроенные процедуры обработки данных и создавать собственные,
производить ввод/вывод и управлять вычислительным процессом. В языке
выражений предусмотрен набор стандартных именованных констант, которые
могут быть использованы в выражениях. Это числовые константы: PI, pi, E, e,
true, false, i, j, NaN, Infinity, PositiveInfinity, NegativeInfinity, MaxUnsignedByte,
MinUnsignedByte, MaxInt, MinInt, MaxLong, MinLong, MaxDouble, MinDouble; и
строковые константы PTII, HOME и CWD. Эти константы имеют заранее
определенное значение. Константы с другими значениями могут быть
определены с помощью литералов, задающих как значение, так и (либо явно,
либо неявно) тип константы. Например, 2.0 даст константу типа double, 2i (или
2j) даст константу, имеющую тип complex. Константы составных типов также
задаются с помощью литералов:
• массивы с использованием фигурных скобок с элементами, разделяемыми
запятыми, например: {2, 3, 4, 5};
• матрицы задаются с помощью квадратных скобок и разделения столбцов
запятыми, а строк знаками ‘;’, например: [1,2,3; 4,5,6] – матрица из двух
строк и трех столбцов. В языке выражений также поддержан способ задания
матриц в стиле MATLAB ([p:q:r]);
• записи задаются с помощью фигурных скобок, в которых перечислены
имена полей и их значения, например: {first_name = ”Edward”, data = {0, 1,
2}, associated_record = {a = 1, b = 2 + PI * j}}.
В языке выражений предусмотрено задание переменных и функций с
произвольными именами. Операции, предусмотренные в языке выражений,
включают как алгебраические (над числами, строками, массивами, записями и
матрицами), так и логические: сравнения, побитовые (&,|,~,#,>>,<<),
преобразования типов и условного вычисления (‘ ? : ’). Также в языке
33
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »
