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



         

Глава 4. Еще об арифметических операциях - часть 6


В связи с необходимостью преобразования программ, написанных на Форт-79, в стандарт Форт-83 нужно иметь правила или алгоритм преобразования результата обычного деления в результат деления с округлением по нижней границе. Проще всего представить этот алгоритм, определив два слова на языке Форт. На Форт-79 слово : FL/ /MOD SWAP IF DUP 0 < IF 1- THEN THEN ; будет выдавать частное с округлением по нижней границе при делении чисел в соответствии со стандартом Форт-79- Вам еще не приходилось обращаться с некоторыми словами, использованными в данном определении, но их нетрудно понять. Выражение /MOD SWAP выдает частное и остаток и переставляет остаток на вершину. Если слово IF обнаруживает положительное число, т.е. остаток не равен 0, исполняются слова, которые следуют за IF до второго оператора THEN. В этом случае частное дублируется на вершине стека и сравнивается с нулем с помощью оператора

Освоив стековые манипуляции в гл. 2, вы можете заметить, что частное и остаток деления с округлением по нижней границе можно найти по аналогии со словом /MOD с помощью : FL/MOD 2DUP FLMOD ROT ROT FL/ ;

Следует подчеркнуть, что данные определения работают очень медленно по сравнению с теми определениями на языке ассемблера, которые введены в Форт-83. И ими нужно пользоваться только в случае крайней необходимости.

Упражнения

1. Проделайте в уме следующие примеры, используя компьютер только для проверки ответов. Найдите остаток и частное при "обычном" делении и делении с округлением по нижней границе: (а) 10/2 (б) 0/2 (в) 11/3 (г) -11/3 (д) 11/-3 (е) -11/-3 (ж) -10/2 (з) 10/-2 (и) -10/-2 (к) -10/0 2. Имеется текст из нескольких сотен литер, расположенный в строчках по 50 символов в строке. Напишите слово для вычисления номера строки, в которой находится 112-я литера. (Не забудьте, что вы работаете в целочисленной арифметике.) 3. Используя слово MOD, определите слово для вычисления количества символов, предшествующих 112-му символу в той строке, где он находится. 4.


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