И снова здравствуйте! Спасибо всем тем кто откликнулся. К сожалению код на Си остался в аудитории { забыл его забрать, да если честно я его сам полностью и не сделал (-:, но если найду то обязательно запостю. }
На форте значит алгоритм вычисления корня из целого числа выглядит так? {Кстати, мы "программим" под линуксом -> консоль -> gforth. В Gforth этот код сработает?}
: SQRT ( n -- s ) DUP 2 < IF 0 MAX EXIT THEN
DUP 2/ ( -- n s )
BEGIN 2DUP / OVER ( -- n s n/s s )
+ 2/ ( -- n s s' )
SWAP OVER ( -- n s' s s' )
- ABS 2 < UNTIL NIP ;
А без комментов, чтобы никто не догадался, так.
: SQRT
DUP 2 < IF 0 MAX EXIT THEN
DUP 2/
BEGIN 2DUP / OVER
+ 2/
SWAP OVER
- ABS 2 < UNTIL NIP ;
Еще бы понять, что тут деляется. Что есть
DUP 2 < IF 0 MAX EXIT THEN <-- если ноль то выход?
- ABS 2? <-- - модуль зачем ?
NIP <-- что есть NIP?
Наглость, конечно, но написали бы мне-балбесу членораздельное предложение, как ответить на провакоционный вопрос преподавателя "Ну и объясни как это работает?". (-:
Anonymous писал(а):
dream писал(а):
А тут сессия подходит. Препод решил приобщить к "правильному программированию" и рассказал про Forth.
А оный препод этот форум не читает?
Если это не Вы, Евгений Александрович, то надеюсь, что нет...