Каким циклом вы больше любите пользоваться? - страница 6

 
Petros Shatakhtsyan:

Не верьте никому.

Есть комбинаторные алгоритмы, где  с применением goto, программа становится более  компактнее, короче и ясно.

Компактнее - да. Но вот насчет "ясно" - я как-то сомневаюсь. 

И насчет "опасности" - лично мне даже оператор break не нравится. Стараюсь его не использовать. Меня нервирует, когда внутри цикла стоит switch, а внутри этого оператора - break. Я-то понимаю, что break - это прерывание работы селектора, но постоянно хочется проверить, не получается ли заодно и случайного прерывания работы цикла ? В результате - я стараюсь по возможности заменить оператор break оператором return.

Лично мне - никогда не требовался оператор GOTO, вполне возможно, я сразу, проектируя код, моделирую его в рамках стандартных блоков.

 

Вот пример без операторов цикла. Какая красота :)


int x, y;

M: x=rand()%100;  y=rand()%100;

if ( x+y < 100)  goto M;
 
Petros Shatakhtsyan:

Вот пример без операторов цикла. Какая красота :)

Ну и чем это лучше, чем:

int x, y;

do

  {  x=rand()%100;  y=rand()%100; }

while ( x+y < 100);

По читаемости и понимаемости - на мой взгляд, разницы никакой.
 
только цикл фор - только хардкор, принципиально не пользовался свич вообще ни разу, любая задача, требующая цикла, решалась через фор, я до сих пор не до конца уверен где надо инкремент а где декремент ставить, постоянно лезу проверять
 
Petros Shatakhtsyan:

Не верьте никому.

Есть комбинаторные алгоритмы, где  с применением goto, программа становится более  компактнее, короче и ясно.

Правильно говорят что goto опасная штучка, но только для тупых программистов. 

Нет, не тупых. Форекс-бизнес прежде всего ищет новых клиентов. А в руках новичков, действительно, опасно многое. Кроме GOTO, я отнес бы к таким запретным элементам языка команду Move (копирование памяти с произвольного адреса на произвольный), заливку памяти байтами с нужным значением на заданную длину с заданного адреса.

 
George Merts:

Ну и чем это лучше, чем:

int x, y;

do

  {  x=rand()%100;  y=rand()%100; }

while ( x+y < 100);

По читаемости и понимаемости - на мой взгляд, разницы никакой.
На мой взгляд, если рассматривать только приведенный пример, то явный цикл do - while смотрится более выразительно, читабельнее. А если смотреть более сложные варианты, то там преимущества явных циклов будут на голову выше.
Причина обращения: