Está en la página 1de 28

Unidad 3.

Estructuras de
iteración
1
3.1.- Motivación para el uso de ciclos
3.2.- Instrucción while
3.3.- Instrucción do...while
3.4.- Instrucción for
3.5.- Instrucciones break y continue
3.6.- Ejemplos de programas

Prof. Juan José Fajardo S.


3.2 Ciclo while en C++
Su formato general es :
while(condición)
{
grupo de instrucciones;
instrucción(es) para salir del ciclo;
};

Prof. Juan José Fajardo S. 2


while
La sintaxis de while es:
while (condición) sentencia; o también:
while (condición)
{
sentencia 1;
sentencia 2;
……………….;
sentencia n;
}

Prof. Juan José Fajardo S. 3


#include <iostream> #include <iostream>
using namespace std; using namespace std;
main() main()
{ {
int i=0; int i=0;
while(i<10) while(i<10)
cout<<i++<<" "; cout<<++i<<" ";
} }

Prof. Juan José Fajardo S. 4


Uso de la sentencia while
#include <iostream>
Ejecuta
using namespace std; While02.exe

main() /* Escribe los números del 1 al 10 */


{
int numero=1;
while(numero<=10)
{
cout<<numero<<" ";
numero++;
}
}

Prof. Juan José Fajardo S. 5


Qué hacen los siguientes programas?

Prof. Juan José Fajardo S. 6


Prof. Juan José Fajardo S. 7
3.3 Sentencia do…..while
• Sintaxis para do…….while
do{
sentencia 1;
sentencia 2;
sentencia n;
}while (condición);

Prof. Juan José Fajardo S. 8


#include <iostream>

#include <conio.h>

using namespace std;

main() /* Muestra un menú si no se pulsa 4 */

{ Ejemplo de do
char seleccion; while03
do

system("cls");

cout<<" 1.- Comenzar\n";

cout<<" 2.- Abrir\n";

cout<<" 3.- Grabar\n";

cout<<" 4.- Salir\n";

cout<<" Escoge una opcion: ";

seleccion=getchar();

switch(seleccion){

case '1': cout<<"Escogiste la opcion 1: Comenzar"; break;

case '2': cout<<"Escogiste la opcion 2: Abrir"; break;

case '3': cout<<"Escogiste la opcion 3: Grabar"; break;

case '4': cout<<"Escogiste salir!"; break;

default: cout<<"Opcion no valida";

} // fin de switch

cout<<"\n\n";

system("pause");

}while(seleccion!='4');

} Prof. Juan José Fajardo S. 9


3.4 Sentencia FOR
• Sintaxis del FOR
for (inicialización; condición; incremento)
{
sentencia 1;
sentencia 2;
……………….;
sentencia n;
}

Puede haber más variables involucradas, estas se separan por comas:

for (a=1, b=100; a!=b; a++, b- -){sentencias};


Prof. Juan José Fajardo S. 10
#include <iostream>
using namespace std;
main() /* Escribe la tabla de multiplicar */
{
int num,x,result;
cout<<"Introduce un numero: "; cin>>num;
for(x=0; x<=10; x++)
{
result=num*x;
cout<<num<<" * "<<x<<" = "<<result<<endl;
}
}
Prof. Juan José Fajardo S. 11
3.5 Sentencias BREAK y CONTINUE

• BREAK se utiliza para terminar la ejecución de un ciclo


o salir de una sentencia SWITCH
• CONTINUE Se utiliza dentro de un ciclo o bucle.
Cuando el programa llega a una sentencia CONTINUE
no ejecuta las líneas de código que hay a continuación
y salta a la siguiente iteración del ciclo.

Prof. Juan José Fajardo S. 12


/* Uso de la sentencia CONTINUE con while */
#include <iostream>
using namespace std;
main() /* Escribe del 1 al 50 excepto el 25 */
{
int numero=1; Abrir programa
while02
while(numero<=50)
{
if (numero==25)
{
numero++;
continue;
}
cout<<numero<<" ";
numero++;
} // fin de while
Prof. Juan José Fajardo S. 13
} // fin de main
/* Uso de la sentencia CONTINUE con for */
#include <iostream>
using namespace std;
main() /* Escribe del 1 al 50 excepto el 25 */
{
int numero;
for(numero=1; numero<=50; numero++)
{
if (numero==25) continue;
cout<<numero<<" ";
}
}
Prof. Juan José Fajardo S. 14
Múltiples variables en FOR

for(x=0, y=10; x <= y; ++x, --y)


cout << x << “ “ << y <<“\n”;

Prof. Juan José Fajardo S. 15


// Calcula la raíz cuadrada de los primeros 100 enteros
#include<iostream>
#include<cmath>
using namespace std;

int main() …………….

{
int num;
double raizcuadrada;
for(num=1; num<=100; num++){
raizcuadrada=sqrt(num);
cout<<"sqrt("<<num<<") = "<<raizcuadrada<<'\n';
}
} Prof. Juan José Fajardo S. 16
// for sin incrementos
#include<iostream>
using namespace std;
int main()
{
int x;
for(x=0; x!=123;){
cout<<"Mete un numero: ";
cin>>x;
}
}
Prof. Juan José Fajardo S. 17
// for sin inicialización ni incremento
#include<iostream>
using namespace std;

int main()
{
int x=0;
for( ;x<10; )
cout<<x++<<" ";
}

Prof. Juan José Fajardo S. 18


Ejercicios

1. Imprimir números de 10 en 10 en el intervalo de -50 a 50.


2. a) Calcular el factorial de un número y b) Otro programa donde se impriman todos los factores del
factorial.
3. Escribir los 20 primeros números de Fibonacci utilizando una estructura a)FOR y b)WHILE. Esta
secuencia aparece en configuraciones biológicas como en las ramas de los árboles, en la disposición
de las hojas en el tallo, en las flores, etc.
https://www.youtube.com/watch?v=yDyMSliKsxI
5. Escribir un programa C++ que lea exactamente 8 números y luego escriba la suma de todos ellos
6. Modificar el programa anterior para que en lugar de leer 8 números, se puedan leer tantos
números como se quiera hasta que llegue un cero. El resultado es la suma de todos los números
leídos
7. Escribir un programa que escriba todos los múltiplos de 3 del número 1 al 3000

Prof. Juan José Fajardo S. 19


++ejercicios
1. Utilice un do-while para escribir un programa que lea una serie de números (leer
hasta que llegue el cero) y que calcule su media aritmética
2. Programa que escriba todo el código ASCII (el código ASCII va de 0 a 255 y
representa el número con el que las computadoras almacenan los caracteres)
3. Crear el programa asteriscos en el que se introduce un número entero y se crea
media pirámide de asteriscos. Por ejemplo si se introduce el 6, el resultado sería:
*
***
*****
*******
*********
***********

Prof. Juan José Fajardo S. 20


• Modificar el ejercicio anterior para que aparezca una
pirámide y luego vuélvalo a modificar para que
aparezca un rombo

Mostrar programa calificacionesABC

Mostrar programa dowhile01


Ejercicio: Tabla de multiplicar en decimal

Ejercicios: Tabla de multiplicar en hexadecimal


Calculadora de enteros

Prof. Juan José Fajardo S. 21


• Escriba un programa para una calculadora que sume, reste,
multiplique y divida. Utilice do while y switch. El programa seguirá
pidiendo operandos hasta que el usuario salga del programa
mediante una de las opciones de switch.

• Mes del año con switch. Pide por teclado un número entre 1 y 12 e
imprime el mes correspondiente.
a) Con switch solamente
b) Con switch y strcpy. Ejm., strcpy(nombre, “mes”), con la
librería string.h

Prof. Juan José Fajardo S. 22


Uso de switch

Dada la siguiente tabla:

Distancias de los planetas del sistema solar al Sol


Escriba una programa que
Planeta Distancia media al Sol
(en millones de kilómetros) muestre el listado de los
planetas con sus números
asociados. Pida por teclado el
número (entero) asociado a un
1. Mercurio 59 planeta y muestre luego la
distancia media al sol, a la que
2. Venus 108 se encuentra el planeta
3. Tierra 150
seleccionado.
4. Marte 228
5. Júpiter 750
6. Saturno 1431
7. Urano 2877
8. Neptuno 4509
9. Plutón 5916

Prof. Juan José Fajardo S. 23


Al introducir un número no asociado a ningún planeta, se
Corrida normal verá:

Prof. Juan José Fajardo S. 24


Escriba un programa para resolver cada una de las series siguientes.
Imprima cada término generado para comprobar que su programa funciona.

Prof. Juan José Fajardo S. 25


// 1. Imprimir números de 10 en 10 en el intervalo de -50 a 50.

#include<iostream>
using namespace std;

int main()
{
int i;
for(i=-50; i<=50; i+=10)
cout<<i<<" "; // 2. a) Calcular el factorial de n.
}
#include<iostream>
using namespace std;

int main()
{
int i,n,f=1;
cout<<"Calculo del factorial de un numero n. Escribe n: ";
cin>>n;
for(i=1; i<=n; i++)
f*=i;
cout<<"El factorial de "<<n<<" es: "<<f;
}
Prof. Juan José Fajardo S. 26
// 2. b)Calcular el factorial de n imprimiendo los factores.

#include<iostream>
using namespace std;

int main()
{
int i,n,f=1;
cout<<"Calculo del factorial de un numero n. Escribe n: "; cin>>n;
for(i=1; i<=n; i++)
{
f*=i;
if(i<n) cout<<i<<".";
else cout<<i<<" = "<<f;
}
}

Prof. Juan José Fajardo S. 27


/* imprime media pirámide de n renglones
Programa asteriscos
*/

#include<iostream>
using namespace std;
main()
{
int i,j,n;
cout<<"Cuantos renglones tiene tu media pirámide? "; cin>>n;
for(i=1; i<=n; i++){
for(j=1; j<=2*i-1; j++)
cout<<'*';
cout<<endl;
}

Prof. Juan José Fajardo S. 28

También podría gustarte