Escolar Documentos
Profissional Documentos
Cultura Documentos
Informtica Gestin
Estructuras de Seleccin
Las estructuras de seleccin o condicionales controlan si una sentencia o secuencia de sentencias se ejecutan, en funcin del cumplimiento o no de una condicin o expresin lgica. C++ tiene dos estructuras de control para la seleccin, if y switch.
Sentencia if
La sentencia if elige entre varias alternativas en base al valor de una o ms expresiones lgicas. La notacin BNF de esta sentencia es la siguiente(los smbolos terminales se han escrito en negrita): <sent_if> ::= if (<expres_log>) (<sent>|<bloque>) {else if (<expres_log>) (<sent>|<bloque>)} [else (<sent>|<bloque>)]
donde <expres_log> es una expresin lgica que ha de ir entre parntesis, y <sent> es una sentencia, y <bloque> es un bloque de sentencias que comeinza en '{' y termina en '}'. Por ejemplo: if (condicion_SI) { // Sentencias SI } else if (condicion_SINO) { // Sentencias SINO } else { // Sentencias EN OTRO CASO }
Sentencia switch
La sentencia switch es una sentencia de C++ que se utiliza para seleccionar una de entre mltiples alternativas. Esta sentencia es especialmente til cuando la seleccin se basa en el valor de una variable de un tipo simple o de una expresin de un tipo simple denominada expresin de control o selector. La notacin BNF de la sentencia es la siguiente (los smbolos terminales se han escrito en negrita): <sent_case>::= switch (<expres>) { { <rama> } [default : {<sent>} ; break;] } <rama> ::= case <exp_const> : { case <exp_const> :} {<sent>}; break;
donde <expres> es una expresin, <sent> es una sentencia o secuencia de sentencias terminadas en punto y coma (;), y <exp_const> es una expresin constante. Por ejemplo:
Elementos de Programacin 1A E.T.S.I. Informtica Gestin switch { case case case (numero) 1: 3: 5: // Sentencias break; casee 2: // Sentencias break; case 4: // Sentencias break; default : // Sentencias break;
EN OTRO CASO
} EJEMPLO. Veamos el siguiente ejemplo en el que usan sentencias if y switch Escribir un programa que lea un nmero entero entre 1 y 5. Si el nmero es menor que 1 o mayor que 5 el programa debe avisar y no hacer nada y en caso de que sea vlido debe mostrar el nmero romano que lo representa. /*---------------------------------------------------------------| Autor: | | Fecha: Versin: 1.0 | |-----------------------------------------------------------------| | Descripcin del Programa: | | | | ----------------------------------------------------------------*/ // Incluir E/S y Libreras Standard #include <iostream> #include <cstdlib> using namespace std; // Zona de Declaracin de CONSTANTES const int MIN = 1; const int MAX = 5; int main() { // Zona de Declaracin de VARIABLES int num; cout << "Introduzca un nmero entre " << MIN << " y " << MAX << ": "; cin >> num; if (num<MIN) { cout << "Error: El Nmero debe ser mayor que " << MIN << endl; } else if (num>MAX) { cout << "Error: El Nmero debe ser menor que " << MAX << endl; }
Elementos de Programacin 1A E.T.S.I. Informtica Gestin else { switch(num) { case 1: cout << break; case 2: cout << break; case 3: cout << break; case 4: cout << break; case 5: cout << break; } } system("PAUSE"); return 0; } ENUNCIADO PRCTICA. 1. Escribir un programa que lea el cdigo de un departamento (nmero natural) y muestre por pantalla el nombre del mismo segn la siguiente tabla. Si no corresponde a ninguno se informar del error.
num << " = I " << endl; num << " = II " << endl; num << " = III " << endl; num << " = IV " << endl; num << " = V " << endl;
2. Escribir un programa que lea por pantalla 2 nmeros enteros y 1 carcter y realice la operacin que indique el carcter (+, -, *, / ) y muestre su resultado por pantalla. Si el carcter no es uno de los indicados se informar que la operacin no es vlida y en el caso de la divisin, si el divisor (segundo nmero) es 0 se dar como salida ms infinito o menos infinito en funcin del signo del primer operando o indeterminacin si ambos son 0.