APS APLAN
Версия реализации APS APLAN языка программирования APLANЕдинственная доступная для скачивания с сайта разработчиков версия.
Примеры:
Hello, World! - APLAN (329):
Эта программа не требует использования правил переписывания и выполнена в процедурном стиле. Модуль std.ap
позволяет использовать арифметические операции, предикаты сравнения, логические операции, императивные элементы и ряд специальных функций; его включение необходимо во всех программах. При запуске в онлайн-интерпретаторе все модули подключены автоматически, поэтому в явном виде их можно не подключать.
Вместо функции put
можно использовать эквивалентную ей prn
.
INCLUDE <include/std.ap>
task := put("Hello, World!");
Факториал - APLAN (420):
В первой строке объявляются имена процедур и систем переписывающих правил, которые будут определены в этой программе. Имя task
объявлять не нужно, т.к. это имя самой программы (совпадает с именем файла).
Следующий блок — определение функции вычисления факториала как системы переписывающих правил; на это указывает ключевое слово rs
в определении. Правила, применяющиеся к аргументу, перечислены в круглых скобках через запятую. В данном случае все правила простые, т.е. применяются к аргументам безусловно.
Затем следует процедура вывода факториалов на печать (ключевое слово proc
). Ключевое слово loc
задает список локальных переменных. После него в круглых скобках перечислены операторы процедуры через точку с запятой. Вместо конкатенации аргументов функции prn
(вывод на печать) можно просто перечислить аргументы подряд.
При выполнении программы в онлайн-интерпретаторе вывод имеет заданный вид; при выполнении в интерпретаторе локально в выводе появляются лишние кавычки:
0 "! = " 1
1 "! = " 1
и т.д.
INCLUDE <include/std.ap>
NAMES factorial, print_factorials;
factorial := rs(x) (
0 = 1,
1 = 1,
x = x * factorial(x - 1)
);
print_factorials := proc(n)loc(i)(
i := 0;
while(i < n,
prn i"! = "factorial(i);
i := i + 1
)
);
task := print_factorials 17;
Числа Фибоначчи - APLAN (421):
В языке не предусмотрены операции работы со строками, а команды вывода на печать обязательно заканчивают выведенное переводом строки, поэтому форматирование не соблюдено — числа выводятся просто в столбик.
INCLUDE <include/std.ap>
NAMES fibonacci, print_fibonacci;
fibonacci := rs(x) (
0 = 1,
1 = 1,
x = fibonacci(x - 1) + fibonacci(x - 2)
);
print_fibonacci := proc(n)loc(i, res)(
i := 0;
while(i < n,
prn fibonacci(i);
i := i + 1
)
);
task := print_fibonacci 16 ;
Комментарии
]]>blog comments powered by Disqus
]]>