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

В компилятор встроено несколько дополнительных команд, которые позволяют [упростить](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

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

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

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

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

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

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

## DEC

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

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

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

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

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

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

## MUL

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

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

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

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

## DIV

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

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

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

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

## ALLOC&#x20;

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

Применять эту команду следует только к переменным с текстовым именем (например, `$text`). Для переменных с числовым именем (т.н. [`DMA`-переменные](/ru/coding/variables.md#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" %}
Тип переменной должен быть [объявлен](/ru/coding/variables.md#konstrukciya-var-end).
{% endhint %}

## RANDOM

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sannybuilder.com/ru/coding/built-in-commands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
