Beruflich Dokumente
Kultur Dokumente
CICLOS ITERATIVOS
Contenido
Estructuras de Repeticin
For Ciclos anidados Contadores y acumuladores while do-while Ejercicios
EISC
Universidad del Valle
Slide 2
Estructuras de Repeticin
EISC
Universidad del Valle
Slide 3
Estructuras de Repeticin
Ejercicio: Suponga que debe listar los nmeros del 1 a 100 en una
aplicacin Java. Se podra hacer con el siguiente mtodo:
public static void listarNumeros()
{ JOptionPane.showMessageDialog (null, El nmero es: + 1); JOptionPane.showMessageDialog (null, El nmero es: + 2); JOptionPane.showMessageDialog (null, El nmero es: + 3); JOptionPane.showMessageDialog (null, El nmero es: + 4); JOptionPane.showMessageDialog( null, El nmero es: + 100); } Y si nos piden listar del 1 al 1000?
EISC
Universidad del Valle
Slide 4
Estructuras de Repeticin
Son un grupo de instrucciones que permite la ejecucin repetitiva de otro grupo de instrucciones. Hay una variable asociada al ciclo o estructura de repeticin que controla el nmero de veces que se repetirn las instrucciones. Existen 3 estructuras de repeticin: For While Do-While
EISC
Universidad del Valle
Slide 5
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado.
1. Anlisis del problema Entradas: ?? Salidas: ?? Proceso:??
EISC
Universidad del Valle
Slide 6
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 1. Anlisis del problema Entradas: n Salidas: ?? Proceso:??
EISC
Universidad del Valle
Slide 7
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 1. Anlisis del problema Entradas: n Salidas: imprimir (nmero 1) imprimir (nmero 2) . . imprimir (nmero n) Proceso:??
EISC
Universidad del Valle
Slide 8
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 1. Anlisis del problema Entradas: n Salidas: imprimir (nmero 1) imprimir (nmero 2) . . imprimir (nmero n) Proceso: 1 hasta n
EISC
Universidad del Valle
Slide 9
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 1. Anlisis del problema Entradas: n Salidas: imprimir (nmero 1) imprimir (nmero 2) . . imprimir (nmero n) Proceso: Desde 1 hasta n Imprimir 1,2,3,.....n
EISC
Universidad del Valle
Slide 10
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 2. Disear el algoritmo y escribirlo en pseudocdigo
Inicio n: entero leer (n) ???
Fin
EISC
Universidad del Valle
Slide 11
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 2. Disear el algoritmo y escribirlo en pseudocdigo
Inicio n: entero i: entero (Variable de control) leer (n) Desde i = 1 Hasta i = n Imprimir (i)
Fin
EISC
Universidad del Valle
Slide 12
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 3. Codificar el algoritmo usando algn lenguaje de programacin pseudocdigo Java
EISC
Universidad del Valle
Slide 13
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un nmero y liste los nmeros desde el 1 hasta el nmero solicitado. 3. Codificar el algoritmo usando algn lenguaje de programacin pseudocdigo Java
EISC
Universidad del Valle
Slide 14
Estructura For
Pseudocdigo Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde Java for( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Slide 16
Estructura For
Pseudocdigo Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde Java for( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Slide 17
Estructura For
Pseudocdigo Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde Java for( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Slide 18
Estructura For
Funcionamiento:
for( inicio; condicin; incre/decremento){ instruciones; }
j=(y*8)/9
Estructura For
Funcionamiento:
for( inicio; condicin; incre/decremento){ instruciones; }
j!=(z%7)
EISC
Universidad del Valle
Slide 20
Estructura For
Funcionamiento:
for( inicio; condicin; incre/decremento){ instruciones; }
J--
EISC
Universidad del Valle
Slide 21
Estructura For
Ejemplo:
for(int i =1 ; i<=5; i++) { JOptionPane.showMessageDialog (null, Nmero: + i );
}
Valor de i 1
Nmero Iteracin 1
Salida Nmero 1
2
3 4 5 6
2
3 4 5 Se interrumpe
Nmero 2
Nmero 3 Nmero 4 Nmero 5
El nmero de iteraciones indica la cantidad de veces que se repite la(s) instruccin(es) que estn en el cuerpo del ciclo. En el ejemplo, la instruccin:
JOptionPane.showMessageDialog()
se ejecuta 5 veces.
EISC
Universidad del Valle
Slide 22
Estructura For
la instruccin:
EISC
Universidad del Valle
Slide 23
Estructura For
Ejemplo:
for(int k =18 ; k>10; k = k - 2) { JOptionPane.showMessageDialog (null, Nmero: + k ); }
} Valor de i 18 16 14 12 10 Nmero Iteracin 1 2 3 4 Se interrumpe Salida Nmero 18 Nmero 16 Nmero 14 Nmero 12 La instruccin:
JOptionPane.showMessageDialog ()
se ejecuta 4 veces
EISC
Universidad del Valle
Slide 24
Estructura For
Una vez el ciclo se interrumpe se ejecuta la instruccin ubicada despus de l. Por ejemplo:
int a=0; for(int k =0 ; k<=4; k = k + 2) { a++; } JOptionPane.showMessageDialog (null, El valor de a es: + a ); La variable a inicia con el valor de cero (0). Se ingresa al ciclo y se ejecuta tres (3) veces la instruccin a++ (recuerde que a++ es lo mismo que a=a+1). Luego se muestra en pantalla el valor de a, es decir, 3.
EISC
Universidad del Valle
Slide 25
Estructura For
Ejercicio 1:
Desarrollar un programa java que pregunte al usuario el nmero de estudiantes de un curso, luego pregunte el nombre de cada uno de ellos. Finalmente, se debe mostrar un listado con todos los estudiantes.
EISC
Universidad del Valle
Slide 26
Estructura For
Ejercicio 1:
EISC
Universidad del Valle
Slide 27
Estructura For
Ejercicio 1:
public class Asignatura { static int numEstudiantes; static String listadoEstudiantes; public static void leerNumEstudiantes () { String num = JOptionPane.showInputDialog("Ingrese el nmero de Estudiantes:"); numEstudiantes= Integer.parseInt(num); } public static void leerNombres () { listadoEstudiantes = ; for (int x = 0; x < numEstudiantes; x++){ String estudiante = JOptionPane.showInputDialog(Nombre No: +(x+1)); listadoEstudiantes += "\nEstudiante No: "+ (x+1) + " : "+ estudiante; } JOptionPane.showMessageDialog(null, listadoEstudiantes ); }
EISC
Universidad del Valle
Slide 28
Estructura For
Ejercicio 1:
public static void main (String arg[]) { leerNumEstudiantes (); leerNombres (); System.exit(0); } }
EISC
Universidad del Valle
Slide 29
Ejemplo:
Suponga que se desea crear un programa en Java que permita imprimir en pantalla el factorial de cada nmero existente en la serie 1 a n, siendo n un nmero menor a 20 el cual es digitado por un usuario.
Desde i=1 mientras i<=n incrementando en i = i +1 Haga Desde j=1 mientras j<=i incrementando en j = j +1 Haga instruccin 1 instruccin 2 Fin Desde instruccin 3 instruccin 4 Fin Desde
NOTA: Usamos la condicin n<=20 con fines acadmicos y evitar resultados con nmeros exageradamente grandes.
EISC
Universidad del Valle
Slide 30
Slide 31
Slide 32
El ciclo principal, basado en la variable de control i, contiene un ciclo anidado basado en la variable de control j.
Desde i=1 mientras i<=n incrementando en i = i +1 Haga factorial=1 Desde j=1 mientras j<=i incrementando en j = j +1 Haga factorial = factorial*j Fin Desde respuesta = respuesta + El factorial de + j + es: factorial; Fin Desde imprima(respuesta); ELSE imprima(Ha digitado un numero superior a 20); Fin
EISC
Universidad del Valle
Slide 33
Slide 34
public static void main (String arg[]) { leerN (); calcularFactorial(); System.exit(0); } }
EISC
Universidad del Valle
Slide 35
Ejercicio 2:
Desarrollar un programa java que permita generar y visualizar la siguiente figura:
Slide 36
Ejercicio 2:
public static void crearFigura()
Inicio
Desde i=1 mientras i<=numeroFilas incrementando en i = i +1 Haga Desde j=1 mientras j<=i incrementando en j = j +1 Haga triangulo = triangulo + *; Fin Desde
triangulo = triangulo + \n;
Fin
EISC
Universidad del Valle
Slide 37
Ejercicio 2:
public class Figura{ static int numLineas; static String triangulo; public static void leerNumLineas() { String num = JOptionPane.showInputDialog("Ingrese el nmero de lneas:"); numLineas = Integer.parseInt(num); } public static void crearFigura () { triangulo = ; for (int i = 1; i <= numLineas; i++){ for (int j= 1; j <= i; j++){ triangulo += * ; } triangulo += \n ; } JOptionPane.showMessageDialog(null, triangulo); } }
EISC
Universidad del Valle
Slide 38
Ejercicio 2:
public static void main (String arg[]) { leerNumLineas (); crearFigura (); System.exit(0); } }
EISC
Universidad del Valle
Slide 39
Los contadores y los acumuladores pueden ser usados en cualquier tipo de ciclos.
EISC
Universidad del Valle
Slide 40
Ejemplo:
Suponga que se desea crear un programa en Java que permita imprimir en pantalla la cantidad de nmeros mltiplos de 3 que se encuentran en la serie 1 a n, siendo n un nmero digitado por un usuario. Inicio
contador:entero contador=0 Desde i=1 mientras i<=n incrementando en i = i +1 Haga if(esMultiploDeTres(i)){ contador=contador+1; } Fin Desde mostrar(contador);
Fin
EISC
Universidad del Valle
Slide 41
Ejemplo:
public class MultiplosDeTres { static int n; public static void leerN() {
Slide 42
Ejemplo:
int contador=0;
for (int i = 1; i <= n; i++){ if (esMultiploDeTres(i)){ contador++; } }
JOptionPane.showMessageDialog(null,"En la serie 1 a "+ n+ " hay " + contador + " mltiplos de 3");
} public static void main (String arg[]) { leerN (); contarMultiplosDeTres (); System.exit(0); }
EISC
Universidad del Valle
Slide 43
Ejemplo:
int contador=0;
for (int i = 1; i <= n; i++){ if (esMultiploDeTres(i)){ contador++; } } La variable contador se incrementa en 1 cada vez que el mtodo esMultiploDeTres retorna true (cierto) para el nmero i
JOptionPane.showMessageDialog(null,"En la serie 1 a "+ n+ " hay " + contador + " mltiplos de 3");
} public static void main (String arg[]) { leerN (); contarMultiplosDeTres (); System.exit(0); }
EISC
Universidad del Valle
Slide 44
EISC
Universidad del Valle
Slide 45
public static void calcularFactorial() { long factorial; String respuesta=""; if(n<=20){ for (int i = 1; i <= n; i++){ factorial=1; for (int j = 1; j <= i; j++){ factorial=factorial*j; } respuesta += "\n El Factorial de " + i + "es: " + factorial; }
.
EISC
Universidad del Valle
Slide 46
Slide 47
Ejemplo: Para una persona que ingres en el 2009 y que tena 44 aos en dicho ao, su mesada o sueldo bruto para el 2011 es $482.535, el descuento por salud es $57.904 y por lo tanto su sueldo o mesada neta es $424.630.
NOTA: Realice la respectiva implementacin en Java.
EISC
Universidad del Valle
Slide 48
Estructura While
Evala una condicin dada para determinar si repite un conjunto de instrucciones. Si la condicin es verdadera se repiten las instrucciones. Observe que el primer paso es validar la condicin y luego se ejecutan las instrucciones (en caso de que la condicin cumpla).
Pseudocdigo Mientras condicin Haga instruccin 1 instruccin 2 . Fin mientras Java
EISC
Universidad del Valle
Estructura While
Ejemplo:
int a=5, b=7, c=3; while (a<b){ c = c *2; a = a + 1;
}
Nmero Iteracin 0 1 2 Se interrumpe Valor variable Valor variable a c 5 6 7 3 6 12
EISC
Universidad del Valle
Slide 50
Estructura While
Ejemplo:
Si la primera vez la condicin del ciclo while no se cumple, no se ejecuta ninguna instruccin.
EISC
Universidad del Valle
Slide 51
Estructura Do-While
Los ciclos do-while funcionan de la misma manera que los ciclos while, sin embargo un ciclo do-while ejecuta primero las instrucciones y luego hace la validacin.
Ciclo do-while: Realiza un bloque de instrucciones y despus evala la condicin para determinar si repite el bloque o no. Pseudocdigo Haga
instruccin 1 instruccin 2 .
Java do { instruccin 1;
instruccin 2;
Mientras condicin
EISC
Universidad del Valle
} while(condicion);
Slide 52
Estructura Do-While
EISC
Universidad del Valle
Slide 53
Estructura Do-While
Observe que la primera vez se ejecutan las instrucciones aunque la condicin del ciclo no sea vlida. Por ejemplo:
Nmero Iteracin
Valor variable a
Valor variable c
0
1 Se interrumpe
9
10
3
6
EISC
Universidad del Valle
Slide 54
EISC
Universidad del Valle
Slide 55
Fin
EISC
Universidad del Valle
Slide 56
Slide 57
EISC
Universidad del Valle
Slide 58
EISC
Universidad del Valle
Slide 59
Fin
EISC
Universidad del Valle
Slide 60
EISC
Universidad del Valle
Slide 61
Estructuras de Repeticin
Importante:
En cualquiera de las estructuras de repeticin implementadas en Java, se puede detener el ciclo usando la instruccin break o detener una iteracin utilizando la instruccin continue. Normalmente se usan las instrucciones break o continue cuando se ha cumplido una condicin de anormalidad u otra especificada por el desarrollador dentro del contexto de un problema. En resumen: break detiene el ciclo completamente y continue detiene una iteracin pasando a la siguiente.
EISC
Universidad del Valle
Slide 62
Estructuras de Repeticin
Importante:
Cualquiera de los ejercicios mostrados en esta presentacin pueden ser implementados sin la necesidad de crear mtodos.
EISC
Universidad del Valle
Slide 63
Slide 64
Ejemplo: Para una persona que ingres en el 2009 y que tena 44 aos en dicho ao, su mesada o sueldo bruto para el 2011 es $482.535, el descuento por salud es $57.904 y por lo tanto su sueldo o mesada neta es $424.630.
NOTA: Realice la respectiva implementacin en Java.
EISC
Universidad del Valle
Slide 65
Slide 66