noviembre 23, 2011

Días y Meses (For anidados)

¡Buenas tardes lectores! Acá mi profesor de Física 2 de mi ingeniería me trae algo atareado con algunas ejercicios de electromagnetismo, pero a petición de un lector escribo este breve post para aclarar un poco más el tema de los for anidados.

Como ya habíamos mencionado los for anidados no son más que un (o más) for dentro de otro for, y para explicarlo mejor escribí un pequeño programa que imprime el numero de meses de un año y en cada mes imprime el numero de los días del mes. Aquí el código:
//Archivo: ForAnidados.java

public class ForAnidados{
    
    public static void main(String args[]){
        
        for(int mes=1; mes<=12; mes++){
            System.out.println("Mes "+mes);
            
            for(int dia=1; dia<=30; dia++)
                System.out.println("\tDia "+dia);
        }
    }
}
Para este programa usamos 2 for, anidados. Hacemos nuestro main, y en la linea 7 hacemos un for que se encargara de la impresión de los meses, en la linea 10 anidamos otro for que se encargara de la impresión de los días.

En el primer for declaramos nuestra variable int mes que sera nuestro contador para ese for, y le establecemos la condición de que debe iterar mientras mes valga menos o igual a 12 (ya que son 12 los meses del año) y después le indicamos que nuestra variable mes debe incrementar en uno (++).

Cuando se entra al primer for, mes vale 1 e imprime el mensaje "Mes 1", después de imprimir ese mensaje en la linea 8 se pasa a la linea 10 donde se declara el segundo for, para este declaramos int dia (esta variable sera nuestro contador para este for) y le establecemos la condición de que siga iterando mientras dia sea menor o igual a 30 (ya que son los días que contiene un mes, le puse 30 por dafault, pero recuerde que hay meses que contienen mas o menos de 30 días) y después le damos un incremento a nuestra variable día. Después en la linea 11, imprimimos un mensaje en pantalla "Dia" y se le concatena lo que contenga nuestra variable día.

De modo que cuando el primer for (el del mes) valga 1 y tenga su primer ciclo, pasara al segundo for el cual ciclara 30 veces imprimiendo el numero de los días del mes desde 1 hasta 30. Cuando el primer for valga 2 y entre a su segundo ciclo, el segundo for volverá a iterar otras 30 veces hasta imprimir los números de días del mes; y así sucesivamente hasta cuando el primer for deje de iterar, y esto pasara cuando ya no se cumpla la condición de que mes sea menor o igual a 12 (se abran acabado los meses del año). En resumen: por cada ciclo que de el primer for, el segundo dará 30 iteraciones.

Pensemos más a fondo y podremos observa que aun podemos anidar más for a este programa, solo hemos contemplado días y meses para este programa, pero, si por ejemplo, pensamos en décadas o siglos podremos anidar aun más for a este programita sencillo.

1 comentario:

  1. pues seria bueno que publicaras algo sobre listas ligadas y con algo me refiero a todo lo que sepas.

    ResponderBorrar