Archive for the ‘programacion’ Category

h1

Kateando II: ahora en Java

15/03/11

Desde hace un tiempo tenía en la lista de “pendiente” el aprender un poco de programación en Java. Últimamente trabajo cada vez más administrando contenedores de aplicaciones Java así que he pensado que no me vendrá nada mal. Sobre todo para coger un poco de vocabulario marciano programaciano de cara a un futuro curso de Weblogic.

Como soy así de machote, sin tener ni puta idea de lo que hacía instalé el Eclipse, hice acopio de documentación (1 y 2) y aprovechando el post anterior me propuse hacer la kata de los números FizzBuzz.

Tras un poco de cacharreo y un mucho de pegarme con el Eclipse aquí está mi primer programa en Java:


public class FizzBuzz {

 public static void main(String[] args) {

 boolean F;
 boolean B;

 for (int i=1; i<101; i++){
    F = false;
    B = false;
    String Num = new Integer(i).toString();

    if (i % 3 == 0 || Num.contains("3"))
       F = true;
    if (i % 5 == 0 || Num.contains("5"))
       B = true;

    if (F)
    {
       if (B)
          System.out.println("FizzBuzz");
       else
          System.out.println("Fizz");
    }
    else
    {
       if (B)
          System.out.println("Buzz");
       else
          System.out.println(i);
    }
  }
 }
}

He de confesar que el toString y el contains lo he copiado de la kata de Diego Guevara :P

Primeras conclusiones

Aunque sepas programar, tomatelo con calma y empieza por el hello world. Por lo que he podido ver el Java es un mundo aparte y si pretendes empezar a lo grande espero por tu bien que seas un superdotado.

El Eclipse es mucho lio. Al menos para novatos. Yo al final he optado por instalar un compilador en mi Ubuntu y es todo mucho más sencillo.

Ayudita:

Instalar compilador Java:

caic@miburro# sudo aptitude install openjdk-6-jdk

Compilar programa:

caic@miburro# javac programita.java

Esto crea el fichero binario programita.class en el mismo path.

Ejecutar programa:

caic@miburro# java programita

PD: cualquier ayuda, consejo, manual será siempre bienvenido :)

Anuncios
h1

Kateando un poco

4/03/11

Y no hablo de catear, que también, hablo de katas de código. En resumen son pequeños ejercicios de programación y la gracia es que muy 2.0. Es decir, luego comentas con la gente sobre las soluciones propuestas.

El caso es que vía Mundo Geek llego a una curiosa iniciativa con un nombre de lo más descriptivo: 12 meses, 12 katas.

El problema de marzo es el siguiente (traduzco y resumo el original):

Escribe un programa que imprima los números del 1 al 100 con las siguientes excepciones:

  • Si el número es divisible por 3 ha de imprimir “Fizz”.
  • Si el número es divisible por 5 ha de imprimir “Buzz”.
  • Si el número contiene un 3 ha de imprimir “Fizz”.
  • Si el número contiene un 5 ha de imprimir “Buzz”.

Ejemplo de salida:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz

… etc hasta 100

Y aquí va mi propuesta en shell script:

Editado (07/03/11): el script anterior no mostraba los número FizzBuzz. Ya está solucionado:

#!/bin/bash

for i in {1..100}
do
  F=0
  B=0

  if [ $(expr $i % 3) -eq 0 ] || [ $(echo $i | grep 3) ]; then
    F=1
  fi

  if [ $(expr $i % 5) -eq 0 ] || [ $(echo $i | grep 5) ]; then
    B=1
  fi

  case $F in
    0) if [ $B -eq 1 ]; then
         echo "Buzz"
       else
         echo $i
       fi
       ;;

   1) if [ $B -eq 1 ]; then
         echo "FizzBuzz"
       else
         echo "Fizz"
       fi
       ;;

  esac
done

Versión anterior:


#!/bin/bash

for i in {1..100}
  do

    if [ $(expr $i % 3) -eq 0 ] || [ $(echo $i | grep 3) ]; then
      echo "Fizz"

    elif [ $(expr $i % 5) -eq 0 ] || [ $(echo $i | grep 5) ]; then
      echo "Buzz"

    else
      echo $i
    fi
done

Seguro que alguno puede hacerlo más eficientemente. ¿Quién se anima?

PD: Para los que, como yo, su primer reto sea aprender a utilizar Git y GitHub, he encontrado un tutorial estupendo en el blog de ElePHPante.