6 dic 2010

Estructura de selección multiple switch

También conocido como estructura de decisión múltiple permite seleccionar un camino entre varios caminos posibles teniendo como base el valor de la variable seleccionada la cual es comparada con una lista de constantes (case n) enteras o de carácter. Cuando el valor de la variable seleccionada es igual a una de las constantes ‘n’, se ejecuta la instrucción o el grupo de instrucciones que pertenecen a dicha constante.

** Si el valor de la variable seleccionada no coincide con ninguna constante, se ejecuta la instrucción por defecto (default), si es que existe.

** Si un case carece de un break (romper), se ejecutaran los demás case que siguen hasta encontrar un break o hasta llegar al final de switch.




según (variable) {
          caso c1: instrucción 1
          romper
          caso c2: instrucción 2
          romper
          caso cN: instrucción N
          romper
          defecto: instrucción defecto
}


A continuación desarrollaremos un programa que lea un número entero comprendido entre el número 1 al 7 y nos muestre a que día de la semana pertenece (1 lunes, 2 martes, ..., 7 domingo), caso contrario (si el número ingresado esta fuera de rango) muestre un mensaje de error.

-> Pseudocódigo:Inicio

//Declaración de variables
entero n

//Entrada de datos
Leer n

//Proceso inicia selección
según (n) {
          caso 1: visualizar "Lunes"
          romper
          caso 2: visualizar "Martes"
          romper
          caso 3: visualizar "Miércoles"
          romper
          caso 4: visualizar "Jueves"
          romper
          caso 5: visualizar "Viernes"
          romper
          caso 6: visualizar "Sábado"
          romper
          defecto: visualizar "Error: ingrese número dentro del rango"
          //finaliza el proceso de selección
fin según
Fin


-> Codificación del applet:
creamos un nuevo proyecto (basic java applet) con el nombre "diasemana".


import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class diasemana extends JApplet implements ActionListener{

          //Declaración de controles
          JLabel lbldia;
          JTextField txtdia;
          JButton btnProcesar,btnBorrar;
          JTextArea txtA;
          JScrollPane scpResultado;

          //Desarrollo de la interfaz gráfica de usuario GUI
          public void init(){
                    getContentPane().setLayout(null);

                    lbldia = new JLabel("Número 1 - 7");
                    lbldia.setBounds(20,20,80,23);
                    getContentPane().add(lbldia);

                    txtdia = new JTextField();
                    txtdia.setBounds(100,20,100,23);
                    getContentPane().add(txtdia);

                    btnProcesar = new JButton("Procesar");
                    btnProcesar.setBounds(230,20,100,23);
                    btnProcesar.addActionListener(this);
                    getContentPane().add(btnProcesar);

                    btnBorrar = new JButton("Borrar");
                    btnBorrar.setBounds(230,50,100,23);
                    btnBorrar.addActionListener(this);
                    getContentPane().add(btnBorrar);

                    txtA = new JTextArea();

                    scpResultado = new JScrollPane(txtA);
                    scpResultado.setBounds(20,80,311,100);
                    getContentPane().add(scpResultado);
          }

          //Eventos tipo ActionEvent
          public void actionPerformed( ActionEvent e ){

                    //Si se hizo click en procesar
                    if(e.getSource()==btnProcesar){
                              //Declaración de variables
                              int n;

                              //Entrada de datos
                              n = Integer.parseInt(txtdia.getText());

                              //Proceso de selección
                              switch (n) {
                                        case 1: txtA.setText("Lunes"); break;
                                        case 2: txtA.setText("Martes"); break;
                                        case 3: txtA.setText("Miércoles"); break;
                                        case 4: txtA.setText("Jueves"); break;
                                        case 5: txtA.setText("Viernes"); break;
                                        case 6: txtA.setText("Sábado"); break;
                                        case 7: txtA.setText("Domingo"); break;
                                        default: txtA.setText("Error: ingrese número dentro del rango");
                              }
                    }

                    //Si se hizo click en borrar
                    if(e.getSource()==btnBorrar){
                              txtA.setText("");
                              txtdia.setText("");
                              txtdia.requestFocus();
                    }
          }
}



Ir a estructura de selección doble if...else.
Ir a métodos tipo void.

No hay comentarios:

Publicar un comentario