C soporta tipos de sentencias de selección if y switch.
La Sentencia IF
La forma general de la sentencia if es:
if (expresión) sentencia;
else sentencia
donde la sentencia puede ser una sentencia simple, un bloque de sentencias o nada (en el caso de sentencias vacías). La clausula else es opcional.
Si la expresión if es cierta (cualquier valor diferente de 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo de if; en cualquier otro caso se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del else, si existe. Solo se ejecuta el código asociado al if o al else, nunca ambos.
La sentencia condicional que controla el if debe producir un resultado escalar.
Un escalar es cualquiera de los tipos entero, carácter o de coma flotante.
ESTATUTO IF
Toma una decisión referente a la acción a ejecutar en un programa, basándose en el resultado (verdadero o falso) de una condición.
La estructura de código if nos permite determinar que una sección se ejecute o no, dependiendo de una condición.
ifs anidados
Un if anidado es un if que es el objeto de otro if o else. Los ifs anidados son muy comunes en programación. En C una sentencia else siempre se refiere al if más próximo que este en el mismo bloque que el else y que no este ya asociado con un if.
La escala if-else-if
Una construcción común en programación es la escala if-else-if, a veces denominada escalera if-else-if, por su aspecto. Su forma general es:
if (expresion) sentencia
else
if (expresion) sentencia
else
if (expresion) sentencia
.
.
.
.
.
else sentencia;
Las condiciones se evalúan desde arriba a abajo. Tan pronto como se encuentre con una condición cierta, se ejecuta la sentencia asociada con ella y se pasa por alto el resto de la escalera. Si ninguna de las condiciones es cierta, se ejecuta el else final. Es decir, si todas las pruebas condicionales fallan, se ejecuta la ultima sentencia else. Si no hay final, no tiene lugar ninguna acción si todas las condiciones son falsas.
La Sentencia Switch
C incorpora una sentencia de selección múltiple, switch, que compara sucesivamente el valor de una expresión con una lista de constantes enteras o de caracteres. Cuando se encuentra una correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general de la sentencia switch es :
switch (expresión)
{
case constante_1:
sentencia/s
break;
case constante_2:
sentencia/s
break;
case constante_3
sentencia/s
break;
default:
sentencia/s
}
Se comprueba el valor de la expresión, por orden, con los valores de las constantes especificadas en las sentencias case. Cuando se encuentra una correspondencia, se ejecuta la secuencia de sentencias asociada con ese case, hasta que se encuentra la sentencia break o el final de la sentencia switch. La sentencia default se ejecuta si no se ha encontrado ninguna correspondencia, esta sentencia es opcional y, si no esta presente, no se ejecuta ninguna acción al fallar todas las comparaciones.
Cuando el programa encuentra un break en una sentencia de switch, la ejecución del programa "salta" a la linea de código que sigue a la sentencia switch.
Hay tres cosas importante que se deben saber sobre la sentencia switch:
- La sentencia switch se diferencia del if en que switch solo pude comprobar la igualdad, mientras que if puede evaluar expresiones relacionales o lógicas.
- No puede haber dos constantes case en el mismo switch que tengan los mismos valores. Por supuesto, una sentencia switch contenida en otra sentencia pueden tener case del mismo valor.
- Si se utilizan constantes de tipo carácter en la sentencia switch, se convierten automáticamente en sus valores enteros.
La sentencia switch a menudo se utiliza para procesar órdenes, como la orden de selección de un menú.
Switch anidadas
Se puede tener un switch formando parte de la secuencia de sentencias de otro switch, al igual que el if. Incluso si las constantes case del switch interior y exterior contienen valores comunes, no existen problemas.Un ejemplo de switch anidados es:
switch (x)
{
case 1:
switch (y) {
case 0: printf ("ERROR");
break;
case 1: printf ("HOLA") ;
break;
}
break;
case 2:
.
.
.
.
.
.
}
No hay comentarios:
Publicar un comentario