Илья Тарасов - Руководство по программированию на Форте
Название: | Руководство по программированию на Форте | |
Автор: | Илья Тарасов | |
Жанр: | Руководства и инструкции, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Forth | |
Изадано в серии: | неизвестно | |
Издательство: | Интернет-издательство «Stribog» | |
Год издания: | 2022 | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Руководство по программированию на Форте"
Краткое введение в современный Форт.
Читаем онлайн "Руководство по программированию на Форте". [Страница - 8]
Стандартной конструкцией является условный оператор IF...THEN. Посмотрим, как эта конструкция записывается в Форте.
<условие> IF <условное действие> THEN
При записи условного оператора сохраняется уже известный нам принцип Форта – сначала аргументы, потом операция. Слово IF не исключение – для того, чтобы понять, следует ли исполнять условную часть конструкции, оно должно получить на стеке код условия. Если на стеке находится ИСТИНА, условная часть выполняется, иначе управление передается на точку за словом THEN.
Что представляет собой условие выполнения? По смыслу оно должно принимать одно из двух значений ИСТИНА/ЛОЖЬ и иметь специальный логический (boolean) тип. Форт и эту проблему решает весьма радикально – логическое условие представляет собой просто число на стеке данных. Ноль рассматривается как ЛОЖЬ, все остальные числа – как ИСТИНА. Таким образом, для определения условия выполнения мы можем использовать любое математическое выражение, дающее в результате ноль или «не ноль».
Для упрощения записи логических операций Форт имеет в своем составе соответствующий набор слов.
Имя
Стековая нотация
Описание
=
( A, B → ИСТИНА, если A=B )
Заменяет два числа ИСТИНОЙ, если они равны.
>
( A, B → ИСТИНА, если A>B )
Заменяет два числа ИСТИНОЙ, если второе сверху число больше первого.
<
( A, B → ИСТИНА, если A<B )
Заменяет два числа ИСТИНОЙ, если второе сверху число меньше первого.
U>
( A, B → ИСТИНА, если A>B )
То же, что >, но числа рассматриваются как числа без знака.
U<
( A, B → ИСТИНА, если A<B )
То же, что <, но числа рассматриваются как числа без знака.
AND
( A, B → A and B )
Побитное логическое И над двумя числами.
OR
( A, B → A or B )
Побитное логическое ИЛИ над двумя числами.
XOR
( A, B → A xor B )
Побитное логическое ИСКЛЮЧАЮЩЕЕ ИЛИ над двумя числами.
NOT
( A → not A )
Логическое отрицание (ЛОЖЬ заменяется на ИСТИНУ и наоборот)
Обратите внимание на беззнаковые версии операций сравнения. Обычно Форт использует знаковое представление чисел, в котором старший бит в двоичной записи числа указывает, что число отрицательное. В таком случае 0FFFFH < 1, поскольку 0FFFFH представляет собой –1 в дополнительной двоичной арифметике. В то же время операция U< рассмотрит оба числа как числа без знака, и на запрос -1 1 U< вернет ЛОЖЬ.
В соответствии со стандартом логические операции выполняются над отдельными битами исходных чисел. Таким образом, 1 (двоичное 00000001) и 4 (двоичное 00000100) при выполнении над ними операции AND дадут 0, поскольку положения установленных разрядов в этих числах не совпадают. С другой стороны, оба этих числа представляют собой ИСТИНУ, так что логическое И над ними должно также давать ИСТИНУ. Чтобы избежать подобных ситуаций, для представления истинных выражений используется –1, имеющее единицы во всех двоичных разрядах. Базовые слова Форта используют именно такое представление логической ИСТИНЫ, и оно настоятельно рекомендуется для использования в словах, добавляемых пользователем.
Определим теперь пример, использующий операции сравнения в сочетании с условным исполнением.
: РАВЕНСТВО ( A, B --> )
= IF .” Числа равны” THEN
;
Определенное слово РАВЕНСТВО использует знак сравнения (=), который снимает два числа со стека и кладет ИСТИНУ, если они равны. В результате перед выполнением слова IF на стеке оказался код условия. В случае, если числа были равны, будет выполнена часть определения вплоть до слова THEN, то есть напечатан текст «Числа равны».
Новое слово .” (точка-кавычка) предназначено для вывода текста. Оно поглощает весь текст, вплоть до закрывающей кавычки, и выводит его на экран. Запись этого слова на первый взгляд выглядит необычной, поскольку текст, с которым оно работает, идет после слова, а не перед ним, как мы уже привыкли. Чуть ниже мы рассмотрим причины такого поведения.
Теперь приведем еще одну версию условного оператора.
<условие> IF <выполняется> ELSE <не выполняется> THEN
И соответствующий этой форме записи пример.
: РАВЕНСТВО ( A, B --> )
= IF .” Числа равны” ELSE .” Числа не равны” THEN
;
Обратите внимание на то, куда передается выполнение, --">
Книги схожие с «Руководство по программированию на Форте» по жанру, серии, автору или названию:
Стивен Розенфилд - Ухожу в Stand Up! Полное руководство по осуществлению мечты от Американской школы комедии Жанр: Руководства и инструкции Серия: Мастер сцены |
Геннадий Владимирович Старшенбаум - Детская психосоматика. Подробное руководство по диагностике и терапии Жанр: Психология Год издания: 2022 Серия: Психология. Высший курс |