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.

noviembre 22, 2011

Tabular función: f(x) = x+1

No se espanten, esto será muy sencillo, le pediremos al usuario que introduzca un limite inferior y un limite superior, y dados estos limites haremos un programa que tabule la función f(x)=x+1 verán que fácil es:
//Archivo: Funcion.java

import javax.swing.JOptionPane;

public class Funcion{

 public static void main(String args[]){
 
  String valor=JOptionPane.showInputDialog("Limite inferior");
  int inferior=Integer.parseInt(valor);
  valor=JOptionPane.showInputDialog("Limite superior");
  int superior=Integer.parseInt(valor);
  int contador;
  
  for(contador=inferior ; contador>=inferior&&contador<=superior ; contador++)
   System.out.println("f("+contador+") = "+(contador+1));
 }
}
Como ven, pedimos 2 datos al usuario con el uso de JOptionPane y esos dos datos, que son los limites, los convertimos a formato int (o double) para poder operar con ellos. Una vez convertidos estos números  hacemos un for en el cual asignamos a contador lo que contiene nuestro limite inferior (esto es para que for empiece a contar desde el limite inferior que haya introducido el usuario), después daremos la condición para que siga iterando el for, y sera que contador debe ser mayor o igual a nuestro limite inferior y también contador debe ser menor o igual a nuestro limite superior (de modo que deja de iterar cuando el contador llegue hasta el limite superior que el usuario introdujo). En cada iteracion del for mostrará un mensaje que constara de la "f" de función, dentro del paréntesis el numero que valga la variable contador (las "x"), este numero irá variando de uno en uno desde el numero del limite inferior hasta el del numero superior, y posteriormente "=" seguido de la operación "x+1" osea lo que contenga nuestra variable contador más 1.

noviembre 18, 2011

Cuidado al no usar parentesis

Analicen el siguiente código:
/**
* Archivo: Parentesis.java
* @author BelloCerecero
* @version 1.00
* @since 2011/11/17
*/
public class Parentesis
{
 public static void main (String[] args)
 {
  //declaramos dos variables de tipo int
  int resultado;
  int resultado2;
  
  //le asignamos una operacion sin parentesis
  resultado = 8 + 4 / 2;
  
  //le asignamos una operacion con parentesis
  resultado2 = (8 + 4)/2;
  
  System.out.println(resultado);
  System.out.println(resultado2);
 }  
}

Ola mejor algunos pensaran que las dos variables deberán de tener el mismo valor puesto que se les asigna lo mismo matemáticamente hablando sumar 8 + 4 y dividir entre dos, pero en java hay jerarquía de operaciones si no utilizamos paréntesis java lo que hace es dividir primero y luego sumar, dado que la división es de mayor prioridad que la suma.