Bucles
Enviado por ximena2194 • 12 de Noviembre de 2014 • Tesis • 2.231 Palabras (9 Páginas) • 345 Visitas
1. Introducción.
Una estructura repetitiva se usará para ejecutar un grupo de instrucciones un número determinado de veces. Ese número de veces se controlará por medio de una expresión booleana o condición, cuyo valor será verdadero o falso. Estas estructuras se suelen denominar bucles. Veamos los distintos tipos.
2. Estructura repetitiva ‘mientras’ (while).
En pseudocódigo esta estructura se escribe de la forma:
...
mientras (condición)
Sentencia1
Sentencia2
...
finmientras
...
Al comenzar la ejecución del ‘mientras’, la condición es evaluada. Si su valor es verdadero, se ejecutan las sentencias colocadas entre mientras y finmientras (sentencias del bucle); la línea finmientras provoca un salto hacia arriba, a la línea mientras de nuevo y se vuelve a evaluar la condición. Si su valor es verdadero otra vez, se realizan las mismas acciones, y así sucesivamente. Si en alguna de las repeticiones, al evaluar la condición su valor es falso, la ejecución salta a la sentencia siguiente al finmientras. Si al evaluar la condición por primera vez resulta ser falsa, las sentencias del bucle no se ejecutan ni una sola vez.
No debe olvidarse que la condición debe estar inicializada, es decir que todas las variables que formen parte de la misma deben tener los valores iniciales adecuados. Además dentro del bucle siempre debe existir alguna instrucción que afecte o modifique (actualice) la condición, ya que si no es así, una vez dentro del bucle no se podría salir, siendo un bucle infinito, porque la condición seguiría siendo verdadera en todas las repeticiones.
Podría por tanto escribirse:
...
<Inicializar condición>
mientras (condición)
Sentencia1
Sentencia2
...
<Actualizar condición>
finmientras
...
En C la sintaxis de esta estructura es:
...
while (condición)
{
Sentencia1;
Sentencia2;
...
} //equivale al finmientras
...
Ej.
//Bucle que se repite 10 veces.
numero = 1; //inicializa condición
while (numero <= 10)
{
...
numero = numero + 1; //actualiza condición
}
3. Estructura repetitiva ‘repetir’ (repeat).
En pseudocódigo esta estructura se escribe de la forma:
...
repetir
Sentencia1
Sentencia2
...
hasta (condición)
...
Al comenzar la estructura ‘repetir’, se ejecutan las sentencias colocadas entre repetir y hasta (sentencias del bucle) y después se evalúa la condición. Si su valor es falso, se realiza un salto hacia arriba, hasta la línea repetir, y se ejecutan las sentencias del bucle de nuevo. Si en alguna de las repeticiones, al evaluar la condición su valor es verdadero, la ejecución continúa por la sentencia siguiente a la línea hasta. Como vemos, las sentencias del bucle siempre se ejecutan al menos una vez.
En este tipo de repetitiva también ocurre como en la anterior, es decir antes de evaluar la condición por primera vez debe estar inicializada y además dentro del bucle debe actualizarse dicha condición, para no entrar en un bucle infinito.
En algunos lenguaje existe la sentencia ‘repeat-until’, lo cual no ocurre en C, en el que esta sentencia adopta la sintaxis:
...
do
{
Sentencia1;
Sentencia2;
...
} while (condición);
...
Ello implica que el bucle finaliza cuando la condición es falsa, ya que un mientras expresa la idea contraria a un hasta.
Ej.
//Bucle que suma notas tecleadas, hasta que sea 0.
do
{
scanf(“%d”, ¬a); //inicializa y actualiza
suma += nota; //la condición
}while (nota != 0);
4. Estructura repetitiva ‘para’ (for).
En pseudocódigo esta estructura se escribe de la forma:
...
para <Variable> de <VI> a <VF> con incremento <Inc>
Sentencia1
Sentencia2
...
finpara
...
Este bucle se diferencia de los anteriores porque se repite un número fijo de veces. La <Variable> toma inicialmente el valor <VI> (valor inicial), si ese valor es menor o igual que <VF> (valor final) se ejecutan las sentencias del bucle. A continuación la <Variable> se incrementa en el valor <Inc> y si su valor vuelve a ser menor o igual que <VF>, se ejecutan de nuevo las sentencias. Se vuelve a incrementar la <Variable> en el valor <Inc>, y así sucesivamente, hasta que el valor de <Variable> sea mayor que el valor <VF>, en cuyo caso el programa continúa con la sentencia colocada después del finpara.
Como se ve en esta sentencia, en la misma línea del para se asegura la iniciaización de la condición (VI) y la actualización de la condición (Inc). La sentencia para anterior es equivalente al siguiente while:
...
<Variable> = <VI>
mientras ( <Variable> <= <VF> )
Sentencia1
Sentencia2
...
<Variable> = <Variable> + Inc
finmientras
...
En C la sintaxis equivalente al para es:
...
for (<Vari> = <VI>; <Vari> <= <VF>; <Vari> += Inc)
{
Sentencia1;
Sentencia2;
...
}
...
Aunque la sentencia for tiene un uso más amplio que el para, ya que realmente en la línea for se pueden colocar tres expresiones cualesquiera separadas por punto y coma, incluyendo la expresión nula. Es decir:
...
for (Expresión1; Expresión2; Expresion3)
{
Sentencia1;
Sentencia2;
...
}
...
El funcionamiento de ese bucle es el siguiente: se ejecuta la expresión1; después se evalúa la expresión2, y si es cierta se ejecutan las sentencias del bucle; al llegar a la llave cerrada }, se salta hacia arriba y se ejecuta la expresión3; se vuelve a evaluar la expresión2, y si es cierta, se ejecutan las sentencias del bucle de nuevo; y así sucesivamente, hasta que expresión2 sea falsa, en cuyo caso
...