17/09/2012
1
ALGORITMIA Y PROGRAMACIN
ESTRUCTURAS ITERATIVAS
EISC Universidad del Valle Slide 2
Contenido
Estructuras de Repeticin
for
Ciclos anidados
Contadores y acumuladores
while
do-while
Ejercicios
17/09/2012
2
EISC Universidad del Valle Slide 3
Estructuras de Repeticin
Ejercicio: Suponga que debe listar los nmeros del 1 a 100 en una aplicacin Java.
EISC Universidad del Valle Slide 4
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 5000?
17/09/2012
3
EISC Universidad del Valle Slide 5
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 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: ?? Salidas: ?? Proceso:??
17/09/2012
4
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: ?? 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:??
17/09/2012
5
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: 1 hasta 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. 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
17/09/2012
6
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 leer (n) ???
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. 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
17/09/2012
7
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
Desde i = 1; Mientras i < n; incrementar i en 1 Imprimir (i)
EISC Universidad del Valle Slide 14
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
Estructura De Repeticin for
Desde i = 1; Mientras i < n; incrementar i en 1 Imprimir (i)
17/09/2012
8
EISC Universidad del Valle Slide 15
Estructuras de Repeticin
Se usa para repetir una instruccin o un conjunto de instrucciones,
Desde un inicio, Mientras una condicin se cumpla y con un
incremento o decremento.
Un ciclo for tiene tres partes:
Expresin de inicio,
Expresin de condicin y
Expresin de incremento/decremento.
Desde i = 1; Mientras i < n; incrementar i en 1 Imprimir (i)
EISC Universidad del Valle Slide 16
Estructuras de Repeticin
.
for (inicio; prueba; actualizacin) {
//Instrucciones a Repetir }
Estructura de la instruccin for
Inicializar la variable de
control
Se debe declarar la variable de
control
probar el valor final de la variable de control para continuar el ciclo
Incremento o decremento de la variable de control
17/09/2012
9
EISC Universidad del Valle Slide 17
Estructura For
Pseudocdigo Java
Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde
for ( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Expresin de inicio
Expresin de condicin (o prueba)
Expresin de incremento/decremento
EISC Universidad del Valle Slide 18
Estructura for
Pseudocdigo Java
Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde
for( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Expresin de inicio
Expresin de condicin (o prueba)
Expresin de incremento/decremento
17/09/2012
10
EISC Universidad del Valle Slide 19
Estructura for
Pseudocdigo Java
Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde
for ( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }
Expresin de inicio
Expresin de condicin
Expresin de incremento/decremento
EISC Universidad del Valle Slide 20
Estructura for
Funcionamiento: for ( inicio; condicin; incre/decremento){
instrucciones;
}
i, k , j en cada caso ser la variable de control del ciclo.
Expresin de Inicio: Es una expresin que permite dar un valor inicial a la variable de control del ciclo.
Variable de control: Es la variable que se utiliza para contar la cantidad
de iteraciones realizadas y es usada en la condicin que determina el lmite de repeticiones a realizar.
Ejemplos: i=1 k=m j=(y*8)/9
17/09/2012
11
EISC Universidad del Valle Slide 21
Expresin de Condicin: Es una condicin que se evala antes de realizar el bloque de instrucciones en el ciclo. Esta prueba determina cuando se termina la ejecucin del ciclo.
Ejemplos: itotal j!=(z%7)
Estructura for
Funcionamiento: for ( inicio; condicin; incre/decremento){
instruciones;
}
i, k , j en cada caso ser la variable de control del ciclo.
EISC Universidad del Valle Slide 22
Expresin de Incre/Decremento: Es una expresin usada para incrementar o decrementar (actualizar) el valor de la variable de control del ciclo. Ejemplos: i++ k= k + 2 J--
Estructura for
Funcionamiento: for ( inicio; condicin; incre/decremento){
instruciones;
}
17/09/2012
12
EISC Universidad del Valle Slide 23
Estructura for Ejemplo:
public static void listarNumeros(){ for (int i =1 ; i10; k = k - 2) { JOptionPane.showMessageDialog (null, Nmero: + k ); } }
Ejemplo:
17/09/2012
13
EISC Universidad del Valle Slide 25
Estructura for
public void listarNumeros(){ for(int k =18 ; k>10; k = k - 2) { JOptionPane.showMessageDialog (null, Nmero: + k ); } }
Valor de i Nmero Iteracin Salida
18 1 Nmero 18
16 2 Nmero 16
14 3 Nmero 14
12 4 Nmero 12
10 Se interrumpe
La instruccin: JOptionPane.showMessageDialog ()
se ejecuta 4 veces
Ejemplo:
EISC Universidad del Valle Slide 26
Estructura for
Cuantas veces se ejecutar la instruccin:
JOptionPane.showMessageDialog(null ,El valor de I es " + i);
public void muestraAlgo1( ){ int i=0; for ( i=3; i
17/09/2012
14
EISC Universidad del Valle Slide 27
Estructura for
public void muestraAlgo1( ){ int i=0; for ( i=3; i
17/09/2012
15
EISC Universidad del Valle Slide 29
Estructura for
public void muestraAlgo2( ){ for ( int j=0; j
17/09/2012
16
EISC Universidad del Valle Slide 31
Estructura for
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.
Ejercicio 1:
EISC Universidad del Valle Slide 32
Estructura for
public void leerNombres() x : Entero; Inicio
Desde x=1 mientras x
17/09/2012
17
EISC Universidad del Valle Slide 33
Estructura for
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 ); }
Ejercicio 1:
EISC Universidad del Valle Slide 34
Estructura for
public static void main (String arg[]) { leerNumEstudiantes (); leerNombres ();
System.exit(0); } }
Ejercicio 1:
17/09/2012
18
EISC Universidad del Valle Slide 35
Estructura for Ciclos Anidados
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.
Ejemplo:
NOTA: Usamos la condicin n
17/09/2012
19
EISC Universidad del Valle Slide 37
Estructura for Ciclos Anidados
Desde i=1 mientras i
17/09/2012
20
EISC Universidad del Valle Slide 39
Estructura for Ciclos Anidados public class Factorial {
static int n; public static void leerN() { String num = JOptionPane.showInputDialog("Ingrese n:"); n = Integer.parseInt(num); }
public static void calcularFactorial() { long factorial; String respuesta=""; if(n
17/09/2012
21
EISC Universidad del Valle Slide 41
Estructura for Ciclos Anidados
Desarrollar un programa java que permita generar y visualizar la siguiente figura:
Tenga en cuenta que el usuario ingresa al programa el nmero de lneas que debe tener la figura (En el ejemplo hay 7 filas).
Ejercicio 2:
EISC Universidad del Valle Slide 42
Estructura for Ciclos Anidados
public static void crearFigura() Inicio
Desde i=1 mientras i
17/09/2012
22
EISC Universidad del Valle Slide 43
Estructura for Ciclos Anidados
Ejercicio 2:
EISC Universidad del Valle Slide 44
Estructura For Ciclos Anidados
Ejercicio 2:
17/09/2012
23
EISC Universidad del Valle Slide 45
Estructura for - Contadores
Los contadores son variables utilizadas para realizar, como su nombre lo indica, conteos de la cantidad de veces que se cumple una situacin especfica.
Como su objetivo principal es contar, deben ser de tipo entero y normalmente se inicializan en cero.
Los contadores y los acumuladores
pueden ser usados en cualquier tipo
de ciclos.
EISC Universidad del Valle Slide 46
Estructura for - Contadores
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
17/09/2012
24
EISC Universidad del Valle Slide 47
Estructura for - Contadores
Ejemplo:
public class MultiplosDeTres {
static int n;
public static void leerN() {
String num = JOptionPane.showInputDialog("Ingrese n:"); n = Integer.parseInt(num);
}
public static boolean esMultiploDeTres(int numero) {
if(numero%3==0){
return true;
}else{
return false;
}
}
EISC Universidad del Valle Slide 48
Estructura for - Contadores
Ejemplo:
public static void contarMultiplosDeTres() {
int contador=0;
for (int i = 1; i
17/09/2012
25
EISC Universidad del Valle Slide 49
Estructura for - Contadores
Ejemplo:
public static void contarMultiplosDeTres() {
int contador=0;
for (int i = 1; i
17/09/2012
26
EISC Universidad del Valle Slide 51
Estructura For - Acumuladores
public static void calcularFactorial(int n) { long factorial = 1; String respuesta=""; if (n >= 0) { if (n
17/09/2012
27
EISC Universidad del Valle Slide 53
Ejercicios Estructura for
4. Suponga que el calculo de la pensin de una persona se realiza de la siguiente manera: por cada ao de servicio se paga $80 si el empleado ingres en o despus de 1995 y $100 si ingres antes, dicho valor (80 o 100) se multiplica por el nmero de cada ao ms la edad que tena en el ao (p.e. (100*1994+32)+(100*1995*33)+), el descuento de seguridad social salud es del 12%. El programa debe recibir el ao de ingreso y la edad del empleado en el ao de ingreso, devolver el sueldo o mesada bruta, la mesada neta y el valor del descuento por salud.
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 54
Ejercicios Estructura for
5. Escribir una aplicacin que permita: generar los nmeros enteros impares entre a y b
6. Crear una aplicacin que permita:
Generar los nmeros pares entre p y q
Generar los primeros z mltiplos de 3
Generar la suma de m primeros mltiplos de 7 ms los n primeros mltiplos de 9
NOTA: Realice la respectiva implementacin en Java.
17/09/2012
28
EISC Universidad del Valle Slide 55
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 Java
Mientras condicin Haga instruccin 1 instruccin 2 . Fin mientras
while( condicion) { instruccin 1; instruccin 2; }
EISC Universidad del Valle Slide 56
Estructura while
Iniciar condiciones;
while (condiciones){
// Instrucciones a repetir
}
Debe existir una variable de control del ciclo
La variable de control se inicializa antes del ciclo
La variable de control se compara contra el valor final
La variable debe actualizarse dentro de
cada ciclo
17/09/2012
29
EISC Universidad del Valle Slide 57
Estructura while
Ejemplo:
int a=5, b=7, c=3;
while (a < b){ c = c *2; a = a + 1;
}
Nmero Iteracin
Valor variable a
Valor variable c
0 5 3
1 6 6
2 7 12
Se interrumpe
EISC Universidad del Valle Slide 58
Estructura while
Ejemplo:
int a=9, b=7, c=3;
while (a < b){ c = c *2; a = a + 1;
}
Nmero Iteracin
Valor variable a
Valor variable c
0 9 3
Se interrumpe
Si la primera vez la condicin del ciclo while no se cumple, no se ejecuta ninguna instruccin.
17/09/2012
30
EISC Universidad del Valle Slide 59
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 Java
Haga instruccin 1 instruccin 2 .
Mientras condicin
do { instruccin 1; instruccin 2;
} while(condicion);
EISC Universidad del Valle Slide 60
Estructura do-while
Iniciar condiciones;
do {
//Instrucciones a repetir
} while (condiciones)
Debe existir una variable de control del ciclo
La variable de control se inicializa antes del ciclo
La variable de control se compara contra el
valor final
La variable de control debe actualizarse dentro de cada ciclo
17/09/2012
31
EISC Universidad del Valle Slide 61
Estructura do-while
Ejemplo:
int a=5, b=7, c=3;
do { c = c *2;
a = a + 1; } while (a
17/09/2012
32
EISC Universidad del Valle Slide 63
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota del trabajo final del curso (10%)
Calcular la nota definitiva para un grupo de n estudiantes
EISC Universidad del Valle Slide 64
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el
primero pesa 30%, el segundo 35%), laboratorios (25%) y trabajo
final (10%) . Hallar la nota definitiva para n estudiantes.
Inicialmente calculamos la nota para un estudiante, conocidas
sus 4 calificaciones:
real calculaDefinitiva (p1, p2, lab, tra : float ) {
double def = 0;
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1;
return def;
} // Fin del mtodo calculaDefinitiva
17/09/2012
33
EISC Universidad del Valle Slide 65
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el
primero pesa 30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva para n estudiantes.
Prueba de escritorio del algoritmo:
real calculaDefinitiva (p1, p2, lab, tra: float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva
p1 p2 lab tra
3,2 2,4 4,4 3,0
def = 3,2
EISC Universidad del Valle Slide 66
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa 30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva para n estudiantes.
Ahora trabajamos en el algoritmo principal: Inicio nomb: String; par1, par2, lab, tar: float; nEst, j = 0: int;
Leer (nEst);
mientras (j < nEst) haga Leer (nomb, par1, par2, lab, tar); Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar); j++; Fin mientras Fin
17/09/2012
34
EISC Universidad del Valle Slide 67
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero
pesa 30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva para n estudiantes.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
Inicio nomb: String; par1, par2, lab, tar: float; nEst, j = 0: int;
Leer (nEst);
mientras (j < nEst) haga Leer (nomb, par1, par2, lab, tar); Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar); j++; Fin mientras Fin
public static void main (String [ ] arg) { String nomb; float par1, par2, lab, tar; int nEst, j= 0; nEs=Double.parseDouble(JOptionPane.showInputDialog (Numero de Estudiantes:")); JOptionPane.showMessageDialog(null, "\nNomb \tParc1 \t+ Parc2\tLab\tTareas\tDefin"); while (j < nEst) { nomb= JOptionPane.showInputDialog(Nombre"); par1= Double.parseDouble (JOptionPane.showInputDialog (Parcial 1")); par2, lab, tar =D.pD(JOP.sMD ()); JOptionPane.showMessageDialog(null, "\n"+nomb+\t+par1+"\t"+par2+"\t"+lab+"\t"+ tar+"\t"+calculaDefinitiva (par1, par2, lab, tar) ); j++; } }
EISC Universidad del Valle Slide 68
Ejercicio Estructura while
Ejercicio: Para ingresar al curso de Produccin Cinematogrfica se realiz un prueba clasificatoria. Se tiene los resultados de dicho examen por aspirante (una nota comprendida entre 0.0 y 5.0) y se desea saber cuntos aspirantes aprobaron el examen, cuntos lo perdieron (nota menor que 3.0) y cul fue el promedio de todo el grupo de aspirantes. No sabemos cuntos aspirantes son, pero sabemos que cuando se quiera indicar que se finaliz el ingreso de notas se digitar un valor negativo.
17/09/2012
35
EISC Universidad del Valle Slide 69
Ejercicio Estructura while
public static void determinarEstadisticasSegunNotas() Inicio leer(nota);
Mientras nota>0 Haga
Si (nota>=3){ numAprobados = numAprobados +1; } De Lo Contrario { numReprobados = numReprobados + 1; }
promedioCalificaciones = promedioCalificaciones + nota; leer(nota); Fin mientras
promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); mostrar(numAprobados); mostrar(numReprobados); mostrar(promedioCalificaciones);
Fin
EISC Universidad del Valle Slide 70
Ejercicio Estructura while public class NotasAsignatura { static int numAprobados,numReprobados; static double promedioCalificaciones;
public static void determinarEstadisticasSegunNotas() { numAprobados =0; numReprobados =0; promedioCalificaciones=0.0;
double nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:"));
while (nota>0.0){ if(nota>=3.0){ numAprobados = numAprobados +1; } else{ numReprobados = numReprobados +1; } promedioCalificaciones = promedioCalificaciones + nota; nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:")); } promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); JOptionPane.showMessageDialog(null, Aspirantes aprobados :+ numAprobados ); JOptionPane.showMessageDialog(null, Aspirantes reprobados :+ numReprobados ); JOptionPane.showMessageDialog(null, Promedio notas :+ promedioCalificaciones ); }
17/09/2012
36
EISC Universidad del Valle Slide 71
Ejercicio Estructura while
public static void main (String arg[]) {
determinarEstadisticasSegunNotas();
System.exit(0); } }
EISC Universidad del Valle Slide 72
Ejercicio Estructura do-while
Ejercicio: Realice el ejercicio anterior (sobre el calculo de estadsticas para el ingreso al curso de Produccin Cinematogrfica) utilizando el ciclo do-while.
17/09/2012
37
EISC Universidad del Valle Slide 73
Ejercicio Estructura do-while
Ejercicio: Algoritmos del programa Curso Cinematografa.
public static void determinarEstadisticasSegunNotas() Inicio Haga leer(nota);
Si (nota>=3){ numAprobados = numsAprobados +1; } Sino { numReprobados = numReprobados + 1; }
promedioCalificaciones = promedioCalificaciones + nota; Mientras (nota>0);
promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); mostrar(numAprobados); mostrar(numReprobados); mostrar(promedioCalificaciones);
Fin
EISC Universidad del Valle Slide 74
Ejercicio Estructura do-while
public static void determinarEstadisticasSegunNotas() { numAprobados =0; numReprobados =0; promedioCalificaciones=0.0; double nota;
do{ nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:"));
if(nota>=0.0){ if(nota>=3.0){
numAprobados = numAprobados +1; } else { numReprobados = numReprobados +1; } promedioCalificaciones = promedioCalificaciones + nota; }
} while (nota
17/09/2012
38
EISC Universidad del Valle Slide 75
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 76
Estructuras de Repeticin
Importante:
Cualquiera de los ejercicios mostrados en esta presentacin pueden ser implementados sin la necesidad de crear mtodos (dentro del mtodo main).
17/09/2012
39
EISC Universidad del Valle Slide 77
Ejercicios Estructuras while y do-while
1. Disee un algoritmo que reciba nmeros digitados por el usuario y los imprima en pantalla, el programa debe terminar cuando el usuario digite un nmero negativo.
2. Disee un algoritmo que reciba nmeros digitados por el usuario y al final imprima la suma de los nmeros digitados, el programa debe terminar cuando el usuario digite 0 (cero).
3. Cree un algoritmo que permita digitar palabras y al final imprima la concatenacin de las palabras digitadas, el programa debe terminar cuando el usuario digite la palabra terminar.
NOTA: Para cada ejercicio realice su respectiva implementacin en Java, use la estructura que le parezca ms conveniente (while o do-while)
EISC Universidad del Valle Slide 78
4. Suponga que el calculo de la pensin de una persona se realiza de la siguiente manera: por cada ao de servicio se paga $80 si el empleado ingres en o despus de 1995 y $100 si ingres antes, dicho valor (80 o 100) se multiplica por el nmero de cada ao ms la edad que tena en el ao (p.e. (100*1994+32)+(100*1995*33)+), el descuento de seguridad social salud es del 12%. El programa debe recibir el ao de ingreso y la edad del empleado en el ao de ingreso, devolver el sueldo o mesada bruta, la mesada neta y el valor del descuento por salud.
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.
Ejercicios Estructuras while y do-while
17/09/2012
40
EISC Universidad del Valle Slide 79
5. Suponga que el administrador de una tienda desea calcular el total de ventas del da, para ello debe registrar el nombre del producto, el valor del producto y la cantidad de unidades vendidas. Al final el sistema debe mostrar la lista de productos digitados, el total de ventas por cada producto, el total de ventas del da y el valor global cobrado por concepto del IVA. El administrador puede registrar productos hasta que l decida que ha terminado.
NOTA: Realice la respectiva implementacin en Java.
Ejercicios Estructuras while y do-while
EISC Universidad del Valle Slide 80
5. Cierta materia se califica con dos parciales ( el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota de tareas y quices (10%) .
Se pide calcular la nota definitiva. Ahora NO se conoce el nmero de estudiantes
Ejercicios Estructuras while y do-while
17/09/2012
41
EISC Universidad del Valle Slide 81
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota del trabajo final del curso (10%) .
Se pide calcular la nota definitiva, pero ahora NO se conoce el nmero de estudiantes
EISC Universidad del Valle Slide 82
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota
definitiva sin conocer el nmero de estudiantes.
Inicialmente calculamos la nota para un estudiante, conocidas sus 4
calificaciones:
real calculaDefinitiva (p1, p2, lab, tra : float ) {
double def = 0;
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1;
return def;
} // Fin del mtodo calculaDefinitiva
17/09/2012
42
EISC Universidad del Valle Slide 83
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el
primero pesa 30%, el segundo 35%), laboratorios (25%) y trabajo final
(10%) . Hallar la nota definitiva sin conocer el nmero de estudiantes. Prueba de escritorio del algoritmo:
real calculaDefinitiva (p1, p2, lab, tra: float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva
p1 p2 lab tra
3,2 2,4 4,4 3,0
def = 3,2
EISC Universidad del Valle Slide 84
Ejercicio Estructura while
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa 30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva sin conocer el nmero de estudiantes.
Ahora trabajamos en el algoritmo principal: Inicio
nomb: String;
par1, par2, lab, tar: float;
Leer (nomb, par1, par2, lab, tar);
haga
Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar);
Leer (nomb, par1, par2, lab, tar);
mientras (nomb != Final ) ;
Fin
17/09/2012
43
EISC Universidad del Valle Slide 85
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva sin conocer el nmero de estudiantes.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
Inicio
nomb: String;
par1, par2, lab, tar: float;
Leer (nomb, par1, par2, lab, tar);
haga
Imprimir(par1 + par2 + lab + tar +
calculaDefinitiva(par1, par2, lab, tar);
Leer (nomb, par1, par2, lab, tar);
mientras (nomb != Final ) ;
Fin
public static void main (String [ ] arg) { String nomb; float par1, par2, lab, tar; DecimalFormat forma = new DecimalFormat ("0.00"); JTextArea miArea = new JTextArea(15,30); JScrollPane miScroll = new JScrollPane(miArea); miArea.append(\nNomb \tParc1 \t+ Parc2\tLab\tTareas\tDefin"); nomb= JOptionPane.showInputDialog(Nombre"); // Sigue instruccin do-while
EISC Universidad del Valle Slide 86
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva sin conocer el nmero de estudiantes.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
Inicio
nomb: String;
par1, par2, lab, tar: float;
Leer (nomb, par1, par2, lab, tar);
haga
Imprimir(par1 + par2 + lab + tar +
calculaDefinitiva(par1, par2, lab, tar);
Leer (nomb, par1, par2, lab, tar);
mientras (nomb != Final ) ;
Fin
do { par1= Double.parseDouble (JOptionPane.showInputDialog (Parcial 1")); par2, lab, tar =D.pD(JOP.sMD ()); miArea.append ("\n"+nomb+\t+forma.format(par1)+ "\t"+forma.format(par2)+"\t"+ forma.format(lab)+"\t"+ forma.format(tar)+"\t"+ forma.format(calculaDefinitiva (par1, par2, lab, tar) ) ); nomb= JOptionPane.showInputDialog(Nombre"); } while (!nomb.equals("Final")); } // Se realiza la impresin del rea de texto JOptionPane.showMessageDialog(null, miScroll, "Calculo de la Nota Final del Curso ", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } // fin del mtodo main
17/09/2012
44
EISC Universidad del Valle Slide 87
Ejercicio Estructura while Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%) . Hallar la nota definitiva sin conocer el nmero de estudiantes.
Probemos el programa:
JTextArea Area de Texto
miArea
JScrollPane barra de
desplazamiento miScroll
EISC Universidad del Valle Slide 88
Uso del JTextArea
JOptionPane.showMessageDialog(null, miScroll);
JOptionPane.showMessageDialog(null, miScroll,"Calculo de Nota
Final del Curso ", JOptionPane.INFORMATION_MESSAGE);
La instruccin JOptionPane.showMessageDialog sirve para mostrar el conjunto formado por el rea de texto y el scroll
Scroll donde se insert el
rea de texto
(miArea)
Ventana de dialogo con el ttulo "Calculo de Nota Final del Curso "
17/09/2012
45
EISC Universidad del Valle Slide 89
Estructura de Iteracin (do-while)
Ejercicio: Calcular el valor del cos (X) (coseno del ngulo x), usando la serie infinita: Imprima el valor del cos (/2) con 8 dgitos de precisin
)!(
x)(++!
x
!
x+!
x
!
x+!
x=(x)
m
2m
1...
1086421cos
2m108642
EISC Universidad del Valle Slide 90
Estructura de Iteracin (do-while)
1. Entender el Problema
Sea x = /2
Entonces la serie ser:
Si tomamos 10 trminos de la serie, tenemos:
Para un valor final de la suma igual a 0.00
)!(
x)(++!
x
!
x+!
x
!
x+!
x=(x)
m
2m
1...
1086421cos
2m108642
00200734620000052944-0,0000000...620423730600,00002520
02748394260,0009192607633530,02086348
79010480,253669500136171,2337005512/cos
++
+
+=)(
17/09/2012
46
EISC Universidad del Valle Slide 91
Ejercicios Estructuras de Iteracin
a. Generar los nmeros enteros impares entre p y q utilizando un ciclo for
b. Generar el inverso de cada nmero entero par entre p y q utilizando
un ciclo while (Resultado debe ser Real)
c. Generar el valor de para los nmeros enteros x entre p y q
utilizando un ciclo do-while
Utilice la metodologa de solucin de problemas
Muestre los resultados en un JTextArea
Utilice la clase DecimalFormat para mostrar los resultados reales con 8 decimales.
...654321
165432
+!
x+!
x+!
x+!
x+!
x+!
x+=ex
ex
EISC Universidad del Valle Slide 92
Ejercicios Estructuras de Iteracin Construya una aplicacin Java para los siguientes problemas: Utilice la metodologa de solucin de problemas
)!2(
)1(...
!10!8!6!4!21)cos(
2108642
m
xxxxxxx
mm
)!12(
)1(...
!11!9!7!5!3)(
12119753
m
xxxxxxxxsen
mm
)!2(...
!10!8!6!4!21)cosh(
2108642
m
xxxxxxx
m
)!12(...
!11!9!7!5!3)(
12119753
m
xxxxxxxxsenh
m
!
)1(...
!5!4!3!21
5432
n
Xxxxxxe
nnx
...5
)1(
4
)1(
3
)1(
2
)1()1()ln(
5432
xxxx
xx
Top Related