Вы находитесь на странице: 1из 24

Tema:

Estructuras de Repeticin While


Prof. Oscar Tinoco G.

FUNDAMENTACIN
En ciertos problemas es necesario ejecutar una
instruccin o bloque de instrucciones ms de una
vez:
Ejemplo: Hacer un programa en C++ que calcule la
suma de N nmeros enteros ledos desde teclado

En ocasiones conoceremos el nmero de veces que


deben repetirse y otras veces finalizar cuando se
satisfaga una condicin.
En tales circunstancias es conveniente usar
estructuras repetitivas (bucles)

Conceptos
A las estructuras de repeticin se les conoce
con el nombre de bucles.
A cada repeticin de las instrucciones de un
bucle se le denomina iteracin.
As se habla de primera iteracin del bucle,
segunda iteracin, etc...

ESTRUCTURA PRE TEST


while (<condicion>) {
<cuerpo del bucle>
}
Primero se pregunta y luego se
ejecuta

ESTRUCTURA POST TEST


do {
<cuerpo del bucle>
} while (<condicion>)
Primero se ejecuta y luego se
pregunta

Estructura While (Mientras)


Sintaxis:
while (exp_condicional)
bloque

Falso(0)

exp?
Cierto(1)

while
(Mientras). While permite al
programador especificar las veces que
se repita una accin (una o ms
sentencias de programacion) mientras
una condicin (exp)se mantenga
verdadera.

Bloque

Resto de
instrucciones

Ejemplo 1: Hacer un programa en C++


que calcule la suma de N nmeros enteros
ledos desde teclado
Algoritmo:
Pedir el valor que va a tener N.
Poner a cero una variable acumulador.
Mientras n sea distinto de cero:
Pedir un valor
Acumular el valor en la variable

Mostrar el resultado de la variable


acumulador.

#include <iostream>
using name space std
main(){
int N, suma, numero;
cout<<"Ingrese cantidad de numeros a leer: ";
cin>>N;
suma=0;
/* guarda la suma */
while (N!=0) {
cout<<"Numero a leer: ";
cin>>numero;
suma = suma + numero;
N=N-1;
}
cout<<"La suma es: \n"<<suma;
;
}

Ejemplo 2: Hacer un programa en C++ que


muestre por pantalla la tabla de multiplicar de un
numero introducido por teclado
Algoritmo:
Pedir el nmero.
Poner un contador a cero.
Mientras que el contador sea menor o igual a
10:
Sacar por pantalla el resultado del numero
multiplicado por el contador.
Incrementar el contador.

#include <iostream>
using name space std;
main(){
int num,contador;
cout<<"Ingrese el numero: ";
cin>>num;
/* obtener el numero */
contador=0;
cout<<"Tabla del "<<num<<" \n";
while (contador<=12) {
cout<<num<<" \t x \t"<<contador<<" =\t"<<num*contador<<endl;
contador=contador+1;
}
return 0;
}

En ambos ejemplos se conoce cuantas veces


se debe ejecutar el bloque de instrucciones
del while. La expresin del while se
convierte normalmente en una comprobacin del valor del contador .
(contador<=10) y (N!=0)
Se define el contador como una variable
que se incrementa o decrementa un valor
constante en cada iteracin del bucle y que
nos permite contabilizar en que iteracin
nos encontramos del bucle.

En el caso que no conozcamos el nmero de veces


a ejecutar:
Ejemplo Calcular la suma de nmeros introducidos
desde teclado hasta introducir un cero
En este caso no hay contador, no conocemos la
iteracin en la que nos encontramos en cada
momento y es el valor del nmero introducido
el que determina el final del bucle.
En la expresin deberemos controlar el valor
del numero introducido, es decir: Mientras
que el nmero sea distinto de cero
A este controlador se le denomina centinela

Algoritmo:
Pedir el nmero.
Poner a cero la variable que va a acumular los
valores.
Mientras que el nmero sea distinto de cero:
Acumular el valor del nmero en la variable.
Pedir un nuevo numero
Mostrar por pantalla el contenido de la variable
donde se han ido acumulado los nmeros.

#include <iostream>
using namespace std;
main(){
int n,suma,numero;
cout<<"Ingrese numero: ";
cin>>numero;
suma=0;
while (numero!=0) {
suma=suma+numero;
cout<<"Ingrese numero: ";
cin>>numero;
}
cout<<"El valor de la suma es: \n";
cout<<suma<<endl;
return 0;
}

centinela

Estructura do...while
Sintaxis:
do
bloque
while (exp_condicional);

do

Bloque

while

Cierto(1)

exp?
Falso(0)

Resto de
instrucciones

Caractersticas de do while
Se ejecuta el bloque de instrucciones al
menos una vez. Ello lo hace especialmente
indicado para validar datos de entrada. (Ver
ejemplo. siguiente)
Aunque es parecido al while no siempre
existe una correspondencia entre ellos.

#include <iostream>
using namespace std;
main(){
int num,contador;
do {
cout<<"Ingrese numero entre 1 y 9: ";
cin>>num;
} while ((num<1)||(num>9));
contador=0;
while (contador<=12) {
cout<<num<<" x "<<contador<<" = "<<num*contador;
cout<<endl;
contador=contador+1;
}
return 0;
}

Ejemplo: Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23


#include <iostream>
using namespace std;
int main ()
{
int serie=1;
bool sw=true;
do
{
cout<<serie<< ;
if (sw) serie+=4;
else serie-=2;
sw=!sw;
} while (serie<=23);
return 0;
}

1. Elaborar un programa que lea n valores enteros


positivos hasta que lea 1. Debe mostrarse el
nmero de valores ledos y su suma
correspondiente.
2. Elaborar un programa que obtenga el factorial de
un nmero ingresado por teclado.
3. Elaborar un programa que obtenga el promedio de
seis calificaciones ingresadas por teclado.

4. Elaborar un programa que obtenga los 20


primeros mltiplos de 7.
5. Elaborar un programa que determine si un nmero
es perfecto.
6. Elaborar un programa que permita determinar si
un nmero es primo

Вам также может понравиться