"Estructuras de Decisión"
Estas permiten
seleccionar la próxima sentencia a ejecutarse sobre la base de una decisión
(expresión lógica o variable lógica)
Tomas de decisión
• if...else
• switch ... case
Estructuras de control
• for ...
• while ...
• do ... while
Tomas de decisión
if ... then
... else
Esta estructura
se adapta especialmente al caso más simple de una toma de decisión
Imaginemos que
queremos restringir la entrada a un aula a todo aquel que no sea de tercer
curso.
por ejemplo.
Tendremos una
variable que nos indique el curso al que pertenece el alumno. Una variable que,
por ejemplo, podremos llamar curso.
if (curso == 3) {
printf("El
muchacho es de tercero. Puede pasar\n");
}
else {
printf("Lo
siento, no puede pasar porque su curso es %d\n",curso);
}
switch ...
case ...
Existen ocasiones
en las que queremos tomar diferentes acciones según el valor de una determinada
expresión o
variable. Por ejemplo, supongamos que queremos imprimir una determinada
expresión
según nuestra
personalidad. Tenemos una función hipotética Somos, que devolverá lo que somos
(unas constantes
predefinidas, por ejemplo, en un enum).
Ejemplo:
somos=Somos();
switch (somos) {
case ELFO:
print "Que
bien se esta en este bosquecillo\n";
break;
case GANDALF:
print "He de
partir hacia el este\n";
break;
case SAM:
print "Tanta
tranquilidad es sospechosa\n";
break;
case GOLLUM:
print "Mi tessssssssoro\n";
break;
default:
print "Nada";
break;
}
En los paréntesis
que siguen al switch situamos la
expresión a evaluar y, entre llaves, ponemos un
conjunto de case,
a continuación de los cuales va la constante correspondiente.
El default se utiliza si es necesario
tener en cuenta la posibilidad de que se de algún valor no
contemplado, y
los break son necesarios para que el
programa salga del switch; en otro
caso,
seguiría
realizando comparaciones.
Estructuras de
control
while ...
En ocasiones se
necesita realizar algo mientras (while) se cumpla una determinada condición.
Recordemos, una
vez más, que para el lenguaje C, cumplirse significa ser distinto de cero.
Vamos,
que una expresión
tan sencilla como 4 se cumple siempre, y la expresión 0 no se cumple nunca.
Por ejemplo,
vamos a lanzar misiles hasta ganar la guerra.
fin=0; /*
Inicializacion de la variable */
while (!fin) { /*
Mientras no acabamos */
if
(GuerraGanada()) {
fin=1;
}
}
El cierre de
admiración antepuesto a cualquier expresión, la niega. Es decir, si fin es
falso, !fin es verdadero.
do ... while
Esta expresión es
semejante a la while .... Hace algo mientras se cumpla una determinada
condición
pero, a
diferencia de la expresión anterior, lo realiza al menos una vez. (Obsérvese
que, en el
ejemplo anterior,
si fin es 0, no entra en el bloque).
do {
... /* Este bloque se realiza al menos una vez */
} while (!fin); /* Mientras no acabemos */
for ...
Se emplea esta
expresión generalmente -no siempre- cuando queremos realizar una determinada
acción un número
prefijado de veces. Su sintaxis es:
for (
[INICIALIZACION]; [CONDICION PARA SEGUIR EN EL BUCLE] ; [ACCIONES EN CADA
EJECUCION DEL
BUCLE] ) { ... }
Por ejemplo, si
queremos que un programa nos imprima la tabla del 9:
for (i=1; i<=10; i++) {
print ("9 x %d es %d\n",i,9*i);
}
Aquí comenzamos
el bucle dando a i el valor de inicialización 1. No hay inconveniente en inicializar
varias variables a la vez, separándolas por comas: i=1, m=9. Para seguir en el
bucle se ha de cumplir la condición i<=10 y, a cada paso del bucle,
incrementamos en una unidad la variable i.
No hay comentarios:
Publicar un comentario