Inv-Estruc-Repetición U3
Inv-Estruc-Repetición U3
Inv-Estruc-Repetición U3
Las estructuras de repetición son las llamadas estructuras cíclicas, iterativas o de bucles.
DO
sentencia_1
[sentencia_2]
IF (expresión_lógica) EXIT
sentencia_3
[sentencia_4]
END DO
Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden omitir
las llaves.
Un bucle WHILE puede contener varias sentencias EXIT, generalmente, formando parte
una sentencia IF o bloque IF. Sin embargo, no conviene usar más de uno por bucle
WHILE, en aras de construir programas bien estructurados. De esta manera, cada bucle
WHILE tendrá un único punto de entrada, la sentencia DO, y un único punto de salida,
la sentencia EXIT.
#include <stdio.h>
main()
int num;
scanf("%d",&num);
while (num == 1)
scanf("%d",&num);
system("PAUSE");
return 0;
}
Ejemplo2:
i=1
DO
IF (i>10) EXIT
i=i+1
END DO
i=2
acum=0
DO
IF (i>10) EXIT
acum=acum+i
i=i+2
END DO
Leer por teclado un número entre 0 y 10, ambos límites incluidos. El usuario puede
equivocarse, en cuyo caso el programa le dará tantas posibilidades como necesite
(indefinidas veces) hasta conseguir que el número introducido esté en el rango dado.
Entonces, el programa muestra cuantos intentos ha usado.
INTEGER :: num,cont=0
DO WRITE (*,*)
cont=cont+1
IF (num>=0.AND.num<=10) EXIT
END DO
WRITE (*,*) "*****ENHORABUENA*****"
• si expresión_lógica es cierta aún, se ejecuta otra vez el cuerpo del bucle y el control
vuelve a la sentencia DO WHILE.
• El proceso anterior se repite hasta que expresión_lógica se hace falsa, en cuyo caso el
control pasa a ejecutar la primera sentencia siguiente a END DO.
• El bucle DO WHILE es un caso especial del bucle WHILE, en el que el testeo de salida
ocurre siempre en el cabecero del bucle.
DO WHILE (expresión_lógica)
sentencia_1
[sentencia_2] Cuerpo
END DO
Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden omitir
las llaves. esta estructura de control es la única que termina con el signo de puntuación
´;´.
Ejemplo1:
#include <stdio.h>
do {
printf( "%d ", contador ); /* despliega el contador */
Ejemplo2:
i=1
DO WHILE (i<=10)
i=i+1
END DO
i=2
acum=0
DO WHILE (i<=10)
acum=acum+i
i=i+2
END DO
Leer por teclado un número entre 0 y 10, ambos límites incluidos. Cerciorarse de que el
número está en el rango dado sin limitar el número de intentos. Mostrar cuantos
intentos ha necesitado el usuario.
INTEGER :: num,cont=1
DO WHILE (num<0.OR.num>10)
cont=cont+1
END DO
El bucle for utiliza la primera opción usando una variable numérica capaz de controlar
el número de iteraciones. Esta variable es conocida como variable de control.
Su sintaxis es la siguiente:
Sentencias
End
La utilización del operador (:) en la cabecera del bucle es la conocida hasta el momento.
La variable de la cabecera va tomando sucesivamente cada uno de los valores asignados
(no es un vector), y para cada uno de ellos se repiten las sentencias asociadas al bucle.
En el caso anterior el incremento de la variable que controla el bucle es 1. Para
incrementos distintos se debe utilizar:
Sentencias
End
También puede darse a la variable una sucesión de valores cualesquiera, sin necesidad de
utilizar el operador (:). La variable que controla el bucle irá tomando cada uno de los
valores indicados efectuando para cada uno una iteración.
for variable=[valor1,valor2,valor3,……]
Sentencias
Ejemplos de bucles for:
for i=1:n
v(i)=1;
End
for i=1:m
for j=1:n
A(i,j)=1/(i+j-1);
end end
Ejemplo3: El siguiente programa pide por teclado cada elemento de una matriz 4x3 con
un mensaje adecuado a cada uno.
for i=1:4
for j=1
fprintf('Elemento [%d,%d]\n',i,j);
A(i,j)=input('Introduce dato');
end end
Conclusión.