Библиотека knigago >> Компьютеры: Языки и системы программирования >> Forth >> Руководство по программированию на Форте


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1637, книга: Томек в стране кенгуру
автор: Альфред Шклярский

Ох, эта книга "Томек в стране кенгуру"! Я просто в восторге! Ну и приключения, ну и герои! Томек и его верные друзья отправились в Австралию, и там с ними произошло такое, что волосы дыбом. Сначала они встретились с аборигенами, потом попали в засаду к бандитам, а потом и вовсе чуть не стали обедом для гигантского крокодила. Но они все преодолели, храбро сражаясь с опасностями и невзгодами. Я так переживала за них, будто вместе с Томеком отправлялась в джунгли и пустыни Австралии. А...

СЛУЧАЙНАЯ КНИГА

Война Германии в воздухе. Эрих фон Гепнер
- Война Германии в воздухе

Жанр: Военная история

Год издания: 2005

Серия: Военно-историческая библиотека

Илья Тарасов - Руководство по программированию на Форте

Руководство по программированию на Форте
Книга - Руководство по программированию на Форте.  Илья Тарасов  - прочитать полностью в библиотеке КнигаГо
Название:
Руководство по программированию на Форте
Илья Тарасов

Жанр:

Руководства и инструкции, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Forth

Изадано в серии:

неизвестно

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

Интернет-издательство «Stribog»

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Руководство по программированию на Форте"

Краткое введение в современный Форт.

Читаем онлайн "Руководство по программированию на Форте". [Страница - 4]

Описание NIP ( A, B → B ) Удаляет из стека второе сверху число, сдвигая вершину на его место TUCK ( A, B → B, A, B) Копирует верхнее число на третью сверху позицию PICK ( N → AN ) Копирует на вершину стека N-е сверху число. 0 PICK аналогично DUP ROLL ( AN, ...A0, N → AN-1,... A0 AN ) Вращает N верхних чисел стека. 1 ROLL аналогично SWAP
Хотя слова, приведенные в последней таблице, позволяют проводить со стеком практически любые манипуляции, все же следует иметь в виду, что частые перестановки чисел на стеке свидетельствуют о плохом стиле программирования. Кроме того, манипулирование стеком отнимает дополнительное процессорное время.

Введение стека данных, вообще говоря, преследовало цель освобождения программиста от необходимости слежения за стеком возвратов. Однако одним из основных принципов Форта является предоставление программисту полного контроля над исполнением программы. В соответствии с этим принципом, в состав словаря входят слова для работы со стеком возвратов.


Имя Стековая нотация Описание RDROP ( R: A → R : ) Удаляет число со стека возвратов R> ( R : A → A) Перемещает число со стека возвратов на стек данных (со стека возвратов число при этом удаляется) >R ( A → R : A) Перемещает число со стека данных на стек возвратов (со стека данных число при этом удаляется) R@ ( R: A → A, R : A ) Копирует число со стека возвратов на стек данных
Буква R в записи R : A означает, что число A находится на стеке возвратов (от Return Stack).

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

В состав словаря, естественно, входят и арифметико-логические операции. Они точно так же, как все слова Форта, получают свои параметры со стека и возвращают результат на стек. Вот их список:


Имя Стековая нотация Описание + ( A, B → A + B ) Заменяет два верхних числа со стека данных их суммой. – ( A, B → A - B ) Заменяет два верхних числа со стека данных их разностью. * ( A, B → A * B ) Заменяет два верхних числа со стека данных их произведением. / ( A, B → A / B ) Заменяет два верхних числа со стека данных частным от их деления. MOD ( A, B → A mod B ) Заменяет два верхних числа со стека данных остатком от их деления. /MOD ( A, B → A / B, A mod B) Заменяет два верхних числа со стека данных частным и остатком от их деления. ABS ( A → |A| ) Заменяет число его модулем (абсолютным значением). NEGATE ( A → –A ) Изменяет знак числа на противоположный. AND ( A, B → A and B ) Заменяет два верхних числа со стека данных их побитным логическим И. OR ( A, B → A or B ) Заменяет два верхних числа со стека данных их побитным логическим ИЛИ. XOR ( A, B → A xor B ) Заменяет два верхних числа со стека данных их побитным логическим ИСКЛЮЧАЮЩИМ ИЛИ. NOT ( A → not A ) Заменяет число со стека данных его логическим отрицанием.
Из таблицы видно, что все арифметические операции должны выполняться уже после того, как соответствующие числа оказались на стеке. В этом Форт не делает исключений. Результатом же такого правила является необходимость использования постфиксной, или обратной польской, записи формул. Вначале записываются числа в том порядке, как это указано в стековой нотации, а затем идет слово – арифметическая операция. Например, 2 + 2 на Форте будет выглядеть как 2 2 +

Приведем еще несколько примеров записи арифметических выражений:


Обычная запись Постфиксная запись 4 – 3 4 3 – 6 * 7 6 7 * (2 + 3) * 5 – 6 2 3 + 5 * 6 –
Можно сделать одно важное наблюдение: постфиксная запись не требует скобок. Сколь угодно сложное математическое выражение может быть записано путем последовательного перечисления переменных и операций над ними.

Такая форма записи, конечно, непривычна и является одним из главных аргументов при критике Форта. Можно долго перечислять --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.