ESTRUCTURAS REPETITIVAS
LA ITERACION WHILE
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) { proposición 1 ; proposición 1 ; proposición 2 ; ............... proposición 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.
Por lo general , dentro de la proposición ó del bloque de ellas , se modifican
términos de la expresión condicional , para controlar la duración de la
iteración .
LA ITERACION DO - WHILE
Su sintaxis será :
do { proposición 1 ; proposición 2 ; ............... } while (expresión) ;
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.
ITERACION FOR
El FOR es simplemente una manera
abreviada de expresar un WHILE , veamos su sintaxis :
for ( expresión1 ; expresión2 ; expresion3 ) { proposición1 ; proposición2 ; .............. } Esto es equivalente a : expresión1 ; while ( expresión2 ) { proposición1 ; proposición2 ; .............. expresion3 ; }
Ejemplo de un programa for
#include<stdio.h>/* Programa para tabular la funcion y = Sen(x) */
main()
{
float a=0;
float b=1.6;
float c=0.1;
float x,y;
for(x=a; x<=b; x=x+c)
{
y=sin(x);
printf("%f %f",x,y);
}
printf(" Presiona una tecla "); getch();
}
/* Programa para tabular la función y = sen(x) */
main()
{
float x,y;
for(x=0.0; x<=1.6; x=x+0.1)
{
y=sin(x);
printf(" x = %f y = %f",x,y);
}
printf("Presiona una tecla"); getch();
}
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 .
Todas estas expresiones , contenidas en el paréntesis del FOR deben estar
separadas por PUNTO Y COMA y NO por comas simples .
No es imprescindible que existan TODAS las expresiones dentro del paréntesis
del FOR , pudiendose dejar en blanco algunas de ellas , por ejemplo :
for ( ; exp2 ; exp3) ó for (exp1 ; ; ) ó for ( ; ; )
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 ) .
LA SENTENCIA BREAK
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.
#include <stdio.h> #include <conio.h> main() { char c ; printf("ESTE ES UN LOOP INDEFINIDO ") ; while(1) { printf( "DENTRO DEL LOOP INDEFINIDO (apriete una tecla):" ) ; if( (c = getch()) == 'Q' ) break ; printf( "\nNO FUE LA TECLA CORRECTA PARA ABANDONAR EL LOOP ") ; } printf("\nTECLA CORRECTA : FIN DEL WHILE ") ; }
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
.
El mismo criterio podría aplicarse con el DO-WHILE ó con FOR , por ejemplo
haciendo
for (;;) { /* loop indefinido */ ............ if( expresión ) break ; /* ruptura del loop cuando expresión sea verdadera */ }
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.
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.
Normalmente se la utiliza para abortar los programas en caso de que se esté por
cometer un error fatal é inevitable . Mediante el valor que se le ponga en su
argumento se le puede informar a quien haya llamado al programa ( Sistema
Operativo , archivo .bat , u otro programa ) el tipo de error que se cometió.
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.
El uso del GOTO implica un salto incondicional de un lugar a otro del programa .
Esta práctica hace que los programas sean muy dificiles de corregir ó
mantener.
Si no quedara más remedio que usarlo, (y en programación estructurada SIEMPRE
hay remedio) debe marcarse el destino del salto mediante un nombre seguido por
dos puntos .
if( c == 0 ) goto OTRO_LADO ; ............................. OTRO_LADO: printf(........
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
.
LEA LA PAGINA DE
EJERCICIOS RESUELTOS Y PROPUESTOS
Anterior home
Siguiente