lunes, 3 de octubre de 2011

¿que es if?


 if … else
En su forma abreviada, cuando no existe la cláusula else, esta sentencia permite escoger entre ejecutar o no una sentencia, en función del resultado de una expresión lógica.  En su forma ampliada, cuando la cláusula else está presente, permite escoger entre dos opciones alternativas.
 Sintaxis
if ( <condición> )  <sentencia1>;
[ else  <sentencia2>; ]
 Descripción
- <condición> debe ser una expresión relacional  que devuelve un valor lógico, es decir, un bool y estar obligatoriamente entre parentesis.  Pueden declararse variables dentro de la <condición>.  Por ejemplo, la siguiente es una sintaxis válida:
if (int val = func(arg))
   val = z ;
else  val = y;
El ámbito de la variable val incluye toda la sentencia if,  incluyendo, en su caso, el bloque <sentencia2> de else.  La cláusula else es opcional, pero no puede haber sentencias entre el if yelse.    Recuerde las precauciones indicadas respecto de las expresiones relacionales , ya que son motivo frecuente de error en este tipo de sentencias.
 <sentencia1>. Es una sentencia o bloque de código que se ejecuta si <condicion> se evalúa como cierto (true  !=  0).
  <sentencia2> es una sentencia o bloque de código que se ejecuta si existe un else y <condicion> resulta falso (false  ==  0)

Puesto que el if simplemente chequea el valor resultante de <condicion> (igual o desigual a cero), las dos expresiones siguientes son equivalentes:
if ( expresion )  <sentencia> ;
if ( expresion !=0 ) <sentencia> ;
La forma más general es:
if (<condicion>) {
   <sentencia1>;
}
else  {
   <sentencia2>;
}
 Ejemplos
Uno sencillo:
if (salida == 'S') break;
Otro ejemplo:
if (a > b)
   z = a;
else
   z = b;
Se podría haber escrito de forma más comprimida:
if (a > b) z = a;
else z = b;
También:
a > b ? z = a : z = b ;
o mejor aún:
z = (a > b ? a : b);
Otro ejemplo:
if (int val = func(count)) { /* sentencias */ }
else {                     // otra vía de acción
   cout << "val es falso";
}
Puesto que la cláusula else es opcional, en los if... else anidados podría haber ambigüedad sobre a qué if corresponde un else;  esto se evita asociando el else al if más interno sin else.   Por ejemplo, en los dos trozos de código siguientes, el primero tiene una indentación que no se corresponde con la realidad lógica del programa.
// mal indentado: ------------
if ( n > 0 )
   if ( a > b )
      z = a;
else
   z = b;

// bien indentado: -----------
if ( n > 0 )
   if ( a > b )
      z = a;
   else
      z = b;
else if
Estas sentencias no representan en realidad nada nuevo, solo una sucesión de if  else anidados, aunque de uso muy frecuente, por lo que haremos una consideración especial de este caso.
if ( <expresion1> )
   <sentencia1> ;
else if ( <expresion2> )
   <sentencia2> ;
else if ( <expresion3> )
   <sentencia3> ;
else
   <sentencia4> ;
En realidad, a la luz de lo expuesto en el apartado anterior, su indentación correcta sería:
if ( <expresion1> )
   <sentencia1> ;
else
   if ( <expresion2> )
      <sentencia2> ;
   else
      if ( <expresion3> )
         <sentencia3> ;
      else
         <sentencia4> ;
Las expresiones <expresion> son evaluadas correlativamente hasta que se encuentra la primera que devuelve un valor cierto ( != 0 ), en cuyo caso se ejecuta el bloque de código<sentencia> correspondiente y acaba la evaluación. En caso de que ninguna de las <expresion> sea cierta, se ejecuta la <sentencia> correspondiente al else (si existe).

No hay comentarios:

Publicar un comentario