Вы находитесь на странице: 1из 14

Estructurarepetitivafor

Cualquier problema que requiera una


estructurarepetitivasepuederesolver
empleando la estructura while. Pero
hay otra estructura repetitiva cuyo
planteo es ms sencillo en ciertas
CursosdeGastronoma.Carrera
situaciones.
intensivade5meses.
Engeneral,laestructuraforseusaen
aquellas situaciones en las cuales
CONOCEMOS la cantidad de veces
que queremos que se ejecute el
Visitanos! bloque de instrucciones. Ejemplo:
cargar 10 nmeros, ingresar 5 notas
de alumnos, etc. Conocemos de
antemanolacantidaddevecesquequeremosqueelbloqueserepita.Veremos,sin
embargo, que en el lenguaje Java la estructura for puede usarse en cualquier
situacin repetitiva, porque en ltima instancia no es otra cosa que una estructura
whilegeneralizada.

EstudiaparaChef
enArgentina

Representacingrfica:

En su forma ms tpica y bsica, esta estructura requiere una variable entera que
cumple la funcin de un CONTADOR de vueltas. En la seccin indicada como
"inicializacin contador", se suele colocar el nombre de la variable que har de
contador,asignndoleadichavariableunvalorinicial.Enlaseccinde"condicin"
secolocalacondicinquedeberserverdaderaparaqueelciclocontine(encaso
de un falso, el ciclo se detendr). Y finalmente, en la seccin de "incremento

contador"secolocaunainstruccinquepermitemodificarelvalordelavariableque
hacedecontador(parapermitirquealgunavezlacondicinseafalsa)
Cuandoelciclocomienza,antesdedarlaprimeravuelta,lavariabledelfortomael
valor indicado en la seccin de de "inicializacin contador". Inmediatamente se
verifica, en forma automtica, si la condicin es verdadera. En caso de serlo se
ejecuta el bloque de operaciones del ciclo, y al finalizar el mismo se ejecuta la
instruccinquesehayacolocadoenlatercerseccin.
Seguidamente, se vuelve a controlar el valor de la condicin, y as prosigue hasta
quedichacondicinentregueunfalso.
Siconocemoslacantidaddevecesqueserepiteelbloqueesmuysencilloemplear
un for, por ejemplo si queremo que se repita 50 veces el bloque de instrucciones
puedehacerseas:

Lavariabledelforpuedetenercualquiernombre.Enesteejemploselahadefinido
conelnombref.
Analicemoselejemplo:

Lavariableftomainicialmenteelvalor1.
Secontrolaautomticamenteelvalordelacondicin:comofvale1yestoes
que50,lacondicindaverdadero.
Comolacondicinfueverdadera,seejecutanla/soperacin/es.
Alfinalizardeejecutarlas,seretornaalainstruccinf++,porloquela
variablefseincrementaenuno.
Sevuelveacontrolar(automticamente)sifesmenoroiguala50.
Comoahorasuvalores2,seejecutanuevamenteelbloquedeinstruccionese
incrementanuevamentelavariabledelforalterminarelmismo.
Elprocesoserepetirhastaquelavariablefseaincrementadaalvalor51.
Enestemomentolacondicinserfalsa,yelciclosedetendr.

La variable f PUEDE ser modificada dentro del bloque de operaciones del for,
aunqueestopodracausarproblemasdelgicasielprogramadoresinexperto.

Lavariablefpuedeserinicializadaencualquiervaloryfinalizarencualquiervalor.
Adems,noesobligatorioquelainstruccindemodificacinseaunincrementodel
tipocontador(f++).
Cualquierinstruccinquemodifiqueelvalordelavariableesvlida.Siporejemplo
se escribe f=f+2 en lugar de f++, el valor de f ser incrementado de a 2 en cada
vuelta, y no de a 1. En este caso, esto significar que el ciclo no efectuar las 50
vueltassinoslo25.

Problema1:
Realizarunprogramaqueimprimaenpantallalosnmerosdel1al100.
Diagramadeflujo:

Podemos observar y comparar con el problema realizado con el while. Con la


estructura while el CONTADOR x sirve para contar las vueltas. Con el for el
CONTADORfcumpledichafuncin.
Inicialmentefvale1ycomonoessuperiora100seejecutaelbloque,imprimimosel
contenidodef,alfinalizarelbloquerepetitivoseincrementalavariablefen1,como
2noessuperiora100serepiteelbloquedeinstrucciones.
Cuando la variable del for llega a 101 sale de la estructura repetitiva y contina la
ejecucindelalgoritmoqueseindicadespusdelcrculo.
La variable f (o como sea que se decida llamarla) debe estar definida como una
variablems.
Programa:

publicclassEstructuraRepetitivaFor1{
publicstaticvoidmain(String[]ar){
intf
for(f=1f<=100f++){
System.out.print(f)
System.out.print("")
}
}
}
Problema2:
: Desarrollar un programa que permita la carga de 10 valores por teclado y nos
muestre posteriormente la suma de los valores ingresados y su promedio. Este
problemayalodesarrollamos,loresolveremosempleandolaestructurafor.
Diagramadeflujo:

Enestecaso,alavariabledelfor(f)sloselarequiereparaqueserepitaelbloque
deinstrucciones10veces.
Programa:

importjava.util.Scanner
publicclassEstructuraRepetitivaFor2{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intsuma,f,valor,promedio
suma=0
for(f=1f<=10f++){
System.out.print("Ingresevalor:")

valor=teclado.nextInt()
suma=suma+valor
}
System.out.print("Lasumaes:")
System.out.println(suma)
promedio=suma/10
System.out.print("Elpromedioes:")
System.out.print(promedio)
}
}
Elproblemarequierequesecarguen10valoresysesumenlosmismos.
Tener en cuenta encerrar entre llaves bloque de instrucciones a repetir dentro del
for.
Elpromediosecalculafueradelforluegodehabercargadolos10valores.

Problema3:
Escribir un programa que lea 10 notas de alumnos y nos informe cuntos tienen
notasmayoresoigualesa7ycuntosmenores.
Pararesolveresteproblemaserequierentrescontadores:
aprobados(Cuentalacantidaddealumnosaprobados)
reprobados(Cuentalacantidaddereprobados)
f(eselcontadordelfor)

Dentrodelaestructurarepetitivadebemoshacerlacargadelavariablenotayverificar
conunaestructuracondicionalsielcontenidodelavariablenotaesmayoroiguala7
para incrementar el contador aprobados, en caso de que la condicin retorne falso
debemosincrementarlavariablereprobados.
Diagramadeflujo:

LoscontadoresaprobadosyreprobadosdebenimprimirseFUERAdelaestructura
repetitiva.
Esfundamentalinicializarloscontadoresaprobadosyreprobadosenceroantesde
entraralaestructurafor.
Importante: Un error comn es inicializar los contadores dentro de la estructura
repetitiva. En caso de hacer esto los contadores se fijan en cero en cada ciclo del
for,porloquealfinalizarelforcomomximoelcontadorpuedetenerelvalor1.
Programa:

importjava.util.Scanner

publicclassEstructuraRepetitivaFor3{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intaprobados,reprobados,f,nota
aprobados=0
reprobados=0
for(f=1f<=10f++){
System.out.print("Ingreselanota:")
nota=teclado.nextInt()
if(nota>=7){
aprobados=aprobados+1
}else{

reprobados=reprobados+1
}
}
System.out.print("Cantidaddeaprobados:")
System.out.println(aprobados)
System.out.print("Cantidaddereprobados:")
System.out.print(reprobados)
}
}
Problema4:
Escribirunprogramaquelea10nmerosenterosyluegomuestrecuntosvalores
ingresadosfueronmltiplosde3ycuntosde5.Debemostenerencuentaquehay
nmerosquesonmltiplosde3yde5alavez.
Diagramadeflujo:

Tengamos en cuenta que el operador matemtico % retorna el resto de dividir un


valor por otro, en este caso: valor%3 retorna el resto de dividir el valor que
ingresamosporteclado,portres.
Veamos:siingresamos6elrestodedividirlopor3es0,siingresamos12elrestode
dividirlo por 3 es 0. Generalizando: cuando el resto de dividir por 3 al valor que

ingresamosportecladoescero,setratadeunmltiplodedichovalor.
Ahora bien por qu no hemos dispuesto una estructura if anidada? Porque hay
valores que son mltiplos de 3 y de 5 a la vez. Por lo tanto con if anidados no
podramosanalizarlosdoscasos.
Esimportantedarsecuentacuandoconvieneemplearifanidadosycuandonodebe
emplearse.
Programa:

importjava.util.Scanner

publicclassEstructuraRepetitivaFor4{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intmul3,mul5,valor,f
mul3=0
mul5=0
for(f=1f<=10f++){
System.out.print("Ingreseunvalor:")
valor=teclado.nextInt()
if(valor%3==0){
mul3=mul3+1
}
if(valor%5==0){
mul5=mul5+1
}
}
System.out.print("Cantidaddevaloresingresadosmlt
System.out.println(mul3)
System.out.print("Cantidaddevaloresingresadosmlt
System.out.print(mul5)
}
}
Problema5:
Escribir un programa que lea n nmeros enteros y calcule la cantidad de valores
mayoresoigualesa1000.
Estetipodeproblemastambinsepuederesolverempleandolaestructurarepetitiva
for. Lo primero que se hace es cargar una variable que indique la cantidad de

valoresaingresar.Dichavariablesecargaantesdeentraralaestructurarepetitiva
for.
Laestructuraforpermitequeelvalorinicialofinaldependadeunavariablecargada
previamenteporteclado.
Diagramadeflujo:

Tenemosuncontadorllamadocantidadyfqueeselcontadordelfor.
Lavariableenteransecargaprevioaliniciodelfor,porloquepodemosfijarelvalor
finaldelforconlavariablen.
Por ejemplo si el operador carga 5 en n la estructura repetitiva for se ejecutar 5

veces.
Lavariablevalorseingresadentrodelaestructurarepetitiva,yseverificasielvalor
de la misma es mayor o igual a 1000, en dicho caso se incrementa en uno el
contadorcantidad.
Fuera de la estructura repetitiva imprimimos el contador cantidad que tiene
almacenadolacantidaddevaloresingresadosmayoresoigualesa1000.
Programa:

importjava.util.Scanner

publicclassEstructuraRepetitivaFor5{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in)
intcantidad,n,f,valor
cantidad=0
System.out.print("Cuantosvaloresingresar:")
n=teclado.nextInt()
for(f=1f<=nf++){
System.out.print("Ingreseelvalor:")
valor=teclado.nextInt()
if(valor>=1000){
cantidad=cantidad+1
}
}
System.out.print("Lacantidaddevaloresingresadosm
System.out.print(cantidad)
}
}

Problemaspropuestos
Ha llegado nuevamente la parte fundamental, que es el momento donde uno
desarrollaindividualmenteunalgoritmoparalaresolucindeunproblema.
1. Confeccionar un programa que lea n pares de datos, cada par de datos
corresponde a la medida de la base y la altura de un tringulo. El programa
deberinformar:
a)Decadatringulolamedidadesubase,sualturaysusuperficie.
b)Lacantidaddetringuloscuyasuperficieesmayora12.
2. Desarrollarunprogramaquesolicitelacargade10nmeroseimprimalasuma

delosltimos5valoresingresados.
3. Desarrollarunprogramaquemuestrelatablademultiplicardel5(del5al50)
4. Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos
muestrelatablademultiplicardelmismo(losprimeros12trminos)
Ejemplo: Si ingreso 3 deber aparecer en pantalla los valores 3, 6, 9, hasta el
36.
5. Realizarunprogramaquelealosladosdentringulos,einformar:
a)Decadaunodeellos,qutipodetringuloes:equiltero(tresladosiguales),
issceles(dosladosiguales),oescaleno(ningnladoigual)
b)Cantidaddetringulosdecadatipo.
c)Tipodetringuloqueposeemenorcantidad.
6. Escribir un programa que pida ingresar coordenadas (x,y) que representan
puntosenelplano.
Informarcuntospuntossehaningresadoenelprimer,segundo,tercerycuarto
cuadrante. Al comenzar el programa se pide que se ingrese la cantidad de
puntosaprocesar.
7. Serealizalacargade10valoresenterosporteclado.Sedeseaconocer:
a)Lacantidaddevaloresingresadosnegativos.
b)Lacantidaddevaloresingresadospositivos.
c)Lacantidaddemltiplosde15.
d)Elvaloracumuladodelosnmerosingresadosquesonpares.
8. Secuentaconlasiguienteinformacin:
Lasedadesde50estudiantesdelturnomaana.
Lasedadesde60estudiantesdelturnotarde.
Lasedadesde110estudiantesdelturnonoche.
Lasedadesdecadaestudiantedebeningresarseporteclado.
a)Obtenerelpromediodelasedadesdecadaturno(trespromedios)
b)Imprimirdichospromedios(promediodecadaturno)
c)Mostrarporpantallaunmensajequeindiquecualdelostresturnostieneun
promediodeedadesmayor.
Solucin

Retornar

Вам также может понравиться