Está en la página 1de 7

ESTRUCTURAS REPETITIVAS

Las estructuras repetitivas tienen la caracteristica de repetir en forma controlada


un conjunto de instrucciones (bloque) una cantidad determinada de veces. Existen tres
tipos de estructuras repetitivas: for, while y do-while.

5.1. ESTRUCTURA REPETITIVA : FOR

BUCLES: Es un conjunto de sentencias que se ejecutan una vez por cada valor de un
rango especificado en el algoritmo.

La sentencia for es un método para ejecutar un conjunto de sentencias (bloque) un


número fijo de veces.
Mientras la condición sea verdadera se
Pseudocódigo: Valor inicial de la ejecuta el bucle (sentencias1…..P)
variable
Incrementa o Decrementa
la variable cuando
termina el bucle

Para (Var=Valor_inicial , Condición , Incremento)


inicio
sentencia1;
Bucle sentencia2; Conjunto de sentencias a ejecutar en cada
---- iteración del bucle For
sentenciaP;
fin_para
sentenciaQ;
----

El bucle for contiene las siguientes características:


o Var, es una variable (tipo entero) al que se le debe dar un valor
inicial , para controlar el inicio del proceso repetitivo.
o La Condición establece la continuidad o el termino del proceso.
Mientras la condición sea verdad el proceso continua. Cuando la condición sea falsa
el proceso termina.
o En el Incremento se debe hacer el incremento o decremento
necesario a la variable de inicialización para que esta pueda hacer variar la
condición..
o Sentencias (desde1 hasta P), son las sentencias que se ejecutarán
por cada iteración del bucle, es decir mientras la condición sea verdadera..

Sintaxis en Visual C++:

for ( int var = Valor_inicial ; condicion ; incremento)


{
sentencia1;
sentencia2;
----
sentenciaP;
}
sentenciaP;

Lenguaje de programación – Prof. Yupanqui Pag.: 1


----

Ejem1. hacer que se imprima FIME-UNAC por 5 veces.


primera forma: cout << "UNAC-FIME \n";
cout << "UNAC-FIME \n";
cout << "UNAC-FIME \n";
cout << "UNAC-FIME \n";
cout << "UNAC-FIME \n";

Usando FOR:
for (int i = 1 ; i <= 5 ; i++)
{
cout << "UNAC-FIME \n";
}
Como funciona:
1. El for empieza asignando el valor 1 a la variable i.
2. Ejecuta el bucle que contienen la sentencia: cout << "UNAC-FIME \n".
3. Después de haber ejecutado todas las sentencias del bucle (en este caso es una).
Retorna al for, primero la variable i se incrementa en UNO ( i++ ) y evalua la
condicion (si i es menor igual que 5) si la respuesta es verdadera ingresa
nuevamente al bucle; de los contario sale del bucle y termina el for.
Recuerde que la variable i termino incrementada +1 es decir su valor cuando
sale del bucle es 6.
4. retorna al for y la variable se incrementa en UNO y evalua la condicion (si i es
menor igual que 5) si la rspuesta de la condicion es verdadera ingresa
nuevamente al bucle .

Ejem2. Imprimir UNAC-FIME 5 veces, mostrando el valor de i que es creciente.


for (int i = 1 ; i <= 5 ; i++)
{
cout << "UNAC-FIME \n";
cout << "valor de i= " << i << endl;
}

Ejem3. Imprimir UNAC-FIME 5 veces, mostrando el valor de n que es Decreciente.


for (int n = 5 ; n >= 1 ; n--)
{
cout << "UNAC-FIME \n";
cout << "valor de n= " << n << endl;
}

Ejem4. Mostrar los numero del 1 al 4 y calcular la potencia 3 de cada numero.

cout << "N Potencia 3" << endl;


Resultado
for (int n = 1; n <= 4; n++)
cout << n << '\t' << pow(n,3) << endl;
N Potencia 3
1 1
2 8
Como funciona: 3 27
La variable de control es n y su valor inicial es 1 de tipo entero, 4 64
el valor límite es 4 y la expresión de incremento es n++. Esto
significa que el bucle ejecuta la sentencia del cuerpo del bucle una vez por cada

Lenguaje de programación – Prof. Yupanqui Pag.: 2


valor de n en orden ascendente 1 a 4. En la primera iteración n tomará el valor l;
en la segunda iteración el valor 2, y así sucesivamente hasta que n toma el valor 4.

Lenguaje de programación – Prof. Yupanqui Pag.: 3


Ejem5. Mostrar del 4 al 1 y calcular la potencia 3 de cada numero. (decreciente)

cout << "N Potencia 3" << endl; Resultado


for (n = 4; n >= 1; n--)
N Potencia 3
cout << n << '\t' << pow(n,3) << endl; 4 64
3 27
como funciona: 2 8
La variable n empieza con 4, y el valor límite de n es 1 (es decir, 1 1
verdadera cuando n = 4, 3, 2, 1); la expresión de decremento es
el operador n-- (que decrementa en 1 el valor de n tras la ejecución de cada iteración).

5.1.2. OTROS INTERVALOS DE ÍNCREMENTO/DECREMENTO


Los rangos de incremento/decremento de la variable o expresión de control del
bucle pueden ser cualquier valor y no siempre 1, es decir, 5, l0, 20, -4, .... dependiendo
de los intervalos que se necesiten.
Así, el bucle Muestra los números del 5 al 20 con un incremento de 5 en 5:

for (n = 5; n <= 20; n+=5) Resultado 5


cout << n << '\n' ; 10
15
La variable de control es n y su valor inicial es 5, el valor límite es 20
20 y la expresión de incremento el valor de n en 5, dado que
equivale a n = n + 5.

Hallar el resultado de los siguientes ejercicios:


// ejercicio1
for (i = 1; i < 10; i*=2)
cout << i << "\n";

// ejercicio 2
for (int a = 8; a >1; a -= 3)
cout<< pow(a,2) << "\n";

// ejercicio 3
for (i = 0, n = 5; i < n; i++, n--)
cout << (i + 2 * n) << endl;
cout << "valor de i= " << i << endl;
cout << "valor de n= " << n << endl;

Ejem6. Hallar la suma de los números impares del: 1 al 7


int suma=0;
for (int b=1; b <= 7; b+=2)
{ suma = suma + b;
cout << "EL valor sumado de b es = " << b << endl;
}
cout << "Suma de numeros impares del (1-7) es = " <<suma << '\n' ;

Ejem7.
for (double xl= 0.75; xl <= 2; xl = xl + 0.25)
cout << " Valor de xl es = " << xl << endl;

Lenguaje de programación – Prof. Yupanqui Pag.: 4


5.1.3. BUCLES INFINITOS.
El uso principal de un bucle for es implementar bucles de conteo en el que el
número de repeticiones se conoce por anticipado, pero existe una variante de la sintaxis
for que permite implementar bucles infinitos, que son aquellos bucles no tienen fin.

Sintaxis: for (;;)


{
sentencias……..
}

Las sentencias se ejecuta indefinidamente a menos que se utilice una sentencia


return o break (normalmente una combinación if-break o if-return).
La razón de que el bucle se ejecute indefinidamente es que se ha eliminado la
expresión de inicialización, la condición del bucle y la expresión de incremento; al no
existir una condición de bucle que especifique cual es la condición para terminar la
repetición de sentencias, éstas Se ejecutarán indefinidamente. Asi, el bucle

for (;;)
cout << "Curso: Lenguaje de Programacion en la FIME-UNAC.. .";

** Repetirá en forma infinita los que se encuentra dentro del cout.

Para corregir este problema en el diseño del bucle for incluir:


l. El cuerpo del bucle ha de contener todas las sentencias que se desean ejecutar
repetidamente.
2: Una sentencia terminará la ejecución del bucle cuando se cumpla una determinada
condición. Sintaxis:
if (condición) break;

condición : es una expresión lógica


break : termina la ejecución del bucle y transfiere el
control a la sentencia siguiente fuera del bucle
Sintaxis completa

for (;;) // bucle


{
lista_sencencias1
if (condición_terminación) break;
lista_sentecias2
} // fin del bucle

Ejem8. Hacer un programa para ingresar numeros Positivos. Debe terminar si se ingresa
algun numero negativo.
int num;
cout << "** Para terminar ingrese numero menor a 0 \n\n";
for (;;)
{
cout << "Introduzca un numero >0 ="; cin >> num;
if (num<0)
break;
}

Lenguaje de programación – Prof. Yupanqui Pag.: 5


Ejem9. Hacer un programa usando bucles infinitos para que aparezca FIME la
cantidad de veces que se indique.

int contador = 0; // inicialización del contador


int max;
cout << "Cuantas veces desea que aparesca: FIME =";
cin >> max;
for (;;) // bucle for que no termina nunca
{
if(contador < max) // test
{
cout << "FIME!\n";
contador++; // incremento +1
}
else
break;
}

5.1.4. LOS BUCLES FOR VACÍOS


Tenga cuidado de situar un punto y coma después del paréntesis inicial del bucle
for. Es decir, el bucle
for (int n = 1; n<= 5; n++); -.---------- problema
cout << "Lenguaje de Programacion" << endl;

no se ejecuta correctamente, ni se visualiza la frase" Lenguaje de Programacion" cinco


veces como era de esperar, ni se produce un mensaje de error por parte del compilador.

En realidad lo que sucede es que se visualiza una vez la frase "Lenguaje de


Programacion" porque la sentencia for es una sentencia vacía al terminar con un punto
y coma (;). Entonces lo que sucede es que la sentencia for no hace absolutamente nada y
tras 5 iteraciones y por tanto después de que el bucle for se ha terminado, se ejecuta la
siguiente sentencia cout y se escribe "Lenguaje de Programacion”.

El bucle for con cuerpos vacíos puede tener algunas aplicaciones,


especialmente cuando se requieren ralentizaciones o temporizaciones
de tiempo.

5.1.5. BUCLES FOR VACÍOS.


La sentencia nula (;) es una sentencia que está en el cuerpo del bucle y no hace nada.

Ejem10. Ejemplo donde no se considera el incremento en el FOR.

for ( int n = 1 ; n <= 4 ; )


cout<< "n = " << n++ << endl ;

Salida:
n=1 El bucle for en su estructura PUEDE NO INCLUIR
n=2 el incremento. Pero en el desarrollo de las sentencia
n=3 del bucle se debe considerar, sino el bucle puede
n=4 quedar indefinido es decir nunca termina.

Lenguaje de programación – Prof. Yupanqui Pag.: 6


Ejem11. Ejemplo donde no se considera el incremento en la estructura del FOR.
Recuerde, en la condicional n<4 , el valor de n se debe incrementar/decrementar para
que pueda terminar.

n=1; Salida:
for (int i = 1; n <= 4;)
{ i=1 n=1
cout<< "i: " << i<< endl; i=1 n=2
cout<< "n: " << n<< endl; i=1 n=3
n++; i=1 n=4
}

Ejem12. Mostrar la Tabla de Multiplicar de un determinado número ingresado.

int num, y;
cout <<"Mostrar Tabla de Multiplicar del = ";
cin >> num;
for ( y=1 ; y<=12 ; ) // y toma alores de 1 al 12
{
cout << num << " * "<< y << " = " << (num*y) <<endl;
y++;
}

Lenguaje de programación – Prof. Yupanqui Pag.: 7

También podría gustarte