]]> ]]>

S-lang

Реализация языка программирования S-lang

Единственная существующая реализация языка. Распространяется под лицензией GNU GPL. Написана на C.

Примеры:

Hello, World!:

Пример для версий S-lang 2.2.2
message ("Hello, World!");

Факториал:

Пример для версий S-lang 2.2.2

В примере используется рекурсивное определение факториала. Для создания рекурсивной функции в 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 2.2.2

Этот пример демонстрирует операции над массивами в 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 2.2.2

В примере используется итеративное определение чисел Фибоначчи. Переменная 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

]]>

Работа программистам