Está en la página 1de 7

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERIA MECANICA


CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas

ESTRUCTURA ITERATIVA: do - while


Repite la ejecución de la acción mientras la expresión lógica siga siendo verdad. Cuando sea falsa, el proceso termina.
Debe observarse que la acción y la variación se realizan por lo menos una vez.
Esta estructura de programación repetitiva es recomendable cuando la acción se va a realizar de todas maneras, por lo
menos una vez, o cuando no se sabe la cantidad de veces que se va a repetir la acción.
inicialización
do {
acción
variación
}while (condición);

Por ejemplo, imprimir los 100 primeros números naturales:

int n=1; // inicialización


do {
Imprimir n
n++ // aumenta en 1
} while (n <=100);

Note que mientras que la condición sea verdad, se seguirá ejecutando la acción

ESTRUCTURA ITERATIVA: while


Repite la ejecución de la acción mientras la expresión lógica siga siendo verdad. Cuando sea falsa, el proceso termina.
Similar a la estructura do-while sólo que en ésta estructura es posible que la acción y la variación no se realicen ninguna
vez y esto puede ocurrir cuando el resultado de la condición es falsa desde un comienzo.

inicialización
while (condición) {
acción
variación
}

Por ejemplo, imprimir los 100 primeros números naturales:

int n=1; // inicialización


while (n <=100) {
Imprimir n
n++ // aumenta en 1
}
Note que mientras que la condición sea verdad, se seguirá ejecutando la acción

ESTRUCTURA ITERATIVA: for


Es un while simplificado, mucho más rápido y eficaz. Muy preferido por los programadores. Veamos su forma general:

for (inicialización; condición; variación) {


acción;
}

Por ejemplo, imprimir los 100 primeros números naturales:

for (int n=1; n <=100; n++) {


Imprimir n;
};

Note que la inicialización y la variación se relacionan con la variable de control utilizada en la condición.

Elaborado por Ing. Julio Vásquez Paragulla 1


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
En este caso lo primero que hará será la inicialización ( n=1;) luego comprobará si es cierta la comparación (n <=100) y de
ser verdad, ejecutará las instrucciones. Finalmente ejecutará la variación ( n++ ) . Luego comprobará de nuevo la
comparación para continuar con el proceso repetitivo o para finalizar cuando el resultado de la comparación sea falsa.

Observe que todo proceso repetitivo necesita de una previa inicialización de algún contador, acumulador, estado, lo cual
permite la evaluación de la condición que controla la repetición del proceso.

La inicialización puede contener varias ordenes de asignación separadas por comas y terminando con punto y coma.
Igualmente, la variación puede contener varias ordenes de variación y/o acumulación separadas por comas y terminando
con el paréntesis del for, Por ejemplo, vea el siguiente for hipotético:

for (int a=1, b=0, c=2; a<= n; a++, b+=3, c+= x) {


Mas ordenes
}

La inicialización puede incluir la declaración de la variable pero no necesariamente debe ser así, por ejemplo:

int x;
for (x=1; x<=100; x++){
más ordenes
}

Cuál es la diferencia entre declararlo antes del for con hacer la declaración dentro de la inicialización?. Simplemente el
alcance para la utilización de la variable.
Cuando se declara antes del for, el alcance de la variable se extiende dentro y fuera de las llaves del for; es decir que
podemos utilizar la variable dentro y también fuera de las llaves; en cambio, cuando se declara dentro de la inicialización, el
alcance se limita solamente dentro de las llaves del for; es decir que sólo se puede utilizar la variable dentro de las llaves
del for y nó fuera de ellas.

Una pregunta frecuente es: cual estructura de repetición debo utilizar?. En realidad, la respuesta de un programador
experimentado seria: cualquiera. Sin embargo, para efectos de un aprendizaje progresivo daré el siguiente criterio de
decisión: Cuando usted tenga identificado el rango de la repetición: desde hasta, utilice for y cuando no tenga identificado
dicho rango utilice do-while o while. Cuando el proceso se realiza de todas maneras, por lo menos una vez, use do-while.

Por ejemplo: muestre los números capicúas de 3 cifras. La estructura más adecuada seria for porque usted va a repetir el
proceso desde 100 hasta 999.

Otro ejemplo: muestre la cantidad de cifras que tiene un número entero. La estructura más adecuada sería do-while o
while porque no se puede identificar la cantidad de veces que ocurrirá la repetición. Tiene que buscar una condición de
continuidad de la repetición.

ESTRUCTURA INTERACTIVA

Se dice que existe una estructura interactiva cuando la repetición depende de la respuesta del usuario, haciendo preguntas
como: desea continuar? (s=Si,n= no). Para lo cual debe utilizar una estructura iterativa do-while.

Elaborado por Ing. Julio Vásquez Paragulla 2


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
ESTRUCTURAS REPETITIVAS INTERACTIVAS

PROBLEMA 1:
Diseñe un programa que permita realizar una encuesta acerca de los colores favoritos de las personas a escoger entre:
verde, azul, amarillo, rosado, otro. Por cada encuestado debe mostrar la cantidad de votos de cada color así como el(los)
color(es) favoritos.

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
// variables
int c1=0, c2=0, c3=0, c4=0, c5=0; // contadores

int color=0, mayor=0;


int sigue=1; //si
do{
cout<<"elija su color favorito: [1=verde, 2=azul, 3=amarillo, 4=rosado, 5=otro]";
cin>>color;
switch(color){
case 1: c1++; break;
case 2: c2++; break;
case 3: c3++; break;
case 4: c4++; break;
default: c5++; break;
}
// encuentra el mayor valor
int mayor=c1;
if(c2>mayor) mayor=c2;
if(c3>mayor) mayor=c3;
if(c4>mayor) mayor=c4;
if(c5>mayor) mayor=c5;

cout<<("\ncolores preferidos: ");


if(mayor==c1)
printf("Verde, ");
if(mayor==c2)
printf("Azul, ");
if(mayor==c3)
printf("Amarillo, ");
if(mayor==c4)
printf("Rosado, ");
if(mayor==c5)
printf("Otro");

cout<<"\nDesea continuar (1=si, 0=no)?"; cin>>sigue;


}while(sigue==1);

Elaborado por Ing. Julio Vásquez Paragulla 3


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 2:
En una estación de control se desea registrar el peso que transportan los vehículos de transporte pesado para determinar,
por cada vehículo la cantidad de vehículos, el peso promedio, el mayor y el menor peso registrado.

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
// variables
int c=0; // contador
double mayor=0, menor=0, suma=0; // conservan su ultimo valor
double peso=0, prom;
int sigue=1; //si

do{

//printf("ingrese peso: "); scanf_s("%f",&peso);


cout<<"ingrese peso: "; cin>>peso;
suma += peso;
c++;

if( c == 1){
mayor = peso;
menor = peso;
}
else{
if(peso > mayor)
mayor=peso;
if(peso < menor)
menor=peso;
}
prom = suma / c;
cout<<"cantidad de vehiculos:"<<c<<endl;
printf("peso promedio: %10.2f\n",prom);
printf("peso mayor : %10.2f\n",mayor);
printf("peso menor : %10.2f\n",menor);

cout<<"\nDesea continuar? 1=si, 0=no: ";cin>>sigue;


} while(sigue==1);

PROBLEMA 3:
Una empresa automotriz desea registrar los reportes de la cantidad de vehículos defectuosos que se identifiquen en cada
uno de los siguientes paises: Peru, Chile, Argentina. Por cada reporte registrado debe mostrar la siguiente información en
forma de tabla:

Peru Chile Argentina


Cantidad 999 999 999
Mayor 999 999 999
Menor 999 999 999

Elaborado por Ing. Julio Vásquez Paragulla 4


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
ESTRUCTURAS REPETITIVAS ITERATIVAS: while, do while, for

PROBLEMA 4:
Muestre los N primeros números pares.

#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;

void main(){
int n, par;

cout<<"ingrese valor entero para N: "; cin>> n;


for(int i=1; i<=n; i++){
par = i * 2;
printf("%3d.-%10d\n", i,par);
}
_getch();
}

PROBLEMA 5:
Dado un número entero positivo, muestre sus divisores, la cantidad y la suma de ellos.

#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

void main(){
int num;
int c=0, suma=0;

cout<<"ingrese un numero entero: "; cin>> num;


cout<<"sus divisores son: ";
for(int d=1; d<=num; d++){
if(num%d == 0){
cout<< d<<", ";
c++;
suma += d;
}
}
cout<<endl;
cout<<"cantidad de divisores: "<< c<<endl;
cout<<"suma de divisores: "<< suma<<endl;

_getch();
}

Elaborado por Ing. Julio Vásquez Paragulla 5


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 6:
Determine la suma de la siguiente serie matemática para N términos:
2 3
1 + x + x + x + …

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

void main(){
int n;
double x, suma=0, term;

cout<<"ingrese valor de N: "; cin>> n;


cout<<"ingrese valor de X: "; cin>> x;
for(int i=1; i<=n; i++){
term = pow(x,i-1);
suma += term;
if(i<n)
printf(" %12.2f +",term);
else
printf(" %12.2f",term);

if(i%5==0)
printf("\n");
}
printf("\nla suma total es: %0.2f\n",suma);

_getch();
}

PROBLEMA 7:
Determine el valor de PI con la suma de los N primeros términos de la siguiente serie matemática:

4 -4/3 +4/5 -4/7 +4/9 -…

PROBLEMA 8:
Dado el lado de un cuadrado, dibújelo con asteriscos considerando la posibilidad de hacerlo sólo el borde o relleno
completo.
Ejm. Lado = 5

Sólo con borde: relleno:

* * * * * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * * * * *

PROBLEMA 9:
Muestre y sume los N primeros términos de la siguiente serie matemática:

10 11 13 16 20 25 …

PROBLEMA 10:
Muestre y sume los N primeros términos de la serie de Fibonacci:
1 1 2 3 5 8 13 21 …

Elaborado por Ing. Julio Vásquez Paragulla 6


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA04
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 11:
Dado un número entero positivo, determine si es o no es capicúa.

PROBLEMA 12:
Muestre y sume los N primero términos de la siguiente serie:

7 +9/4 -11/7 +13/10 +15/13 -17/16 + …

PROBLEMA 13:
Dado dos números enteros, determine su producto sin utilizar el operador de multiplicación.

PROBLEMA 14:
Dado un número entero, forme un nuevo número con sus dos cifras extremas cuyo valor sea el mayor posible.

Ejm. Numero = 7656458


Respuesta: 87

PROBLEMA 15:
Muestre los N primeros números primos

Elaborado por Ing. Julio Vásquez Paragulla 7

También podría gustarte