Estructuras de selección en C++

Plantilla:Mejorar

Estructuras de Selección en C++
Información sobre la plantilla

Los programas C y C++ se ejecutan secuencialmente, aunque esta secuencia puede ser interrumpida de varias maneras.

Sentencia switch

Las etiquetas son la forma en que se indica al compilador en qué puntos será reanudada la ejecución de un programa cuando haya una ruptura del orden secuencial.

Cuando se usa la sentencia switch el control se transfiere al punto etiquetado con el case cuya expresión constante coincida con el valor de la variable del switch. A partir de ese punto todas las sentencias serán ejecutadas hasta el final del switch, es decir hasta llegar al "}". Esto es así porque las etiquetas sólo marcan los puntos de entrada después de una ruptura de la secuencia de ejecución, pero no marcan las salidas. Esta característica nos permite ejecutar las mismas sentencias para varias etiquetas distintas, y se puede eludir usando la sentencia de ruptura "break" al final de las sentencias incluidas en cada "case". Si no se satisface ningún "case", el control parará a la siguiente sentencia después de la etiqueta default. Esta etiqueta es opcional y si no aparece se abandonará el "switch".

Sintaxis:

switch(<variable>) {

  case <expresión_constante>: [<sentencias>][break;]
  . . . 
  [default: [<sentencias>]] 

}

Ejemplo:

switch(letra) {

  case 'a': 
  case 'e': 
  case 'i': 
  case 'o': 
  case 'u': 
     EsVocal = true; 
     break; 
  default: 
     EsVocal = false; 

}

En este ejemplo letra es una variable de tipo "char" y EsVocal de tipo "bool". Si el valor de entrada en el "switch" corresponde a una vocal, EsVocal saldrá con un valor verdadero, en caso contrario, saldrá con un valor falso. El ejemplo ilustra el uso del "break", si letra es 'a', se cumple el primer "case", y la ejecución continúa en la siguiente sentencia, ignorando el resto de los "case" hasta el "break".

Enlaces externos

Fuentes

  • Addison Wesley - C++ Network Programming Volume I - Mastering Complexity with ACE and Patterns
  • Como programar en C y C++ Tomo I
  • C con Clase