Начальный курс программирования на языке Форт

         

МАНИПУЛЯЦИИ СО СТЕКОМ


Если вы пытались решить задачу 6 в последнем упражнении, то вам уже ясно, что выражение в инфиксной форме a - b ----- c

нельзя преобразовать в форму определения Форта без того, чтобы каким-то образом не поменять местами значения в стеке. «Каким-то образом» — это значит, что вы должны выполнить операцию преобразования стека, а именно перестановку SWAP.

1 Для тех, кто имеет склонность к математике. Хотите верьте, хотите нет, но в информатике мы сталкиваемся с противоречиями при решении даже такой простой задачи, как «—32 разделить на 7». Результатом может быть либо —4 при -остатке -3 (-4 х 7 = -28; -28 + — 3 = 31), либо -5 при остатке 4 (-5 х 7 = -35; -35 + 4 = 31). Группа по разработке стандарта Форт-83 приняла решение о том, что при выполнении операций деления частное не должно округляться. Иными словами, дзух целых чисел, между которыми находится дробное частное, выбирается меньшее. В нашем примере -5 меньше, чем -4, поэтому выбирается -5. При делении без округления частного знак остатка совпадает со знаком делителя. Таким образом, если мы делим -31 на 7 в среде Форт-83, то получаем частное -5 и остаток 4, Это правило относится к делению чисел со знаком и не приводит к противоречиям в окрестности нуля.



Содержание раздела