Заметка Неуча "О циклах в C++"

Циклы, это такая крайне полезная фиговина, дающая возможность упорно двигаться к результату.

PS: Применительно не только к C++.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл FOR - когда вы наверняка сколько раз надо "сделать дело", чтобы "гулять смело".

Что делает: объявляет старт счетчика (в примере и сам "счетчик"), условие его остановки, и шаг с которым он тикает, а уже после выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".


Его можно использовать, например, для чтения или наполнения массива типа char. Ну или просто заставить эту тупую железяку сосчитать до 1000.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл WHILE - когда вы сначала ставите цель, а потом упорно к ней стремитесь.

Что делает: объявляет условие для остановки и начинает выполнять "ВАШИ БЕЗУМНЫЕ КОМАНДЫ" до тех пор пока это условие не будет достигнут.


Тут надо очень ясно понимать, что пока условие не достигнуто - цикл не окончится. В примере, все упирается в счетчик, и он увеличивается на 1 в конце каждого прогона цикла.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл DO...WHILE - когда вы сначала делаете, потом думаете, и опять делаете, пока не выясняется, что хватит.

Что делает: сначала выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ", потом сверяет их с ожидаемым результатом, и если не сходится, то вновь выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".


Ключевое отличие, что в отличии от обычного while, тут ваши команды в любом случае выполняться хотя бы раз.

С уважением, Ваш Неуч.

Лига программистов C/C++

60 постов4.8K подписчиков

Добавить пост

Правила сообщества

Соблюдайте правила Pikabu:

https://pikabu.ru/html.php?id=wtf


Помимо этого ЗАПРЕЩЕНО:

- Размещать в сообществе посты стиля "Подскажите как удалить вирус", "Подскажите как установить программу", "Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину" или "Напишите за меня лабу в универ". Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.

Вы смотрите срез комментариев. Показать все
5
Автор поста оценил этот комментарий

Вместе i = i + 1 не плохо было бы использовать инкремент, вот так: i++, a лучше так ++i . Увеличит вашу переменную на 1 без регистрации и смс.

В операторах ветвления, да и везде, желательно разграничивать код пробелами. Т.е. вместо

for(int i=0; i<123; ++i) писать for (int i = 0; i < 321; ++i)

Читабельность такого кода увеличивается в разы, а значит допустить ошибку будет труднее.

раскрыть ветку (6)
Автор поста оценил этот комментарий

Нормальный компилятор "увидит" что возвращаемое значение i++ не используется и влегкую соптимизирует это. Скорее всего это справедливо только для POD типов

Автор поста оценил этот комментарий
отступы в теле
1
Автор поста оценил этот комментарий

терпеть не могу  когда кто то используют ++i и i++ в одном тексте. Поди голову поломай, вспоминая чем они отличаются.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Для базовых типов можно и префиксную и постфиксную запись использовать, а вот для более сложных структур, вроде итераторов, лучше использовать префиксную, чтобы не создавался лишний экземпляр при копировании (следует из переопределения оператора ++)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Вот и тема следующей заметки.
Спасибо! =)

Автор поста оценил этот комментарий

в тестах всегда валюсь на этом

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку