Порядок вычислений

<< Click to Display Table of Contents >>

Navigation:  Проект > Элементы дерева объектов > Объекты >

Порядок вычислений

Общие сведения:

Все объекты с точки зрения организации порядка вычислений подразделяются на два типа: имеющие собственный цикл вычислений и не имеющие собственного цикла вычислений. Объекты первого уровня (помещенные в главный) всегда имеют собственный цикл.

1. Объекты, имеющие собственный цикл вычисляются независимо от родительского объекта.

А

Б

Proekt_Elementi_dereva_objektov_Objekty_sv_ob_3

Proekt_Elementi_dereva_objektov_Objekty_sv_ob_4

Порядок вычислений в обоих случаях один и тот же - все три объекта имеют разные циклы вычислений, которые работают параллельно и независимо. Порядок следования объектов (имеющих собственный цикл) в дереве не имеет значения.

2. Объекты, не имеющие собственного цикла вычислений вычисляются последовательно сверху вниз в цикле своего родительского объекта.

А

Б

Proekt_Elementi_dereva_objektov_Objekty_sv_ob_5

Proekt_Elementi_dereva_objektov_Objekty_sv_ob_6

В этом случае гарантирован порядок вычислений последовательно сверху вниз для объектов и функциональных блоков, расположенных на одном уровне иерархии.

При разработке объекта необходимо учитывать этот порядок, особенное внимание обращая на связи с вышестоящими элементами.

Пример:

представим себе, что необходимо произвести вычисления по формуле (А + В) х С.

1) правильно

2) не правильно

Proekt_Elementi_dereva_objektov_Objekty_poriad3

Proekt_Elementi_dereva_objektov_Objekty_poriad4

На первый взгляд результат в обоих случаях один и тот же: значения А и В - слагаемые, сумма - первый множитель, значение С - второй множитель. Если бы это были константы, то все бы так и было.

Но если значения А и В - обновляются с каждым опросом (циклом), получается следующее: сначала вычисляется произведение. Считываются данные входа Множитель0 и Множитель1, но Сумма еще не вычислялась и на входе Множитель0 находится значение, вычисленное Суммой за предыдущий! цикл. Поэтому, чтобы получить корректную работу формулы, необходимо чтобы Сумма стояла выше, чем Произведение.