S-lang 2.2.2
Версия реализации S-lang языка программирования S-langВерсия интерпретатора S-lang.
Примеры:
Hello, World! - S-lang (128):
message ("Hello, World!");
Факториал - S-lang (129):
В примере используется рекурсивное определение факториала. Для создания рекурсивной функции в S-lang, следует сначала объявить ее (без списка параметров или реализации) и только потом собственно определить ее, указав параметры и тело функции.
В примере показано использование суффикса $. Строковая константа может оканчиваться суффиксом, который определяет то, как она обрабатывается. Суффикс $ означает, что перед использованием строки в ней будет произведена подстановка имен переменных: каждое имя переменной, предваренное префиксом $, будет заменено на значение переменной. При этом имя переменной должно быть отделено от следующих символов строки пробелом либо заключено в фигурные скобки.
Отметим, что типом данных по умолчанию является integer
, поэтому в данном примере возникает ошибка переполнения при вычислении 13!.
define factorial ();
define factorial (n)
{ if (n==0) return 1;
return n * factorial (n-1);
};
for (i=0; i<17; i++)
{ f = factorial (i);
message ("${i}! = ${f}"$);
};
Факториал - S-lang (130):
Этот пример демонстрирует операции над массивами в S-lang. [1:i]
создает список чисел от 1 до i; следует отметить, что для операций над массивами типом данных по умолчанию является double
, даже если сами числа целые. Встроенная функция prod
(с версии 2.1) вычисляет произведение элементов массива-аргумента. Встроенная функция sprintf
предоставляет вывод в стиле языка C, шаблон %.0f
печатает число с плавающей запятой с нулем цифр после запятой.
for (i=0; i<17; i++)
sprintf ("%d! = %.0f", i, prod ( [1:i] ) );
Числа Фибоначчи - S-lang (131):
В примере используется итеративное определение чисел Фибоначчи. Переменная f
явно определена как массив 16 целых чисел. Элементы 0 и 1 массива устанавливаются в 1: для этого операцией [0:1]
создается список индексов, к которым следует применить операцию. Встроенная функция string
преобразует свой аргумент в его строковое представление.
f = Integer_Type [16];
f[[0:1]] = 1;
for (i=2; i<16; i++)
f[i] = f[i-1] + f[i-2];
s = "...";
for (i=15; i>=0; i--)
s = string(f[i]) + ", " + s;
message (s);
Комментарии
]]>blog comments powered by Disqus
]]>