Простые программы на Каллисто: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Строка 9: Строка 9:
 
  : sh  e<sup>x</sup> ↑ 1/x − 2 ÷ . ;
 
  : sh  e<sup>x</sup> ↑ 1/x − 2 ÷ . ;
  
Каллистянская программа для вычисления гиперболического синуса начинается с [[Слово :|двоеточия]] и заканчивается [[Слово ;|точкой с запятой]]. Это аналоги команд калькулятора [[F ПРГ]] и [[F АВТ]]. Они переключают [[Каллисто]] из состояния интерпретации в состояние компиляции и обратно.
+
Каллистянская программа для вычисления гиперболического синуса начинается с [[Слово :|двоеточия]] и заканчивается [[Слово ;|точкой с запятой]]. Это аналоги команд калькулятора [[F ПРГ]] и [[F АВТ]]. Они переключают [[Каллисто]] из состояния интерпретации в состояние компиляции и обратно. В состоянии интерпретации слова исполняются сразу же (как в [[Режим автоматической работы|автоматическом режиме калькулятора]]), а в состоянии компиляции — запоминаются, чтобы исполниться позже (похоже на [[режим программирования]]).
  
 
После [[Слово :|двоеточия]] идёт слово sh — это имя программы, а точнее нового слова для вычисления (и вывода на экран) гиперболического синуса. [[Каллисто]] может хранить не одну программу, а множество слов. Поэтому каждому из них положено уникальное имя. Каждое слово можно сравнить с программой для советского [[ПМК]], чаще всего они даже превосходят по своим возможностям такие программы.
 
После [[Слово :|двоеточия]] идёт слово sh — это имя программы, а точнее нового слова для вычисления (и вывода на экран) гиперболического синуса. [[Каллисто]] может хранить не одну программу, а множество слов. Поэтому каждому из них положено уникальное имя. Каждое слово можно сравнить с программой для советского [[ПМК]], чаще всего они даже превосходят по своим возможностям такие программы.

Версия 23:11, 27 июля 2016

Каллисто является расширением входного языка МК-161. Что это означает? Давайте проверим это утверждение на примере классических программ для советских ПМК. Вот простые, но широко известные программы для вычисления гиперболических функций из 3 изд. справочника проф. Дьяконова (стр. 174):

DjakonovHyp.png

В качестве первого упражнения возьмём программу 4.1 для вычисления гиперболического синуса sh, которая на языке МК выглядит так:

Fex ↑ F1/x − 2 ÷ С/П БП 00

Вот она же, написанная на Каллисто:

: sh   ex ↑ 1/x − 2 ÷ . ;

Каллистянская программа для вычисления гиперболического синуса начинается с двоеточия и заканчивается точкой с запятой. Это аналоги команд калькулятора F ПРГ и F АВТ. Они переключают Каллисто из состояния интерпретации в состояние компиляции и обратно. В состоянии интерпретации слова исполняются сразу же (как в автоматическом режиме калькулятора), а в состоянии компиляции — запоминаются, чтобы исполниться позже (похоже на режим программирования).

После двоеточия идёт слово sh — это имя программы, а точнее нового слова для вычисления (и вывода на экран) гиперболического синуса. Каллисто может хранить не одну программу, а множество слов. Поэтому каждому из них положено уникальное имя. Каждое слово можно сравнить с программой для советского ПМК, чаще всего они даже превосходят по своим возможностям такие программы.

Также можно заметить, что каллистянские команды для вычисления функций (они тоже являются словами) похожи на ПМКшные, но не требуют начальной буквы F. Fex и F1/x превратились в обычные ex и 1/x. Некоторые справочники по ПМК уже использовали подобное соглашение. Перед точкой с запятой в определении нашего слова sh стоит точка. Эта точка нужна для вывода результата на индикатор, являясь своеобразным аналогом команды С/П. Такой вывод нужен в учебном примере. Настоящий библиотечный sh, разумеется, будет оставлять конечный результат в стеке. Ведь он может понадобиться в цепочечных вычислениях.

Давайте проверим, правильно ли вычисляет наше новое слово sh гиперболический синус:

1 sh

Если вы создаёте библиотеку гиперболических функций (слов) на Каллисто, конечный результат будет выглядеть вот так:

: sh  ( x -- sh x)   ex ↑ 1/x − 2 ÷ ;

Мы видим, что точка исчезла. При необходимости разработчик сам поставит точку для вывода конечного результата на индикатор. Также мы добавили комментарий, он в круглых скобках. По соглашению, принятому в Форте, такой комментарий содержит описания стека до и после работы слова. Между этими двумя описаниями стоят два дефиса.

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

Теперь упражнение посложней. Программа 4.3 использует регистр промежуточного результата X1. Поскольку в Каллисто нет такого регистра, одно из решений — объявить промежуточную переменную, куда и запишем промежуточный результат. Назовём её x1 :

0 VALUE x1
: th  ( x -- sh x/ch x)  ex ↑ ↑ 1/x + 2 ÷  ↑ to x1  − x1 ÷ ;
1 th .
  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.