Vous êtes sur la page 1sur 14

Estructurarepetitivawhile

Hasta ahora hemos empleado estructuras


SECUENCIALES y CONDICIONALES.
Existe otro tipo de estructuras tan
importantescomolasanterioresquesonlas
estructurasREPETITIVAS.

Gmail Para Tu Negocio


Ahora puedes verte ms profesional
con un e-mail personalizado.

Una estructura repetitiva permite ejecutar


una instruccin o un conjunto de
instruccionesvariasveces.

Una ejecucin repetitiva de sentencias se


caracterizapor:
Laolassentenciasqueserepiten.
El test o prueba de condicin antes de
cadarepeticin,quemotivarqueserepitanonolassentencias.
Comienza Ahora

Estructurarepetitivawhile.
Representacingrficadelaestructurawhile:

Nodebemosconfundirlarepresentacingrficadelaestructurarepetitivawhile(Mientras)
conlaestructuracondicionalif(Si)
Funcionamiento:Enprimerlugarseverificalacondicin,silamismaresultaverdaderase
ejecutanlasoperacionesqueindicamosporlaramadelVerdadero.
Alaramadelverdaderolagraficamosenlaparteinferiordelacondicin.Unalneaalfinal
delbloquederepeticinlaconectaconlapartesuperiordelaestructurarepetitiva.

EncasoquelacondicinseaFalsacontinaporlaramadelFalsoysaledelaestructura
repetitivaparacontinuarconlaejecucindelalgoritmo.
ElbloqueserepiteMIENTRASlacondicinseaVerdadera.
Importante:Silacondicinsiempreretornaverdaderoestamosenpresenciadeunciclo
repetitivo infinito. Dicha situacin es un error de programacin, nunca finalizar el
programa.

Problema1:
Realizarunprogramaqueimprimaenpantallalosnmerosdel1al100.
Sin conocer las estructuras repetitivas podemos resolver el problema empleando una
estructura secuencial. Inicializamos una variable con el valor 1, luego imprimimos la
variable,incrementamosnuevamentelavariableyassucesivamente.
Diagramadeflujo:

Si continuamos con el diagrama no nos alcanzaran las prximas 5 pginas para


finalizarlo. Emplear una estructura secuencial para resolver este problema produce un
diagramadeflujoyunprogramaenJavamuylargo.

Ahoraveamoslasolucinempleandounaestructurarepetitivawhile:

Esmuyimportanteanalizarestediagrama:
La primera operacin inicializa la variable x en 1, seguidamente comienza la estructura
repetitiva while y disponemos la siguiente condicin ( x <= 100), se lee MIENTRAS la
variablexseamenoroiguala100.
AlejecutarselacondicinretornaVERDADEROporqueelcontenidodex(1)esmenoro
igual a 100. Al ser la condicin verdadera se ejecuta el bloque de instrucciones que
contiene la estructura while. El bloque de instrucciones contiene una salida y una
operacin.
Seimprimeelcontenidodex,yseguidamenteseincrementalavariablexenuno.
Laoperacinx=x+1seleecomo"enlavariablexseguardaelcontenidodexms1".Es
decir,sixcontiene1luegodeejecutarseestaoperacinsealmacenarenxun2.
Al finalizar el bloque de instrucciones que contiene la estructura repetitiva se verifica
nuevamente la condicin de la estructura repetitiva y se repite el proceso explicado
anteriormente.
Mientraslacondicinretorneverdaderoseejecutaelbloquedeinstruccionesalretornar
falso la verificacin de la condicin se sale de la estructura repetitiva y continua el

algoritmo,enestecasofinalizaelprograma.
Lo ms difcil es la definicin de la condicin de la estructura while y qu bloque de
instrucciones se van a repetir. Observar que si, por ejemplo, disponemos la condicin x
>=100(sixesmayoroiguala100)noprovocaningnerrorsintcticoperoestamosen
presenciadeunerrorlgicoporquealevaluarseporprimeravezlacondicinretornafalso
ynoseejecutaelbloquedeinstruccionesquequeramosrepetir100veces.
NoexisteunaRECETAparadefinirunacondicindeunaestructurarepetitiva,sinoquese
lograconunaprcticacontinuasolucionandoproblemas.
Una vez planteado el diagrama debemos verificar si el mismo es una solucin vlida al
problema(enestecasosedebeimprimirlosnmerosdel1al100enpantalla),paraello
podemos hacer un seguimiento del flujo del diagrama y los valores que toman las
variablesalolargodelaejecucin:

.
100
101Cuandoxvale101lacondicindelaestructurarepetitivaretornaf
enestecasofinalizaeldiagrama.

Importante:Podemosobservarqueelbloquerepetitivopuedenoejecutarseningunavez
silacondicinretornafalsolaprimeravez.
Lavariablexdebeestarinicializadaconalgnvalorantesqueseejecutelaoperacinx=x
+1encasodenoestarinicializadaapareceunerrordecompilacin.
Programa:

publicclassEstructuraRepetitivaWhile1{
publicstaticvoidmain(String[]ar){
intx
x=1
while(x<=100){
System.out.print(x)
System.out.print("")
x=x+1
}
}

}
Importante:Como podemos observar no hemos creado un objeto de la clase Scanner.
Esto debido a que en este programa no hay que ingresar datos por teclado. Para las
salidas utilizamos la funcin print, que se encuentra creada por defecto en cualquier
programaquecodifiquemosenJava.
Recordemosqueunproblemanoestar100%solucionadosinohacemoselprogramaen
Javaquemuestrelosresultadosbuscados.
Probemosalgunasmodificacionesdeesteprogramayveamosquecambiossedeberan
hacerpara:
1Imprimirlosnmerosdel1al500.
2Imprimirlosnmerosdel50al100.
3Imprimirlosnmerosdel50al0.
4Imprimirlosnmerosdel2al100perode2en2(2,4,6,8....100).

Respuestas:

1Debemoscambiarlacondicindelwhileconx<=500.
2Debemosinicializarxconelvalor50.
3Inicializarxconelvalor50yfijarlacondicinx<=0.
4Inicializaraxconelvalor2ydentrodelbloquerepetitivoincrementarax
(x=x+2).

Problema2:
Escribir un programa que solicite la carga de un valor positivo y nos muestre desde 1
hastaelvaloringresadodeunoenuno.
Ejemplo:Siingresamos30sedebemostrarenpantallalosnmerosdel1al30.
Es de FUNDAMENTAL importancia analizar los diagramas de flujo y la posterior
codificacinenJavadelossiguientesproblemas,envariosproblemassepresentanotras
situacionesnovistasenelejercicioanterior.
Diagramadeflujo:

Podemos observar que se ingresa por teclado la variable n. El operador puede cargar
cualquiervalor.
Sieloperadorcarga10elbloquerepetitivoseejecutar10veces,yaquelacondicines
?Mientrasx<=n?,esdecir?mientrasxseamenoroiguala10?puesxcomienzaenuno
yseincrementaenunocadavezqueseejecutaelbloquerepetitivo.
Alapruebadeldiagramalapodemosrealizardndolevaloresalasvariablesporejemplo,
siingresamos5elseguimientoeselsiguiente:
n
x
5
1(Seimprimeelcontenidodex)
2
"

"
3
"

"
4
"

"
5
"

"
6(Saledelwhileporque6noesmenoroiguala5)

Programa:

importjava.util.Scanner

publicclassEstructuraRepetitivaWhile2{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intn,x
System.out.print("Ingreseelvalorfinal:")
n=teclado.nextInt()
x=1
while(x<=n){
System.out.print(x)
System.out.print("")
x=x+1
}
}
}
Losnombresdelasvariablesnyxpuedenserpalabrasoletras(comoenestecaso)
La variable x recibe el nombre de CONTADOR. Un contador es un tipo especial de
variablequeseincrementaodecrementaconvaloresconstantesdurantelaejecucindel
programa.
Elcontadorxnosindicaencadamomentolacantidaddevaloresimpresosenpantalla.

Problema3:
Desarrollar un programa que permita la carga de 10 valores por teclado y nos muestre
posteriormentelasumadelosvaloresingresadosysupromedio.
Diagramadeflujo:

Enesteproblema,asemejanzadelosanteriores,llevamosunCONTADORllamadoxque
nossirveparacontarlasvueltasquedeberepetirelwhile.
TambinapareceelconceptodeACUMULADOR(un acumulador es un tipo especial de
variable que se incrementa o decrementa con valores variables durante la ejecucin del
programa)
Hemos dado el nombre de suma a nuestro acumulador. Cada ciclo que se repita la
estructura repetitiva, la variable suma se incrementa con el contenido ingresado en la

variablevalor.
Lapruebadeldiagramaserealizadndolevaloresalasvariables:
valor
suma

x
promedio
0

0
(Antesdeentraralaestructurarepetitivaestossonlosvalores).
5

1
16

21

2
7

28

3
10

38

4
2

40

5
20

60

6
5

65

7
5

70

8
10

80

9
2

82
10
8

90
11

Esteesunseguimientodeldiagramaplanteado.Losnmerosquetomalavariablevalor
dependerdequcifrascargueeloperadordurantelaejecucindelprograma.
Elpromediosecalculaalsalirdelaestructurarepetitiva(esdecirprimerosumamoslos10
valoresingresadosyluegolosdividimospor10)
Hayquetenerencuentaquecuandoenlavariablevalorsecargaelprimervalor(eneste
ejemplo 5) al cargarse el segundo valor (16) el valor anterior 5 se pierde, por ello la
necesidaddeiralmacenandoenlavariablesumalosvaloresingresados.
Programa:

importjava.util.Scanner
publicclassEstructuraRepetitivaWhile3{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intx,suma,valor,promedio
x=1
suma=0
while(x<=10){
System.out.print("Ingreseunvalor:")
valor=teclado.nextInt()
suma=suma+valor
x=x+1
}

promedio=suma/10
System.out.print("Lasumadelos10valoreses:")
System.out.println(suma)
System.out.print("Elpromedioes:")
System.out.print(promedio)
}
}
Problema4:
Unaplantaquefabricaperfilesdehierroposeeunlotedenpiezas.
Confeccionarunprogramaquepidaingresarportecladolacantidaddepiezasaprocesar
y luego ingrese la longitud de cada perfil sabiendo que la pieza cuya longitud est
comprendida en el rango de 1,20 y 1,30 son aptas. Imprimir por pantalla la cantidad de
piezasaptasquehayenellote.
Diagramadeflujo:

Podemos observar que dentro de una estructura repetitiva puede haber estructuras
condicionales (inclusive puede haber otras estructuras repetitivas que veremos ms
adelante)
En este problema hay que cargar inicialmente la cantidad de piezas a ingresar ( n ),
seguidamentesecargannvaloresdelargosdepiezas.
Cadavezqueingresamosunlargodepieza(largo)verificamossiesunamedidacorrecta
(debeestarentre1.20y1.30ellargoparaqueseacorrecta),encasodesercorrectala
CONTAMOS(incrementamoslavariablecantidaden1)
Alcontadorcantidadloinicializamosenceroporqueinicialmentenosehacargadoningn

largodemedida.
Cuando salimos de la estructura repetitiva porque se han cargado n largos de piezas
mostramosporpantallaelcontadorcantidad(querepresentalacantidaddepiezasaptas)
EnesteproblematenemosdosCONTADORES:
x

cantidad

(Cuentalacantidaddepiezascargadashastaelmomento)
(Cuentalosperfilesdehierroaptos)

Programa:

importjava.util.Scanner

publicclassEstructuraRepetitivaWhile4{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intx,cantidad,n
floatlargo
x=1
cantidad=0
System.out.print("Cuantaspiezarprocesar:")
n=teclado.nextInt()
while(x<=n){
System.out.print("Ingreselamedidadelapieza:")
largo=teclado.nextFloat()
if(largo>=1.20&&largo<=1.30){
cantidad=cantidad+1
}
x=x+1
}
System.out.print("Lacantidaddepiezasaptasson:")
System.out.print(cantidad)
}
}

Problemaspropuestos
Hallegadolapartefundamental,queeselmomentodondeunodesarrollaindividualmente
unalgoritmoparalaresolucindeproblemas.
EltiempoadedicaraestaseccinEJERCICIOSPROPUESTOSdebesermuchomayor
queelempleadoalaseccindeEJERCICIOSRESUELTOS.
Laexperienciadicequedebemosdedicarel80%deltiempoalaresolucinindividualde
problemas y el otro 20% al anlisis y codificacin de problemas ya resueltos por otras

personas.
Es de vital importancia para llegar a ser un buen PROGRAMADOR poder resolver
problemasenformaindividual.
1.

Escribirunprogramaquesoliciteingresar10notasdealumnosynosinformecuntos
tienennotasmayoresoigualesa7ycuntosmenores.

2.

Se ingresan un conjunto de n alturas de personas por teclado. Mostrar la altura


promediodelaspersonas.

3.

En una empresa trabajan n empleados cuyos sueldos oscilan entre $100 y $500,
realizarunprogramaquelealossueldosquecobracadaempleadoeinformecuntos
empleados cobran entre $100 y $300 y cuntos cobran ms de $300. Adems el
programadeberinformarelimportequegastalaempresaensueldosalpersonal.

4.

Realizarunprogramaqueimprima25trminosdelaserie11223344,etc.(No
seingresanvaloresporteclado)

5.

Mostrarlosmltiplosde8hastaelvalor500.Debeaparecerenpantalla81624,
etc.

6.

Realizarunprogramaquepermitacargardoslistasde15valorescadauna.Informar
con un mensaje cual de las dos listas tiene un valor acumulado mayor (mensajes
"Lista1mayor","Lista2mayor","Listasiguales")
Tenerencuentaquepuedehaberdosomsestructurasrepetitivasenunalgoritmo.

7.

Desarrollar un programa que permita cargar n nmeros enteros y luego nos informe
cuntosvaloresfueronparesycuntosimpares.
Empleareloperador?%?enlacondicindelaestructuracondicional:

Solucin

if(valor%2==0)//Sielifdaverdaderoluegoespar.

Descargar
Descarga Aqu! Continuar
La Descarga

Retornar

Vous aimerez peut-être aussi