КАК НЕ НАДО ПРОГРАММИРОВАТЬ ЦИКЛЫ
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.