Módulo 2: Estatutos de Control                                      

     1. Decisiones


Estatuto if

Este estatuto nos sirve para realizar alguna(s) instrucción(es) en vez de otra(s) de acuerdo a alguna condición que resulte verdadera, analizaremos la sintaxis de las decisiones en Java y después utilizaremos algunos ejemplos.

Sintaxis

      if ( condición

              estatuto;

       else                                            // la parte else es opcional

              estatuto;        

En caso de requerir más de un estatuto es necesario usar llaves.

      if ( condición ) {
              bloque de estatutos;
       }

       else  {                                          // la parte else es opcional
              bloque de estatutos;        
       }

 

Ejecución del if

La estructura if (sin else), ejecuta el estatuto solo cuando la condición es verdadera; en caso de que sea falsa brinca el estatuto

 (o estatutos en caso de tener más de uno entre llaves)

 

La estructura de selección if / else ,  ejecuta la(s) accion(es) después de la parte if cuando la condición es verdadera; en caso de

 que sea falsa ejecuta la(s) acción(es) que está(n) después del else.

Ejemplo

     if (promedio >= 70)
          t.setText(" Aprobado");
     else
          t.setText("Reprobado");

     

if´s anidados

Se dice que hay if anidados cuando existe un if/else dentro de otra estructura if/else

Ejemplo:

   Determinar si un número es positivo, cero o negativo.

       if (num > 0)
          t.setText("El número es positivo");
       else if (num == 0)
           t.setText("El número es cero");
       else
           t.setText("El número es negativo");

El applet quedaria como sigue:

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

// <applet width="200" height="200" code="AppletDecisiones1"></applet>

public class AppletDecisiones1 extends Applet implements ActionListener {

   Label l1, l2;

   TextField t1, t2;

   Button b;

 

   public AppletDecisiones1() {

      l1 = new Label("Numero");

      t1 = new TextField(6);

      l2 = new Label("Resultado");

      t2 = new TextField(18);

      b = new Button("Calcula");

      add(l1);

      add(t1);

      add(l2);

      add(t2);

      add(b);

      b. addActionListener(this);

   }

   public void actionPerformed(ActionEvent ae) {

      int num = Integer.parseInt(t1.getText());

      if (num > 0)

         t2.setText("El número es positivo");

      else if (num == 0)

         t2.setText("El número es cero");

      else

         t2.setText("El número es negativo");

   }

}


El applet en ejecución se muestra como sigue:

 

 

En el applet anterior hicimos uso del constructor TextField(entero) donde entero es un número entero para definir el número de espacios que se quieren usar en el campo de texto creado.

 

Si tenemos el siguiente fragmento de código:

      if (condición 1)
          if (condición 2)
               estatuto;
          else               // este else pertenece al if de la condición 2, pues se asocia al if más cercano
               estatuto;

Y queremos que el else pertenezca al primer if debemos poner {} para determinar donde termina el segundo if:

      if (condición 1)
      {
         if (condición 2)
               estatuto;
      }
      else               // con el uso de llaves cerramos el if anidado y el else
         estatuto;       // pertenece al primer if

 

Ejemplos de Programas

A continuación tendrás algunos ejemplos de programas en C++:

Ejemplo I: Programa que calcula la energía necesaria para la combustión de un compuesto dada la cantidad de átomos "x" y "y" de dos diferentes elementos, de acuerdo a la siguiente fórmula:

               4x + 3x2y - 2y si x > 0 , y >= 0

e(x,y)  =   x2 - 4(y - x) + y2 si x < 0 , y >= 0

               x2 + y + y (x- 2) en cualquier otro caso

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

import java.lang.Math;

// <applet width="200" height="200" code="AppletDecisiones2"></applet>

public class AppletDecisiones2 extends Applet implements ActionListener {

   Label l1, l2, l3;

   TextField t1, t2, t3;

   Button b;

 

   public AppletDecisiones2() {

      l1 = new Label("VALOR x");

      t1 = new TextField(6);

      l2 = new Label("VALOR y");

      t2 = new TextField(6);

      l3 = new Label("Resultado");

      t3 = new TextField(6);

      b = new Button("Calcula");

      add(l1);

      add(t1);

      add(l2);

      add(t2);

      add(l3);

      add(t3);

      add(b);

      b. addActionListener(this);

   }

   public void actionPerformed(ActionEvent ae) {

      double x = Double.parseDouble(t1.getText());

      double y = Double.parseDouble(t2.getText());

      double res;

      if (y >= 0)

         if ( x > 0)

            res = 4 * x + 3 * Math.pow (x,2) * y - 2 * y;

         else

            res = Math.pow(x,2) - 4* (y - x) + Math.pow (y,2);

      else

         res = Math.pow (x,2) + y + y * (x-2);

      t3.setText("" + res);

   }

}

 

Ejemplo II: Programa que lee 3 números enteros diferentes y los despliega de mayor a menor.

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

 

// <applet width="200" height="200" code="AppletDecisiones3"></applet>

public class AppletDecisiones3 extends Applet implements ActionListener {

   Label l1, l2, l3,l4;

   TextField t1, t2, t3,t4;

   Button b;

 

   public AppletDecisiones3() {

      l1 = new Label("VALOR 1");

      t1 = new TextField(6);

      l2 = new Label("VALOR 2");

      t2 = new TextField(6);

      l3 = new Label("VALOR 2");

      t3 = new TextField(6);

      l4 = new Label("Resultado");

      t4 = new TextField(16);

      b = new Button("Calcula");

      add(l1);

      add(t1);

      add(l2);

      add(t2);

      add(l3);

      add(t3);

      add(b);

      add(l4);

      add(t4);

      b. addActionListener(this);

   }

   public void actionPerformed(ActionEvent ae) {

      double a = Double.parseDouble(t1.getText());

      double b = Double.parseDouble(t2.getText());

      double c = Double.parseDouble(t3.getText());

      double res;

      if (a >= b)

         if ( a >= c)

            t4.setText(""+ a + " es el mayor");

         else

            t4.setText(""+ c + " es el mayor");

      else

         if ( b >= c)

            t4.setText(""+ b + " es el mayor");

         else

            t4.setText(""+ c + " es el mayor");

   }

La aplicación ejecutando funcionaría como se observa:

Estatuto Switch

Se utiliza para ejecutar acciones diferentes  según el valor de una expresión o variable. Consiste en una serie de de etiquetas case

y un case por omisión (default)


Sintaxis

   switch ( variable)     la variable es de tipo entero o caracter
   {
        case valor1 : accion1; break;
        case valor2 : accion2; break;
             .
             .
        case valor n : accionn;break;
        default: accionD;
    } ;

La acción 1 se ejecuta si la variable adquiere el valor1.

La acción 2 se ejecuta si la variable adquiere el valor 2.

La acción n se ejecuta si la variable adquiere el valor n.

Cualquier otro valor de la variable conduce a la realización de la secuencia accionD, indicada por la palabra reservada default.

La secuencia default puede omitirse

 

Estatuto break

Cuando se encuentra una sentencia case que concuerda con el valor del switch se ejecutan las sentencias que le siguen y todas las demás a partir de ahí, a no ser que se introduzca una sentencia break para salir de la sentencia switch.

      Ejemplo : Programa que pide un número de mes y escribe la cantidad de días que tiene.

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

 

// <applet width="200" height="200" code="AppletDecisiones4"></applet>

public class AppletDecisiones4 extends Applet implements ActionListener {

   Label l1, l2;

   TextField t1, t2;

   Button b;

 

   public AppletDecisiones4() {

      l1 = new Label("mes");

      t1 = new TextField(3);

      l2 = new Label("Resultado");

      t2 = new TextField(16);

      b = new Button("VER MES");

      add(l1);

      add(t1);

      add(b);

      add(l2);

      add(t2);

      b. addActionListener(this);

      }

   public void actionPerformed(ActionEvent ae) {

      int mes = Integer.parseInt(t1.getText());

      switch (mes)

      {

         case 1:

            t2.setText("Enero");

            break;

         case 2:

            t2.setText("Febrero");

            break;

         case 3:

            t2.setText("Marzo");

            break;

         case 4:

            t2.setText("Abril");

            break;

         case 5:

            t2.setText("Mayo");

            break;

         case 6:

            t2.setText("Junio");

            break;

         case 7:

            t2.setText("Julio");

            break;

         case 8:

            t2.setText("Agosto");

            break;

         case 9:

            t2.setText("Septiembre");

            break;

         case 10:

            t2.setText("Octubre");

            break;

         case 11:

            t2.setText("Noviembre");

            break;

         case 12:

            t2.setText("Diciembre");

            break;

         default:

            t2.setText("Error en el mes");

      }

   }

}

 

Algunos ejemplos de esta aplicación son:

 

                  

 

 

Ejercicio

1. Haz un applet que te pida el número de dias trancurridos en el año y el año en el que se trate (mediante dos campos de texto) y que te calcule el día y mes que se trate y te deje el mismo año (tres campos de texto resultantes), por ejemplo si tiene 70 dias del año 2004, entonces deberá de escribir en el campo resultante de dias la cantidad de 10, en el mes la cantidad de 3, y el mismo año en el año resultante, entonces para 2004,70  deberá de dar 10, 3, 2004, como se muestra en el ejemplo:

2. Haz un applet que haga lo contrario al applet anterior, que tenga tres campos de texto como dato (dia, mes y año) y que te calcule los dias transcurridos en el año, por ejemplo si le das 10, 3, 2004, deberá de calcular  70, 2004, como se muestra en el ejemplo:


 

Ligas sugeridas
http://www-sldnt.slac.stanford.edu/jas/Documentation/UsersGuide/java.htm#Conditonal%20and%20Loop%20Statements

Regresar                                                                                                                                                                       Siguiente