Привет, неизвестный путник!
Добро пожаловать в документацию по языку C#.NStar! Здесь вы найдете информацию о его функциях,
отличающихся от оригинального C# от Microsoft.
real Function Abs(real x)
return x < 0 ? -x : x;
int Function Ceil(real x)
var truncated = Truncate(x);
if (x > 0 && truncated != x)
truncated++;
return truncated;
Chain Function Chain(int start, int end)
Определяется через специальную структуру Chain (в настоящий момент не реализована средствами C#.NStar).
T Function Choose(list() T variants)
return variants[IntRandom(variants.Length)];
real Function Clamp(real value, real min, real max)
return Max(min, Min(value, max));
real Function Fibonacci(unsigned short int n)
Реализуемо средствами C#.NStar, но алгоритм не настолько простой, чтобы его "сходу" понял любой школьник, изучивший
"азы" программирования и не погрузившийся глубоко в C#.NStar (а тот, кто погрузился глубоко, и без нас легко представляет
себе этот алгоритм).
list() T Function Fill(T item, int length)
() T list = new(length);
for (i in 1..length)
list.Add(item);
return list;
int Function Floor(real x)
var truncated = Truncate(x);
if (x < 0 && truncated != x)
truncated--;
return truncated;
real Function Frac(real x)
return x - Truncate(x);
int Function IntRandom(int max)
return Floor(Random(x) + 1);
real Function IntToReal(int x)
return x;
real Function Log(real a, real x)
return ln x / ln a;
В отличие от
ln x, не является оператором, так как выражается через другие конструкции языка
(и самая главная из этих конструкций - именно оператор ln).
real Function Max(params real values)
if (values.Length == 0)
return 0;
var indicator = values[1];
for (i in 2..values.Length)
if (values[i] > indicator)
indicator = values[i];
return indicator;
На перспективу, так как ключевое слово params еще не реализовано.
real Function Mean(params real values)
if (values.Length == 0)
return 0;
var indicator = values[1];
for (i in 2..values.Length)
indicator += values[i];
return indicator / values.Length;
На перспективу, так как ключевое слово params еще не реализовано.
real Function Min(params real values)
if (values.Length == 0)
return 0;
var indicator = values[1];
for (i in 2..values.Length)
if (values[i] < indicator)
indicator = values[i];
return indicator;
На перспективу, так как ключевое слово params еще не реализовано.
real Function Random(real max)
Реализуемо средствами C#.NStar, но алгоритм нетривиален. По факту значение max никогда не достигается.
real Function RealRemainder(real x, real y)
return x - Floor(x / y) * y;
int Function Round(real x)
var frac = Frac(x);
if (frac < 0)
frac++;
return frac >= 0.5 ? Ceil(x) : Floor(x);
short int Function Sign(real x)
return x < 0 ? -1 : x == 0 ? 0 : 1;
real Function Sqrt(real x)
Теоретически реализуемо средствами C#.NStar, но алгоритм нетривиален и не имеет смысла, так как вызов соответствующей
функции из статического класса Math в C#.NET намного проще, а возможно, и быстрее.
int Function Truncate(real x)
return x; // Здесь еще не помешало бы подавить предупреждение о потере данных, но это пока не реализовано
Не являются функциями
Следующие конструкции имеют определенные признаки, делающие их похожими на функции,
но они таковыми не являются и перечислены отдельно:
ExecuteString()
Вызывается как функция, но технически является оператором.
Q()
Вызывается как функция, но технически является оператором.
Назад к индексу документации