1. Если в теле процедуры (функции) перевычисляется некоторая нелокальная переменная, т. е. такая переменная, которая описана в других модулях, содержащих данный, то могут наблюдаться непредвиденные последствия.
Пример. Пусть функция F (X) имеет такой вид:
т. e. в процессе работы функция F изменяет некоторую нелокальную величину V. Рассмотрим теперь два выражения, которые вычисляются в программе, содержащей F(X):
Эти выражения дадут разные результаты, так как в первом случае к F(X) прибавится уже измененное значение V (в процессе работы F), а во втором случае к первоначальному значению V добавляется F(X).
2. Вторая опасность заключается в неправильном использовании параметров-переменных в качестве формальных параметров.
Пример. Найти 5-й член последовательности
Опасно оформлять функцию в виде
Так, если обратиться к этой функции оператором В: = F(1,5), будет "испорчена" константа 1, так как в ячейку памяти (первый фактический параметр), содержавшую ранее единицу, функция F поместит
текущий; член последовательности, и при дальнейшей работе программы вместо 1 будет использоваться значение а5. Такие ошибки бывает трудно найти, поэтому полезно придерживаться следующего правила: в функциях не использовать параметры-переменные.