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



ЗАКЛЮЧЕНИЕ


Итак, вы познакомились с масштабированием, методами округления и аппроксимации вещественных чисел и операциями над числами с фиксированной точкой. Для того чтобы вы чувствовали себя увереннее при решении сложных математических задач, где необходимо следить за правильностью выбора масштаба в процессе решения посмотрите второй пример в гл. 12.

Как уже упоминалось, вам ничто не мешает дополнительно ввести в Форт операции над числами с плавающей точкой Но такие средства не очень подходят Форту, поскольку его достоинства - это компактность, высокая скорость выполнения программ, простота и элегантность. Он как бы «отторгает» от себя все то, что не является насущной необходимостью. Разумно используя масштабирование и числа двойной длины, вы избавитесь от дорогостоящих операций над числами с плавающей точкой.

Операции над числами с плавающей точкой имеет смысл применять в следующих случаях:

  • если вы хотите использовать ваш компьютер как калькулятор для одноразовых вычислений;
  • когда время программирования представляется более существенным фактором, нежели время выполнения вычислений в вашей программе;
  • для обработки данных в большом динамическом диапазоне (превышающем диапазон от -2 биллионов до +2 биллионов).
  • Все перечисленные доводы являются серьезными. Однако существует целый ряд систем, где вы не должны платить за возможность выполнения операций над числами с плавающей точкой.

    Ниже приводится список слов Форта, используемых в данной главе: 1+ ( n -- n+1 ) Добавление единицы.

    1- ( n -- n-1 ) Вычитание единицы.

    2+ ( n -- n+2 ) Добавление двойки.

    2- ( n -- n-2 ) Вычитание двойки.

    2* ( n -- n*2 ) Умножение на два (арифметический сдвиг влево).

    2/ ( n -- n/2 ) Деление на два (арифметический сдвиг вправо).

    ABS ( n -- |n| ) Помещение в стек абсолютной величины заданного числа.

    NEGATE ( n -- -n ) Изменение знака на противоположный.

    MIN ( n1 n2 -- min) Помещение в стек минимального из двух заданных чисел.

    МАХ ( n1 n2 -- max) Помещение в стек максимального из двух

    >R ( n -- ) Выборка значения из стека данных и занесение его в стек возвратов.

    R> ( -- n ) Выборка значения из стека возвратов и занесение его в стек данных.

    R@ ( -- n ) Копирование содержимого вершины стека возвратов без изменения его значения.

    */ ( nl n2 nЗ -- Умножение, затем деление (n1*n2/nЗ). результат ) Промежуточный результат 32-разрядный.

    */MOD ( n1 n2 nЗ -- Умножение, затем деление (n1*n2/nЗ). n-остаток n-результат) Помещение на стек остатка и частного. Для промежуточного результата используется слово двойной длины.




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