Está en la página 1de 4

C: Estructuras de control y tomas de decisin.

[Se supone que llegar un da en el que tendremos unos formatos fijos. Por favor, todo tipo de dudas
o errores o imprecisiones o lo que sea, hacedlo saber]
Se tratarn aqu las estructuras de control y tomas de decisin, que nos permitirn establecer a
nuestro antojo !o al antojo de nuestro algoritmo, ms bien! el desarrollo de nuestro programa"
Tomas de decisin
if...else
s#itch ... case
Estructuras de control
for ...
#hile ...
do ... #hile
Tomas de decisin
if ... then ... else
$sta estructura se adapta especialmente al caso ms simple de una toma de decisin. Si se cumple
una determinada condicin, ha% esto& en caso contrario, ha% esto otro 'o no hagas nada(.
$jemplo"
)maginemos que queremos restringir la entrada a un aula a todo aquel que no sea de tercer curso,
por ejemplo. *endremos una variable que nos indique el curso al que pertenece el alumno. +na
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 porue su curso es !d\n",curso);
}
,ayamos por partes. $n primer lugar vemos nuestro if, objeto de nuestro estudio. - continuacin, y
entre par.ntesis, la e/presin curso == 3 'observad que uno de los errores ms normales, y no
necesariamente de principiantes, es poner un signo = en lugar de los dos ==& si se pone uno solo, se
estar reali%ando una asignacin 'dndole a curso el valor 0(, no una comparacin. $sta e/presin es
evaluada y, en el caso de resultar cierta 'lo que en 1 equivale a dar un valor distinto de cero( se
entra en el cuerpo del if 'el espacio entre llaves(. $n el caso de ser falsa, pasar a ejecutar el cdigo
entre las llaves que siguen al else.
Por supuesto, no es necesario que e/ista la clusula else. Por ejemplo, podremos hacer algo como"
if (curso " #) {
print "Esto no es para $e$%s\n";
print "&al del pro'rama ipso facto\n";
}
... continuaci(n del pro'rama.
Podemos crear e/presiones ms complejas. Por ejemplo, podemos dejar pasar a aquel cuyo curso
sea mayor '>( que 0 y '&&( menor '<( que 2"
if ( (curso ) 3) ** (curso " +) ) {
...
}
switch ... case ...
$/isten ocasiones en las que queremos tomar diferentes acciones seg3n el valor de una determinada
e/presin o variable. Por ejemplo, supongamos que queremos imprimir una determinada e/presin
seg3n nuestra personalidad. *enemos una funcin hipot.tica Somos, que devolver lo que somos
'unas constantes predefinidas, por ejemplo, en un enum(.
somos=&omos();
if (somos==EL,-) {
print ".ue $ien se esta en este $osuecillo\n";
}
else if (somos==/0120L,) {
print "3e de partir hacia el este\n";
}
else if (somos==&04) {
print "5anta tranuilidad es sospechosa\n";
}
else if (somos==/-LL64) {
print "4i tessssssssoro\n";
}
4ueno, un poco engorroso, 5no es cierto6. Para esto tenemos la e/presin que nos ocupa"
somos=&omos();
s7itch (somos) {
case EL,-8
print ".ue $ien se esta en este $osuecillo\n";
$rea9;
case /0120L,8
print "3e de partir hacia el este\n";
$rea9;
case &048
print "5anta tranuilidad es sospechosa\n";
$rea9;
case /-LL648
print "4i tessssssssoro\n";
$rea9;
default8
print "1ada";
$rea9;
}
$n los par.ntesis que siguen al switch situamos la e/presin a evaluar y, entre llaves, ponemos un
conjunto de case, a continuacin de los cuales va la constante correspondiente.
$l default se utili%a si es necesario tener en cuenta la posibilidad de que se de alg3n valor no
contemplado, y los brea son necesarios para que el programa salga del switch& en otro caso,
seguira reali%ando comparaciones.
Estructuras de control
while ...
$n ocasiones se necesita reali%ar algo mientras 'while( se cumpla una determinada condicin.
7ecordemos, una ve% ms, que para el lenguaje 1, cumplirse significa ser distinto de cero. ,amos,
que una e/presin tan sencilla como ! se cumple siempre, y la e/presin " no se cumple nunca.
Por ejemplo, vamos a lan%ar misiles hasta ganar la guerra.
fin=:; ;< =niciali>acion de la ?aria$le <;
7hile (@fin) { ;< 4ientras no aca$amos <;
if (/uerra/anada()) {
fin=A;
}
}
$l cierre de admiracin antepuesto a cualquier e/presin, la niega. $s decir, si fin es falso, #fin es
verdadero.
do ... while
$sta e/presin es semejante a la while .... 8ace algo mientras se cumpla una determinada condicin
pero, a diferencia de la e/presin anterior, lo reali%a al menos una ve%. '9bs.rvese que, en el
ejemplo anterior, si fin es ", no entra en el bloque(.
do {
... ;< Este $loue se reali>a al menos una ?e> <;
} 7hile (@fin); ;< 4ientras no aca$emos <;
for ...
Se emplea esta e/presin generalmente !no siempre! cuando queremos reali%ar una determinada
accin un n3mero prefijado de veces. Su sinta/is es"
for ( B=1=C=0L=D0C=-1E; BC-12=C=-1 P0F0 &E/6=F E1 EL G6CLEE ; B0CC=-1E& E1 C020
EHEC6C=-1 2EL G6CLEE ) { ... }
Por ejemplo, si queremos que un programa nos imprima la tabla del :"
for (i=A; i"=A:; iII) {
print ("J K !d es !d\n",i,J<i);
}
-qu comen%amos el bucle dando a i el valor de iniciali%acin $. ;o hay inconveniente en
iniciali%ar varias variables a la ve%, separndolas por comas" i=$% m=&. Para seguir en el bucle se ha
de cumplir la condicin i<=$" y, a cada paso del bucle, incrementamos en una unidad la variable i.
1onseguimos el mismo efecto haciendo lo siguiente"
for (i=A,m=J;i"=A:;mI=J,iII)
print ("J K !d es !d\n",i,m);
-qu, por un lado vemos que no son necesarias las llaves cuando solamente hay una lnea en el
cuerpo del bucle. )niciali%amos dos variables 'i=$%m=&(, entramos en el bucle mientras i<=$" y, a
cada paso, incrementamos m en : e i en una unidad.

También podría gustarte