Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cátedra de Computación
Contenido
• Necesidad de estructuras de repetición
• Bucle while
• Bucle do-while
• Bucle for
2
Necesidad de las Estructuras de Repetición
• Imprimir Hola mundo 5 veces
teclado.
de Computación
lineales.
*Agradecimientos a Cristian Cappo y José Colbes por los materiales de referencia
Estructuras repetitivas
Propósito: Repetir varias veces la ejecución de una serie de instrucciones
bajo cierto criterio. (Evitando repetir el código)
Estructuras repetitivas
∙ Mientras (while)
∙ Repetir (do-while)
∙ Desde (for)
while(expresión)
instrucción;
int variable=10;
while(variable>1){
cout<<“la variable vale: “<<variable<<endl;
variable=variable-1; //modifica la expresión de control
cout<<“valor tras decrementar la variable: ”<<variable<<endl;
}
}while(expresión);
#include<iostream>
using namespace std;
int main(){
int n;
do{
cout<<"Ingrese un numero positivo: ";
cin>>n;
}while(n<=0);
cout<<"El numero ingresado fue: "<<n<<endl;
return 0;
}
Bucle do-while
Ejemplo: Calcular el factorial de un número n. Nota: usaremos un acumulador
multiplicativo.
#include<iostream>
using namespace std;
int main(){
int n,i=1;
int facto=1; //inicializacion
cout<<"Ingrese el nro n: ";
cin>>n;
do{
facto*=i; //acumulador multiplicativo
i++;
}while(i<=n);
cout<<"\nEl factorial de "<<n<<" es: "<<facto<<endl;
return 0;
}
Bucle for for (inicio; control; operación)
instrucción;
La sintaxis del bucle for es:
inicio; operación
while(control){
instrucciones
instrucciones
operación;
} NO SI
control
El bucle for se sigue el orden:
evaluación de control, ejecución de
instrucciones y evaluación de
operación.
Bucle for
El funcionamiento del bucle for es el siguiente:
1. Primero se ejecuta la expresión de inicio. Normalmente esta es una
expresión de asignación a una variable, que le da un valor inicial.
2. Luego se comprueba la expresión de control. Si esta expresión es
verdadera se ejecuta la instrucción (o el grupo de instrucciones). Si la
expresión es falsa el bucle finaliza.
3. Tras ejecutarse la instrucción (o instrucciones) se evalúa la expresión de
operación. Habitualmente lo que hace esta expresión es incrementar la
variable de control.
4. A continuación se vuelve al segundo paso. El bucle finaliza cuando la
expresión de control es falsa.
Bucle for
En un bucle for podemos omitir la expresión de inicio; por ejemplo, si
sabemos que la variable ya está inicializada:
int i=0;
for ( ; i<10; i++)
cout<<“i vale ”<<i<<endl;
int i=0;
for( ; i<10; ){
cout<<“i vale ”<<i<<endl;
i++;
}
15
Bucle for
Ejemplo 1 - Extraído de http://c2.com/cgi/wiki?FizzBuzzTest
Imprimir en pantalla los números comprendidos entre 1 y 100. Pero para los múltiplos de 3,
imprimir “Fizz” en lugar del número, mientras que para los múltiplos de 5 se imprime “Buzz” en
lugar del número. Si el número es múltiplo de 3 y de 5, mostrar “Fizzbuzz” en lugar del número.
#include<iostream>
using namespace std;
int main(){
int i;
cout<<"Numeros del 1 al 100"<<endl;
for(i=1;i<=100;i++){
if((i%3==0)&&(i%5==0)) cout<<"FizzBuzz"<<endl;
else if(i%3==0) cout<<"Fizz"<<endl;
else if(i%5==0) cout<<"Buzz"<<endl;
else cout<<i<<endl;
}
return 0;
}
Bucle for
Ejemplo – Imprimir todas las letras minúsculas en el alfabeto (inglés) de la tabla ASCII.
Nota: recordar que las variables de tipo char almacenan números enteros.
#include<iostream>
using namespace std;
int main(){
char minuscula; //será un contador!!
cout<<"Las letras minusculas son:\n";
for(minuscula='a';minuscula<='z';minuscula++){
cout<<minuscula<<" ";
}
cout<<endl;
return 0;
}
17
Bucles anidados
Supongamos que deseamos explorar una matriz, un plano cartesiano, una imagen
digital o simplemente dos variables independientes
Ejemplo:
int contador=0;
int
int bandera=0 ;
contador=0;
while(bandera==0){
bool bandera=true;
contador = contador + 1 ;
while(bandera){
if(contador ==10){ + 1 ;
contador = contador
bandera=1;
if(contador==10){
} bandera=false;
} }
}
Uso de banderas
Ejemplo – Escribir un programa que determine si un número ingresado por teclado es un número
primo o no.
#include<iostream>
using namespace std;
int main(){
int n;
cout<<"Ingrese el numero: ";
cin>>n;
bool esPrimo=true;
for(int k=2;k<n;k++){
if(n%k==0){ //k es divisor de i?
esPrimo=false;
}
}
if(esPrimo) cout<<"El numero "<<n<<" es primo"<<endl;
else cout<<"El numero "<<n<<" no es primo"<<endl;
return 0;
}
Uso de break
En lenguaje C/C++, para escribir una instrucción de salto break (interrumpir), se
utiliza la sintaxis:
break;
int n,contador = 1;
int pares= 0;
do{
cout<<"Valor del contador: "<< contador <<endl;
contador = contador + 1;//contador+=1; ó contador++;
cin>>n;
if(n%2==0)pares++;
}while( contador <10 );
• Es una variable que se incrementará en una unidad cada vez que se ejecute la instrucción en el bloque
de un bucle.
• El contador se utiliza para llevar la cuenta de determinadas acciones durante la ejecución del
programa.
• Un contador debe ser inicializado, lo cual consiste en asignarle un valor inicial (generalmente cero).
Acumuladores
Supongamos que necesitamos calcular:
#include<iostream>
using namespace std;
int main(){
int n=10,suma=0;
for(i=1;i<=n;i++){
suma= suma+i;//suma+=i
}
cout<<"La suma es "<<sum<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n=10,suma=0;
int
int facto=0;
facto=1;
for(i=1;i<=n;i++){
facto=facto*i; //facto*=i
suma= suma+facto;
}
cout<<"La suma es "<<sum<<endl;
return 0;
}
Desafíos – Estructuras de repetición
Tema 1: Escribir un programa que invierta los dígitos de un
número entero introducido por teclado.
Entrada Salida
-123456 -654321
29