может ли оператор if когда-либо использоваться для проверки цикла while?

#programming-languages

#программирование-языки

Вопрос:

некоторые хакеры обсуждают этот вопрос, и мне захотелось получить здесь правильный ответ

 If (condition_c){

While (condition_c){
//code here
}
}
 

Есть ли какой-нибудь случай или ситуация, когда это можно сделать?
Если да, укажите ситуацию, которая оправдывает ваш ответ.

Комментарии:

1. Можно ли это сделать? ДА. Полезно ли это? Нет.

2. Нет, это вообще не имеет смысла, и большинство компиляторов оптимизировали бы if условие. Тем не менее, этот вопрос, вероятно, принадлежит программистам, а не ТАК.

3. Я думаю, это может превратить a do-while в a while , но я надеюсь, что он никогда не будет использоваться таким образом.

Ответ №1:

Это возможно на всех языках, которые поддерживают IF и WHILE, поскольку вы просто составляете две конструкции. Существуют ограниченные ситуации, в которых это действительно имело бы смысл. Предполагая, что у вас нет никакого другого кода между вашими IF и WHILE (точно так же, как у вас нет в вашем примере), на самом деле есть только одна причина, по которой это имело бы смысл, и это в том случае, если у вас есть побочные эффекты в вашем состоянии. Рассмотрим следующий фрагмент кода Perl.

 if ($line = <STDIN>) {
    while ($line = <STDIN>) {
        print $line;
    }
}
 

В этой программе IF имеет смысл, потому что состояние моего входного буфера отличается при втором сравнении. Этот фрагмент кода может быть полезен, если я хочу, например, распечатать все строки файла значений, разделенных запятыми, но удалить заголовок, который является первой строкой.

Теперь вы можете сказать мне, что это можно было бы написать лучше, не помещая первое чтение внутри IF, но, возможно, я хочу привязать и ELSE к этому IF . Всегда есть более одного способа написания материала, поэтому имейте это в виду.

Итак, в заключение, этот код существенно отличается в том случае, если условие имеет побочные эффекты. Другими примерами могут быть что-то вроде «$ x— == 0» или «f (x)», где f имеет некоторый побочный эффект. Если это просто старое логическое значение, то нет.

Ответ №2:

Это почти наверняка возможно в большинстве языков программирования, поддерживающих такие конструкции. Вряд ли это будет полезно ни в одном из них.

Комментарии:

1. вы сказали: «это вряд ли будет полезно …» Это их дискуссия, потому что вы используете маловероятно, есть ли какой-нибудь случай, когда это вероятно?

2. @Chimdi2000 В любом конкретном случае это не вопрос вероятности. Если вы можете определить конкретный язык, где это дает некоторое преимущество, то да, но в остальном — нет. Это не дискуссия ради тезисов.