2 dic 2010

Estructuras repetitivas

También conocidas como estructuras iterativas o bucles, permiten ejecutar un conjunto de instrucciones ( cuerpo del bucle ) mientras se cumpla una determinada condición; cada repetición de secuencias de instrucciones se conoce como iteración.

Estructura de repetición WHILE:
Esta estructura primero verifica la condición y luego ejecuta la acción. La acción puede ser una acción simple o una acción compuesta ( bloque de instrucciones encerradas entre llaves ).


SINTAXIS:

Para una sola acción:

Para varias acciones:



Estructura de repetición DO WHILE:
Este tipo de estructura primero ejecuta la acción y luego verifica la condición. La acción puede ser simple o compuesta.


SINTAXIS:

Para una sola acción:


Para varias acciones:



Estructura de repetición FOR:
Este tipo de estructuras incluye un contador como parte de su estructura, lo cual, quiere decir que se conoce el número de veces que se repetirá el cuerpo del bucle.



SINTAXIS:

Para una sola acción:


Para varias acciones:


NOTA: El contador del for puede estar declarado dentro de él mismo, en este caso el contador se considera como variable local al for, siendo inaccesible fuera de él. Por lo tanto, dos o más for no anidados, pueden declarar contadores con el mismo nombre.

Aplicación 1: Desarrollar un programa que liste los N primeros y reporte su suma.

Pseudocódigo:




Codificación del applet:

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

public class ER1 extends JApplet implements ActionListener{

          JButton btnGenerar, btnReset;
          JLabel lblEtiqueta;
          JTextField txtNum;
          JTextArea txtA;
          JScrollPane scpScroll;

          public void init() {
                    getContentPane().setLayout(null);
                    getContentPane().setBackground(Color.darkGray);

                    lblEtiqueta = new JLabel("INGRESE LÍMITE:");
                    lblEtiqueta.setBounds(15, 15, 130, 25);
                    lblEtiqueta.setForeground(Color.white);
                    lblEtiqueta.setFont(new Font("arial",1,14));
                    getContentPane().add(lblEtiqueta);

                    txtNum = new JTextField();
                    txtNum.setBounds(140, 15, 60, 25);
                    txtNum.setFont(new Font("arial",1,14));
                    getContentPane().add(txtNum);

                    btnGenerar = new JButton("GENERAR");
                    btnGenerar.setBounds(220, 15, 100, 25);
                    btnGenerar.addActionListener(this);
                    getContentPane().add(btnGenerar);

                    txtA = new JTextArea();
                    txtA.setFont(new Font("Arial",1,14));

                    scpScroll = new JScrollPane(txtA);
                    scpScroll.setBounds(20, 50, 300, 200);
                    getContentPane().add(scpScroll);
          }

          public void actionPerformed(ActionEvent e) {
                    if(e.getSource()==btnGenerar){
                              procesar();
                    }
          }

          private void procesar(){
                    //i es la variable contador y suma es el acumulador
                    int i = 1, suma = 0, num;
                    num = Integer.parseInt(txtNum.getText());
                    limpiar();
                    while(i<=num){
                              imprimir("\t"+i);
                              suma += i;
                              i++;
                    }
                    imprimir("\nSumatoria: "+suma);
          }

          private void limpiar(){
                    txtA.setText("");
          }

          private void imprimir(String cad){
                    txtA.append(cad+"\n");
          }
}

* En el código se está empleando la estructura WHILE a continuación se apreciará como sería la solución empleando las estructuras DO WHILE y FOR:

Estructura DO WHILE

private void procesar(){
          //i es la variable contador y suma es el acumulador
          int i = 1, suma = 0, num;
          num = Integer.parseInt(txtNum.getText());
          limpiar();
          do{
                    imprimir("\t"+i);
                    suma += i;
                    i++;
          } while (i <= num);
          imprimir("\nSumatoria: "+suma);
}


Estructura FOR

private void procesar(){
          //i es la variable contador y suma es el acumulador
          int suma = 0, num;
          num = Integer.parseInt(txtNum.getText());
          limpiar();
          for(int i = 1; i <= num; i++){
                    imprimir("\t"+i);
                    suma += i;
          }
          imprimir("\nSumatoria: "+suma);
}

Resultado



** OJO: Como se puede apreciar en la estructura FOR el contador ( i ) se esta declarando dentro de la misma estructura a comparación de las estructuras WHILE y DO WHILE.

Ir a métodos con valor de retorno.

6 comentarios: