High Arsen Gonian Academy. Arsen Gonian

Читать онлайн.
Название High Arsen Gonian Academy
Автор произведения Arsen Gonian
Жанр
Серия
Издательство
Год выпуска 2023
isbn



Скачать книгу

оставляет количество его элементов, не считая возвращаемый параметр.

      Теперь перепишем Пример 6 для вещественных чисел.

      : B6 ( A B C -> S V )      \ S=2*(A*B+B*C+A*C) V=A*B*C )

      FOVER FOVER F+      \ A B C -> A B C (B+C)

      FROT FROT F*            \ A B C (B+C) -> A (B+C) B*C

      FROT                  \ A (B+C) B*C -> (B+C) B*C A

      FOVER FOVER F*      \ (B+C) B*C A -> (B+C) B*C A B*C*A

      F.                  \ 1-ый результат – объем

      FROT F* F+ 2.E F*      \ (B+C) B*C A -> B*C+A*(B+C)

      F.                  \ 2-ой результат S=2*(A*B+B*C+A*C)

      ;

      Теперь можно проверить как работает написанное слово:

      1E-1 2E-1 3E-1 B6

      0.0060000 0.2200000 Ok

      Объем прямоугольного параллелепипеда 0,006=0,1*0,2*0,3 и площадь его поверхности 0,22=2*(0,1*0,2+0,2*0,3+0,1*0,3).

      Пример 7. Зная радиус окружности, посчитаем его длину и площадь.

      : B7 ( R -> L S)            \ L=2*Pi*R и S=Pi*R^2

      DUP 2* 314 *      \ R -> R R*2*314=L

      SWAP            \ R L -> L R

      DUP 314 * *      \ L R -> L R*R*314=S

      ;

      Целочисленный вариант принимает целое значение радиуса и выдает результат в 100 раз больше. Надеюсь по комментариям стековой нотации работа слова понятна (она довольно тривиальна).

      Код для вещественного аргумента:

      : B7 ( R -> L S)                  \ L=2*Pi*R и S=Pi*R^2

      FDUP 2E F* 314E-2 F*      \ R -> R 2*Pi*R=L

      FSWAP                  \ R L -> L R

      FDUP 314E-2 F* F*      \ L R -> L R*R*3.14=S

      ;

      Вычислим длину окружности и площадь круга радиусом 0,1:

      1E-1 B7 F. F.

      0.0314000 0.6280000 Ok

      0.0314000=0,1*0,1*3,14 и 0.6280000= 2*3,14*0,1. Результаты теста корректны.

      Пример 8. Простая задачка на вычисление среднего арифметического двух целых чисел:

      : B8 ( A B -> [A+B]/2 ) + 2/ ;

      1 3 B8

      Ok ( 2 )

      Мини-код работает правильно (1+3)/2=2. Ниже приведем код для вещественного аргумента:

      : B8 ( A B -> [A+B]/2 )

      F+ 2E F/ ;

      1E-1 2E-1 B8 F.

      0.1500000 Ok

      0.15 = (0.1+0.2)/2 – ИСТИНА

      Пример 9. Среднее геометрическое двух чисел – это квадратный корень из их произведения. Сразу напишем код для вещественного аргумента, так как возможности извлечение корня для целых чисел в системе SP-Forth нет, для этого придётся переводить целое число в вещественное извлечь квадратный корень, затем перевести обратно в целый вид, поэтому здесь такие хлопоты не оправданы, но если где-то вам это понадобится, то такое возможно.

      : B9 ( A B -> SQRT[A*B] )

      F* FSQRT ;

      Очень короткий и понятный код, который тестируем ниже:

      3E-1 75E-1 B9 F.

      1.5000000 Ok                  \ 1,5 = Корень_Квадратный_из(0,3*7,5) – ИСТИНА

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

      : MIDDLE_ARITHMETIC ( A B -> [A+B]/2 )      F+ 2E F/ ;

      : MIDDLE_GEOMETRIC ( A B -> SQRT[A*B] )      F* FSQRT ;

      За грамотные английские названия не ручаюсь.

      Пример 10. Вход два числа, не равные нулю. Вычислим сумму, разность, произведение и частное их квадратов, те есть:

      : B10 ( A B -> A^2+B^2 A^2-B^2 A^2*B^2 A^2/B^2 )

      SWAP DUP * SWAP DUP *      \ A B ->A^2 B^2

      2DUP +                        \ A^2 B^2 -> A^2 B^2 (A^2+B^2)

      ROT ROT 2DUP –            \ A^2 B^2 (A^2+B^2) -> (A^2+B^2) A^2 B^2 (A^2-B^2)

      ROT ROT 2DUP *            \ (+) A^2 B^2 (-) -> (+) (-) A^2 B^2 (A^2*B^2)

      ROT ROT /                  \ (+) (-) A^2 B^2 (*) -> (+) (-) (*) (A^2/B^2 )

      ;

      Протестируем на числах 4 и 2.

      4 2 B10

      Ok ( 20 12 64 4 )

      Всё