Руководство разработчика

Локальные переменные

Локальные переменные используются в формульном разделе и в тексте функций. Специальное объявление локальных переменных не требуется. Переменные создаются при входе в функцию. При этом они инициализируются значениями по умолчанию в соответствии с их типом. Параметры-значения функций также являются локальными переменными, но инициализируются значениями заданными при вызове. При выходе из функции локальные переменные уничтожаются. Имеется четыре способа завести новую локальную переменную:

Второй способ предпочтительнее первого, т.к. позволяет избежать случайной модификации общих переменных при совпадении имен. Тип локальной переменной определяется по типу присваиваемого ей выражения. В тех случаях, когда на этапе компиляции не удается определить тип присваиваемого выражения, уточнение типа может происходить позже, на основании контекста использования переменной. При использовании оператора СОЗДАТЬ тип переменной указывается явно.

Синтаксис:

<имя переменной> = <выражение>

ПЕРЕМ <имя переменной> = <выражение>

ЦИКЛ ДЛЯ ( <имя переменной> = <выражение>, <выражение>, [ <выражение> ] )
...
КОНЕЦ_ЦИКЛА

СОЗДАТЬ (<имя типа>, <имя переменной>)

Примеры:

Локальные переменные в функциях и формульном разделе:

ФУНКЦИЯ Поменять(ПЕРЕМ ЧИСЛО: ч1, ч2)
  ч = ч1 // сохраняем значение ч1 в новой локальной переменной ч
  // тип ее такой же, как у ч1, т.е. числовой
  ч1 = ч2 // переменная ч1 известна: не заводится новая переменная
  ч2 = ч // переменная ч1 известна: не заводится новая переменная
КОНЕЦ_ФУНКЦИИ

ВЫЧИСЛИТЬ
  x1 = 5 // новая переменная x1 числового типа
  ПЕРЕМ x2 = 2 // новая переменная x2 числового типа

  // вводим новую локальную переменную строкового типа
  ст = "Диапазон от "

  // если x1 больше x2, то меняем значения x1 и x2 местами
  ЕСЛИ x1 > x2 ТО
    Поменять(x1, x2) 
  КОНЕЦ_ЕСЛИ

  // просто присваивание значения - ст уже известна
  ст = ст + СТР(x1) + " до " + СТР(x2)
  // выводим сообщение 
  СООБЩЕНИЕ(ст) 
КОНЕЦ

Неопределенность типа локальной переменной:

// функция может возвратить и число, и строку
ФУНКЦИЯ Варианты(ЧИСЛО: N)
  ЕСЛИ N > 0 ТО
    Варианты = "строка"
  ИНАЧЕ
    Варианты = 123.45
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ

ВЫЧИСЛИТЬ
  в1 = 2 // локальная переменная
  // локальная переменная в2 с заранее неизвестным типом
  в2 = Варианты(в1) // при выполнении получает строковое значение
  в1 = -2 // новое значение
  в2 = Варианты(в2) // ошибка времени выполнения: несоответствие типов
КОНЕЦ

Локальные переменные объектных типов создаются путем использования ключевого слова СОЗДАТЬ с явным указанием типа:

// объявляем объектный тип Проводка
ТИП Проводка
[
  СТРОКА: дебет, кредит;
  ЧИСЛО: сумма;
]

ВЫЧИСЛИТЬ
  // создаем локальную переменную пр типа Проводка
  СОЗДАТЬ(Проводка, пр)
  // ...
КОНЕЦ

См. также: