Язык программирования Форт



         

Слова для манипуляций в стеке - часть 3


Нетрудно догадаться по названию, что слово DUP (по-англ. "DUPlicate " -- копировать) делает копию верхнего элемента стека.

9 DUP .S

приводит к тому, что в стеке окажется

9 9 ok

Слово DUP, пожалуй, одно из наиболее часто употребляемых слов для манипуляций в стеке. Вы встречались с ним в одном из упражнений . Часто программе требуется одно и то же значение несколько раз. Слово SWAP также, судя по названию (от swap -- обменивать), переставляет местами два верхних элемента стека. Если ввести

3 18 .S

вы получите на экране

18 3 ok

что особенно полезно, если нужно сделать операцию вычитания или деления, но операнды стоят в неправильном порядке. После слова DUP оно применяется наиболее часто. Однако не допускайте, чтобы это сделало вас ленивым. Иногда проще применить слово SWAP перед операцией деления или вычитания вместо того, чтобы заранее предусмотреть в программе требуемый порядок следования чисел в стеке. Использование SWAP может ускорить составление программы, но на этапе исполнения увеличит время работы программы.

Действие слова OVER не очевидно из его названия (через). Попробуйте ввести

1 2 OVER .S

и вы увидите

1 2 1 ok

Можно понять, что второе число в стеке было скопировано на вершину стека. Другими словами, OVER как бы заставляет второй элемент стека "перепрыгнуть" через первый элемент на вершину. Оно очень похоже на слово SWAP, но в отличие от него не удаляет второй элемент стека. Слово может быть полезно во многих случаях, когда какое-либо число должно быть использовано несколько раз. В следующем примере дублируются два верхних элемента стека:

1 2 OVER OVER .S

при этом получается

1 2 1 2 ok

Дублирование двух верхних элементов стека очень полезно, когда в стеке нужно оставить для последующего использования два числа. Предположим, что вам нужно вывести на экран одновременно и сумму, и произведение чисел 5 и 7.

5 7 OVER OVER + . *

выдает в результате

12 35 ok

Конструкция OVER OVER полезна также для сравнения двух чисел.


Содержание  Назад  Вперед