Sunteți pe pagina 1din 5

La estructura condicional switch ...

case
La estructura condicional switch ... case se utiliza cuando queremos evitarnos las llamadas escaleras de decisiones. La estructura if nos puede proporcionar, nicamente, dos resultados, uno para verdadero y otro para falso. Una estructura switch ... case, por su parte, nos permite elegir entre muchas opciones:
ejemplo con un salario con la condicion switch /*si*/ #include <stdio.h> #include <stdlib.h> main() { int nivel; float salario, slanuevo; printf("introduce tu nivel\n"); scanf("%d",&nivel); printf("dame tu salario\n "); scanf("%f",&salario); switch (nivel) { case 1: slanuevo=salario+(salario*.035); printf("tu salario es:%f\n",slanuevo); break; case 2: slanuevo=salario+(salario*.041); printf("tu salario es:%f\n",slanuevo); break; case 3: slanuevo=salario+(salario*.048); printf("tu salario es:%f\n",slanuevo); break; case 4: slanuevo=salario+(salario*.053); printf("tu salario es:%f\n",slanuevo); break; default: printf("tu salario es:%f\n",salario); } system ("pause"); return 0; }

Otro ejemplo:
#include <stdio.h> #include <stdlib.h> int main(void) { int dia; printf("que numero de da de la semana es?"); scanf("%d",&dia);

switch(dia) { case 1 : printf("Lun, Luna"); break; case 2 : printf("Mar, Marte"); break; case 3 : printf("Mier, Mercurio"); break; case 4 : printf("Jue, Jupiter"); break; case 5 : printf("Vie, Venus"); break; case 6 : printf("Sab, Saturno"); break; case 7 : printf("Dom, Sol"); break; default : printf("No existe"); } system ("pause"); return 0; }

La estructura anterior, de realizarse con sentencias if, necesitara cuatro de ellas, resultando un enorme bloque muy difcil de leer. En la mayora de los casos, adems, la sentencia switch proporciona una ganancia en velocidad del cdigo, pues permite al compilador trabajar en base a que se trata de una decisin mltiple para una nica variable, cosa que con sentencias if el compilador no tiene por qu detectar. Como vemos, para cada valor de la variable se ejecuta un bloque de sentencias distinto, en el que no necesitamos llaves. Hay un caso especial, default, que se ejecuta si ningn otro corresponde, y que no es necesario poner. Es, en todo, equivalente al bloque else de una sentencia if. Las sentencias break son muy importantes, ya que el comportamiento normal de un bloque switch es ejecutarlo todo desde la etiqueta case que corresponda hasta el final. Por ello, si no queremos que se nos ejecute ms de un bloque, pondremos sentencias break al final de cada bloque excepto el ltimo. Es decir, las etiquetas case son puntos de entrada de la ejecucin, y no implican que al acabarse el bloque case la ejecucin salte al final del bloque switch. Las etiquetas case siguientes a la que hemos utilizado para entrar son, sencillamente, ignoradas.

A la ausencia de sentencias break se le llama, en ocasiones, "dejar caer la cascada switch".

[editar] El bucle while


El bucle while sirve para ejecutar cdigo reiteradas veces.
while (/* Condicin de ejecucin del bucle */) { /* Cdigo */ }

La condicin ha de ser una sentencia que devuelva un valor booleano, y esta puede ser el valor booleano en s, verdadero (true o 1) si la condicin se cumple, o falso si esta no se cumple (false o 0). Tambin puede ser el nombre de una variable, y el valor de la expresin depender de su contenido. Aunque sea una variable no booleana, siempre se podr usar, si vale 0 ser como si la condicin no se cumpliera, y siempre que sea diferente de 0, se considerar que la condicin se cumple. La forma ms obvia tal vez, y la ms usada sin duda, son las sentencias comparativas, que usan los operandos ==, !=, <=, >=, <, >. Su uso sera as: variable o valor inmediato operador variable o valor inmediato Tened en cuenta que adems de las variables y los valores inmediatos, tambin se pueden poner all llamadas a funciones que devuelvan un valor.
int tecla = 0; while (tecla == 0) { tecla = readkey(); /* Intentamos leer una pulsacin de tecla */ }

En este ejemplo lo que hacemos es que el programa se detenga hasta que el usuario pulse una tecla, con lo que cambiar el valor de la variable "tecla".

[editar] El bucle for


El bucle for es un bucle muy flexible y a la vez muy potente ya que tiene varias formas interesantes de implementarlo, su forma ms tradicional es la siguiente:
for (/* inicializacin */; /* sentencia condicional */; /* incremento o decremento */) { /* cdigo a ejecutar */ }

Inicializacin: en esta parte se inicia la variable que controla el bucle y es la primera sentencia que ejecuta el bucle, solo se ejecuta una vez ya que solo se necesita al principio del bucle.

Sentencia condicional: es la segunda sentencia que ejecuta el bucle, es una sentencia condicional vlida, que determina si el bucle se ejecutar o no. incremento o decremento: es la ultima sentencia que ejecuta el bucle por lo general incrementar la variable con que se inicio el ciclo, despus de eso el bucle revisa nuevamente la condicin, si es verdadera tiene lugar una ejecucin ms del cuerpo del ciclo, si es falsa se termina el ciclo y as la repeticin. Aqu muestro un ejemplo de un bucle que se ejecuta 100 veces:
for (int i=0; i < 100; i++) { printf("%i\n", i); }

No es necesaria por ejemplo en la primera la sentencia iniciar la variable que utilizara el bucle si ya ha sido inicializada en otra parte del bloque de sentencias donde se encuentra el bucle. Por lo general la sentencia condicional se compone de la variable que se utiliz para la inicializacin del bucle a la cual se le aplica alguno de los operadodores relacionales <, <=, >, >=; junto con otro valor; esta parte del bucle tambin se puede implementar con una variable de tipo bool. NOTA: recuerde que en cualquier sentencia donde se evala una expresin vlida, un valor de retorno=0 se considera falso y cualquier valor distinto de cero es verdadero, as false=0 y true=1. Creo que es importante comentar que esos tres "parmetros" que se le pasan a la sentencia for se pueden omitir, pero los punto-y-coma entre ellos s se han de dejar. Tambin cabe destacar que si no se pone la condicin de ejecucin del bucle, este se ejecutar indefinidamente hasta que se ejecute una sentencia break o se termine la funcin o el programa mediante un return.

[editar] El bucle do...while


El bucle do...while es un bucle que, por lo menos, se ejecuta una vez. Do significa literalmente "hacer", y while significa "mientras" Su forma es esta:
do { /* CODIGO */ } while (/* Condicin de ejecucin del bucle */)

Os muestro un ejemplo sencillo de uso:


int aleatorio; do { aleatorio = rand(); } while (aleatorio != 25);

La verdad es que este ejemplo puede resultar un poco absurdo, pero es bastante intuitivo. El cdigo del bucle asigna un valor aleatorio a la variable definida anteriormente, y mientras esa variable no tenga el valor 25, el bucle sigue ejecutndose.

[editar] El goto
La sentencia goto sirve para indicar al programa que continue ejecutndose desde la lnea de cdigo indicada. La verdad es que es una sentencia poco aceptada por la comunidad de programadores, pues puede provocar que se hagan programas un poco "sucios" y confusos. Su sintaxis es ms o menos as:
/* Cdigo */ ETIQUETA: /* Cdigo */ goto ETIQUETA; /* Cdigo */

As, cuando se ejecute la sentencia goto, el programa continuar su ejecucin a partir de la etiqueta marcada. Como se puede observar se puede usar para crear un bucle, o para ir a una parte del cdigo u otra si se combina con una sentencia if...else. pero para los bucles ya hay estructuras definidas, y para la ejecucin opcional de bloques de cdigo, ya existen las Funciones. Slo en ocasiones muy excepcionales ser recomendado el uso del goto al crear iteraciones muy complejas. Sin embargo, con el pasar de los aos este comando ya ha quedado prcticamente descartado del lenguaje de los programadores profesionales, debido a que ocasionaba muchas fallas en el momento de compilar.

S-ar putea să vă placă și