# Системные конструкции

Системные конструкции (или языковые конструкции) — это предопределённые элементы синтаксиса языка программирования, которые обеспечивают базовые операции и управление выполнением программы. Они являются неотъемлемой частью языка и предоставляют разработчикам готовые механизмы для решения типовых задач.

## ##[код символа]$

Эта конструкция предназначена для отображения символа с соответствующим десятичным кодом. Например:

    pln Copyright ##169$ 2025 John Doe

Это отобразит на экране:

> Copyright © 2025 John Doe

Эту конструкцию можно использовать для экранирования символов. Например, можно экранировать символ амперсанта, чтобы он не был интерпретирован как системная конструкция &:

    btn офис, Идти в офис John Doe ##38$ Co.

Это отобразит на экране кнопку с названием “Идти в офис John Doe & Co.”

Прямое написание амперсанта в названии кнопки привело бы к некорректной интерпретации кода.

Символ, выводимый с помощью этой конструкции, пригоден только для вывода на экран. Он не может быть частью оператора.

## #$

Эта конструкция предназначена для отображения символа пробела. Например:

    pln раз#$два

Это отобразит на экране:

> раз два

Как правило, нет никаких проблем в прямом использовании символа пробела. Однако использование этой конструкции в некоторых случаях может повысить визуальную читаемость кода.

У этой конструкции есть прямой аналог: #%$.

## #%$

Эта конструкция предназначена для отображения символа пробела. Например:

    pln раз#%$два

Это отобразит на экране:

> раз два

Как правило, нет никаких проблем в прямом использовании символа пробела. Однако использование этой конструкции в некоторых случаях может повысить визуальную читаемость кода.

У этой конструкции есть прямой аналог: #$.

## #%/$

Эта конструкция предназначена для создания переноса строки. Например:

    pln раз#%/$два

Это отобразит на экране:

> раз
> два

У этой конструкции есть прямой аналог: #/$.

## #%[переменная]$

Эта конструкция предназначена для отображения значения переменной любого типа. Например:

    предмет = "яблок"
    количество = 5
    pln У меня #%количество$ #%предмет$.

Это отобразит на экране:

> У меня 5 яблок.

У этой конструкции есть прямой аналог: #[переменная]$.

## #/$

Эта конструкция предназначена для создания переноса строки. Например:

    pln раз#/$два

Это отобразит на экране:

> раз
> два

У этой конструкции есть прямой аналог: #%/$.

## #[переменная]$

Эта конструкция предназначена для отображения значения переменной любого типа. Например:

    предмет = "яблок"
    количество = 5
    pln У меня #количество$ #предмет$.

Это отобразит на экране:

> У меня 5 яблок.

У этой конструкции есть прямой аналог: #%[переменная]$.

## &

Эта конструкция предназначена для объединения нескольких операторов в одну команду. Например:

    btn inv+ Отвёртка & cls & goto гараж, Взять отвёртку и идти в гараж

Это отобразит на экране кнопку с названием “Взять отвёртку и идти в гараж”, при нажатии на которую выполнится сразу 3 действия:

1. В инвентарь будет добавлен предмет “Отвёртка” при помощи оператора inv+.
2. Будет очищен экран при помощи оператора cls.
3. Произойдёт переход на метку “гараж” при помощи оператора goto.

Обратите внимание, что в некоторых случаях предпочтительным может оказаться создание и вызов процедуры с множеством действий при помощи оператора proc.

Также длинные последовательности операторов, объединённых при помощи этой конструкции, можно записывать на отдельных строках с помощью символа продолжения строки `\`.

## /* {комментарий} */

Эта конструкция предназначена для добавления комментариев в программный код. Например:

    /* Это текст, который будет игнорироваться */
    pln Привет, мир!
    /*
    Это текст,
    который будет игнорироваться
    */

Это отобразит на экране:

> Привет, мир!

Комментарии предназначены для добавления пояснений и заметок в программный код. Дополнительно механизм комментирования позволяет временно исключать части кода из выполнения программы, сохраняя их для последующего использования.

Обратите внимание, что важно как открыть блок комментария символами “`/*`”, так и закрыть его символами “`*/`”. Эта конструкция требует оба этих элемента.

## _

Эта конструкция предназначена для продолжения строк, чтобы разбить однострочную инструкцию на несколько физических строк в исходном коде. Например:

    if ключ = 1
    _ then дверь = 0
    _ else дверь = 1

Этот код эквивалентен коду:

    if ключ = 1 then дверь = 0 else дверь = 1

Символ `_` должен быть первым символом строки (исключая начальные пробельные символы, которые игнорируются), и следующий за ним символ не должен быть символом подчёркивания.