(495)240-8280ПН-СБ с 12:00 до 20:00
We speak English

3.3. Глобальные переменные

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

В текущем проекте у нас есть две программы, в каждой из которых используются внутренние переменные для хранения временных данных. Мы можем заменить внутренние переменные глобальными, чтобы в обеих программах можно было использовать одну и ту же переменную без необходимости передачи любых аргументов из одной в другую. Например, давайте внесем в уже использованный код в уроке 3.2. некоторые изменения:

// описания программы
THIRDANG();
ANG();

// глобальные переменные
EXPORT angle1, angle2;

// THIRDANG(a, b)
// Берет два угла a и b треугольника (в радианах) и
// выдает третий угол (в градусах)
EXPORT THIRDANG(a, b)
BEGIN
  angle1 := a;
  angle2 := b;
  ANG();
  RETURN(180-angle1-angle2);
END;

// ANG()
// Конвертирует в градусы углы angle1 и angle2, сохраненные в глобальных переменных
EXPORT ANG()
BEGIN
  angle1 := angle1/PI*180;
  angle2 := angle2/PI*180;
END;

Прокомментируем изменения в этом коде:

  1. Глобальные переменные НЕЛЬЗЯ определять/описывать внутри блока программы!
  2. Внутренние переменные больше не используются, кроме тех, что переданы в качестве аргументов в программу THIRDANG.
  3. Глобальные переменные angle1 и angle2 описаны таким же способом, как подпрограммы (объяснение было дано ранее).
  4. При вызове ANG() больше не нужно вводить аргументы.
  5. Теперь глобальные переменные появляются в Обозревателе Памяти (Memory Browser) и ведут себя точно так же, как встроенные глобальные переменные от A до Z. То есть пользователь может ввести angle1 := 2; в командной строке, чтобы изменить значение angle1. Обратите внимание на то, что нет подсказки "создать" angle1 как новую переменную.
  6. Глобальные переменные angle1 и angle2, а также программы THIRDANGLE() и ANG() могут быть использованы в качестве подпрограмм в программах, определенных в другом исходном файле.