Статус переменных
в функциях
Переменные,
указанные в списке параметров функции, являются
локальными
и служат для
переноса значений, которые подставляются на их место при вызовах функций.
Эта особенность
переменных-параметров хорошо видна при разборе примера, показанного на рис.
20.3. Здесь (признаемся, что неточно) задана некоторая функция двух переменных
fun(x,
у).
В этом примере
в окне редактора создана функция fun двух переменных х и у, вычисляющая z =
х
2
+у
2
.
Поскольку переменные
х
и
у
указаны
как параметры функции fun(x,
у),
то они являются локальными. В примере
вне тела функции им заданы нулевые значения. Очевидно, что при вычислении значения
fun(2, 3) в теле функции задается х=2 и у=3. Поэтому результат — z=13. Однако
после выхода из тела функции переменные х и у принимают свои исходные значения,
равные нулю. Так что эти переменные меняют свои значения на значения параметров
функции только локально — в пределах тела функции.
А каков статус переменной z в нашем примере? Она, как и любая переменная, определенная
в теле функции, также будет локальной. Изначально ее значение
не
определено. В теле функции переменная принимает значение z=13. А после возврата
из функции, как нетрудно увидеть из рис. 18.2, переменная z, несмотря на ее
применение в теле функции, остается неопределенной. На это указывает сообщение,
отображаемое после попытки вывода значения переменной z.
Рис.
20.3.
Пример, поясняющий действие локальных и глобальных
переменных при задании файла-функции
Возврат из
функции производится после обработки всего тела функции, т. е. при достижении
конца файла функции. При использовании в теле функции условных операторов, циклов
или переключателей иногда возникает необходимость осуществить возврат функции
раньше, чем будет достигнут конец файла. Для этого служит команда return. В
любом случае, результатом, возвращаемым функцией, являются значения выходных
параметров (в нашем случае выходным параметром является переменная z), присвоенные
им на момент возврата.
У нашей функции
имеется один недостаток — вывод на индикацию значения z=13 из тела функции,
хотя после этого
г
остается равным 0. Чтобы убрать побочный эффект вывода
значения z, достаточно установить знак ; после математического выражения, определяющего
z. Таким образом, окончательно наша функция должна записываться следующим образом:
function
z=fun(x,y)
z=x^2+y^2;
Этот пример
наглядно показывает, что пропуск любого слова или даже простого оператора (вроде
знака :) может привести к не сразу понятным побочным эффектам и даже неверной
работе функции. Программирование требует особой точности и педантичности, именно
поэтому далеко не все могут быть хорошими программистами.
Содержание раздела