Использование переменных – один из базовых вопросов построения программ и технологии программировании. Начинающим программистам MathCAD можно посоветовать руководствоваться следующими простыми правилами работы с переменными, применение которых поможет избежать типичных программистских ошибок структурного характера.
Правило 1: Не используйте внешних переменных при определении подпрограмм. Использование внешних переменных нарушает известный в программировании принцип модульности - такая подпрограмма становится контекстнозависимой, так как результаты ее работы оказываются зависящими не только от реализованного в программе алгоритма и значений входных параметров, но и от условий, существующих вне этой программы. Отказ от использования внешних переменных всегда можно компенсировать соответствующим расширением списка формальных аргументов подпрограммы.
Правило 2: Если в правой части выражения, используемого при определении подпрограммы, присутствует переменная, имя которой не совпадает ни с именем определенной к этому моменту локальной переменной, ни с именем формального аргумента подпрограммы, эта переменная будет трактоваться как внешняя переменная.
Правило 3: Внешняя переменная подпрограммы должна быть определена прежде, чем определяется эта подпрограмма. При выполнении подпрограммы всегда будет использовано то значение ее внешней переменной, которое эта переменная имела к моменту определения (а не к моменту выполнения !) подпрограммы.
Правило 4: Не используйте одинаковых имен для переменных разных категорий. При совпадении имен формального аргумента и внешней переменной (если Вы все же решили использовать такие переменные), значение внешней переменной будет замещено значением соответствующего фактического аргумента. Если совпадают имена локальной и внешней переменных подпрограммы, то с момента определения этой локальной переменной значение одноименной внешней переменной внутри подпрограммы будет недоступно. Если имя локальной переменной совпадает с именем формального аргумента, то значение соответствующего фактического аргумента будет недоступно в подпрограмме с момента определения этой локальной переменной.
Правило 5: Локальные переменные, определенные внутри некоторой подчиненной программы (не путать с подчиненными выражениями !), в ее родительской подпрограмме недоступны, а в ее дочерних подпрограммах доступны только те из них, которые использованы в качестве фактических аргументов при обращении к этим дочерним подпрограммам.
На рисунке 18 приведены примеры программной реализации линейных алгоритмов обработки данных, иллюстрирующие описанные выше структурные ограничения и правила использования переменных.
Рисунок 18 – Примеры реализации линейных MathCAD-программ
Пример а) иллюстрирует использование массива в качестве выходного параметра функции, вычисляющей значения корней квадратного уравнения.
В примере б) при определении функции f1 используется внешняя переменная w, получившая значение "1" перед определением функции. Переопределение этой переменной после определения функции f1 не повлияло на результат ее вычисления.
Функция f2 (пример в) является дочерней по отношению к функции f3, так как используется в определяющем эту функцию выражении.