S-lang
- Дата создания:
- 1992
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .sl
- Реализации и версии (свернуть все | развернуть все):
S-lang — скриптовый язык программирования, поддерживающий операции над массивами.
Интерпретатор языка предназначен для встраивания в другое программное обеспечение, но может использоваться и как отдельный интерпретатор slsh.
Элементы синтаксиса:
Комментарий до конца строки | % |
---|---|
Присваивание значения переменной | varname = value |
Объявление переменной | variable varname |
Объявление переменной с присваиванием значения | varname = value |
Группировка выражений | ( ... ) |
Блок | { ... } |
Сравнение | < > <= >= |
Определение функции | define functionName (argname1, ..., argnameN) |
Вызов функции | functionName(arg1, ..., argN) |
Вызов функции без параметров | functionName() |
Последовательность | ; |
Если - то | if (condition) trueBlock |
Если - то - иначе | if (condition) trueBlock else falseBlock |
Цикл с предусловием | while (condition) loopBody |
Цикл с постусловием | do loopBody while (condition) |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | _for i (first, last, 1) loopBody |
Цикл for - next для диапазона целых чисел с декрементом на 1 | _for i (last, first, -1) loopBody |
Ссылки:
Примеры:
Hello, World!:
Пример для версий S-lang 2.2.2message ("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
]]>