Continuando con las estructuras algorítmicas de selección. Hoy veremos el uso de la estructura de selección doble encadenada If...else...if, el cual nos va a permitir crear programas que resuelvan problemas que involucren tomas de decisiones.
Así, en el tema de hoy vamos a diseñar algoritmos en pseudocódigo y en Java que permitan resolver problemas que involucren tomas de decisión haciendo uso de la estructura de selección doble encadenada if else if.
En el tema anterior habíamos visto el uso de la estructura de selección doble if...else.
Todo esto es como una sopita donde le vamos poniendo ingredientes para que el resultado nos quede cada vez mejor.
Estos posts te servirán tanto si estás empezando de cero en el mundo de la programación, si eres estudiante de primer año y necesitas reforzar algunos temas, o si eres un curioso que le entró la duda y las ganas de aprender a programar. Sea el motivo que fuese por lo que estás aquí, te invito a seguir esta serie de publicaciones que estaré realizando, en donde aprenderás con los temas que te vaya enseñando lo básico de la programación para que puedas realizar tú mismo tus propios programas.
¡Comencemos!
¿Qué es la estructura de selección doble encadenada if else if?
La estructura de selección if else if, es una estructura que permite evaluar un conjunto de condiciones en orden descendente, pasando de una condición a otra siempre que la condición anterior sea falsa, y en el momento que encuentre una condición verdadera, efectuará la acción correspondiente a dicha condición, la cual puede ser una acción simple o compuesta según sea el caso y abandonará el resto de la estructura continuando con la siguiente instrucción del programa.
La estructura tiene una acción por defecto que se efectúa en el caso que todas las condiciones sean falsas como podemos observar en la siguiente imagen.
En el siguiente gráfico podemos observar el diagrama de flujo de la estructura de selección if else if.
![]() |
Diagrama de flujo de la estructura de selección doble encadenada if else if |
En la tabla que sigue se muestra el código y el pseudocódigo de la estructura de selección if else if. Note que en el caso de bloques de acciones, estas deben estar encerradas entre llaves de bloque { }.
Código y Pseudocódigo de la estructura de selección doble encadenada if…else…if (Formato 1)
Problemas
Problema 1
Los ángulos se clasifican de la siguiente manera:
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Inicio // Declaración de variables entero grados, minutos, segundos real beta cadena tipo // Entrada de datos Leer grados, minutos, segundos // Determina el ángulo en grados beta = grados + minutos/60.0 + segundos/3600.0 // Determina el tipo de ángulo si( beta == 0 ) tipo = "Nulo" sino si(beta < 90 ) tipo = "Agudo" sino si( beta == 90 ) tipo = "Recto" sino si( beta < 180 ) tipo = "Obtuso" sino si( beta == 180 ) tipo = "Llano" sino si( beta < 360 ) tipo = "Cóncavo" sino tipo = "Completo" // Salida de resultados Imprimir tipo Fin |
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema01 extends JApplet implements ActionListener { // Declaración de variables JLabel lblGrados, lblMinutos, lblSegundos; JTextField txtGrados, txtMinutos, txtSegundos; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblGrados = new JLabel( "Grados:" ); lblGrados.setBounds( 15 , 15 , 100 , 23 ); getContentPane().add(lblGrados); txtGrados = new JTextField(); txtGrados.setBounds( 100 , 15 , 50 , 23 ); getContentPane().add(txtGrados); lblMinutos = new JLabel( "Minutos:" ); lblMinutos.setBounds( 15 , 39 , 100 , 23 ); getContentPane().add(lblMinutos); txtMinutos = new JTextField(); txtMinutos.setBounds( 100 , 39 , 50 , 23 ); getContentPane().add(txtMinutos); lblSegundos = new JLabel( "Segundos:" ); lblSegundos.setBounds( 15 , 63 , 100 , 23 ); getContentPane().add(lblSegundos); txtSegundos = new JTextField(); txtSegundos.setBounds( 100 , 63 , 50 , 23 ); getContentPane().add(txtSegundos); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 305 , 15 , 101 , 23 ); btnProcesar.addActionListener( this ); getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 305 , 39 , 101 , 23 ); btnBorrar.addActionListener( this ); getContentPane().add(btnBorrar); txtArea = new JTextArea(); txtArea.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtArea); scpScroll.setBounds( 15 , 94 , 394 , 120 ); getContentPane().add(scpScroll); } // -------------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si hizo clic en Procesar if (e.getSource() == btnProcesar) { // Declaración de variables int grados, minutos, segundos; double totgrados; String tipo; // Entrada de datos grados = Integer.parseInt(txtGrados.getText()); minutos = Integer.parseInt(txtMinutos.getText()); segundos = Integer.parseInt(txtSegundos.getText()); // Cálcular total de grados totgrados = grados + minutos / 60.0 + segundos / 3600.0 ; // Determinar la clasificación del ángulo if (totgrados == 0 ) tipo = "Nulo" ; else if (totgrados < 90 ) tipo = "Agudo" ; else if (totgrados == 90 ) tipo = "Recto" ; else if (totgrados < 180 ) tipo = "Obtuso" ; else if (totgrados == 180 ) tipo = "Llano" ; else if (totgrados < 360 ) tipo = "Cóncavo" ; else tipo = "Completo" ; // Salida de resultados txtArea.setText( "Total en grados: " + totgrados + "\n" ); txtArea.append( "Clasificación: " + tipo); } // Si hizo clic en Borrar if (e.getSource() == btnBorrar) { txtGrados.setText( "" ); txtMinutos.setText( "" ); txtSegundos.setText( "" ); txtArea.setText( "" ); txtGrados.requestFocus(); } } } |
Problema 2
En la playa de estacionamiento de un centro comercial, cobran una tarifa fija por hora o fracción de acuerdo a la siguiente tabla:
Cuando un vehículo entra al estacionamiento, se anota la hora de entrada y al retirarse, se toma nota de la hora de salida, ambas en horas y minutos. Diseñe un programa que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo.
Considerando: dia: 0Æ Lunes, 1 Æ Martes, ...,6 Æ Domingo
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Inicio // Declaración de variables entero h1, m1, h2, m2, dia, horaspag, totalmin real montopag // Entrada de datos Leer h1, m1, h2, m2, dia // Cálculo de la cantidad de horas a pagar totalmin = (h2-h1)*60 + (m2-m1) horaspag = totalmin/60 si( totalmin%60 != 0 ) horaspag = horaspag+1 // Cálculo del monto a pagar si( dia <= 3 ) montopag = horaspag*3.5 sino si( dia <= 5 ) montopag = 4.5*horaspag sino montopag = 2.5*horaspag; // Salida de resultados Imprimir horaspag, montopag Fin |
Programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema02 extends JApplet implements ActionListener { // Declaración de variables JButton btnProcesar, btnBorrar; JTextArea txtS; JComboBox choDia; JLabel lblDia, lblEntrada, lblSalida; JTextField txtH1, txtH2, txtM1, txtM2; JScrollPane scpScroll; // Crea la interfaz gráfica de usuario GUI public void init() { getContentPane().setLayout( null ); lblDia = new JLabel( "Día de la semana" ); lblDia.setBounds( 15 , 65 , 150 , 23 ); getContentPane().add(lblDia); lblEntrada = new JLabel( "Hora de entrada ( HH:MM)" ); lblEntrada.setBounds( 15 , 15 , 150 , 23 ); getContentPane().add(lblEntrada); lblSalida = new JLabel( "Hora de salida ( HH:MM)" ); lblSalida.setBounds( 14 , 40 , 150 , 23 ); getContentPane().add(lblSalida); txtH1 = new JTextField(); txtH1.setBounds( 164 , 15 , 41 , 23 ); getContentPane().add(txtH1); txtM1 = new JTextField(); txtM1.setBounds( 208 , 15 , 41 , 23 ); getContentPane().add(txtM1); txtH2 = new JTextField(); txtH2.setBounds( 164 , 40 , 41 , 23 ); getContentPane().add(txtH2); txtM2 = new JTextField(); txtM2.setBounds( 208 , 40 , 41 , 23 ); getContentPane().add(txtM2); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 305 , 15 , 101 , 23 ); btnProcesar.addActionListener( this ); getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 305 , 39 , 101 , 23 ); btnBorrar.addActionListener( this ); getContentPane().add(btnBorrar); choDia = new JComboBox(); choDia.setBounds( 164 , 65 , 85 , 23 ); choDia.addItem( "Lunes" ); choDia.addItem( "Martes" ); choDia.addItem( "Miércoles" ); choDia.addItem( "Jueves" ); choDia.addItem( "Viernes" ); choDia.addItem( "Sábado" ); choDia.addItem( "Domingo" ); getContentPane().add(choDia); txtS = new JTextArea(); txtS.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtS); scpScroll.setBounds( 15 , 99 , 394 , 100 ); getContentPane().add(scpScroll); } // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si se hizo clic en Procesar if (e.getSource() == btnProcesar) { // Declaración de variables int h1, m1, h2, m2, dia, horaspag, totalmin; double montopag; // Entrada de datos h1 = Integer.parseInt(txtH1.getText()); m1 = Integer.parseInt(txtM1.getText()); h2 = Integer.parseInt(txtH2.getText()); m2 = Integer.parseInt(txtM2.getText()); dia = choDia.getSelectedIndex(); // Determina la cantidad de horas a pagar totalmin = (h2 - h1) * 60 + (m2 - m1); horaspag = totalmin / 60 ; if (totalmin % 60 != 0 ) horaspag = horaspag + 1 ; // Determina el monto a pagar if (dia <= 3 ) montopag = horaspag * 3.5 ; else if (dia <= 5 ) montopag = 4.5 * horaspag; else montopag = 2.5 * horaspag; // Salida de resultados txtS.setText( "Horas a cobrar : " + horaspag + "\n" ); txtS.append( "Monto a pagar : S/." + montopag); } // Si se hizo clic en Borrar if (e.getSource() == btnBorrar) { txtH1.setText( "" ); txtM1.setText( "" ); txtH2.setText( "" ); txtM2.setText( "" ); txtS.setText( "" ); txtH1.requestFocus(); } } } |
En una universidad, los alumnos están categorizados en cuatro categorías. A cada categoría le corresponde una pensión mensual distinta dada en la siguiente tabla:
Semestralmente, la universidad efectúa rebajas en las pensiones de sus estudiantes a partir del segundo ciclo en base al promedio ponderado del ciclo anterior en porcentajes dados en la tabla siguiente:
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Inicio // Declaración de variables entero categoria real actualpen, nuevapen, descuento, promedio // Entrada de datos Leer categoria, promedio // Cálculo de la pensión actual si( categoria == 0 ) actualpen = 550 sino si ( categoria == 1 ) actualpen = 500 sino si ( categoria == 2 ) actualpen = 460 sino actualpen = 400 // Cálculo del descuento si( promedio <= 13.99 ) descuento = 0 sino si( promedio <= 15.99 ) descuento = 0.10*actualpen sino si( promedio <= 17.99 ) descuento = 0.12*actualpen sino descuento = 0.15*actualpen // Cálculo de la nueva pensión nuevapen = actualpen – descuento // Salida de resultados Imprimir actualpen, nuevapen Fin |
Programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema03 extends JApplet implements ActionListener { // Declaración de variables JButton btnProcesar, btnBorrar; JTextArea txtS; JComboBox choCategoria; JLabel lblCategoria, lblPromedio; JTextField txtPromedio; JScrollPane scpScroll; // Crea la interfaz gráfica de usuario GUI public void init() { getContentPane().setLayout( null ); setBackground( new Color( 214 , 211 , 206 )); txtPromedio = new JTextField(); txtPromedio.setBounds( 79 , 40 , 87 , 23 ); getContentPane().add(txtPromedio); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 305 , 15 , 101 , 23 ); btnProcesar.addActionListener( this ); getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 305 , 39 , 101 , 23 ); btnBorrar.addActionListener( this ); getContentPane().add(btnBorrar); choCategoria = new JComboBox(); choCategoria.setBounds( 79 , 15 , 87 , 23 ); choCategoria.addItem( "A" ); choCategoria.addItem( "B" ); choCategoria.addItem( "C" ); choCategoria.addItem( "D" ); getContentPane().add(choCategoria); lblCategoria = new JLabel( "Categoría" ); lblCategoria.setBounds( 15 , 15 , 61 , 23 ); getContentPane().add(lblCategoria); lblPromedio = new JLabel( "Promedio" ); lblPromedio.setBounds( 15 , 40 , 56 , 23 ); getContentPane().add(lblPromedio); txtS = new JTextArea(); txtS.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtS); scpScroll.setBounds( 15 , 75 , 394 , 55 ); getContentPane().add(scpScroll); } // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si se hizo clic en Procesar if (e.getSource() == btnProcesar) { // Declaración de variables int categoria; double actualpen, nuevapen, descuento, promedio; // Entrada de datos categoria = choCategoria.getSelectedIndex(); promedio = Double.parseDouble(txtPromedio.getText()); // Cálculo de la pensión actual if (categoria == 0 ) actualpen = 550 ; else if (categoria == 1 ) actualpen = 500 ; else if (categoria == 2 ) actualpen = 460 ; else actualpen = 400 ; // Cálculo del descuento if (promedio <= 13.99 ) descuento = 0 ; else if (promedio <= 15.99 ) descuento = 0.10 * actualpen; else if (promedio <= 17.99 ) descuento = 0.12 * actualpen; else descuento = 0.15 * actualpen; // Cálculo de la nueva pensión nuevapen = actualpen - descuento; // Salida de resultados txtS.setText( "Pensión actual : " + actualpen + "\n" ); txtS.append( "Descuento : " + descuento + "\n" ); txtS.append( "Nueva pensión : " + nuevapen); } // Si se hizo clic en Borrar if (e.getSource() == btnBorrar) { txtS.setText( "" ); txtPromedio.setText( "" ); txtPromedio.requestFocus(); } } } |
Problema 4
Una empresa de préstamos tiene el siguiente esquema de cobros:
Si el monto del préstamo es mayor a S/. 10000, la empresa cobra 3% de interés mensual; en caso contrario, cobra 5% de interés mensual.
Dado el monto del préstamo de un cliente, diseñe un programa que determine el monto de la cuota mensual y el monto del interés total entre todas las cuotas.
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Inicio // Declaración de variables real montoprestamo, montointeres, tasainteres, montocuota entero cuotas // Entrada de datos Leer montoprestamo // Obtención del número de cuotas si( montoprestamo <= 5000 ) cuotas = 2 sino si( montoprestamo <= 10000 ) cuotas = 4 sino si( montoprestamo <= 15000 ) cuotas = 6 sino cuotas = 10 // Obtención de la tasa de interés si( montoprestamo > 10000 ) tasainteres = 0.03 sino tasainteres = 0.05 // Cálculo del monto del interés total montointeres = tasainteres*montoprestamo*cuotas // Cálculo del monto de la cuota montocuota = (montoprestamo + montointeres)/cuotas // Salida de resultados Imprimir cuotas, montocuota, montointeres Inicio |
Programa
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | package problemas_resueltos; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema04 extends JApplet implements ActionListener { // Declaración de variables JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblMontoPrestamo; JTextField txtMontoPrestamo; JScrollPane scpScroll; // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblMontoPrestamo = new JLabel( "Monto del prestamo" ); lblMontoPrestamo.setBounds( 15 , 15 , 140 , 23 ); getContentPane().add(lblMontoPrestamo); txtMontoPrestamo = new JTextField(); txtMontoPrestamo.setBounds( 155 , 15 , 100 , 23 ); getContentPane().add(txtMontoPrestamo); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 365 , 15 , 100 , 23 ); btnProcesar.addActionListener( this ); getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 265 , 15 , 100 , 23 ); btnBorrar.addActionListener( this ); getContentPane().add(btnBorrar); txtS = new JTextArea(); txtS.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtS); scpScroll.setBounds( 15 , 53 , 450 , 150 ); getContentPane().add(scpScroll); } // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si se hizo clic en Procesar if (e.getSource() == btnProcesar) { // Declaración de variables double montoprestamo, tasainteres, interesTotal, cuotaMensual; int cuotas; // Entrada de datos montoprestamo = Double.parseDouble(txtMontoPrestamo.getText()); // Obtención del número de cuotas if (montoprestamo <= 5000 ) cuotas = 2 ; else if (montoprestamo <= 10000 ) cuotas = 4 ; else if (montoprestamo <= 15000 ) cuotas = 6 ; else cuotas = 10 ; // Obtención de la tasa de interés if (montoprestamo > 10000 ) tasainteres = 0.03 ; else tasainteres = 0.05 ; // Cálculo del monto del interés total interesTotal = tasainteres * montoprestamo * cuotas; // Cálculo del monto de la cuota cuotaMensual = (montoprestamo + interesTotal) / cuotas; // Salida de resultados txtS.setText( "Número de cuotas : " + cuotas + "\n" ); txtS.append( "Cuota mensual : S/. " + cuotaMensual + "\n" ); txtS.append( "Interés total : S/. " + interesTotal + "\n" ); } // Si se hizo clic en Borrar if (e.getSource() == btnBorrar) { txtMontoPrestamo.setText( "" ); txtS.setText( "" ); txtMontoPrestamo.requestFocus(); } } } |
Problema 5
Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y rendimiento. En cada caso el empleado recibe un puntaje que va de 1 a 10, de acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en función a los minutos de tardanza de acuerdo a la
siguiente tabla:
Puntaje por rendimiento:- está en función a la cantidad de observaciones efectuadas al empleado por no cumplir sus obligaciones de acuerdo a la siguiente tabla:
El puntaje total del empleado es la suma del puntaje por puntualidad más el puntaje por rendimiento. En base al puntaje total, el empleado recibe una bonificación anual de acuerdo a la siguiente tabla:
Diseñe un programa que determine el puntaje por puntualidad, el puntaje por rendimiento, el puntaje total y la bonificación que le corresponden a un empleado de la empresa.
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | Inicio // Declaración de variables entero minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot real bonificacion // Entrada de datos Leer minutosTar, numeroObs // Determinación del puntaje por puntualidad si(minutosTar == 0) puntajePun = 10 sino si(minutosTar <= 2) puntajePun = 8 sino si(minutosTar <= 5) puntajePun = 6 sino si(minutosTar <= 9) puntajePun = 4 sino puntajePun = 0 // Determinación del puntaje por rendimiento si(numeroObs == 0) puntajeRen = 10 sino si(numeroObs == 1) puntajeRen = 8 sino si(numeroObs == 2) puntajeRen = 5 sino si(numeroObs == 3) puntajeRen = 1 sino puntajeRen = 0 // Determinación del puntaje total puntajeTot = puntajePun + puntajeRen // Determinación de la bonificacionicación si(puntajeTot < 11) bonificacion = 2.5*puntajeTot sino si(puntajeTot <= 13) bonificacion = 5.0*puntajeTot sino si(puntajeTot <= 16) bonificacion = 7.5*puntajeTot sino si(puntajeTot <= 19) bonificacion = 10.0*puntajeTot sino bonificacion = 12.5*puntajeTot // Salida de resultados Imprimir puntajePun, puntajeRen, puntajeTot, bonificacion Inicio |
Programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | package problemas_resueltos; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema05 extends JApplet implements ActionListener { // Declaración de variables JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblMinutosTardanza, lblNumeroObservaciones; JTextField txtMinutosTardanza, txtNumeroObservaciones; JScrollPane scpScroll; // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblMinutosTardanza = new JLabel( "Minutos de tardanza" ); lblMinutosTardanza.setBounds( 15 , 15 , 160 , 23 ); getContentPane().add(lblMinutosTardanza); lblNumeroObservaciones = new JLabel( "Numero de observaciones" ); lblNumeroObservaciones.setBounds( 15 , 39 , 160 , 23 ); getContentPane().add(lblNumeroObservaciones); txtMinutosTardanza = new JTextField(); txtMinutosTardanza.setBounds( 175 , 15 , 120 , 23 ); getContentPane().add(txtMinutosTardanza); txtNumeroObservaciones = new JTextField(); txtNumeroObservaciones.setBounds( 175 , 39 , 120 , 23 ); getContentPane().add(txtNumeroObservaciones); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 365 , 15 , 100 , 23 ); btnProcesar.addActionListener( this ); getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 365 , 39 , 100 , 23 ); btnBorrar.addActionListener( this ); getContentPane().add(btnBorrar); txtS = new JTextArea(); txtS.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtS); scpScroll.setBounds( 15 , 77 , 450 , 100 ); getContentPane().add(scpScroll); } // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { if (e.getSource() == btnProcesar) { // Declaración de variables int minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot; double bonificacion; // Entrada de datos minutosTar = Integer.parseInt(txtMinutosTardanza.getText()); numeroObs = Integer.parseInt(txtNumeroObservaciones.getText()); // Determinación del puntaje por puntualidad if (minutosTar == 0 ) puntajePun = 10 ; else if (minutosTar <= 2 ) puntajePun = 8 ; else if (minutosTar <= 5 ) puntajePun = 6 ; else if (minutosTar <= 9 ) puntajePun = 4 ; else puntajePun = 0 ; // Determinación del puntaje por rendimiento if (numeroObs == 0 ) puntajeRen = 10 ; else if (numeroObs == 1 ) puntajeRen = 8 ; else if (numeroObs == 2 ) puntajeRen = 5 ; else if (numeroObs == 3 ) puntajeRen = 1 ; else puntajeRen = 0 ; // Determinación del puntaje total puntajeTot = puntajePun + puntajeRen; // Determinación de la bonificacionicación if (puntajeTot < 11 ) bonificacion = 2.5 * puntajeTot; else if (puntajeTot <= 13 ) bonificacion = 5.0 * puntajeTot; else if (puntajeTot <= 16 ) bonificacion = 7.5 * puntajeTot; else if (puntajeTot <= 19 ) bonificacion = 10.0 * puntajeTot; else bonificacion = 12.5 * puntajeTot; // Salida de resultados txtS.setText( "Puntaje por puntualidad : " + puntajePun + "\n" ); txtS.append ( "Puntaje por rendimiento : " + puntajeRen + "\n" ); txtS.append ( "Puntaje total : " + puntajeTot + "\n" ); txtS.append ( "Bonificación : " + bonificacion); } if (e.getSource() == btnBorrar) { txtMinutosTardanza.setText( "" ); txtNumeroObservaciones.setText( "" ); txtS.setText( "" ); txtMinutosTardanza.requestFocus(); } } } |
Para recordar
- Colocar un ; al final de la condición de un if hace que la acción del if sea nula.
- Si el cuerpo de un if incluye varias acciones simples, estas deben ir encerradas entre llaves de bloque { }.
Descargar ejercicios resueltos
Descargar archivo
Puedes completar lo aprendido asistiendo el material en video.
Clic aquí
¡Acabas de ver el tema La estructura de selección doble encadenada if...else...if del curso de Introducción a la Algoritmia y a la programación en Java! ¡Fácil verdad!
Ir al índice
Asimismo, si deseas saber más acerca de estos temas, recuerda que puedes comprar la guía completa con todos los temas, ejercicios, evaluaciones resueltas, proyectos y más; para ello, tienes que ingresar al siguiente enlace. Y si eres seguidor de la comunidad Aprendec puedes acceder a un descuento del -%32.
Asimismo, si deseas saber más acerca de estos temas, recuerda que puedes comprar la guía completa con todos los temas, ejercicios, evaluaciones resueltas, proyectos y más; para ello, tienes que ingresar al siguiente enlace. Y si eres seguidor de la comunidad Aprendec puedes acceder a un descuento del -%32.
¡Quiero esto! |
No hay comentarios, ¡cuéntame algo!
Me gustaría saber tu opinión. ¡Saludos!