Beshere
@Beshere
Инженер-программист

Бесконечный цикл или ненужная за циклом переменная?

Время от времени встречаюсь с задачами, где надо крутить внутри цикла переменную и завершать цикл, когда она достигнет определенного значения. Есть два варианта реализации этого алгоритма:

1. Бесконечный цикл с выходом внутри
do {
 int myVar = getVar();
 // логика работы с myVar
 if (myVar <= 0)
 break;
} while (true)

Переменная сидит в своём скоупе, вычисление занимает одну строку, но бесконечный цикл выглядит страшновато, выход из него где-то в середине не очевиден.

2. Цикл с условием:
int myVar = getVar();
while(myVar > 0) {
 // логика работы с myVar
 myVar = getVar();
}

Цикл не выглядит бесконечным, выход очевиден. Но переменная myVar совершенно не нужно маячит за пределами цикла, строк её вычисления две штуки.

Какой алгоритм вы предпочтете? Почему?
  • Вопрос задан
  • 255 просмотров
Решения вопроса 3
Zoominger
@Zoominger
Сись админ
1. Бесконечный цикл с выходом внутри

This. Волков бояться - в лес не ходить, не бойтесь принимать ответственность.
Боитесь бесконечных циклов - не используйте их. А бояться их не надо, если вы всё написали правильно, то ничего страшного не произойдёт.
Ответ написан
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
for (int myVar = getVar(); myVar > 0; myVar = getVar()) { /* do it */ }
Ответ написан
@alekseyHunter
Студент. Охотник за знаниями.
бесконечный цикл выглядит страшновато

Он будет вселять страх, если Вы у вас вместо инкремента будет декремент, а значит цикл точно будет бесконечным.

Мой выбор за бесконечным циклом, понравились метки на ассемблере (нет) и ,конечно, goto на Си)

Для второго цикла нужно искать объявление переменной, а это не всегда можно объявить ее перед блоком.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
В данном случае надо использовать не цикл-с-предусловием "while ...", а цикл-с-постусловием "repeat ... until" (иногда его пишут как "... while" или "do ... while", но условие стоит в конце цикла).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Unitarius Москва
от 130 000 до 180 000 руб.
King Bird Studio Москва
До 180 000 руб.
XCritical Software Санкт-Петербург
от 150 000 до 220 000 руб.
18 сент. 2019, в 09:40
1000 руб./за проект
18 сент. 2019, в 09:35
20000 руб./за проект
18 сент. 2019, в 08:49
10000 руб./за проект