Estructuras de repetición
Las computadoras están diseñados especialmente para aquellas aplicaciones en las cuales una operación o conjunto de ellas deben de repetirse varias veces. A las estructuras que repiten una secuencia de instrucciones un número determinado de veces se les denomina bucles y se llama iteración al acto de repetir la ejecución de una secuencia de acciones.
Estructuras de control de repetición while y do/ while
En estas estructuras el conjunto de instrucciones que forman parte del bucle se repite mientras se cumple una determinada condición.
La diferencia entre ellas es que la estructura while checa la condición de continuación del ciclo al principio de este, antes de ejecutar las condiciones del bucle.
La estructura do/ while prueba la condición después de ejecutar las instrucciones del bucle y por lo tanto esta se ejecutará por lo menos una vez.
La sintaxis de la estructura while es:
while (condición) {
Instrucciones que se repetirán mientras la condición sea verdadera;
Instrucciones adicionales;
}
Ejemplo:
#include <stdio.h>
#include <conio.h>
void main(){
int b = 99;
while ( b > 0 ){
printf ("\n%i bottle(s) of beer on the wall,", b);
printf ("\n%i bottle(s) of beer.", b);
printf ("\nTake one down, pass it around,");
printf ("\n%i bottle(s) of beer on the wall.\n", b-1);
b--;
}
getch();
}
La sintaxis de la estructura do/ while es:
do {
Instrucciones que se repetirán al menos una vez mientras la condición
sea verdadera;
Instrucciones adicionales:
}
while (condición);
Ejemplo:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(){
float a, b, c, raiz, x1, x2;
char resp;
do{
clrscr();
printf ("Programa para calcular las raices de una ecuacion cuadratica");
printf ("de la forma ax^2+bx+c=0");
printf ("\n\nIntroduce el valor de las variables a, b y c en orden: \n");
scanf ("%f%f%f", &a,&b,&c);
raiz=(b*b)-4*a*c;
if (raiz>=0){
x1=(-b+sqrt(raiz))/(2*a);
x2=(-b-sqrt(raiz))/(2*a);
printf ("\nLas raices son x1: %.2f y x2: %.2f", x1, x2);
}
else
printf ("\nLos valores que introdujiste regresan raices imaginarias");
printf ("\n\nDeseas resolver otra ecuacion? (s/n) ");
resp = getche();
}
while (resp=='s' || resp=='S');
getch();
}
Estructura de control de repetición for y for anidados
La estructura for maneja de manera automática todos los detalles de repetición controlada por un contador. La sintaxis de la estructura for es:
for (contador; condición; variación)
Secuencia de instrucciones que se desean repetir;
Ejemplo:
#include <stdio.h>
#include <conio.h>
void main(){
int x=1, y=1, z=0, a;
clrscr ();
printf("Serie de Fibonaci\n\n");
printf("Escribe el numero final: ");
scanf("%i",&a);
printf("%6i",x);
printf("%6i", y);
for (; z < a ;){
z=x+y;
if(z <= a){
printf("%6i",z);
x = y;
y = z;
}
}
getch();
}
Las 3 expresiones de la estructura for son opcionales, si se omite la condición el compilador de lenguaje C supone que esta es verdadera y crea un ciclo infinito; si se omite el contador, la variable de control se debe inicializar en otra parte del programa antes del ciclo; y si se omite la variación, la modificación de la variable de control se calcula mediante instrucciones dentro del bloque de la estructura for o bien se omite porque no se requiere.