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

конструкций и синтаксиса.

      Приведем примеры программирования на SP-Forth.

      : ^2 ( A -> A^2 ) DUP * . ;            \ возведение числа в квадрат

      : ^3 ( A -> A^3 ) DUP DUP * * . ;            \ возведение числа в куб

      : ^4 ( A -> A^4 ) DUP * DUP * . ;            \ возведение числа в четвертую степень

      DUP – это слово которое просто дублирует число на вершине стека.

      Возведём 5 в квадрат, для этого наберём на клавиатуре:

      5 ^2

      25 Ok

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

      : ^2 ( A -> A^2 ) DUP * . ;\ возведение числа в квадрат

      ^ -2003 WORD OR FILE NOT FOUND

      При «Копи пасте» куда-то делись символы табуляции между «;» и комментарием, вследствие видим сообщение об ошибке, из-за нарушения синтаксиса. Наверное, это особенность системы.

      Также, вместо ^2, можно слово назвать **2, в стиле python:

      : **2 ( A -> A^2 ) DUP * . ;            \ возведение числа в квадрат

      5 **2

      25 Ok

      В итоге получаем тот же ответ, но стилистика программы изменилась.

      Для начала этого достаточно. Далее при решении конкретных задач, в среде программирования SP-Forth, процесс станет более понятным и осознанным.

      BEGIN 1-10

      Начать нашу практику программирования мы будем с задач из книги М. Э. Абрамян "1000 задач по программированию Часть I Скалярные типы данных, управляющие операторы, процедуры и функции" 2004. Автор пишет, что получить задачник можно по e-mail: [email protected] или за подробностями обращайтесь к веб ресурсу ptaskbook.com. Текст задач я приводить не буду, дабы исключить плагиат. Думаю, пояснения к коду с описанием слов (функций-программ) должно быть достаточно, в противном случае обращайтесь к первоисточнику за текстом задач.

      Пример 1. Итак, начнем, (для простоты вначале мы будем рассматривать все входные параметры как целые числа, далее мы перепишем код для вещественных аргументов, где об этом указано в условии задачи). Вот и решение первой задачи:

      : B1 ( A -> P ) 4 * ; \ P=4*A

      B – это сокращение от BEGIN, что обозначает первую группу заданий (мы и далее будем использовать такой вид названий в последующих группах заданий), затем слитно пишется номер примера. Сразу после имени в скобках пишется комментарий стековой нотации. Так принято в Форте. В данном случае Слово-функция B1 берет один параметр A (четырехбайтовое целое число и оставляет другое того же типа). A – сторона квадрата – вход функции, P – его периметр – возвращаемое функцией значение. Тело – очень короткое, просто умножает число на вершине стека на 4 (не забываем, что в Форте обратная польская нотация, сначала идут операнды, затем операция).

      Теперь чтобы воспользоваться нашим словом, например, чтобы посчитать периметр квадрата со стороной 3, используем следующий код:

      3 B1 .

      12 Ok

      Точка «.» – это стандартное форт слово, которое печатает число на вершине стека на экран.

      Напомним, общий вид определения нового слова в Форте:

      : Название-Слова ( стек до выполнение –> после ) Код-Тела-Функции ; \ комментарий

      Пример 2. Нам нужно посчитать площадь квадрата:

      : B2 ( A ->

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