programación en C++ desde cero.
y entérate de las novedades o deja un comentario.
Ültima modificación: 13-07-2018.
Visitas este mes: 1
Visitas el mes pasado:
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de los manuales.:
En los distintos manuales incluimosm más webgrafía especifica de cada sección.
Si este sitio te parece interesante puedes contribuir con una pequeña aportación.
En páginas anteriores hemos visto la estructura if y else if para elegir lo que el programa debe hacer. Cada una de las opciones viene controlada por una condición. si se cumple la condición se ejecuta la opción, y si no se pasa a comprobar la siguiente.
La escructura switch tiene también la misma función, pero aquí, todas las opciones dependen del valor de una variable.
Tenemos una variable, y cada opción consiste en comparar esa variable con otro elemento, de manera que si el valor de la variable y el del elemento comparado son iguales, el resultado es verdadero, la condición se cumple, y se ejecuta el código asociado. Si no es así se pasa a la siguiente opción donde se vuelve a repetir el proceso. Si no se ejecuta ninguna opción puede ponerse una opción por defecto al final.
El código de esta estructura es el siguiente:
switch (x) { case a: <sentencias para x == a>; break; case b: <sentencias para x == b>; break; .................... case n: <sentencias para x == n>; break; default: <sentencias para x == n>; }
Vamos a explicar este código y ver cómo está estructurado:
Observa que podemos poner tantas opciones case .... break; como queramos. El case a: indica que iniciamos una nueva opción, la cual ejecutará el código que le sigue en el caso de que la variable principal (x) sea igual a la indicada a.
El break; hace que el flujo interrumpa, y salgamos del bloque. De no ponerlo el programa no sale del bloque y el resto del código del bloque, perteneciente a otras opciones, también se ejecutaría.
La última opción default: indica lo que se debe hacer cuando no hay ningún elemento anterior que coincida. Aunque no es obligatorio ponerla, es conveniente si queremos que el programa haga algo cuando no se cumplen las opciones anteriores. Al ser la última no es necesario poner el break; al final, ya que es ahí donde acabamos el bloque.
En la página anterior hemos hecho un ejemplo en el que pedimos al usuario dos números, y después elige una operación, para después hacer esa operación con los dos números. Esto lo hemos hecho con la estructura else if .
Aquí vamos a hacer el mismo ejemplo, pero usando la estructura switch.
#include<iostream> using namespace std; int main() { cout << "OPERACIONES CON DOS NUMEROS" << endl; int a, b; char op; //Decalramos las variables cout << "Escribe un numero : ";cin >> a; //pedimos el primer número cout << "Escribe otro numero : "; cin >> b; //pedimos el segundo número cout << "Tus numeros son " << a << " y " << b << endl; //confirmamos números cout << "Elige una operacion, para ello escribe su letra: " << endl; //explicación al usuario cout << "s = Suma; r = Resta; m = Multiplicacion; d = Division." << endl; cout << "Tu operacion : "; cin >> op; //pedimos operacion switch (op){ //inicio estructura. case 's': //opción 1: suma cout << "Operacion : Suma " << endl; cout << a << " + " << b << " = " << a+b << endl; break; case 'r': //opcion 2: resta cout << "Operacion : Resta " << endl; cout << a << " - " << b << " = " << a-b << endl; break; case 'm': //opcion 3: multiplicacion cout << "Operacion : Multiplicacion " << endl; cout << a << " * " << b << " = " << a*b << endl; break; case 'd': //opcion 4 : división cout << "Operacion : Division " << endl; cout << a << " / " << b << " = " << a/b << endl; break; default: //Respuesta para opción equivocada. cout << "La letra escrita no se corresponde con ninguna operacion." << endl; } }
Compilamos y ejecutamos el archivo, y comprobamos que funciona igual que el de la página anterior. Sin embargo la estructura que hemos usado es distinta.
Es preferible utilizar la estructura switch siempre que se pueda, ya que simplifica el código y es más rápida (emplea menos memoria).
En realidad el ejemplo no es exctamente igual, ya que en el de la página anterior funcionaba también con letras mayúsculas, y en este no. Sin embargo esto lo podemos solucionar facilmente.
Si ponemos varias instrucciones case <dato>: seguidas para la misma opción, conseguimos que esa opción se cumpla con cualquiera de los datos indicados en las opciones, por ejemplo, para la opción suma en el código anterior pondremos:
case 's': case 'S' : case '+': cout << "Operacion : Suma " << endl; cout << a << " + " << b << " = " << a+b << endl; break;</p>
Con esto conseguimos que la opción "suma" se active no sólo al pulsar la letra 's' (minuscula), sino también al pulsar la 'S' mayúscula, o al pulsar la tecla "+".
Cambiamos el código fuente anterior para ampliar las letras que activan todas las operaciones. El código ahora será el siguiente:
#include<iostream> using namespace std; int main() { cout << "OPERACIONES CON DOS NUMEROS" << endl; int a, b; char op; //Decalramos las variables cout << "Escribe un numero : ";cin >> a; //pedimos el primer número cout << "Escribe otro numero : "; cin >> b; //pedimos el segundo número cout << "Tus numeros son " << a << " y " << b << endl; //confirmamos números cout << "Elige una operacion, para ello escribe su letra: " << endl; //explicación al usuario cout << "S, + = Suma; R, - = Resta; M, * = Multiplicacion; D, / = Division." << endl; cout << "Tu operacion : "; cin >> op; //pedimos operacion switch (op){ //inicio estructura. case 's': case 'S' : case '+': //opción 1: suma cout << "Operacion : Suma " << endl; cout << a << " + " << b << " = " << a+b << endl; break; case 'r': case 'R': case '-': //opcion 2: resta cout << "Operacion : Resta " << endl; cout << a << " - " << b << " = " << a-b << endl; break; case 'm': case 'M': case '*': //opcion 3: multiplicacion cout << "Operacion : Multiplicacion " << endl; cout << a << " * " << b << " = " << a*b << endl; break; case 'd': case 'D': case '/': //opcion 4 : división cout << "Operacion : Division " << endl; cout << a << " / " << b << " = " << a/b << endl; break; default: //Respuesta para opción equivocada. cout << "La letra escrita no se corresponde con ninguna operacion." << endl; } }
Lo único que hemos cambiado respecto al código anterior es que hemos añadido más instrucciones "case" en cada opción, de manera que éstas puedan ejecutarse con cualquiera de ellas.
Es importante que tanto las instrucciones case como la instrucción default acaben siempre con dos puntos, ya que de otro modo la estructura switch no funcionará, y dará error de compilación.
En la siguiente página empezamos con otro tipo de estructuras, los bucles.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com