noviembre 08, 2011

Tabla en Java

El siguiente programa esta basado en el siguiente planteamiento:



Entonces siguiendo con las condiciones propuestas el programa quedaría de la siguiente manera(sin usar arreglos):
/**
* Archivo: Tabla.java
* @author Bello Cerecero
* @version 1.0
* @since 07/11/2011
*/
public class Tabla
{
public static void main(String[] args)
{
int renglones = 20;
int columna1 = 0;
int columna2 = 1;
int columna3 = 1;
int columna4 = 1;

int auxColumna2;
int auxColumna3;
int auxColumna4 = 0;

System.out.print(columna1 + "\t" + columna2 +
"\t" + columna3 + "\t\t" + columna4 +"\n");

for(int i = 1; i < renglones; i++)
{
columna1 = i;
auxColumna2 = (columna2 + 2);
auxColumna3 = columna2 + columna3 + columna4;

if(i == 1)
auxColumna4 = columna3 + auxColumna3;
else
auxColumna4 = auxColumna3 + columna4;

System.out.print(columna1 + "\t" + auxColumna2 +
"\t" + auxColumna3 + "\t\t" + auxColumna4+"\n");

columna2 = auxColumna2;
columna3 = auxColumna3;
columna4 = auxColumna4;
}
}
}

Primero declaramos las variables que utilizaremos(de la linea 11 a la 19) y se inicializan según las condiciones que se nos piden, como se puede observar hay algunas variables que tiene "aux" estas son auxiliares que nos ayudaran para poder hacer las operaciones. En la linea 21 imprimimos en consola la parte que se pide en el ejercicio de ahi utilizamos un for para hacer las iteraciones, dentro del for en la linea 26 a columna1 se le asignara lo que tenga i(siguiendo las reglas del ejercicio), a auxColumna2 se le asignara lo que resulte de sumar columna2 mas dos(linea 27), a auxColumna3 se le asignara lo que resulte de sumar columna1 mas columna2 mas columna3(linea 28), ahora para que se pueda cumplirf la ultima regla tenemos que poner una condicion (linea 29), que solo en la primera iteracion a auxColumna4 se le asignara lo que resulte de columna3 mas auxColumna3(linea 30), ya despues de la primera iteracion a auxColumna4 se le asiganar de lo que resulte de auxColumna3 mas columna4(linea 32), ya despues de esto imprimimos en consola las cuatro columnas utilizando el tabulador horizontal "\t".

noviembre 07, 2011

Números romanos


Con el uso del switch haremos un programa sencillo, el cual pide al usuario un numero del 1 al 10 y el programa muestra el numero que el usuario introdujo en numero romano:
//Archivo: Romano.java

import javax.swing.JOptionPane;

public class Romano{

 public static void main(String args[]){
  
  String valor=JOptionPane.showInputDialog("Introduce un numero de 1 a 10");
  int numero=Integer.parseInt(valor);
  
  switch(numero){
   
   case 1:
    System.out.println("I");
   break;
   
   case 2:
    System.out.println("II");
   break;
   
   case 3:
    System.out.println("III");
   break;
   
   case 4:
    System.out.println("IV");
   break;
   
   case 5:
    System.out.println("V");
   break;
   
   case 6:
    System.out.println("VI");
   break;
   
   case 7:
    System.out.println("VII");
   break;
   
   case 8:
    System.out.println("VIII");
   break;
   
   case 9:
    System.out.println("IX");
   break;
   
   case 10:
    System.out.println("X");
   break;
   
   default:
    System.out.println("Numero no valido");
  }
 }

noviembre 06, 2011

Hay que programar para los tontos...

Algo que siempre tomo en cuenta a la hora de programar es que los programas que creemos deben de estar orientados a resolver la tarea que nos pidan, pero sobre todo que nuestro programa sea a prueba de tontos. Pensemos en que nosotros como personas diestras en el arte de programar entendemos muy bien el código de nuestro programa y su funcionamiento, pero NO PROGRAMAMOS PARA NOSOTROS MISMOS, nuestros programas están enfocados para el uso de cualquier persona (el usuario) y este no comprende el programa del mismo modo que el programador, por eso tenemos que siempre darle indicaciones de lo que debe hacer o de los datos que debe insertar para que nuestro programa resuelva su tarea. Como nosotros nos entendemos más hablando en código que con palabras, se los explicare así:

El siguiente es un programa muy sencillo, el cual pide un numero al usuario y el mismo numero lo muestra en pantalla:
//Archivo: Tontos.java

import javax.swing.JOptionPane;

public class Tontos{
 
   public static void main(String args[]){
  
      String valor=JOptionPane.showInputDialog("Dame un numero");
      int numero=0;
      numero=Integer.parseInt(valor);
    
      System.out.println("El numero que introdujo es: "+numero);
   }
}
Y listo, ¿es muy sencillo, no? el programa ya cumplió, y realiza a la perfección la tarea que se le encomendó. Ademas estamos siendo muy claros, le estamos diciendo al usuario que introduzca un NUMERO. Pero ¿que pasaría si es usuario introduce una letra o simplemente cancela la operación?, Nuestro programa se cae; se dice que nuestro programa se cae cuando no realiza la tarea a causa de un error lógico como este:


Como ya lo estudiamos anteriormente, si el usuario presiona el botón "Cancelar" el JOptionPane nos retorna un valor null y este valor no puede ser convertido a un entero, así que es ahí donde surge el error lógico y se cae el programa y nos muestra el mensaje anterior. Del mismo modo si el usuario introduce una letra en lugar de un numero, Integer.parseInt(); no podrá convertirlo a un valor entero y se caerá el programa. También se caerá el programa si el usuario no introduce nada y solo presiona aceptar puesto que nos retornara una cadena vacía que tampoco puede convertirse a un valor int. Cuando esto sucede nuestro programa no sirve.

Para esto JAVA implementa un par de instrucciones que nos ayudarán a combatir esos errores lógicos. Para el manejo de excepciones (o errores) tenemos el try{} catch{}, que funcionan como a continuación se explica retomando el programa anterior pero implementando estas instrucciones para mejorar nuestro programa, de tal modo que quedaría asi: