Заметка Неуча "О циклах в C++"
Циклы, это такая крайне полезная фиговина, дающая возможность упорно двигаться к результату.
PS: Применительно не только к C++.
Цикл FOR - когда вы наверняка сколько раз надо "сделать дело", чтобы "гулять смело".
Что делает: объявляет старт счетчика (в примере и сам "счетчик"), условие его остановки, и шаг с которым он тикает, а уже после выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".
Его можно использовать, например, для чтения или наполнения массива типа char. Ну или просто заставить эту тупую железяку сосчитать до 1000.
Цикл WHILE - когда вы сначала ставите цель, а потом упорно к ней стремитесь.
Что делает: объявляет условие для остановки и начинает выполнять "ВАШИ БЕЗУМНЫЕ КОМАНДЫ" до тех пор пока это условие не будет достигнут.
Тут надо очень ясно понимать, что пока условие не достигнуто - цикл не окончится. В примере, все упирается в счетчик, и он увеличивается на 1 в конце каждого прогона цикла.
Цикл DO...WHILE - когда вы сначала делаете, потом думаете, и опять делаете, пока не выясняется, что хватит.
Что делает: сначала выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ", потом сверяет их с ожидаемым результатом, и если не сходится, то вновь выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".
Ключевое отличие, что в отличии от обычного while, тут ваши команды в любом случае выполняться хотя бы раз.
С уважением, Ваш Неуч.
for(;;){
БЕЗУМНЫЕ КОМАНДЫ
}
Вместе i = i + 1 не плохо было бы использовать инкремент, вот так: i++, a лучше так ++i . Увеличит вашу переменную на 1 без регистрации и смс.
В операторах ветвления, да и везде, желательно разграничивать код пробелами. Т.е. вместо
for(int i=0; i<123; ++i) писать for (int i = 0; i < 321; ++i)
Читабельность такого кода увеличивается в разы, а значит допустить ошибку будет труднее.
Хмм... Простые циклы видели все. Не лучше было бы упомянуть о циклах for из 11 стандарта?
std::vector<int> arr = {1, 2, 42};
for (int i : arr) {
// do smth.
}
i = i + 1. C++