Está en la página 1de 15

Lenguaje de Programacin C++ Ing.

Ana Lenny Hospinal



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.













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

Mientras Exp. Lgica
Sentencia 1
Sentencia n
Fin Mientras
Expresin
lgica
Sentencia 1
Sentencia n
F
V
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
i 1
i<=n
s s+i
i i+1
Escribir s
Fin
F
V
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
Sentencia 1
Sentencia n
Exp.
lgica
F
F
V
V
Mientras Exp. Lgica
Mientras Exp. Lgica
Sentencia 1
Sentencia n
Fin Mientras
Fin Mientras
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"; //avanza una nueva lnea
i++; //aumentar i en una unidad
j=1; // iniciar j de Nuevo a 1
}

system ("pause");

return 0;
}



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) ;

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
Hacer
Sentencia 1;
Mientras Exp. Lgica
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














Para i vi Hasta vf Inc+1
Sentencias;

Fin Para
Sentencias;
i vi
i i+1
i <=vf
V
F
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
c c+1
Escribir c
Fin
F
V
i ni
i <=nf
i i+1
V
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.


















Ejemplo:
Determinar cuntos nmeros primos hay en los primeros N nmeros enteros
positivos.
j vi
j <=vf
j j+1
Sentencias;
F
V
i vi
i <=vf
i i+1
F
V
Para i vi Hasta vf Inc+1
Para j vi Hasta vf Inc +1
Sentencias
Fin Para
Fin Para
for (i=vi; i<=vf; i++)
{
for (j=vi; j<=vf; j++)
{
Sentencias;
}
}
Lenguaje de Programacin C++ Ing. Ana Lenny Hospinal




Inicio
n, c, i, j : entero
flag : Lgico
Leer n
j 2
j <=i/2
j j+1
flag falso
salir
F
V
i 2
i <=n
i i+1
F
flag verdadero
i Mod j=0
V
flag
c c+1
Fin
Escribe c
F
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).

También podría gustarte