Блок Стек

_images/fbd_block_STACK.png

Описание: Блок функции “Стек” сохраняет массив переменных заданного типа данных. Максимальное количество значений в стеке (размер массива) указывается в свойстве «Размер» блока (см. ниже “Свойства блока”). Значения записываются и считываются по принципу «первый вошел – последний вышел».

На вход val подается значение, записываемое в стек.

На вход push (команда «втолкнуть») для записи значения со входа val нужно подать значение 1 в течение 1 шага работы схемы. Записываемое значение становится «вершиной стека», ранее записанные значения сдвигаются вниз, а количество значений в стеке, отображаемое на выходе depth, увеличивается на 1.

Вход pop (команда «вытолкнуть») используется для возврата к предыдущему записанному значению (оно становится «вершиной стека»), при этом текущее значение «вершины стека» стирается, а количество значений в стеке, отображаемое на выходе depth, уменьшается на 1.

Внимание! Если выход, подключенный ко входу push (также, как и ко входу pop), выдает неизменные 1 в течение некоторого интервала времени, блок будет выполнять команду каждый шаг. Если нужно выполнять команду по фронту подаваемого сигнала, нужно установить соответствующим образом свойство входа “Тип входа”.

Выход top выдает значение “вершины стека”, если стек пустой – значение 0. Выход depth выдает количество значений в стеке, оно не может быть больше указанной «максимальной глубины» стека.

Выход err выдает признак ошибки - если подана команда push при полностью заполненном стеке (push = 1 и depth = «макс. глубина»), или если подана команда pop при пустом стеке (pop = 1 и depth = 0). При выдаче err = 1 состояние стека не меняется.

Свойства блока: (ПКМ по блоку - Свойства ( Alt + P ))

Общие свойства: см. Редактирование свойств блока.

Тип данных: допускаются любые типы данных из предложенных.

Макс. глубина: в данном пункте устанавливается предельное количество значений в массиве, которые могут быть записаны в стек.