— Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины?
Думаете — одно? Не факт! Это может в первом классе на уроке арифметики оно одно осталось. А ежели задать эту задачку программистам... Ответы могут быть совершенно неожиданными:
— Неизвестно сколько. Никто-ж не знает, сколько яблок было у него до этого. Мораль: обнуляйте начальные переменные.
— Даже если обнулить переменные, никто не гарантирует, что Мальвина не отдала ему свои яблоки, пока он уничтожал те два. Или не сожрала третье. Мораль: не используйте глобальные переменные.
— А где гарантия, что Буратино съел именно два яблока, а не два чего-то другого? Там написано что он съел два.
— Количество яблок у Буратины не изменилось. Они только поменяли область видимости: часть из них переместилась внутрь Буратины.