CAPITULO 4: PROPOSICIONES PARA EL CONTROL DE FLUJO DE PROGRAMA![]()
1. INTRODUCCION En lo que sigue de este capítulo, denominaremos BLOQUE DE SENTENCIAS al conjunto de sentencias individuales incluídas dentro un par de llaves. Por ejemplo : { Este conjunto se comportará sintacticamente como una sentencia simple
y la llave de cierre del bloque NO debe ir seguida de punto y coma . main() En las proposiciones de control de flujo de programa , trabajaremos alternativamente con sentencias simples y bloques de ellas . 2. PROPOSICION IF - ELSE Esta proposición sirve para ejecutar ciertas sentencias de programa , si una expresión resulta CIERTA ú otro grupo de sentencias, si aquella resulta FALSA. Su interpretación literal sería : SI es CIERTA tal cosa , haga tal otra , si no lo es salteéla . El caso más sencillo sería : if(expresión) sentencia ; ó if(expresión) sentencia ; Cuando la sentencia que sigue al IF es única, las dos formas de escritura expresadas arriba son equivalentes . La sentencia sólo se ejecutará si el resultado de "expresión" es distinto de cero (CIERTO) , en caso contrario el programa salteará dicha sentencia , realizando la siguiente en su flujo.
En casos más complejos que los anteriores , la proposición IF puede estar seguida por un bloque de sentencias : if(expresión) if(expresión) { Las dos maneras son equivalentes , por lo que la posición de la llave de apertura del bloque queda librada al gusto del programador . El indentado de las sentencias (sangría) es también optativo , pero sumamente recomendable ,sobre todo para permitir la lectura de proposiciones muy complejas ó anidadas , como se verá luego. El bloque se ejecutará en su conjunto si la expresion resulta CIERTA. El uso del ELSE es optativo , y su aplicación resulta en la ejecución de una , ó una serie de sentencias en el caso de que la expresión del IF resulta FALSA.
Su aplicación puede verse en el ejemplo siguiente : if(expresión) if(expresión) En el ejemplo de la izquierda no se usa el ELSE y por lo tanto las sentencias
3 , 4 y 5 se ejecutan siempre . En el segundo caso , las sentencias 1 y 2
se ejecutan solo si la expresión es CIERTA , en ese caso las 3 y 4 NO se
ejecutarán para saltarse directamente a la 5 , en el caso de que la expresión
resulte FALSA se realizarán las 3 y 4 en lugar de las dos primeras y finalmente
la 5 . if(exp.1) if(exp.1) Si bién se suele escribir según la modalidad de la izquierda , a la derecha hemos expresado las asociaciones entre los distintos ELSE é IF por medio del indentado del texto.
3. PROPOSICION SWITCH
El SWITCH es una forma sencilla de evitar largos , tediosos y confusos anidamientos de ELSE-IF .
Como es fácil de ver , cuando las opciones son muchas, el texto comienza a hacerse difícil de entender y engorroso de escribir.
{ El SWITCH empieza con la sentencia : switch (expresión) . La expresión
contenida por los paréntesis debe ser ENTERA , en nuestro caso un caracter
; luego mediante una llave abre el bloque de las sentencias de comparación
. Cada una de ellas se representa por la palabra clave "case" seguida por
el valor de comparación y terminada por dos puntos . Seguidamente se ubican
las sentencias que se quieren ejecutar , en el caso que la comparación resulte
CIERTA . En el caso de resultar FALSA , se realizará la siguiente comparación
, y así sucesivamente . ................. La forma de interrumpir la ejecución luego de haber encontrado un CASE
cierto es por medio del BREAK , el que dá por terminado el SWITCH .
El WHILE es una de las tres iteraciones posibles en C . Su sintaxis podría expresarse de la siguiente forma : while(expresion) ó while(expresión) { Esta sintaxis expresada en palabras significaria: mientras (expresión)
dé un resultado CIERTO ejecútese la proposición 1 , en el caso de la izquierda
ó ejecútese el bloque de sentencias , en el caso de la derecha. 5. LA ITERACION DO - WHILE Su sintaxis será : do { Expresado en palabras , esto significa : ejecute las proposiciones , luego repita la ejecución mientras la expresión dé un resultado CIERTO . La diferencia fundamental entre esta iteración y la anterior es que el DO-WHILE se ejecuta siempre AL MENOS una vez , sea cual sea el resultado de expresión. 6. ITERACION FOR El FOR es simplemente una manera abreviada de expresar un WHILE , veamos su sintaxis : for ( expresión1 ; expresión2 ; expresion3 ) { La expresión1 es una asignación de una ó más variables , (equivale a una
inicialización de las mismas ) , la expresión2 es una relación de algun tipo
que , mientras dé un valor CIERTO , permite la iteración de la ejecución
y expresión3 es otra asignación , que comunmente varía alguna de las variables
contenida en expresión2 . for ( ; exp2 ; exp3) ó
Estas dos últimas expresiónes son interesantes desde el punto de vista de su falta de término relacional , lo que implica que el programador deberá haber previsto alguna manera alternativa de salir del lazo ( probablemente mediante BREAK ó RETURN como veremos más adelante ) ya que sinó , la ejecución del mismo es infinita ( ó tan larga como se mantenga encendida la computadora).
El BREAK , ya brevemente descripto con el SWITCH , sirve también para terminar loops producidos por WHILE , DO-WHILE y FOR antes que se cumpla la condición normal de terminación . En el EJEMPLO siguiente vemos su uso para terminar un WHILE indeterminado.
Obsérvese que la expresión while(1) SIEMPRE es cierta , por lo que el
programa correrá imparable hasta que el operador oprima la tecla "secreta"
Q . Esto se consigue en el IF , ya que cuando c es igual al ASCII Q se ejecuta
la instrucción BREAK ,dando por finalizado el WHILE . for (;;) { /* loop indefinido */ 8. LA SENTENCIA CONTINUE La sentencia CONTINUE es similar al BREAK con la diferencia que en vez de terminar violentamente un loop , termina con la realización de una iteración particular y permitiendo al programa continuar con la siguiente. 9. LA FUNCION EXIT() La función EXIT() tiene una
operatoria mucho más drastica que las anteriores , en vez de saltear una
iteración ó abandonar un lazo de programa , esta abandona directamente al
programa mismo dándolo por terminado . Realiza también una serie de operaciones
útiles como ser , el cerrado de cualquier archivo que el programa hubiera
abierto , el vaciado de los buffers de salida , etc. 10 SENTENCIA GOTO Si Ud. se ha admirado de que C
tenga la operación GOTO , recuerde que el hecho de existir NO lo obliga a
usarla , en el mismo sentido que por tener puertas los aviones no está obligado
a saltar por ellas en pleno vuelo. if( c == 0 ) goto OTRO_LADO ; En este caso si c es cero se saltean todas las sentencias entre el if y el destino , continuandose con la ejecución del printf() . El destino puede ser tanto posterior como anterior al GOTO invocante . ![]()
© Derechos Reservados, Copyright, DATA-2013, 1998-2020.
|