Você está na página 1de 3

Elementos de Programacin 1A E.T.S.I.

Informtica Gestin

Prctica 3: Sentencias de Seleccin en C++.


Los programas definidos hasta este punto se ejecutan de modo secuencial, es decir, una sentencia despus de otra. La ejecucin comienza con la primera sentencia del programa y prosigue hasta la ltima sentencia, cada una de las cuales se ejecuta una sola vez. Esta forma de programacin slo permite resolver programas sencillos. Sin embargo, para la resolucin de problemas de tipo general se necesita la capacidad de controlar cules son las sentencias que se ejecutan, y en qu momentos. Recordemos que la arquitectura de Von Newman exiga la necesidad de una sentencia de salto condicional.

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:

Jos Luis Pastrana Brincones @ 2005 1

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;

para los valores 1,3 y 5 para el para el valor valor 2 4

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; }

Jos Luis Pastrana Brincones @ 2005 2

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;

// Hace una pausa // Valor de retorno a S.O.

Cdigo 132 402 111 171 120

Departamento Ventas Atencin al Cliente Financiacin Direccin Contabilidad

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.

Jos Luis Pastrana Brincones @ 2005 3

Você também pode gostar