domingo, 18 de diciembre de 2011

Estructuras básicas de programación: for

La estructura "For" especifica instrucciones para que estas se ejecuten varias veces; El proceso de ejecutar varias veces es mejor conocido como ciclo. Se dice que el ciclo a dado una vuelta cada vez que se ejecuta el código especificado.

La estructura "for", tiene la siguiente sintaxis:

for( Declaración y/o inicialización de variable ; Condición para permanecer en el ciclo  ; Cambio de valor de variable )
{//llave que abre

 // instrucciones que se ejecutarán varias veces. 
 
}//llave que cierra


Las llaves que se encuentran debajo del "for", agrupan el código que se repetirá. A continuación se explican las tres partes que se encuentran dentro del paréntesis:

Declaración y/o inicialización de variable: En esta parte irá una variable que puede ser de cualquier tipo, y de la cual se puede especificar su declaración e inicialización:
int variable=0;
o simplemente la inicialización de una variable ya existente:
variable=0;
esta variable servirá para controlar cuantas vueltas va a dar el ciclo.

Cambio de valor de variable: Acá irá la instrucción que se encarga de cambiarle el valor a la variable que inicialmente se especificó, y esto lo hace por cada vuelta del ciclo.

Condición para permanecer en el ciclo: En esta parte irá la condición para que el ciclo de vueltas; Cuando la misma deje de cumplirse, el programa seguirá con la ejecución de lo que esta después de la llave que cierra. Dicha condición debe ser una instrucción que devuelva un valor booleano.

En otras palabras, en esta parte se le pone condición al valor de la variable que ya hemos mencionado anteriormente, y todo eso con el fin de colocar un límite a la cantidad de vueltas que dará el ciclo.

Ejemplo:

int A = 1;
int i;

for( i=0; i<5 ; i++ )
{

   A = A + 5;

}




En el ejemplo anterior  el ciclo ejecutará varias veces el código especificado: A=A+5, y lo hará mientras la variable "i" sea menor que 5; Teniendo en cuenta que esta variable se inicializa en cero, y que por cada vuelta se incrementa en uno, entonces el código especificado se ejecutará cinco veces y al terminar la ejecución la variable "A" tendrá el valor de 26. También se puede apreciar que la variable "i" utilizada dentro del "for" ya había sido declarada.

Otro ejemplo:

int A = 1;

for(int i=0; i<5 ; i++ )
{

   A = A + i;

}



Después de ejecutar el código anterior la variable "A" tendrá el valor de 11. Se puede apreciar también que la variable "i" se declara dentro del "for", esta forma de trabajar limita a solo poder utilizar la variable "i" dentro de ese mismo"for".

Otro ejemplo, esta vez utilizando una variable de tipo char:

int A = 1;

for(char i='a'; i<='z' ; i++)
{
    if(i < 'd')
    {

    A++;

    }
}



En el código anterior la variable A se incrementa bajo una condición(if) .
También se aprecia el recorrido del ciclo por todo el abecedario, esto es posible porque cuando se incrementa una variable "char" en realidad se incrementa un número el cual es un código ascii equivalente al mismo.

Ahora otro ejemplo mas realista en donde se suman todos los dígitos de un número dado:

int numero=1254;
  
int sumaDigitos;
  
for(sumaDigitos=0 ; numero != 0 ; numero=numero/10)
{
    sumaDigitos = sumaDigitos + (numero % 10);
}
  
System.out.println(sumaDigitos);


El código anterior imprimirá 12.

En el siguiente ejemplo se simula un cajero automático, el cual tiene que devolver la cantidad de billetes correspondientes a una cantidad pedida:

int cantidadPedida=379000;// 379000 pesos colombianos
int i,cantidadBilletes=0;
System.out.print("Billetes de 50000 pesos: ");

for(i=cantidadPedida ; i>=50000 ; i-=50000)
{
 cantidadBilletes++;
}


System.out.print(cantidadBilletes+"\n");
cantidadPedida=i;
cantidadBilletes=0;
System.out.print("Billetes de 20000 pesos: ");

for(i=cantidadPedida ; i>=20000 ; i-=20000)
{
 cantidadBilletes++;
}

System.out.print(cantidadBilletes+"\n");
cantidadPedida=i;
cantidadBilletes=0;
System.out.print("Billetes de 10000 pesos: ");

for(i=cantidadPedida ; i>=10000 ; i-=10000)
{
 cantidadBilletes++;
}

System.out.print(cantidadBilletes+"\n");
cantidadPedida=i;
cantidadBilletes=0;
System.out.print("Billetes de 5000 pesos: ");

for(i=cantidadPedida ; i>=5000 ; i-=5000)
{
 cantidadBilletes++;
}

System.out.print(cantidadBilletes+"\n");
cantidadPedida=i;
cantidadBilletes=0;
System.out.print("Billetes de 2000 pesos: ");

for(i=cantidadPedida ; i>=2000 ; i-=2000)
{
 cantidadBilletes++;
}

System.out.print(cantidadBilletes+"\n");
cantidadPedida=i;
cantidadBilletes=0;
System.out.print("Billetes de 1000 pesos: ");

for(i=cantidadPedida ; i>=1000 ; i-=1000)
{
 cantidadBilletes++;
}

System.out.print(cantidadBilletes+"\n");



después de ejecutar el código anterior, se habrá impreso:

Billetes de 50000 pesos: 7
Billetes de 20000 pesos: 1
Billetes de 10000 pesos: 0
Billetes de 5000 pesos: 1
Billetes de 2000 pesos: 2
Billetes de 1000 pesos: 0

Por ultimo vamos a ver un ejemplo con "for" anidados, el código imprime los números del 2 al 20 y menciona si son o no números primos:

for(int a=2 ; a<20 ; a++)
{
   
 String salida=" es primo";
   
 for(int b=a-1 ; b>1 ; b--)
 {
    
   if( a % b == 0 )
   {
    salida=" no es primo";
    break;
   }
  
 }
    
 System.out.println("el número "+a+salida);
}




En el código anterior se utiliza la palabra reservada "break" para salir del "for" actual, sin importar que falten vueltas.
Por otro lado la salida que resulta después de la ejecución de este código es:

el número 2 es primo
el número 3 es primo
el número 4 no es primo
el número 5 es primo
el número 6 no es primo
el número 7 es primo
el número 8 no es primo
el número 9 no es primo
el número 10 no es primo
el número 11 es primo
el número 12 no es primo
el número 13 es primo
el número 14 no es primo
el número 15 no es primo
el número 16 no es primo
el número 17 es primo
el número 18 no es primo
el número 19 es primo
el número 20 no es primo

2 comentarios:

  1. Hola, interesante saber lo básico para el comienzo en el desarrollo en este lenguajes de programación, pero quiero compartir el ejercicio del cajero automático en java, el cual funciona con cuadros de dialogo, algo mas gráfico que el que tienes :P espero sea de gran utilidad como lo fue para mi :)

    ResponderEliminar
  2. Gracias por compartirlo julian, tu aporte servirá para aquellos usuarios que ya estén familiarizados con las librerías Swing, tema que no tocamos en este tipo de post pues estos están orientados a profundizar en la lógica de programación para que después el usuario pueda maniobrar en estas estructuras en cualquier lenguaje. :)

    ResponderEliminar