Asi, en el tema de hoy utilizando descomposición en módulos mediante métodos tipo void y las estructuras básicas y de selección, diseñaremos programas en Java que resuelvan problemas planteados.
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 el método tipo void?
Un método tipo void es un módulo de programa que puede recibir datos de entrada a través de variables locales denominadas parámetros; pero, que no retorna ningún resultado al punto donde es invocado, razón por el que se le conoce también como método sin valor de retorno. Tanto este tipo de método, al igual que los métodos que retornan un valor, pueden recibir datos de entrada a través de sus parámetros.
Los métodos tipo void pueden dividirse a su vez en dos tipos:
. Métodos tipo void sin parámetros.
. Métodos tipo void con parámetros.
Método tipo void sin parámetros
Estos métodos no pueden recibir datos de entrada ni retornar ningún resultado al punto de su invocación.
Método tipo void sin parámetros |
Cuando se programa usando métodos se siguen dos etapas.
Primero, el método debe definirse. Esto consiste en crear el método ubicándolo en alguna parte del programa.
Segundo, el método creado debe ser invocado en el lugar donde se requiera. Esto consiste en poner el método en ejecución.
Definición
Este tipo de método se define de la siguiente manera:
1 2 3 4 5 6 7 | void nombre(){ // Declaración de variables locales // Cuerpo del método } |
Invocación
Este tipo de método se invoca de la siguiente manera:
1 | nombre(); |
Donde:
nombre: es el nombre del método.
Métodos tipo void con parámetros
Estos métodos reciben datos de entrada a través de variables locales al método denominadas parámetros; pero, igual que en el caso anterior no pueden retornar ningún resultado al punto de su invocación.
Método tipo void con parámetros |
Donde:
p1, p2, p3, etc: son los parámetros del método.
El número de parámetros es variable y depende de las necesidades del método.
Definición
Este tipo de método se define de la siguiente manera:
1 2 3 4 5 6 7 | void nombre( tipo1 p1, tipo2 p2, tipo3 p3, . . . ){ // Declaración de variables locales // Cuerpo del método } |
Donde:
nombre: es el nombre del método
p1, p2, p3, ...: son los nombres de los parámetros
tipo1, tipo2, tipo3, …: son los tipos de datos de los parámetros
Llamada
Este tipo de método se invoca de la siguiente manera:
1 | nombre(v1, v2, v3, . . .); |
Donde:
nombre: es el nombre del método invocado
v1, v2, v3, ...: son los valores dados a los parámetros
Ejemplos
Problema 1
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. Declare todas las variables como globales y use métodos tipo void.
Programa
Código Fuente Modo 1
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema01 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JComboBox choCategoria; JLabel lblCategoria, lblPromedio; JTextField txtPromedio; JScrollPane scpScroll; // Declaración de variables globales para el algoritmo int categoria; double actualpen, nuevapen, descuento, promedio; // ----------------------------------------------------------------------- // 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 , 75 ); getContentPane().add(scpScroll); } // ----------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si hizo clic en Procesar if (e.getSource() == btnProcesar) procesar(); // Si hizo clic en Borrar if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { ingresarDatos(); calcularPensionActual(); calcularDescuento(); calcularNuevaPension(); mostrarResultados(); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtS.setText( "" ); txtPromedio.setText( "" ); txtPromedio.requestFocus(); } // ----------------------------------------------------------------------- // Ingresa datos void ingresarDatos() { categoria = choCategoria.getSelectedIndex(); promedio = Double.parseDouble(txtPromedio.getText()); } // ----------------------------------------------------------------------- // Calcula la pensión actual void calcularPensionActual() { if (categoria == 0 ) actualpen = 550 ; else if (categoria == 1 ) actualpen = 500 ; else if (categoria == 2 ) actualpen = 460 ; else actualpen = 400 ; } // ----------------------------------------------------------------------- // Cálcula el descuento void calcularDescuento() { 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; } // ----------------------------------------------------------------------- // Calcula la nueva pensión void calcularNuevaPension() { nuevapen = actualpen - descuento; } // ----------------------------------------------------------------------- // Muestra resultados void mostrarResultados() { txtS.setText( "" ); imprimir( "Pensión actual : " + actualpen); imprimir( "Descuento : " + descuento); imprimir( "Nueva pensión : " + nuevapen); } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Código Fuente Modo 2
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema01b extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JComboBox choCategoria; JLabel lblCategoria, lblPromedio; JTextField txtPromedio; JScrollPane scpScroll; // Declaración de variables globales para el algoritmo int categoria; double actualpen, nuevapen, descuento, promedio; // ----------------------------------------------------------------------- // 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 , 75 ); getContentPane().add(scpScroll); } // ----------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { // Si hizo clic en Procesar if (e.getSource() == btnProcesar) procesar(); // Si hizo clic en Borrar if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { // Entrada de datos categoria = getCategoria(); promedio = getPromedio(); // Proceso de cálculo actualpen = calcularPensionActual(categoria); descuento = calcularDescuento(promedio, actualpen); nuevapen = calcularNuevaPension(actualpen, descuento); // Salida de resultados txtS.setText( "" ); imprimir( "Pensión actual : " + actualpen); imprimir( "Descuento : " + descuento); imprimir( "Nueva pensión : " + nuevapen); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtS.setText( "" ); txtPromedio.setText( "" ); txtPromedio.requestFocus(); } // ----------------------------------------------------------------------- // Lee y retorna la categoría int getCategoria() { return choCategoria.getSelectedIndex(); } // ----------------------------------------------------------------------- // Lee y retorna el promedio double getPromedio() { return Double.parseDouble(txtPromedio.getText()); } // ----------------------------------------------------------------------- // Calcula y retorna la pensión actual double calcularPensionActual( int categoria) { switch (categoria) { case 0 : return 550 ; case 1 : return 500 ; case 2 : return 460 ; default : return 400 ; } } // ----------------------------------------------------------------------- // Cálcula el descuento double calcularDescuento( double promedio, double actualpen) { if (promedio <= 13.99 ) return 0 ; else if (promedio <= 15.99 ) return 0.10 * actualpen; else if (promedio <= 17.99 ) return 0.12 * actualpen; else return 0.15 * actualpen; } // ----------------------------------------------------------------------- // Calcula la nueva pensión double calcularNuevaPension( double actualpen, double descuento) { return actualpen - descuento; } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 2
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. Declare todas las variables y use métodos tipo void.
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema02 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblMinutosTar, lblNumeroObs; JTextField txtMinutosTar, txtNumeroObs; JScrollPane scpScroll; // Declaración de variables globales para el algoritmo int minutosTar, numeroObs, puntajePun, puntajeRen, puntajeTot; double bonificacion; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblMinutosTar = new JLabel( "Minutos de tardanza" ); lblMinutosTar.setBounds( 15 , 15 , 160 , 23 ); getContentPane().add(lblMinutosTar); lblNumeroObs = new JLabel( "Numero de observaciones" ); lblNumeroObs.setBounds( 15 , 39 , 160 , 23 ); getContentPane().add(lblNumeroObs); txtMinutosTar = new JTextField(); txtMinutosTar.setBounds( 175 , 15 , 120 , 23 ); getContentPane().add(txtMinutosTar); txtNumeroObs = new JTextField(); txtNumeroObs.setBounds( 175 , 39 , 120 , 23 ); getContentPane().add(txtNumeroObs); 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) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtMinutosTar.setText( "" ); txtNumeroObs.setText( "" ); txtS.setText( "" ); txtMinutosTar.requestFocus(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { ingresarDatos(); determinarPuntajePuntualidad(); determinarPuntajeRendimiento(); determinarPuntajeTotal(); determinarBonificacion(); mostrarResultados(); } // ----------------------------------------------------------------------- // Efectúa la entrada de datos void ingresarDatos() { minutosTar = Integer.parseInt(txtMinutosTar.getText()); numeroObs = Integer.parseInt(txtNumeroObs.getText()); } // ----------------------------------------------------------------------- // Determina el puntaje por puntualidad void determinarPuntajePuntualidad() { 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 ; } // ----------------------------------------------------------------------- // Determina el puntaje por rendimiento void determinarPuntajeRendimiento() { 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 ; } // ----------------------------------------------------------------------- // Determina el puntaje total void determinarPuntajeTotal() { puntajeTot = puntajePun + puntajeRen; } // ----------------------------------------------------------------------- // Determina la bonificación void determinarBonificacion() { 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; } // ----------------------------------------------------------------------- // Muestra los resultados void mostrarResultados() { txtS.setText( "" ); imprimir( "Puntaje por puntualidad : " + puntajePun); imprimir( "Puntaje por rendimiento : " + puntajeRen); imprimir( "Puntaje total : " + puntajeTot); imprimir( "Bonificación : " + bonificacion); } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 3
Diseñe un programa que permita convertir un monto de dinero dado en euros a sus equivalentes en yenes, francos y rublos. Considere que:
1 dólar = 0.6750 euros
1 dólar = 108.44 yenes
1 dólar = 24.493 francos
1 dólar = 5.4984 rublos
Use métodos tipo void y considere todas las variables como globales.
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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema03 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblEuros; JTextField txtEuros; JScrollPane scpScroll; // Declaración de variables globales para el algoritmo double meuros, myenes, mfrancos, mrublos; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblEuros = new JLabel( "Euros" ); lblEuros.setBounds( 15 , 15 , 90 , 23 ); getContentPane().add(lblEuros); txtEuros = new JTextField(); txtEuros.setBounds( 105 , 15 , 100 , 23 ); getContentPane().add(txtEuros); 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 , 100 ); getContentPane().add(scpScroll); } // ----------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { if (e.getSource() == btnProcesar) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtEuros.setText( "" ); txtS.setText( "" ); txtEuros.requestFocus(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { ingresarDatos(); convertirAYenes(); convertirAFrancos(); convertirARublos(); mostrarResultados(); } // ----------------------------------------------------------------------- // Ingresa datos void ingresarDatos() { meuros = Double.parseDouble(txtEuros.getText()); } // ----------------------------------------------------------------------- // Convierte a yenes void convertirAYenes() { myenes = (meuros / 0.6750 ) * 108.44 ; } // ----------------------------------------------------------------------- // Convierte a francos void convertirAFrancos() { mfrancos = (meuros / 0.6750 ) * 24.493 ; } // ----------------------------------------------------------------------- // Convierte a rublos void convertirARublos() { mrublos = (meuros / 0.6750 ) * 5.4984 ; } // ----------------------------------------------------------------------- // Muestra resultados void mostrarResultados() { txtS.setText( "" ); imprimir( "Yenes : " + myenes); imprimir( "Francos : " + mfrancos); imprimir( "Rublos : " + mrublos); } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 4
Diseñe un programa que permita convertir un monto de dinero dado en euros a sus equivalentes en yenes, francos y rublos. Considere que:
1 dólar = 0.6750 euros
1 dólar = 108.44 yenes
1 dólar = 24.493 francos
1 dólar = 5.4984 rublos
Use métodos tipo void y considere todas las variables como locales.
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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema04 extends JApplet implements ActionListener { // Declaración de variables globales JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblEuros; JTextField txtEuros; JScrollPane scpScroll; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblEuros = new JLabel( "Euros" ); lblEuros.setBounds( 15 , 15 , 90 , 23 ); getContentPane().add(lblEuros); txtEuros = new JTextField(); txtEuros.setBounds( 105 , 15 , 100 , 23 ); getContentPane().add(txtEuros); 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 , 100 ); getContentPane().add(scpScroll); } // ----------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { if (e.getSource() == btnProcesar) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { // Declaración de variables locales double meuros; // Entrada de datos meuros = Double.parseDouble(txtEuros.getText()); // Invocación de métodos txtS.setText( "" ); convertirAYenes(meuros); convertirAFrancos(meuros); convertirARublos(meuros); } // ----------------------------------------------------------------------- // Convierte a yenes void convertirAYenes( double xeuros) { double myenes; myenes = (xeuros / 0.6750 ) * 108.44 ; imprimir( "Yenes : " + myenes); } // ----------------------------------------------------------------------- // Convierte a francos void convertirAFrancos( double xeuros) { double mfrancos; mfrancos = (xeuros / 0.6750 ) * 24.493 ; imprimir( "Francos : " + mfrancos); } // ----------------------------------------------------------------------- // Convierte a rublos void convertirARublos( double xeuros) { double mrublos; mrublos = (xeuros / 0.6750 ) * 5.4984 ; imprimir( "Rublos : " + mrublos); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtEuros.setText( "" ); txtS.setText( "" ); txtEuros.requestFocus(); } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 5
Diseñe un programa que determine el área lateral, el área total y el área de la base de un cilindro. Considere que:
areabase =π r 2
arealateral = 2π r h
areatotal = 2π r (r + h)
Donde r es el radio y h la altura.
Declare todas las variables como globales y use métodos tipo void.
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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema05 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblRadio, lblAltura; JTextField txtRadio, txtAltura; JScrollPane scpScroll; // Declaración de variables globales para el algoritmo double radio, altura, arealat, areabas, areatot; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblRadio = new JLabel( "Radio" ); lblRadio.setBounds( 15 , 15 , 90 , 23 ); getContentPane().add(lblRadio); lblAltura = new JLabel( "Altura" ); lblAltura.setBounds( 15 , 39 , 90 , 23 ); getContentPane().add(lblAltura); txtRadio = new JTextField(); txtRadio.setBounds( 105 , 15 , 120 , 23 ); getContentPane().add(txtRadio); txtAltura = new JTextField(); txtAltura.setBounds( 105 , 39 , 120 , 23 ); getContentPane().add(txtAltura); 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) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método para el botón Borrar void borrar() { txtRadio.setText( "" ); txtAltura.setText( "" ); txtS.setText( "" ); txtRadio.requestFocus(); } // ----------------------------------------------------------------------- // Método para el botón Procesar void procesar() { ingresarDatos(); calcularAreaBase(); calcularAreaLateral(); mostrarResultados(); } // ----------------------------------------------------------------------- // Ingresa datos void ingresarDatos() { radio = Double.parseDouble(txtRadio.getText()); altura = Double.parseDouble(txtAltura.getText()); } // ----------------------------------------------------------------------- // Calcula el área de la base void calcularAreaBase() { areabas = Math.PI * radio * radio; } // ----------------------------------------------------------------------- // Calcula el área lateral void calcularAreaLateral() { arealat = 2 * Math.PI * radio * altura; } // ----------------------------------------------------------------------- // Calcula el área total void calcularAreaTotal() { areatot = 2 * Math.PI * radio * (radio + altura); } // ----------------------------------------------------------------------- // Muestra resultados void mostrarResultados() { txtS.setText( "" ); imprimir( "Area lateral : " + arealat); imprimir( "Area base : " + areabas); imprimir( "Area total : " + areatot); } // ----------------------------------------------------------------------- // Imprime una línea de texto con un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 6
Diseñe un programa que determine el área lateral, el área total y el área de la base de un cilindro. Considere que:
areabase =π r 2
arealateral = 2π r h
areatotal = 2π r (r + h)
Donde r es el radio y h la altura.
Declare todas las variables como locales y use métodos tipo void.
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 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema06 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblRadio, lblAltura; JTextField txtRadio, txtAltura; JScrollPane scpScroll; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario public void init() { getContentPane().setLayout( null ); lblRadio = new JLabel( "Radio" ); lblRadio.setBounds( 15 , 15 , 90 , 23 ); getContentPane().add(lblRadio); lblAltura = new JLabel( "Altura" ); lblAltura.setBounds( 15 , 39 , 90 , 23 ); getContentPane().add(lblAltura); txtRadio = new JTextField(); txtRadio.setBounds( 105 , 15 , 120 , 23 ); getContentPane().add(txtRadio); txtAltura = new JTextField(); txtAltura.setBounds( 105 , 39 , 120 , 23 ); getContentPane().add(txtAltura); 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) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método para el botón Borrar void borrar() { txtRadio.setText( "" ); txtAltura.setText( "" ); txtS.setText( "" ); txtRadio.requestFocus(); } // ----------------------------------------------------------------------- // Método para el botón Procesar void procesar() { // Declaración de variables locales double radio, altura; // Entrada de datos radio = Double.parseDouble(txtRadio.getText()); altura = Double.parseDouble(txtAltura.getText()); // Invocación de métodos txtS.setText( "" ); calcularAreaBase(radio); calcularAreaLateral(radio, altura); calcularAreaTotal(radio, altura); } // ----------------------------------------------------------------------- // Calcula el área de la base void calcularAreaBase( double radio) { double areabas; areabas = Math.PI * radio * radio; imprimir( "Area base : " + areabas); } // ----------------------------------------------------------------------- // Calcula el área lateral void calcularAreaLateral( double radio, double altura) { double arealat; arealat = 2 * Math.PI * radio * altura; imprimir( "Area lateral : " + arealat); } // ----------------------------------------------------------------------- // Calcula el área total void calcularAreaTotal( double radio, double altura) { double areatot; areatot = 2 * Math.PI * radio * (radio + altura); imprimir( "Area total : " + areatot); } // ----------------------------------------------------------------------- // Imprime una línea de texto con un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Problema 7
Diseñe un programa que determine la cantidad de días y el nombre de un mes conociendo los valores numéricos del mes y del año.
Declare todas las variables como locales y use métodos tipo void.
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | import java.awt.event.*; import java.awt.*; import javax.swing.*; public class Problema07 extends JApplet implements ActionListener { // Declaración de variables globales para la GUI JButton btnProcesar, btnBorrar; JTextArea txtS; JLabel lblAño, lblMes; JTextField txtAño, txtMes; JScrollPane scpScroll; // ----------------------------------------------------------------------- // Crea la interfaz gráfica de usuario GUI public void init() { getContentPane().setLayout( null ); txtMes = new JTextField(); txtMes.setBounds( 61 , 15 , 107 , 23 ); getContentPane().add(txtMes); txtAño = new JTextField(); txtAño.setBounds( 61 , 39 , 107 , 23 ); getContentPane().add(txtAño); 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); lblAño = new JLabel( "Año" ); lblAño.setBounds( 15 , 39 , 42 , 23 ); getContentPane().add(lblAño); lblMes = new JLabel( "Mes" ); lblMes.setBounds( 15 , 15 , 42 , 23 ); getContentPane().add(lblMes); txtS = new JTextArea(); txtS.setFont( new Font( "monospaced" , 0 , 12 )); scpScroll = new JScrollPane(txtS); scpScroll.setBounds( 15 , 75 , 394 , 87 ); getContentPane().add(scpScroll); } // ----------------------------------------------------------------------- // Procesa eventos de tipo ActionEvent public void actionPerformed(ActionEvent e) { if (e.getSource() == btnProcesar) procesar(); if (e.getSource() == btnBorrar) borrar(); } // ----------------------------------------------------------------------- // Método del botón Borrar void borrar() { txtS.setText( "" ); txtMes.setText( "" ); txtAño.setText( "" ); txtMes.requestFocus(); } // ----------------------------------------------------------------------- // Método del botón Procesar void procesar() { // Declaración de variables locales int mes, año; // Entrada de datos mes = Integer.parseInt(txtMes.getText()); año = Integer.parseInt(txtAño.getText()); // Invocación de métodos txtS.setText( "" ); determinaNombreMes(mes); determinaNumeroDiasMes(mes, año); } // ----------------------------------------------------------------------- // Determina el nombre del mes void determinaNombreMes( int mes) { // Declaración de variables locales String nombre; // Determina el nombre del mes switch (mes) { case 1 : nombre = "Enero" ; break ; case 2 : nombre = "Febrero" ; break ; case 3 : nombre = "Marzo" ; break ; case 4 : nombre = "Abril" ; break ; case 5 : nombre = "Mayo" ; break ; case 6 : nombre = "Junio" ; break ; case 7 : nombre = "Julio" ; break ; case 8 : nombre = "Agosto" ; break ; case 9 : nombre = "Setiembre" ; break ; case 10 : nombre = "Octubre" ; break ; case 11 : nombre = "Noviembre" ; break ; default : nombre = "Diciembre" ; } // Muestra el nombre del mes imprimir( "Nombre del mes : " + nombre); } // ----------------------------------------------------------------------- // Determina el número de días del mes void determinaNumeroDiasMes( int mes, int año) { // Declaración de variables locales int dias; // Determina el número de días del mes switch (mes) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : dias = 31 ; break ; case 4 : case 6 : case 9 : case 11 : dias = 30 ; break ; default : if ((año % 4 == 0 ) && ((año % 100 != 0 ) || (año % 400 == 0 ))) dias = 29 ; else dias = 28 ; } // Muestra el número de días del mes imprimir( "Número de días : " + dias); } // ----------------------------------------------------------------------- // Imprime una cadena de texto incluyendo un salto de línea al final void imprimir(String cad) { txtS.append(cad + "\n" ); } } |
Para recordar
Un método con valor de retorno es un método que puede recibir datos de entrada a través de variables locales al método conocidas como parámetros y que retorna un valor al punto donde es invocado.
Descargar ejercicios resueltos
Descargar archivo
Puedes completar lo aprendido asistiendo el material en video.
Clic aquí
¡Acabas de ver el tema número 21 del curso de Introducción a la Algoritmia y a la programación en Java! ¡Fácil verdad!
Ir al índice
¡Qué pases un buen día!
No hay comentarios, ¡cuéntame algo!
Me gustaría saber tu opinión. ¡Saludos!