Continuando con las estructuras algorítmicas de selección. Hoy veremos el uso de la estructura de selección doble If...else, 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 if else.
En el tema anterior habíamos visto el uso de las estructura de selección simple if..
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.
¡Bienvenido!
¿Qué es la estructura de selección doble if else?
La estructura de selección doble if…else (si…sino), evalúa una condición lógica y para el caso que resulte ser verdadera dicha condición, ejecutará una acción (acciona), caso contrario ejecutara la acción (accionb). En ambos casos, la acción puede ser una acción simple (una sola acción) o una acción compuesta (un bloque de acciones) como se puede apreciar en el siguiente diagrama de flujo.
![]() |
Diagrama de flujo de la estructura de selección doble if else |
En la tabla que sigue se muestra el código y el pseudocódigo de la estructura de selección doble if-else. 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 if else |
Problemas
Problema 1
Una tienda ha puesto en oferta la venta por docenas de cierto tipo de producto ofreciendo un descuento del 15% por la compra de no menos de 6 docenas y 10% en caso contrario. Adicionalmente la empresa ofrece un obsequio de 2 lapiceros por cada 3 docenas por la compra de no menos 30 docenas del producto; en caso contrario, no efectúa ningún obsequio. Diseñe un programa que determine el monto de la compra, el monto del descuento, el monto a pagar y la cantidad de lapiceros de obsequio por la compra de cierta cantidad de docenas del producto.
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Inicio // Declaración de variables entero docenas, obsequio real montocom, montodes, montopag, precio // Entrada de datos Leer docenas, precio // Calcula el monto de la compra montocom = docenas * precio // Calcula el monto del descuento si(docenas >= 6) montodes = 0.15 * montocom sino montodes = 0.10 * montocom // Calcula el monto a pagar montopag = montocom - montodes // Calcula el número de lapiceros de obsequio si(docenas >= 30) obsequio = 2*(docenas/3) sino obsequio = 0 // Salida de resultados Imprimir montocom, montodes, montopag, obsequio 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 | package problemas_resueltos; // Importamos librerías import java.awt.event.*; // Implementar los eventos de acción del programa import java.awt.*; // Implementar los widgets más usados import javax.swing.*; // Mejora del paquete awt // Creamos una clase que herede de JApplet e implementamos los tipos de escuchadores que ocupemos public class Problema1 extends JApplet implements ActionListener { // Declaración de variables JLabel lblDocenas, lblPrecio; JTextField txtDocenas, txtPrecio; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); // Nosotros definimos la posición y el tamaño de los componentes lblDocenas = new JLabel( "Docenas:" ); lblDocenas.setBounds( 15 , 15 , 70 , 23 ); getContentPane().add(lblDocenas); txtDocenas = new JTextField(); txtDocenas.setBounds( 80 , 15 , 50 , 23 ); getContentPane().add(txtDocenas); lblPrecio = new JLabel( "Precio:" ); lblPrecio.setBounds( 15 , 39 , 70 , 23 ); getContentPane().add(lblPrecio); txtPrecio = new JTextField(); txtPrecio.setBounds( 80 , 39 , 50 , 23 ); getContentPane().add(txtPrecio); btnProcesar = new JButton( "Procesar" ); btnProcesar.setBounds( 305 , 15 , 101 , 23 ); btnProcesar.addActionListener( this ); // Al presionar se disparará el evento de acción (actionPerformed) getContentPane().add(btnProcesar); btnBorrar = new JButton( "Borrar" ); btnBorrar.setBounds( 305 , 39 , 101 , 23 ); btnBorrar.addActionListener( this ); // Al presionar se disparará el evento de acción (ActionPerformed) getContentPane().add(btnBorrar); txtArea = new JTextArea(); txtArea.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtArea); scpScroll.setBounds( 15 , 70 , 394 , 130 ); getContentPane().add(scpScroll); } // -------------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Recibe como parámetro el evento que tuvo lugar la acción if (e.getSource() == btnProcesar) { // Declaración de variables int docenas, obsequio; double precio, icompra, idescuento = 0 , ipagar; // Entrada de datos docenas = Integer.parseInt(txtDocenas.getText()); precio = Double.parseDouble(txtPrecio.getText()); // Cálculo del importe de la compra icompra = docenas * precio; // Cálculo del importe de descuento if (docenas >= 6 ) idescuento = 0.15 * icompra; else idescuento = 0.10 * icompra; // Cálculo del obsequio if (docenas >= 30 ) obsequio = docenas / 3 * 2 ; else obsequio = 0 ; // Cálculo del importe a pagar ipagar = icompra - idescuento; // Salida de resultados txtArea.setText( "-------------------" + "\n" ); txtArea.append( "Monto de la compra: " + "S/." + icompra + "\n" ); txtArea.append( "Monto del descuento: " + "S/." + idescuento + "\n" ); txtArea.append( "Monto a pagar: " + "S/." + ipagar + "\n" ); txtArea.append( "Obsequio: " + obsequio + " lapiceros" ); } if (e.getSource() == btnBorrar) { txtDocenas.setText( "" ); txtPrecio.setText( "" ); txtArea.setText( "" ); txtDocenas.requestFocus(); } } } |
Problema 2
Una institución benéfica recibe anualmente una donación proveniente de Europa y lo reparte entre un centro de salud, un comedor de niños y una parte lo invierte en la bolsa de acuerdo a lo siguiente:
• Si el monto de la donación es de $10000 o más: 30% se destina al centro de salud, 50% al comedor de niños y el resto se invierte en la bolsa.
• Si el monto de la donación es menor que $10000: 25% se destina al centro de salud, 60% al comedor de niños y el resto se invierte en la bolsa.
La institución desea saber cuanto de dinero destinará a cada rubro anualmente.
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Inicio // Declaración de variables real donacion, comedor, salud, bolsa // Entrada de datos Leer donacion // Reparte la donación si( donacion >= 10000 ){ comedor = 0.30*donacion salud = 0.50*donacion bolsa = 0.20*donacion } sino{ comedor = 0.25*donacion salud = 0.60*donacion bolsa = 0.15*donacion } // Salida de resultados Imprimir comedor, salud, bolsa 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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema2 extends JApplet implements ActionListener { /** * */ private static final long serialVersionUID = 8496579728313908763L; // Declaración de variables JLabel lblDonacion; JTextField txtDonacion; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblDonacion = new JLabel( "Donación:" ); lblDonacion.setBounds( 15 , 15 , 70 , 23 ); getContentPane().add(lblDonacion); txtDonacion = new JTextField(); txtDonacion.setBounds( 80 , 15 , 50 , 23 ); getContentPane().add(txtDonacion); 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 , 70 , 394 , 130 ); getContentPane().add(scpScroll); } // -------------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si hizo click en Procesar if (e.getSource() == btnProcesar) { // Declaración de variables double donacion, centrosalud, comedorniños, bolsa; // Entrada de datos donacion = Double.parseDouble(txtDonacion.getText()); // Reparte la donación if (donacion >= 10000 ) { centrosalud = 0.30 * donacion; comedorniños = 0.50 * donacion; bolsa = 0.20 * donacion; } else { centrosalud = 0.25 * donacion; comedorniños = 0.60 * donacion; bolsa = 0.15 * donacion; } // Salida de resultados txtArea.setText( "Centro de salud: " + "S/." + centrosalud + "\n" ); txtArea.append( "Comedor de niños: " + "S/." + comedorniños + "\n" ); txtArea.append( "La bolsa: " + "S/." + bolsa); } if (e.getSource() == btnBorrar) { txtDonacion.setText( "" ); txtArea.setText( "" ); txtDonacion.requestFocus(); } } } |
Problema 3
En una oficina de empleos categorizan a los postulantes en función del sexo y de la edad de acuerdo a lo siguiente:
• Si la persona es de sexo femenino: categoría FA si tiene menos de 23 años y FB en caso contrario.
• Si la persona es de sexo masculino: categoría MA si tiene menos de 25 años y MB en caso contrario.
Diseñe un programa que determine la categoría de un postulante.
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 sexo, edad cadena categoria // Entrada de datos Leer sexo, edad // Determina la categoría si( sexo == 0 ){ si( edad < 23 ) categoria = "FA" sino categoria = "FB" } sino { si( edad < 25 ) categoria = "MA" sino categoria = "MB" } // Salida de resultados Imprimir categoria 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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema3 extends JApplet implements ActionListener { /** * */ private static final long serialVersionUID = 3780056368010462959L; // Declaración de variables JLabel lblSexo, lblEdad; JComboBox cboSexo; JTextField txtEdad; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblSexo = new JLabel( "Sexo:" ); lblSexo.setBounds( 15 , 15 , 70 , 23 ); getContentPane().add(lblSexo); cboSexo = new JComboBox(); cboSexo.addItem( "Femenino" ); cboSexo.addItem( "Masculino" ); cboSexo.setBounds( 80 , 15 , 100 , 23 ); getContentPane().add(cboSexo); lblEdad = new JLabel( "Edad:" ); lblEdad.setBounds( 15 , 39 , 70 , 23 ); getContentPane().add(lblEdad); txtEdad = new JTextField(); txtEdad.setBounds( 80 , 39 , 100 , 23 ); getContentPane().add(txtEdad); 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 , 70 , 394 , 130 ); 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 sexo, edad; String categoria, s; // Entrada de datos sexo = cboSexo.getSelectedIndex(); edad = Integer.parseInt(txtEdad.getText()); // Proceso de cálculo if (sexo == 0 ) { s = "Femenino" ; if (edad < 23 ) categoria = "FA" ; else categoria = "FB" ; } else { s = "Masculino" ; if (edad < 25 ) categoria = "FA" ; else categoria = "FB" ; } // Salida de resultados txtArea.setText( "-------------------" + "\n" ); txtArea.append( "Sexo: " + s + "\n" ); txtArea.append( "Edad: " + edad + "\n" ); txtArea.append( "Categoria: " + categoria); } if (e.getSource() == btnBorrar) { txtEdad.setText( "" ); txtArea.setText( "" ); cboSexo.requestFocus(); } } } |
Problema 4
Diseñe un algoritmo que lea un número entero positivo de tres cifras y determine si las cifras del número son o no consecutivas (en orden ascendente o en orden descendente). En caso que el número no cumpla con ser positivo de tres cifras, imprima el mensaje: "El número debe ser positivo de tres cifras".
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Inicio // Declaración de variables entero numero, u, d, c cadena resultado // Entrada de datos Leer numero // Prosigue si el número es correcto, sino pone un mensaje de error si( numero >= 100 && numero <= 999 ){ // Determina las cifras del número c = numero/100 d = (numero%100)/10 u = numero%10 // Determina si las cifras del número son o no consecutivas si((d == c+1 && u == d+1) || (d == c-1 && u == d-1)) resultado = "Las cifras del número son consecutivas" sino resultado = "Las cifras del número no son consecutivas" // Salida de resultados Imprimir resultado } sino Imprimir "El número debe ser positivo de tres cifras" 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 | package problemas_resueltos; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema4 extends JApplet implements ActionListener { // Declaración de variables JLabel lblNumero; JTextField txtNumero; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblNumero = new JLabel( "Número:" ); lblNumero.setBounds( 15 , 15 , 70 , 23 ); getContentPane().add(lblNumero); txtNumero = new JTextField(); txtNumero.setBounds( 80 , 15 , 100 , 23 ); getContentPane().add(txtNumero); 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 , 70 , 394 , 130 ); 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 numero, c, d, u; String resultado = "" ; // Entrada de datos numero = Integer.parseInt(txtNumero.getText()); // Validamos que el número ingresado sea de 3 cifras if (numero >= 100 && numero <= 999 ) { // Descomponer en cifras el número c = numero / 100 ; d = numero % 100 / 10 ; u = numero % 100 % 10 ; // Proceos de cálculo // Determina si las cifras del número son o no consecutivas if ((d == c + 1 && u == d + 1 ) || (d == c - 1 && u == d - 1 )) resultado = "Las cifras del número son consecutivas" ; else resultado = "Las cifras del número no son consecutivas" ; /* * if ((c < d && d < u) || (c > d && d > u)) resultado = * "Las cifras del número son consecutivas"; else resultado = * "Las cifras del número no son consecutivas"; */ } else resultado = "El numero debe ser positivo de 3 cifras" ; // Salida de resultados txtArea.setText( "-------------------" + "\n" ); txtArea.append( "Número: " + numero + "\n" ); txtArea.append( "Resultado: " + resultado); } // Si hizo clic en Borrar if (e.getSource() == btnBorrar) { txtNumero.setText( "" ); txtArea.setText( "" ); txtNumero.requestFocus(); } } } |
Problema 5
Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a los siguientes criterios:
• Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento.
• Para los cientos en exceso sobre 5, se hace un descuento del 15% por cada ciento.
Diseñe un algoritmo que determine el importe bruto, el importe del descuento y el importe a pagar por una compra de papel bond.
Algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Inicio // Declaración de variables real importebru, importedes, importepag, precio entero cientos // Entrada de datos Leer precio, cientos // Determina el importe bruto importebru = precio*cientos // Determina el importe del descuento si( cientos <= 5 ) importedes = 0.10*precio*cientos sino importedes = 0.10*5*precio + 0.15*(cientos-5)*precio; // Determina el importe a pagar importepag = importebru - importedes // Salida de resultados Imprimir importebru, importedes, importepag 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 | package problemas_resueltos; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema5 extends JApplet implements ActionListener { // Declaración de variables JLabel lblCientos, lblPrecio; JTextField txtCientos, txtPrecio; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblCientos = new JLabel( "Cientos:" ); lblCientos.setBounds( 15 , 15 , 70 , 23 ); getContentPane().add(lblCientos); txtCientos = new JTextField(); txtCientos.setBounds( 80 , 15 , 50 , 23 ); getContentPane().add(txtCientos); lblPrecio = new JLabel( "Precio:" ); lblPrecio.setBounds( 15 , 39 , 70 , 23 ); getContentPane().add(lblPrecio); txtPrecio = new JTextField(); txtPrecio.setBounds( 80 , 39 , 50 , 23 ); getContentPane().add(txtPrecio); 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 , 70 , 394 , 130 ); 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 cientos; double precio, ibruto, idescuento, ipagar; // Entrada de datos cientos = Integer.parseInt(txtCientos.getText()); precio = Double.parseDouble(txtPrecio.getText()); // Determinar el importe bruto ibruto = cientos * precio; // Determinar el importe de descuento if (cientos <= 5 ) idescuento = 0.10 * precio * cientos; else idescuento = 0.10 * 5 * precio + 0.15 * (cientos - 5 ) * precio; // Determinar el importe a pagar ipagar = ibruto - idescuento; // Salida de resultados txtArea.setText( "-------------------" + "\n" ); txtArea.append( "Importe bruto: " + ibruto + "\n" ); txtArea.append( "Importe de descuento: " + idescuento + "\n" ); txtArea.append( "Importe a pagar: " + ipagar); } // Si hizo clic en Borrar if (e.getSource() == btnBorrar) { txtCientos.setText( "" ); txtPrecio.setText( "" ); txtArea.setText( "" ); txtCientos.requestFocus(); } } } |
Problema 6
Una empresa desea adquirir cierta cantidad de unidades de dos productos A y B a un proveedor cuyos precios son los siguientes:
• Producto A: costo unitario igual a S/.25.0 y 15% de descuento para más de 50 unidades adquiridas.
• Proveedor B: costo unitario igual a S/.27.5 y 10% de descuento para más de 35 unidades adquiridas.
Diseñe un programa que determine el importe bruto total, el importe del descuento total y el importe total a pagar por la compra de cierta cantidad de unidades de ambos productos.
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 | Inicio // Declaración de variables entero unidadesA, unidadesB real impcomA, impdesA, imppagA real impcomB, impdesB, imppagB real impcomtot, impdestot, imppagtot // Entrada de datos Leer unidadesA, unidadesB // Determina los importes para el proveedor A impcomA = unidadesA*25.0 si( unidadesA > 50 ) impdesA = 0.15*impcomA sino impdesA = 0 imppagA = impcomA - impdesA // Determina los importes para el proveedor B impcomB = unidadesB*27.5 si( unidadesB > 35 ) impdesB = 0.10*impcomB sino impdesB = 0 imppagB = impcomB - impdesB // Determina los importes totales impcomtot = impcomA + impcomB impdestot = impdesA + impdesB imppagtot = imppagA + imppagB // Salida de resultados Imprimir impcomtot, impdestot, imppagtot 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 | package problemas_resueltos; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema6 extends JApplet implements ActionListener { // Declaración de variables JLabel lblProductoA, lblProductoB; JTextField txtProductoA, txtProductoB; JButton btnProcesar, btnBorrar; JTextArea txtArea; JScrollPane scpScroll; // -------------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblProductoA = new JLabel( "Producto A:" ); lblProductoA.setBounds( 15 , 15 , 80 , 23 ); getContentPane().add(lblProductoA); txtProductoA = new JTextField(); txtProductoA.setBounds( 90 , 15 , 50 , 23 ); getContentPane().add(txtProductoA); lblProductoB = new JLabel( "Producto B:" ); lblProductoB.setBounds( 15 , 39 , 80 , 23 ); getContentPane().add(lblProductoB); txtProductoB = new JTextField(); txtProductoB.setBounds( 90 , 39 , 50 , 23 ); getContentPane().add(txtProductoB); 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 , 70 , 394 , 130 ); 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 unidadesA, unidadesB; double icompraA, icompraB, idescuentoA, idescuentoB; Double icompratot, idescuentotot, ipagartot; // Entrada de datos unidadesA = Integer.parseInt(txtProductoA.getText()); unidadesB = Integer.parseInt(txtProductoB.getText()); // Determinar el importe bruto de ambos productos icompraA = unidadesA * 25.0 ; icompraB = unidadesB * 27.5 ; // Determinar el descuento del producto A if (unidadesA > 50 ) idescuentoA = 0.15 * icompraA; else idescuentoA = 0 ; // Determinar el descuento del producto B if (unidadesB > 35 ) idescuentoB = 0.10 * icompraB; else idescuentoB = 0 ; // Cálculo del importe bruto total icompratot = icompraA + icompraB; // Cálculo del importe de descuento total idescuentotot = idescuentoA + idescuentoB; // Cálculo del importe a pagar total ipagartot = icompratot - idescuentotot; // Salida de resultados txtArea.setText( "-------------------" + "\n" ); txtArea.append( "Importe de la compra total: " + icompratot + "\n" ); txtArea.append( "Importe de descuento total: " + idescuentotot + "\n" ); txtArea.append( "Importe a pagar total: " + ipagartot); } // Si hizo clic en Borrar if (e.getSource() == btnBorrar) { txtProductoA.setText( "" ); txtProductoB.setText( "" ); txtArea.setText( "" ); txtProductoA.requestFocus(); } } } |
Para recordar
- Poner ; al final de la condición de un if...else causa un error de sintaxis.
- Si el cuerpo del if o el cuerpo del else incluyen más de una acción, 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 if...else 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!