La onomatopeya
Hasta ahora los programas que hemos visto eran lineales. Comenzaban por la primera
instrucción y acababan por la última, ejecutándose todas una sola vez. . Lógico ¿no?.
Pero resulta que muchas veces no es esto lo que queremos que ocurra. Lo que nos suele
interesar es que dependiendo de los valores de los datos se ejecuten unas instrucciones y
no otras. O también puede quequeramos repetir unas instrucciones un número
determinado de veces. Para esto están las sentencia de control de flujo.
Bucles
Los bucles nos ofrecen la solución cuando queremos repetir una tarea un número
determinado de veces. Supongamos que queremos escribir 100 veces la palabra hola.
Con lo que sabemos hasta ahora haríamos:
#include <stdio.h>
void main()
{
printf("Hola\n";
printf( "Hola\n";
printf( "Hola\n";
printf( "Hola\n";
printf( "Hola\n";
... (y así hasta 100 veces)
}
¡Menuda locura! Y si queremos repetirlo más veces nos quedaría un programa de lo más
largo.
Sin embargo usando un bucle for el programa quedaría:
#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<100 ; i++ )
{
printf( "Hola\n" );
}
}
Con lo quetenemos un programa más corto
El bucle For
El formato del bucle for es el siguiente:
for( dar valores iniciales ; condiciones ; incrementos )
{
conjunto de intrucciones a ejecutar en el bucle
}
Vamos a verlo con el ejemplo anterior:
...
for ( i=0 ; i<100 ; i++ )
...
En este caso asignamos un valor inicial a la variable
i
. Ese valor es
cero
. Esa es la parte de darvalores iniciales. Luego tenemos
i<100
. Esa es la parte condiciones. En ella ponemos la condición es que i sea menor que 100,
de modo que el bucle se ejecutará mientras i sea menor que 100. Es decir, mientras se
cumpla la condición. Luego tenemos la parte de incrementos, donde indicamos cuánto
se incrementa la variable.
Como vemos, el for va delante del grupo de instrucciones aejecutar, de manera que si la
condición es falsa, esas instrucciones no se ejecutan ni una sola vez.
Cuidado: No se debe poner un ";" justo después de la sentencia for, pues entonces sería
un bucle vacío y las instrucciones siguientes sólo se ejecutarían una vez. Veamoslo con
un ejemplo:
#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<100 ; i++ ); /* Cuidado coneste punto y coma */
{
printf( "Hola\n" );
}
}
Este programa sólo escribirá en pantalla
Hola
una sola vez.
Tambíen puede suceder que quieras ejecutar un cierto número de veces una sóla
instrucción (como sucede en nuestro ejemplo). Entonces no necesitas las llaves "{}":
#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<100 ; i++ ) printf( "Hola\n" );
}
otambién:
for ( i=0 ; i<100 ; i++ )
printf( "Hola\n" );
Sin embargo, yo me he encontrado muchas veces que es mejor poner las llaves aunque
sólo haya una instrucción; a veces al añadir una segunda instrucción más tarde se te
olvidan las comillas y no te das cuenta. Parece una tontería, pero muchas veces, cuando
programas, son estos los pequeños fallos los que te vuelven loco.
Enotros lenguajes, como Basic, la sentencia for es muy rígida. En cambio en C es muy
flexible. Se puede omitir cualquiera de las secciones (inicialización, condiciones o
incrementos). También se pueden poner más de una variable a inicializar, más de una
condición y más de un incremento. Por ejemplo, el siguiente programa sería
perfectamente correcto:
#include <stdio.h>
void main()
{int i, j;
for( i=0, j=5 ; i<10 ; i++, j=j+5 )
{
printf( "Hola " );
printf( "Esta es la línea %i", i );
printf( "j vale = %i", j );
}
}
Como vemos en el ejemplo tenemos más de una variable en la sección de inicialización
y en la de incrementos. También podíamos haber puesto más de una condición. Los
elementos de cada sección se separan por comas. Cada sección se separa...
Regístrate para leer el documento completo.