Diferencia entre revisiones de «Sentencias de selección (programación)»

(Página creada con '<div align="justify">{{Definición|Nombre=Sentencias de selección (programación)|imagen= |concepto=Permiten decidir entre distintos cursos de acción en función de ciertos ...')
 
Línea 6: Línea 6:
 
De no ser por estas [[Sentencias (Programación)|sentencias]], el flujo de ejecución del programa estaría siempre constreñido a la ejecución de sus sentencias en el orden en que están colocadas en el [[Código fuente|código fuente]].
 
De no ser por estas [[Sentencias (Programación)|sentencias]], el flujo de ejecución del programa estaría siempre constreñido a la ejecución de sus sentencias en el orden en que están colocadas en el [[Código fuente|código fuente]].
 
== Sentencia if … else ==
 
== Sentencia if … else ==
 +
Archivo:Sentencia_if-else.JPG
 
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.
 
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 ===
 
=== Sintaxis ===
Línea 89: Línea 90:
 
== Fuente  ==
 
== Fuente  ==
 
* [http://www.zator.com/Cpp/E4_10_2.htm Sentencias de selección]
 
* [http://www.zator.com/Cpp/E4_10_2.htm Sentencias de selección]
* [www.lcc.uma.es/~pastrana/LP/curso0506/Practica03/P03_05.pdf Sentencias de Selección en C++]
+
* [http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/flujo.htm El flujo de un programa (sentencias condicionales)]
*   [http://teoria-de-programacion.globered.com/categoria.asp?idcat=39 Sentencias]
+
* [http://teoria-de-programacion.globered.com/categoria.asp?idcat=39 Sentencias]
  
 
[[Category:Informática]] [[Category:Lenguajes_de_programación]] [[Category:Programación]]
 
[[Category:Informática]] [[Category:Lenguajes_de_programación]] [[Category:Programación]]

Revisión del 14:03 27 sep 2011

Sentencias de selección (programación)
Información sobre la plantilla
Concepto:Permiten decidir entre distintos cursos de acción en función de ciertos valores

Sentencias de selección (programación). También llamadas de control de flujo, permiten decidir entre distintos cursos de acción en función de ciertos valores. Existen tres tipos de estas sentencias de selección:

  1. if...else
  2. else if
  3. switch

De no ser por estas sentencias, el flujo de ejecución del programa estaría siempre constreñido a la ejecución de sus sentencias en el orden en que están colocadas en el código fuente.

Sentencia if … else

Archivo:Sentencia_if-else.JPG 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 paréntesis. 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 y else.

  • <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>) {
  
}
else  {
  
}

Sentencia else if

Estas sentencias no representan en realidad nada nuevo, solo una sucesión de if else anidados, aunque de uso muy frecuente.

if ( <expresion1> )
  
else if ( <expresion2> )
  
else if ( <expresion3> )
  
else
  

En realidad, a la luz de lo expuesto en el apartado anterior, su indentación correcta sería:

if ( <expresion1> )
  
else
  if ( <expresion2> )
     
  else
     if ( <expresion3> )
        
     else
        

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).

Sentencia switch

Se trata de una sentencia condicional multi-salida en la que las decisiones se toman en función de un valor numérico entero de entre una serie de opciones posibles. Puede existir una cláusula por defecto o bien no adoptarse ninguna acción.

Sintaxis

switch ( <expresion> ) {
 case <const1> : <sentencia1>; [break;]
 case <const2> : <sentencia2>; [break;]
   .
   .
   .
 case <constN> : <sentenciaN>; [break;]
[default : <sentenciaD>; ]
}

Descripción

La sentencia switch comprueba cuando una expresión <expresion> entre paréntesis (que se traduce en un valor numérico) coincide con alguno de una serie de valores enteros constantes y diferentes (<constX>). En cuyo caso, se ejecuta un bloque de código específico <sentencia>. En caso de estar presente la cláusula opcional default y no existir concordancia con ninguno de los valores anteriores, se ejecuta una sentencia por defecto (<sentenciaD>). Los valores case y default pueden aparecer en cualquier orden, aunque lo usual es colocar default al final. Los dos puntos : después de <constX> son imprescindibles.

Las expresiones <constX> son expresiones constantes que se resuelven en un entero. Pueden ser simples o compuestas, Ejemplo:

switch (c - 48) {
  case 0: case 1: case 2: case 3: case 4:
  case 5: case 6: case 7: case 8: case 9:
     cout << "Dígito" << endl;
     break;
  case 17: case 21: case 25: case 31: case 37:
  case 49: case 53: case 57: case 63: case 69:
     cout << "Vocal" << endl;
     break;
  default:
     cout << "Otro carácter" << endl;
}

Después de ejecutado el bloque de código correspondiente a una concordancia, siguen las comprobaciones, por lo que puede ser conveniente incluir un break para abandonar el control del switch (no es necesario ningún break después de la última)

Puede Consultar

Fuente