Ciclos-Algoritmia-2012C_X2 (1)

46
17/09/2012 1 ALGORITMIA Y PROGRAMACIÓN ESTRUCTURAS ITERATIVAS EISC Universidad del Valle Slide 2 Contenido Estructuras de Repetición for Ciclos anidados Contadores y acumuladores while do-while Ejercicios

description

ciclos algoritmia y programación

Transcript of Ciclos-Algoritmia-2012C_X2 (1)

  • 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