High Arsen Gonian Academy. Arsen Gonian
Чтение книги онлайн.

Читать онлайн книгу High Arsen Gonian Academy - Arsen Gonian страница 3

Название: High Arsen Gonian Academy

Автор: Arsen Gonian

Издательство: Автор

Жанр:

Серия:

isbn:

isbn:

СКАЧАТЬ так тоже можно.

      Пример 3. По сторонам прямоугольника нужно вычислить его Площадь и Периметр:

      : B3 ( A B -> S P ) \ ( S=A*B P=2*(A+B) )

      2DUP ( A B -> A B A B )            \ Слово 2DUP, дублирует сразу два числа

      * ( A B A B -> A B A*B=S )      \ Площадь вычислен – это просто произведение сторон

      ROT ROT ( A*B=S A B ) \ оператор ROT вытаскивает 3-ий от вершины параметр на вершину

      \ применив его два раза на вершине мы получаем A B и вычисленный под ним Площадь

      + 2* ; \ складываем A и B, и умножив на 2, оператором 2*, получаем периметр

      Слово «2*» делает тоже самое что и два слова «2 *», только короче и проще.

      В итоге на стеке мы получаем Площадь и Периметр. Чтобы напечатать результаты на экран из примеров нужно просто ввести точку с клавиатуры «.» и затем нажать «Enter». Сначала напечатается вершина, т. е. периметр, в данном примере, затем повторив действия площадь. Чтобы изменить порядок печати, можно набрать слово SWAP, который меняет местами 2 числа на вершине стека ( A B -> B A), т.е., например чтобы вычислить площадь и периметр прямоугольника со сторонами 1 и 2 введём следующее:

      1 2 B3 SWAP . .

      2 6 Ok

      Площадь равна 1*2=2, а периметр равен 2*(1+2)=6. Слово работает корректно и вычисляются площадь и периметр соответственно стековой нотации, а выводятся по условию задачи.

      Пример 4. Нужно вычислить длину круга зная его диаметр:

      : B4 ( D -> L ) 314 * ; \ L=Pi*D*100

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

      S" lib\include\float.f" INCLUDED

      S" lib\include\float2.f" INCLUDED

      Но можно только вторую строчку.

      Теперь чтобы ввести вещественное число, скажем 0,5, нужно набрать на клавиатуре следующее:

      5E-1

      До E – это мантисса (число), после экспонента (степень). Мантисса и экспонента могут быть как положительными (знак не требуется), так и отрицательными (в данном случае степень -1, что значит 10 в минус первой степени).

      После ввода, вещественное число размещается на соответствующем ей стеке, поэтому мы не видим его после вывода слова Ok в скобках, так как это другой стек для целых чисел. Чтобы его увидеть нужно ввести «F.». Итак, чтобы проверить, что всё работает как надо, введём код:

      5E-1 F.

      В ответ увидим:

      0.5000000 Ok

      Слово «F.», аналогично, как и «.» выводит число на экран, только не с целочисленного стека, а с вещественного.

      Теперь мы можем переписать пример 4 для вещественных аргументов:

      : B4 ( D -> L )            \ L=Pi*D

      314E-2 F* ;

      Посчитаем длину окружности диаметром 0,5, набрав следующее:

      5E-1 B4 F.      \ вызываем слово, которое считает длину и «F.» печатает ответ

      1.5700000 Ok

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

      Пример СКАЧАТЬ