TEMA 3

ESTRUCTURAS CONDICIONALES

LA SENTENCIA if

Las tres formas como se puede emplear la sentencia if son:

if (condicion)
sentencia;

...o

if (condicion)
sentencia1;
else
sentencia2;

...o

if (condicion1)
sentencia1;
else if (condicion2)
sentencia2;

...
else
sentencian;

El flujo lógico de esta estructura es de arriba hacia abajo. La primera sentencia se ejecutará y se saldrá de la estructura if si la primera condición es verdadera. Si la primera condición fue falsa, y existe otra condición, se evalúa, y si la condición es verdadera, entonces se ejecuta la sentencia asociada. Si existen más condiciones dentro de la estructura if, se van evaluando éstas, siempre y cuando las condiciones que le precedan sean falsas.
La sentencia que esta asociada a la palabra reservada else, se ejecuta si todas las condiciones de la estructura if fueron falsas.
Por ejemplo:

main()
{
int x, y, w;

........
if (x>0)
{
z=w;

.......
}
else
{
z=y;

.......
}
}

el operador ?

El operador ternario condicional ? es más eficiente que la sentencia if. El operador ? tiene el siguiente formato:

expresion1 ? expresion 2 : expresion3;

Que es equivalente a la siguiente expresión:

if (expresion1) then expresion2 else expresion3;

Por ejemplo, para asignar el máximo de a y b a la variable z, usando ?, tendríamos:

z = (a>b) ? a : b;

que es lo mismo que:

if (a > b)
z = a;
else
z = b;
El uso del operador ? para reemplazar las sentencias if ... else no se restringe sólo a asignaciones, como en el ejemplo anterior. Se pueden ejecutar una o más llamadas de función usando el operador ? poniéndolas en las expresiones que forman los operandos, como en el ejemplo siguiente:
f1(int n)
{
printf("%d ",n);
}

f2()
{
printf("introducido\n");
}

main()
{
int t;

printf(": ");
scanf("%d",&t);

/* imprime mensaje apropiado */
t ? f1(t) + f2() : printf("Se dió un cero\n");
}

LA SENTENCIA switch

Aunque con la estructura if ... else if se pueden realizar comprobaciones múltiples, en ocasiones no es muy elegante, ya que el código puede ser difícil de seguir y puede confundir incluso al autor transcurrido un tiempo. Por lo anterior, C tiene incorporada una sentencia de bifurcación múltiple llamada switch. Con esta sentencia, la computadora comprueba una variable sucesivamente frente a una lista de constantes enteras o de caracter. Después de encontrar una coincidencia, la computadora ejecuta la sentencia o bloque de sentencias que se asocian con la constante. La forma general de la sentencia switch es:

switch (variable) {
case constante1:
secuencia de sentencias
break;
case constante2:
secuencia de sentencias
break;
case constante3:
secuencia de sentencias
break;

...
default:
secuencia de sentencias
}

donde la computadora ejecuta la sentencia default si no coincide ninguna constante con la variable, esta última es opcional. Cuando se encuentra una coincidencia, la computadora ejecuta las sentencias asociadas con el case hasta encontrar la sentencia break con lo que sale de la estructura switch.
Las limitaciones que tiene la sentencia switch ... case respecto a la estructura if son:

• Sólo se tiene posibilidad de revisar una sola variable.
• Con switch sólo se puede comprobar por igualdad, mientras que con if puede ser con cualquier operador relacional.
• No se puede probar más de una constante por case.
La forma como se puede simular el último punto, es no teniendo sentencias asociados a un case, es decir, teniendo una sentencia nula donde sólo se pone el caso, con lo que se permite que el flujo del programa caiga al omitir las sentencias, como se muestra a continuación:

switch (letra)

{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
numvocales++;
break;

case ' ':
numesp++;
break;

default:
numotras++;
break;

}

REGRESAR ARRIBA


REGRESAR A LA PAGINA INICIAL