Sei sulla pagina 1di 15

Estructuras de control repetitivas

Cuando se requiere repetir una o varias instrucciones (sentencias) para llevar a cabo una tarea; se cuenta en la programacin con estructuras que permiten realizar este proceso llamados tambin bucles, iterativas, lazos. Las estructuras repetitivas en C++ son while y for que permiten resolver todo problema que involucre procesos repetitivos. Cuando se trabajan con estas estructuras se utilizan trminos como: contadores, acumuladores, forzar la salida del bucle y continuar al inicio del bucle. Contadores: Son variables enteras que se incrementan (+) o decrementan (-) con un valor constante, pej. Una variable cuyo valor se incrementa de 1 en 1 y se conoce como variable contador. c=c+1; i+=2; j--; Acumuladores: Variables de cualquier tipo que almacenan valores variables, pej. La variable c cuyo valor se incrementa por el valor que va tomando otra variable llamada x. c=c+x; i+=c; j-=i; Salir del bucle Instruccin que permite forzar la salida de un bucle, para esto el lenguaje C++ incorpora la sentencia break para realizar dicha operacin. break;

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

Continuar al inicio del bucle Es una instruccin que permite saltar al inicio del bucle para volver a ejecutarse, para esto C++ incorpora la sentencia continue. continue;

Sentencia While Permite repetir una o ms instrucciones mientras que la condicin (expresin lgica) sea verdadera, cuando la condicin es falsa sale del bucle.

Expresin lgica

F Mientras Exp. Lgica Sentencia 1

V
Sentencia 1 Sentencia n

Sentencia n Fin Mientras

While (Exp. lgica)) { Sentencia 1; : Sentencia n; }

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

Ejemplo Obtener la suma de los primeros n nmeros naturales

Inicio

i, n, s : Entero

Leer n

F i<=n

s i

s+i i+1

Escribir s

Fin

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

// Obtener la suma de los primeros n nmeros naturales positivos. // #include "stdafx.h" #include <iostream> using namespace std;

int _tmain(int argc, _TCHAR* argv[]) { //Variables int i,n,s = 0; //Entrada cout<<"Numero: "; cin>>n; //Proceso i = 1; while(i <= n){ s = s + i; i+= 1; } //Salida cout<<"\n"; cout<<"Suma: "<<s<<"\n"; system ("pause"); return 0; }

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

While anidado Dentro de la estructura repetitiva es posible colocar una o ms estructuras repetitivas.

Exp. lgica

Mientras Exp. Lgica Mientras Exp. Lgica Sentencia 1

V Sentencia n
Exp. lgica

Fin Mientras Fin Mientras

Sentencia 1 Sentencia n

while (Exp. lgica) { while (Exp. lgica) { Sentencia 1; Sentencia n; } }

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

// mostrar para los valores de i<=3, los valores de j<=4 // #include "stdafx.h" #include <iostream> using namespace std;

int _tmain(int argc, _TCHAR* argv[]) { int i=1, j=1; while (i<=3) //mientras i sea menor o igual que 3 { cout << "para i=" <<i <<":"<<"\t"; while (j<=4) //mientras j sea menor o igual que 4 { cout <<"j =" <<j <<"\t"; j++; //aumentar i en una unidad } cout <<"\n"; i++; j=1; } system ("pause"); return 0; } //avanza una nueva lnea //aumentar i en una unidad // iniciar j de Nuevo a 1

Al ejecutar este programa se obtiene el siguiente resultado: Para i = 1 j = 1 j = 2 j = 3 j = 4 Para i = 2 j = 1 j = 2 j = 3 j = 4 Para i = 3 j = 1 j = 2 j = 3 j = 4


Lenguaje de Programacin C++ Ing. Ana Lenny Hospinal

Este resultado demuestra que el bucle exterior se ejecute tres veces y por cada una de estas, el bucle interior se ejecuta cuatro veces. De esta forma es como se ejecutan los bucles anidados. Observe tambin que cada vez que finaliza la ejecucin de la sentencia while interior, avanzamos a una nueva lnea, incrementamos el valor de i en una unidad e inicializamos de nuevo j al valor 1.

do While La sentencia do ejecuta una sentencia, simple o compuesta, una o ms veces dependiendo del valor de una expresin (while). Su sintaxis es la siguiente: do sentencia 1; while (Exp. lgica) ;

Hacer Sentencia 1; Mientras Exp. Lgica

Cuando se utiliza una estructura do - while el bloque de sentencias se ejecuta al menos una vez, porque la condicin se evala al final. En cambio, cuando se ejecuta una estructura while puede suceder que el bloque de sentencias no se ejecute, lo que ocurrir siempre que la condicin sea inicialmente falsa.

Ejemplo: Realice un programa que le obligue a ingresar un nmero >= 0

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

// Programa que obliga a ingresar un nmero >= 0 #include "stdafx.h" #include <iostream> using namespace std;

int _tmain(int argc, _TCHAR* argv[]) { double n ; do { cout<<"Numero:"; cin>>n ; } while (n<0); system ("pause"); return 0; }

Sentencia For
Permite repetir una o ms instrucciones una cantidad de veces. i es la variable contador donde se establece el valor inicial. vi valor inicial vf valor final de la variable contador +1 valor de incremento

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

i i <=vf i

vi F

Para i

vi Hasta vf Inc+1 Sentencias;

i+1

Fin Para

Sentencias;

for (i=vi; i<=vf; i++) { Sentencias; }

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

Ejemplo Dado un rango de nmeros enteros, obtener la cantidad de nmeros enteros que contiene.

Inicio

i, c, ni, nf: Entero

Leer ni, nf

ni

ni+ 1

nf

nf-1

i i <=nf i V c c+1

ni

V i+1

Escribir c

Fin

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

// Dado un rango de nmeros enteros, mostrar la cantidad de nmero enteros que contiene #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int i,ni,nf,c = 0; //Entrada cout<<"Num. Inicial: "; cin>>ni; cout<<"Num. Final: "; cin>>nf; //Proceso ni = ni + 1; nf = nf - 1; for(i = ni; i<=nf; i++) { c += 1; } cout<<"\n"; cout<<"Cantidad: "<<c<<"\n"; system ("pause"); return 0; }

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

For anidado Dentro de la estructura repetitiva es posible colocar una o ms estructuras repetitivas as como otras estructuras.

i i <=vf i V

vi F

Para i

vi Hasta vf Inc+1

Para j vi Hasta vf Inc +1

i+1
Fin Para

Sentencias Fin Para

j
j <=vf j

vi
F

for (i=vi; i<=vf; i++)


j+1

{ for (j=vi; j<=vf; j++) { Sentencias; } }

V Sentencias;

Ejemplo: Determinar cuntos nmeros primos hay en los primeros N nmeros enteros positivos.
Lenguaje de Programacin C++ Ing. Ana Lenny Hospinal

Inicio n, c, i, j : entero flag : Lgico Leer n

i i <=n i
flag verdadero

i+1

j j <=i/2 j
V

2 F j+1

i Mod j=0 V

flag salir

falso

flag

c+1

Escribe c
Fin

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

Ejemplo: // Determine cuntos nmeros primos hay en los primeros n nmeros enteros positivos. #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //Variables int n,c = 0,i,j; bool flag; //Entrada cout<<"Numero: "; cin>>n; //Proceso for(i = 2; i<=n; i++) { flag = true; for(j = 2; j <= i / 2; j ++) { if(i % j == 0) { flag = false; break; } } if(flag) { c += 1; flag = true; } } //Salida cout<<"\n"; cout<<"Cantidad: "<<c<<"\n"; system ("pause"); return 0; }
Lenguaje de Programacin C++ Ing. Ana Lenny Hospinal

Ejercicios Propuestos 1. Dado un rango de nmeros enteros obtener la cantidad de nmeros pares que contiene. 2. Obtener la cantidad de los primeros n nmeros mltiplos de 5 (mediante while y for) 3. Dado un nmero determinar cuntos dgitos tiene 4. Dado un nmero entero en base 10, convertir el nmero a otra base menor a 10. 5. Obtener el factorial de un nmero. 6. Obtener la suma de pares e impares de los primeros N nmeros enteros positivos. 7. Hallar cuntos mltiplos de M hay en un rango de nmeros enteros (debe ingresar Ni, Nf y M).

Lenguaje de Programacin C++

Ing. Ana Lenny Hospinal

Potrebbero piacerti anche