22 octubre, 2018

La estructura de selección doble encadenada if...else...if


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)


Código y Pseudocódigo de la estructura de selección doble encadenada if…else…if (Formato 2)

Problemas


Problema 1

Los ángulos se clasifican de la siguiente manera:


Diseñe un algoritmo que determine la clasificación de un ángulo dado en grados, minutos y segundos. Asuma que el ángulo está en el intervalo de 0o a 360o.

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
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
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


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
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();
  }
 
 }
 
}
Problema 3

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:


Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre su pensión actual y a cuánto asciende su nueva pensión.

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


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
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


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
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.

¡Quiero esto!
¡Qué pases un buen día!

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!