# Дополнительные команды

В компилятор встроено несколько дополнительных команд, которые позволяют [упростить](https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%B0%D1%85%D0%B0%D1%80) некоторые конструкции.

## INC

Прибавляет к значению [переменной](https://docs.sannybuilder.com/ru/coding/variables) (первый параметр) число (второй параметр):

```
Inc($IntVariable, $Value)
=
$IntVariable += $Value
```

Второй параметр по умолчанию равен `1`.

```
Inc(1@)
=
1@ += 1
```

Начиная с версии 3.06 можно использовать оператор инкремента `++`. Он пишется после имени переменной и увеличивает ее значение на `1`.

```
$var++
=
$var += 1
```

## DEC

Вычитает из значения [переменной](https://docs.sannybuilder.com/ru/coding/variables) (первый параметр) число (второй параметр):

```
Dec($IntVariable, $Value)
=
$IntVariable -= $Value
```

Второй параметр по умолчанию равен `1`.

```
Dec(1@)
=
1@ -= 1
```

Начиная с версии 3.06 можно использовать оператор декремента `--`. Он пишется после имени переменной и уменьшает ее значение на `1`.

```
$var--
=
$var -= 1
```

## MUL

Умножает значение [переменной](https://docs.sannybuilder.com/ru/coding/variables) (первый параметр) на число (второй параметр):

```
Mul($IntVariable, $Value)
=
$IntVariable = $IntVariable * $Value
```

Второй параметр по умолчанию равен `2`.

```
Mul(1@)
=
1@ = 1@ * 2
```

## DIV

Делит значение [переменной](https://docs.sannybuilder.com/ru/coding/variables) (первый параметр) на число (второй параметр):

```
Div($IntVariable, $Value)
=
$IntVariable = $IntVariable / $Value
```

Второй параметр по умолчанию равен `2`.

```
Div(1@)
=
1@ = 1@ / 2
```

## ALLOC&#x20;

Эта функция задает адрес для [глобальной переменной](https://docs.sannybuilder.com/ru/variables#globalnye-peremennye), по которому она будет хранить свое значение. Значения переменных хранятся в начале файла `main.scm`.&#x20;

Применять эту команду следует только к переменным с текстовым именем (например, `$text`). Для переменных с числовым именем (т.н. [`DMA`-переменные](https://docs.sannybuilder.com/ru/variables#globalnye-peremennye)) их адрес определяется самим этим числом. Например, переменная `$40` хранит свое значение по смещению `160` (40\*4).

Первый параметр должен быть глобальной переменной, второй - целым числом больше либо равным нулю.

```
Alloc($MyVar, 40) - переменная $MyVar будет скомпилирована как $40
```

{% hint style="info" %}
См. также `help\examples\alloc.txt`
{% endhint %}

## SQR

Умножает переменную на саму себя

```
sqr($var) 
=
$var *= $var
```

{% hint style="info" %}
Тип переменной должен быть [объявлен](https://docs.sannybuilder.com/ru/variables#konstrukciya-var-end).
{% endhint %}

## RANDOM

Эта функция возвращает случайное число в заданном интервале:

```
$rnd = random(1, $high)
```

Может использоваться как для целых, так и для дробных чисел. Конечный опкод зависит от [типа](https://docs.sannybuilder.com/ru/variables#konstrukciya-var-end) переменной, в которую записывается результат (`$rnd`).
