Редактирование: Простые программы на Каллисто
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
[[Каллисто]] является расширением [[ЯМК|входного языка МК-161]]. Что это означает? Давайте проверим это утверждение на примере классических программ для советских [[ПМК]]. Вот простые, но широко известные программы для вычисления гиперболических функций из [[Справочник по расчётам на микрокалькуляторах, 3-е изд. (книга)|3 изд. справочника проф. Дьяконова]] (стр. 174): | |||
[[Каллисто]] является расширением [[ЯМК|входного языка | |||
[[Файл:DjakonovHyp.png]] | [[Файл:DjakonovHyp.png]] | ||
В качестве первого упражнения возьмём программу 4.1 для вычисления гиперболического синуса sh, которая на языке МК выглядит так: | |||
В качестве первого упражнения возьмём программу 4.1 для вычисления гиперболического синуса sh, которая на | |||
Fe<sup>x</sup> ↑ F1/x − 2 ÷ С/П БП 00 | Fe<sup>x</sup> ↑ F1/x − 2 ÷ С/П БП 00 | ||
Строка 13: | Строка 9: | ||
: sh e<sup>x</sup> ↑ 1/x − 2 ÷ . ; | : sh e<sup>x</sup> ↑ 1/x − 2 ÷ . ; | ||
Каллистянская программа для вычисления | Каллистянская программа для вычисления гиперболического синуса начинается с [[Слово :|двоеточия]] и заканчивается [[Слово ;|точкой с запятой]]. Это аналоги команд калькулятора [[F ПРГ]] и [[F АВТ]]. Они переключают [[Каллисто]] из состояния интерпретации в состояние компиляции и обратно. В состоянии интерпретации слова исполняются сразу же (как в [[Режим автоматической работы|автоматическом режиме калькулятора]]), а в состоянии компиляции — запоминаются, чтобы исполниться позже (похоже на [[режим программирования]]). | ||
После [[Слово :|двоеточия]] идёт слово sh — это имя программы, а точнее нового слова для вычисления (и вывода на экран) гиперболического синуса. [[Каллисто]] может хранить не одну программу, а множество слов. Поэтому каждому из них положено уникальное имя. Каждое слово можно сравнить с программой для советского [[ПМК]], чаще всего они даже превосходят по своим возможностям такие программы. | |||
Также можно заметить, что каллистянские | Также можно заметить, что каллистянские команды для вычисления функций (они тоже являются словами) похожи на ПМКшные, но не требуют начальной буквы F. Fe<sup>x</sup> и F1/x превратились в обычные [[Eˣ|e<sup>x</sup>]] и [[Слово 1/X|1/x]]. Некоторые справочники по ПМК уже использовали подобное соглашение. Перед [[Слово ;|точкой с запятой]] в определении нашего слова sh стоит [[Слово .|точка]]. Эта точка нужна для вывода результата на [[индикатор]], являясь своеобразным аналогом команды С/П. Такой вывод нужен в учебном примере. Настоящий библиотечный sh, разумеется, будет оставлять конечный результат в стеке. Ведь он может понадобиться в цепочечных вычислениях. | ||
Давайте проверим, правильно ли вычисляет наше новое слово sh гиперболический синус: | Давайте проверим, правильно ли вычисляет наше новое слово sh гиперболический синус: | ||
1 sh | 1 sh | ||
Если вы | Если вы создаёте библиотеку гиперболических функций (слов) на [[Каллисто]], конечный результат будет выглядеть вот так: | ||
: sh ( x -- sh x) e<sup>x</sup> ↑ 1/x − 2 ÷ ; | : sh ( x -- sh x) e<sup>x</sup> ↑ 1/x − 2 ÷ ; | ||
Строка 31: | Строка 25: | ||
Согласитесь, переносить простые программы с [[ЯМК|языка МК]] на [[Каллисто]] легко. При этом их исходный текст выглядит лучше, а обращаться к ним удобней! Попробуйте самостоятельно перенести на [[Каллисто]] программу 4.2. | Согласитесь, переносить простые программы с [[ЯМК|языка МК]] на [[Каллисто]] легко. При этом их исходный текст выглядит лучше, а обращаться к ним удобней! Попробуйте самостоятельно перенести на [[Каллисто]] программу 4.2. | ||
Теперь упражнение посложней. Программа 4.3 использует [[X1|регистр промежуточного результата X1]]. Поскольку в [[Каллисто]] нет такого регистра, одно из решений — [[VALUE|объявить промежуточную переменную]], куда и запишем промежуточный результат. Назовём её x1 : | |||
Теперь упражнение посложней. Программа 4.3 использует [[X1|регистр | 0 VALUE x1 | ||
Поскольку в [[Каллисто]] нет такого регистра, | |||
0 | |||
: th ( x -- sh x/ch x) e<sup>x</sup> ↑ ↑ 1/x + 2 ÷ ↑ to x1 − x1 ÷ ; | : th ( x -- sh x/ch x) e<sup>x</sup> ↑ ↑ 1/x + 2 ÷ ↑ to x1 − x1 ÷ ; | ||
1 th . | 1 th . | ||
{{нет иллюстраций}} | |||
{{заготовка}} | |||
[[Категория:Каллисто]] | [[Категория:Каллисто]] |