Está en la página 1de 7

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERIA MECANICA


CURSO: MB545
SEMANA03
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas

ESTRUCTURA ITERATIVA: do - while


Repite la ejecucin de la accin mientras la expresin lgica siga siendo verdad. Cuando sea falsa, el proceso termina.
Debe observarse que la accin y la variacin se realizan por lo menos una vez.
Esta estructura de programacin repetitiva es recomendable cuando la accin 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 accin.
inicializacin
do {
accin
variacin
}while (condicin);

Por ejemplo, imprimir los 100 primeros nmeros naturales:

int n=1; // inicializacin


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

Note que mientras que la condicin sea verdad, se seguir ejecutando la accin

ESTRUCTURA ITERATIVA: while


Repite la ejecucin de la accin mientras la expresin lgica siga siendo verdad. Cuando sea falsa, el proceso termina.
Similar a la estructura do-while slo que en sta estructura es posible que la accin y la variacin no se realicen ninguna
vez y esto puede ocurrir cuando el resultado de la condicin es falsa desde un comienzo.

inicializacin
while (condicin) {
accin
variacin
}

Por ejemplo, imprimir los 100 primeros nmeros naturales:

int n=1; // inicializacin


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

ESTRUCTURA ITERATIVA: for


Es un while simplificado, mucho ms rpido y eficaz. Muy preferido por los programadores. Veamos su forma general:

for (inicializacin; condicin; variacin) {


accin;
}

Por ejemplo, imprimir los 100 primeros nmeros naturales:

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


Imprimir n;
};

Note que la inicializacin y la variacin se relacionan con la variable de control utilizada en la condicin.

Elaborado por Ing. Julio Vsquez Paragulla 1


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

Observe que todo proceso repetitivo necesita de una previa inicializacin de algn contador, acumulador, estado, lo cual
permite la evaluacin de la condicin que controla la repeticin del proceso.

La inicializacin puede contener varias ordenes de asignacin separadas por comas y terminando con punto y coma.
Igualmente, la variacin puede contener varias ordenes de variacin y/o acumulacin separadas por comas y terminando
con el parntesis del for, Por ejemplo, vea el siguiente for hipottico:

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


Mas ordenes
}

La inicializacin puede incluir la declaracin de la variable pero no necesariamente debe ser as, por ejemplo:

int x;
for (x=1; x<=100; x++){
ms ordenes
}

Cul es la diferencia entre declararlo antes del for con hacer la declaracin dentro de la inicializacin?. Simplemente el
alcance para la utilizacin 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 tambin fuera de las llaves; en cambio, cuando se declara dentro de la inicializacin, el
alcance se limita solamente dentro de las llaves del for; es decir que slo se puede utilizar la variable dentro de las llaves
del for y n fuera de ellas.

Una pregunta frecuente es: cual estructura de repeticin 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
decisin: Cuando usted tenga identificado el rango de la repeticin: 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 nmeros capicas de 3 cifras. La estructura ms adecuada seria for porque usted va a repetir el
proceso desde 100 hasta 999.

Otro ejemplo: muestre la cantidad de cifras que tiene un nmero entero. La estructura ms adecuada sera do-while o
while porque no se puede identificar la cantidad de veces que ocurrir la repeticin. Tiene que buscar una condicin de
continuidad de la repeticin.

ESTRUCTURA INTERACTIVA

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

Elaborado por Ing. Julio Vsquez Paragulla 2


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

PROBLEMA 1:
Disee 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 Vsquez Paragulla 3


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA03
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 2:
En una estacin de control se desea registrar el peso que transportan los vehculos de transporte pesado para determinar,
por cada vehculo la cantidad de vehculos, 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);

Elaborado por Ing. Julio Vsquez Paragulla 4


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

PROBLEMA 3:
Muestre los N primeros nmeros 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();
}

Haga los cambios necesarios para validar el valor de n y para incorporar un proceso interactivo para continuar
ejecutando el programa

PROBLEMA 4:
Dado un nmero 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 positivo: "; 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();
}

Haga los cambios necesarios para validar el valor de n y para incorporar un proceso interactivo para continuar
ejecutando el programa

Elaborado por Ing. Julio Vsquez Paragulla 5


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA03
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 5:
Determine la suma de la siguiente serie matemtica para N trminos:
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 6:
Una empresa automotriz desea registrar los reportes de la cantidad de vehculos defectuosos que se identifiquen en cada
uno de los siguientes paises: Peru, Chile, Argentina. Por cada reporte registrado debe mostrar la siguiente informacin en
forma de tabla:

Peru Chile Argentina


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

PROBLEMA 7:
Determine el valor de PI con la suma de los N primeros trminos de la siguiente serie matemtica:

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

PROBLEMA 8:
Dado el lado de un cuadrado, dibjelo con asteriscos considerando la posibilidad de hacerlo slo el borde o relleno
completo.
Ejm. Lado = 5

Slo con borde: relleno:

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

Elaborado por Ing. Julio Vsquez Paragulla 6


UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA MECANICA
CURSO: MB545
SEMANA03
ESTRUCTURAS DE CONTROL REPETITIVAS
interactivas, iterativas
PROBLEMA 9:
Muestre y sume los N primeros trminos de la siguiente serie matemtica:

10 11 13 16 20 25

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

PROBLEMA 11:
Dado un nmero entero positivo, determine si es o no es capica.

PROBLEMA 12:
Muestre y sume los N primero trminos de la siguiente serie:

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

PROBLEMA 13:
Dado dos nmeros enteros, determine su producto sin utilizar el operador de multiplicacin.

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

Ejm. Numero = 7656458


Respuesta: 87

PROBLEMA 15:
Muestre los N primeros nmeros primos

PROBLEMA 16:
Una Universidad ha registrado en un proceso de admisin la cantidad de postulantes a las carreras profesionales
de Ingeniera: Mecnica, Naval, Mecatrnica, Mecnica Elctria, Otra.

Determine el porcentajecorrespondiente a cada carrera y el nombre(s) de la(s) carrera(s) que tiene(n) la mayor cantidad de
postulantes.

PROBLEMA 17:
Una empresa ha clasificado a sus productos en 3 categoras: A, B, C . Cualquier producto puede serde
origen Nacional o de origen Importado.

Se quiere conocer las preferencias de los potenciales clientes por


lo que, por cada cliente que participa, su programa debe mostrar la siguiente informacin:

Producto Nacional Importado Total Preferencia


A 99 99 999 Nacional
B 99 99 999 Importado
C 99 99 999 Cualquiera

PROBLEMA 18:
Muestre y sume los N primeros trminos de la siguiente serie: 5, 6, 8, 11, 15,

PROBLEMA 19:
Dado un nmero entero positivo, identifique la cifra mayor, la cifra menor y la suma de ellas. Verifique que
el nmero sea positivo y tenga por lo menos 2 cifras.

PROBLEMA 20:
Dado un nmero entero positivo, forme el mayor nmero posible con las cifras mayor y menor que
contenga. Verifique que el nmero sea positivo y tenga por lo menos 2 cifras.

Elaborado por Ing. Julio Vsquez Paragulla 7

También podría gustarte