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

используется зарезервированные слова VARIABLE и FVARIABLE. Первое для целых чисел, второе для вещественных. Если кто-то не знает, что такое переменная, то это просто участок памяти, в которое записывается значение (число для целых переменных, текст для строковых или их комбинация для структур), считывается или изменяется. На самом деле любые данные, неважно что: простые переменные, структуры или даже файлы, все они кодируется исключительно числами, причем в двоичном формате (нуликами и единицами).

      Создадим две переменные

      FVARIABLE FVAR      \ FVAR переменная вещественного типа

      VARIABLE VAR            \ VAR переменная целого типа

      Теперь инициализируем эти переменные, то есть присвоим начальное значение.

      1234E-2 FVAR F!

      Ok

      4552249 VAR !

      Ok

      Код «1234E-2» нам уже знаком, он просто переносит число «1234E-2» в вещественный стек, FVAR оставляет адрес вещественной переменной с этим именем, и в итоге «F!» – записывает значение в адрес. Целочисленное присвоение выглядит по проще, но суть та же. Сначала число идет в стек. Слово VAR также оставляет адрес целочисленной переменной на стеке. А записывает значение по адресу оператор «!» – восклицательный знак. А считывает – «F@» и «@» соответственно. Теперь считаем и выведем на экран значения созданных и инициализированных выше переменных.

      VAR @ .

      4552249 Ok

      Оператор «.» – точка, печатает на экран целочисленное число, а «F.» – вещественное. Вы можете заметить логику Форта по названию операторов, добавив большую букву «F», многие операции становятся применимы к вещественным операндам. Покажем вышесказанное на примере вывода значения вещественной переменной.

      FVAR F@ F.

      12.340000 Ok

      VAR и FVAR – это просто названия, они могут быть любыми – это просто удобное обозначение в стиле Форта. Теперь можем приступить к очередной задачке.

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

      FVARIABLE FX1

      FVARIABLE FY1

      FVARIABLE FX2

      FVARIABLE FY2

      FVARIABLE FX3

      FVARIABLE FY3

      FVARIABLE FA

      FVARIABLE FB

      FVARIABLE FC

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

      FVARIABLE FX1 FVARIABLE FY1 FVARIABLE FX2 FVARIABLE FY2 FVARIABLE FX3 FVARIABLE FY3

      FVARIABLE FA FVARIABLE FB FVARIABLE FC

      : B21 ( X1 Y1 X2 Y2 X3 Y3 -> P S )      \ P=(A+B+C)/2 S=SQRT{P*(P-A) *(P-B) *(P-B)}

      FY3 F! FX3 F! FY2 F! FX2 F! FY1 F! FX1 F!            \ FX1 FY1 FX2 FY2 FX3 FY3 ->

      FX1 F@ FY1 F@ FX2 F@ FY2 F@ B20 FDUP FA F!      \ A

      FX2 F@ FY2 F@ FX3 F@ FY3 F@ B20 FDUP FB F!      \ A B

      FX1 F@ FY1 F@ FX3 F@ FY3 F@ B20 FDUP FC F!      \ A B C

      F+ F+ FDUP                                    \ A+B+C=P P

      2E F/                                          \ P (A+B+C)/2=p

      FDUP FA F@ F-                                    \ P p p-A

      FOVER FDUP FB F@ F-                              \ P p p-A p p-B

      FSWAP FC F@ F-                              \ P p p-A p-B p-C

      F* F* F* FSQRT                                    \ P SQRT{p*(p-A)*(p-B)*(p-C)}=S

      ;

      Строка №1 название слова с комментариями.

      Вторая – сохранение координат в соответствующих переменных.

      С третьей по пятую – вычисление сторон треугольника с сохранением в переменных A, B, C. Здесь мы не высчитаем расстояния между точками

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