viernes, 13 de julio de 2012

04.01 Ciclos Fijos: while y do..while

Estatuto while
Sintaxis
   while ( condición )    

             estatuto;
 
Si se requiere realizar más de un estatuto se deben utilizar llaves.
   while ( condición )    

   {

            bloque de estatutos;

    }

Aquí se ejecuta el (los) estatuto (s) mientras la condición es verdadera; al momento de ser falsa termina el ciclo.
Si la condición es falsa la primera vez nunca se ejecuta(n)  el (los) estatuto(s).
Ejemplo: Applet  que toma la cantidad de dinero a invertir, el porcentaje de inversión mensual y el dinero que se quiere tener invertido finalmente y va desplegando en un campo (TextArea) el nuevo saldo mes tras mes.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

// <applet width="300" height="400" code="AppletCiclos1"></applet>
public class AppletCiclos1 extends Applet implements ActionListener {
   Label l1, l2, l3,l4;
   TextField t1, t2,t3;
   TextArea ta;
   Button b;

   public AppletCiclos1() {
      l1 = new Label("Inversión Inicial");
      t1 = new TextField(8);
      l2 = new Label("% interes mensual");
      t2 = new TextField(5);
      l3 = new Label("Inversión Final");
      t3 = new TextField(8);
      l4 = new Label("Resultados de la Inversión");
      ta = new TextArea(20,30);
      b = new Button("VER MES");
      add(l1);
      add(t1);
      add(l2);
      add(t2);
      add(l3);
      add(t3);
      add(b);
      add(l4);
      add(ta);
      b. addActionListener(this);
   }

   public void actionPerformed(ActionEvent ae) {
      double invinicial = Double.parseDouble(t1.getText());
      double interes = Double.parseDouble(t2.getText());
      double invfinal = Double.parseDouble(t3.getText());
      ta.setText("");
      int mes = 1;
      double saldo = invinicial;
      while (saldo < invfinal) {
         saldo = saldo * (1 + interes/100);
         ta.append(" mes " + mes + " Saldo = " + saldo + "\n");
         mes ++;
      }
   }
}
    Un ejemplo de la ejecución de este applet es:


En este applet hemos utilizado el texto de área TextArea t, el cual nos ayuda a mostrar la información por línea, haciendo uso del método append(), es importante también notar que dentro del método append hemos concatenado el caracter "\n", el cual nos sirve para saltar de línea dentro del objeto TextArea, ya que con el append añadimos caracteres que son concatenados, pero nunca se salta de línea.
Estatuto do .. while
Sintaxis
   do
           estatuto;
  while ( condición );    

 
Si se requiere realizar más de un estatuto se deben utilizar llaves.
   do
   {

            bloque de estatutos;

    }
    while ( condición );       // nota que lleva ;    
Se realizan los estatutos y se verifica la condición,  mientras sea verdadera se sigue ejecutando; al momento de ser falsa termina
 el ciclo. 
Dado que la condición se revisa al final del ciclo el (los) estatuto (s) se realizan al menos una vez a diferencia del while
Ejemplo: Dado un número en un campo texto, desplegar en otro el número de dígitos del primero
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

// <applet width="300" height="400" code="AppletCiclos2"></applet>
public class AppletCiclos2 extends Applet implements ActionListener {
   Label l1, l2;
   TextField t1, t2;
   Button b;

   public AppletCiclos2() {
      l1 = new Label("Numero");
      t1 = new TextField(8);
      l2 = new Label("Digitos");
      t2 = new TextField(20);
      b = new Button("SABER DIGITOS");
      add(l1);
      add(t1);
      add(b);
      add(l2);
      add(t2);
      b. addActionListener(this);
   }

   public void actionPerformed(ActionEvent ae) {
      int x = Integer.parseInt(t1.getText());
      int cant = 0;
      do
      {
         x = x / 10;
         cant++;
      } while (x > 0);
      t2.setText("El numero tiene " + cant + " digitos");
   }
}
      La visualización de este applet queda de la siguiente manera:
 

No hay comentarios:

Publicar un comentario en la entrada