Побочные эффекты

Рейтинг:   / 0
ПлохоОтлично 

Побочные эффекты

Если в теле процедуры (функции) используется некоторая нелокальная переменная, т.е. такая переменная, которая описана в основной части программы, то могут наблюдаться непредвиденные последствия.

Пример. Пусть функция f(x) имеет такой вид:

function f(x: real): real;

    begin

        v := v * x;

        f := sqrt(v) + x

    end;

т.е. в процессе работы функция f изменяет некоторую нелокальную величину v. Рассмотрим теперь два выражения, которые вычисляются в программе: f(x) + v и v + f(x).

Эти выражения дадут разные результаты, т.к. в первом случае к f(x) прибавляется уже измененное значение v (в процессе работы f), а во втором случае к первоначальному значению v добавляется f(x).

Вторая опасность заключается в неправильном использовании параметров-переменных в качестве формальных параметров.

Пример. Найти 5-й член последовательности

an + 1 = 3an – 2,

a1 = 1.

Опасно оформлять функцию в виде

function f(var a, n: integer): integer;

    var i: integer;

    begin

        for i := 1 to n do

            a := 3 * a – 2;

        f := a

    end;

Так, если обратиться к этой функции оператором b := f(1, 5), будет «испорчена» константа 1, т.к. в ячейку памяти (первый фактический параметр), содержавшую ранее единицу, функция f поместит текущий член последовательности, и при дальнейшей работе программы вместо 1 будет использоваться значение a5. Такие ошибки бывает трудно найти, поэтому полезно придерживаться следующего правила: в функциях не использовать параметры переменные.

Критические заметки

Здесь представлены комментарии некоторых спортивных состязаний, а также оценка вопросов, сыгранных в телевизионных клубах "Что? Где? Когда?" России и Беларуси.  Особое внимание будет уделено игровым видам спорта (футбол, хоккей). Найдут для себя полезное и любители шахмат и шахматной композиции. 

Читать

Лучшие книги

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

Перейти к книгам