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

3.4. Экспортируемые и не экспортируемые переменные и программы

Команда EXPORT, которая появилась перед глобальными переменными и определениями программ в коде урока 3.3., делает соответствующие переменные и программы видимыми для всей системы: пользователя, других программ, приложений и так далее. Иногда такие переменные и программы необходимо "скрывать" от пользователя (или, другими словами, от Обозревателя Памяти (Memory Browser)), чтобы их значения не изменялись, или чтобы предотвратить влияние других программ из других исходных файлов на значения или вызов программ.

Если удалить команду EXPORT, все программы станут невидимыми для пользователя и других программ из другого исходного файла. И то, что когда-то было глобальной переменной, становится внутренней переменной. Примите во внимание эту небольшую модификацию (единственное изменение - это удаление команды EXPORT из области описания глобальной переменной и из программы ANG()).

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

// теперь глобальные переменные стали внутренними
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, сохраненные в глобальных переменных
ANG()
BEGIN
  angle1 := angle1/PI*180;
  angle2 := angle2/PI*180;
END;

Что изменится теперь:

  1. ANG() больше недоступна пользователю, ее также нет в списке для запуска через пункт в Каталоге программ (Program Catalog) .
  2. Глобальные переменные angle1 и angle2 больше не видимы в Обозревателе памяти (Memory Browser). Пользователи, которые попытаются получить доступ к этим переменным через командную строку, получат сообщение об ошибке. Теперь они стали внутренними переменными, и они доступны через программы внутри одного и того же исходного файла от точки описания этих переменных до конца исходного файла.
  3. Переменные angle1 и angle2 больше недоступны для других программ, определенных в других исходных файлах.
  4. Программу ANG() больше нельзя вызвать с помощью программ из других исходных файлов. Однако ANG() все еще можно использовать как подпрограмму во всех программах, созданных в одном и том же исходном файле, в котором определена программа ANG() (т.е. внутри нашего исходного файла PROJECT).

Замечание: Область действия экспортируемых глобальных переменных распространяется на всю систему. Точно также встроенные системные переменные от L0 до L9 могут быть использованы для операций со списками в любом месте системы, к экспортированным переменным также можно получить доступ из любого места в системе. Область действия не экспортируемых (внутренних) переменных ограничена исходным файлом.