Студенту >> Язык программирования Си


Условный оператор и условная операция

Условный оператор предназначен для выбора одного из двух альтернативных действий и имеет следующую форму записи:

    БНФ:
        условный_оператор =
           "if" "("выражение")" оператор_1 ["else" оператор_2]
    
    Пример:
            if ( a ) c = b+1; else c = b - 1;
            if ( a > b ) k = sin( x ); else k = x + x;

При выполнении условного оператора вначале вычисляется <выражение>. Если его значение не равно нулю, то выполняется <оператор_1>, а <оператор_2> пропускается. Если значение выражения равно нулю, то выполняется <оператор_2>, а <оператор_1> пропускается.

При наличии вложенных операторов if следует иметь в виду, что ключевое слово else всегда относится к ближайшему if, как показано в следующем примере:

   
        if( b > a )
        
             if( c < d ) k= sin(x);       
             else t = cos(x); 
        
        else c = tan( x );

Для того чтобы избежать ошибок рекомендуется использовать операторные скобки

 
    if( b < a )
    {
       if( c < d ) k = sin( x );
              else t = cos( x );
    }
    else c = tan( x );

Особенно это важно если у вложенного оператора if отсутствует else, т.е

 
    if( b > a )
       if( c < d ) k = sin( x );
              else c = tan( x ); /* else относится к
                                               вложенному if */

    if( b > a )
    {
       if( c < d ) k = sin( x );
    }
    else
       c = tan( x );        /* else относится к первому if */

Если в качестве <оператора_1> или <оператора_2> используется группа операторов, то ее записывают как составной оператор, заключая ее в операторные скобки "{" и "}".

Для того, чтобы сделать программу более понятной, рекомендуется операторы записывать в следующих формах:

  1. короткие операторы:
     
           if( a > b ) k = sin( x ); else k = x*x;
    
           if( a > b ) k = sin( x );
           else k = x*x;
    
  2. группы коротких операторов:
     
           if( a > b ) { ... } else {... }
    
           if( a > b ) { ... }
                  else { ... }
    
                  или
    
           if( ... )
              { ..... }
           else
              { ..... }
    
  3. длинные группы операторов:
     
           if(... )
           {
              .
              .
              .
           }
           else
           {
              .
              .
              .
           }
    
  4. множественный выбор:
     
           if      ( a == 6  )          { ... }
           else if ( a == 8  )          { ... }
           else if ( a == 15 )          { ... }
           else if ( a > 20 && a < 28 ) { ... }
           else                         { ... }
    

В некоторых случаях вместо оператора if удобно использовать условную операцию ?:, которая позволяет сократить запись программ и число используемых переменных.

 
     БНФ:
          условное_операция = выр_0 "?" выр_1 ":" выр_2

Значение условной операции равно <выр_1>, если <выр_0> не равно 0 и <выр_2> в противном случае. Например, следующий оператор

 
          if ( x>a ) f = sin( x-a ); else f = sin(x);

можно заменить условной операцией, и сразу вычислить f:

 
                   f = sin( x>a ? x-a : x );

Очевидно, в последнем случае получился более короткий код, поскольку обращений к переменной f и функции sin вдвое меньше.

НАВЕРХ