Руководство полного чайника по программированию на языке Си

       

КАК НЕ НАДО ПРОГРАММИРОВАТЬ ЦИКЛЫ


int i;

for(i=0; i < 4; i++){ if(i == 0) func0(); else if(i == 1) func1(); else if(i == 2) func2(); else if(i == 3) func3(); }

В данном примере цикл АБСОЛЮТНО НЕ НУЖЕН. То, что тут делается, есть просто ПОСЛЕДОВАТЕЛЬНОСТЬ операторов:

func0(); func1(); func2(); func3();

Цикл имеет смысл лишь тогда, когда много раз вызывается ОДНО И ТО ЖЕ действие, но может быть зависящее от параметра, вроде func(i). Но не разные функции для разных i.

Аналогично, рассмотрим такой пример:

int i;

for(i=0; i < 10; i++){ if(i==0) func0(); else if(i == 1) func1(); else if(i == 2) func2(); else funcN(i); }

Тут funcN(i) берет на себя роль "а в остальных случаях". Однако, этот пример более естественно может быть записан так:

int i;

func0(); func1(); func2(); for(i = 3; i < 10; i++) funcN(i);

Заметьте, что цикл теперь начинается с индекса 3.

А теперь - случай, где смесь цикла и условного оператора оправдана:

int i;

for(i=0; i < 100; i++){ if((i % 2) == 0) even(); /* четный */ else odd(); /* нечетный */ }

Тут в цикле проверяется четность индекса i.



Содержание раздела