viernes, 18 de noviembre de 2011

Java-Apuntes #3

Continuamos con las entregas de Apuntes de Java, esta ocasión es una continuación de la entrega 2. Veremos unos cuantas condicionales y algunas aplicaciones de las mismas.

Ramificación condicional.
En Java, una prueba if es básicamente lo mismo que una prueba con boolean en un bucle while - excepto que en vez de decir "Mientras haya cerveza...", dirás, "Si hay cerveza..."

class IfTest{
 public static void main (String[] args){
    int x = 3;
    if (x==3){
       System.out.println("x debe ser 3");
    }
    System.out.println("Esto esta corriendo no importando que");
  }
}

Salida:

% java IfTest
x debe ser 3
Esto esta corriendo no importando que


El código anterior ejecuta la linea que imprime "x debe ser 3" solo si la condición (x es igual a 3) es verdadero. Independientemente si es verdadero, aunque, la linea que imprime, "Esto esta corriendo no importando que" correrá. Entonces dependiendo del valor de x, o una sentencia o dos se imprimirán.

Pero nosotros podemos agregar un else a la condición, entonces podremos decir algo como, "Si aún hay cerveza, continuemos programando, else (de lo contrario) agarremos más cerveza, y luego continuamos..."

class IfTest2{
  public static void main (String[] args){
   int x = 2
   if (x == 3){
     System.out.println("x debe ser 3");
   }else{
     System.out.println("x no es 3");
   }
   System.out.println("Esto esta corriendo no importando que");
 }
}

Salida:
% java IfTest2
x no es 3
Esto esta corriendo no importando que


Programando una Aplicación seria de Negocio.
Vamos a usar las habilidades aprendidas en las tres entregas de Java-Apuntes para hacer algo practico. Necesitaremos una clase main(), una variable int y otra String, un bucle while, y una prueba if. Vamos a hacer el programa "99 botellas de cerveza".

Ahora abri tu IDE preferido y vamos a programar!


package beersong;

/**
 *
 * @author ronald
 */
public class BeerSong {

    public static void main(String[] args) {
        int beerNum = 99;
        String word = "botellas";
        
        while (beerNum > 0){
            if(beerNum == 1){
                word = "botella";//singular, as in ONE bottle.
            }
            System.out.println(beerNum + " " + word + " de cerveza en el muro.");
            System.out.println(beerNum + " " + word + " de cerveza.");
            System.out.println("Se acaba una.");
            System.out.println("Pasala");
            beerNum = beerNum - 1;
            
            if (beerNum > 0){
            System.out.println(beerNum + " " + word + " de cerveza en el muro");
        }else{
                System.out.println("No hay mas botellas de cerveza en el muro");
            }
        }
    }
}

Bueno si por alguna razón fuera de mi alcance esta aplicación no pareció muy de negocio que se diga, aquí hay otra que talvez si lo sea.

Esta aplicación le llamaremos el PhraseOMatic, un creador de frase automático que ayudará a hacer frase muy de negocios.

package phraseomatic;


/**
 *
 * @author BetaRoot
 */
public class PhraseOMatic {


    public static void main(String[] args) {
        //Hacemos tres conjuntos de palabras para seleccionar. Agreguen sus propias palabras!
        String[] wordListOne = {"24/7", "multiNivel", "30,000 pies", "B-a-B", "ganar-ganar", "finalizar-frente",
            "web-basado", "penetrante", "inteligente", "6-sigma", "ruta-crítica", "dinámico"
        };
        String[] wordListTwo = {"empowered", "pegajoso", "valor-agregado", "orientado", "centrico", "distribuido",
            "agrupados", "marcado", "fuera-del-envoltorio", "posicionado", "networked", "focalizado", "apalancado",
            "alineado", "objetivado", "compartido", "cooperativo", "acelerado"
        };
        String[] wordListThree = {"proceso", "tipping-point", "solución", "arquitectura", "competencias básicas",
            "estrategia", "mindshare", "portal", "espacio", "vision", "paradigma", "mision"
        };


        //Encuentra el total de palabras en cada lista
        int oneLength = wordListOne.length;
        int twoLength = wordListOne.length;
        int threeLength = wordListThree.length;


        //genera tres números aleatoriamente
        int rand1 = (int) (Math.random() * oneLength);
        int rand2 = (int) (Math.random() * twoLength);
        int rand3 = (int) (Math.random() * threeLength);


        //Aquí construimos nuestra frase
        String phrase = wordListOne[rand1] + " "
                + wordListTwo[rand2] + " " + wordListThree[rand3];


        //Imprimimos nuestra frase
        System.out.println("Lo que necesitamos es " + phrase);
    }
}

Explicaremos el código del PhraseOmatic:

1. El primer paso es crear tres arreglos de tipo String - Los contenedores tendrán todas las palabras. Declarando y creando un arreglo es fácil; aquí hay un pequeño ejemplo:

String[] mascotas ={"Fido", "Zeus", "Bin"};
Cada palabra está dentro de comillas (como todos los buenos String deben estar) y separados por comas.

2. Para cada uno de las tres listas (arreglos), la meta es tomar una palabra al azar, entonces tenemos que conocer cuantas palabras hay en cada lista. Si hay 14 palabras en una lista, entonces necesitamos un número aletorio entre 0 y 13 (Los arreglos Java son basados-en-cero, entonces la primera palabra esta posicionada en 0, la segunda posición es 1 y la última palabras estará posicionada en 13 un arreglo-14 elementos). Un arreglo Java siempre está animado a decir cual es su longitud. Solamente debes preguntárselo. En el arreglo mascotas, diremos:

int x = pets.lenght;
Y entonces x tendrá el valor de 3.

3. Necesitamos 3 números al azar. Java posee una gran serie de métodos matemáticos (Por ahora, pensaremos en ellos como funciones). El método random() retornará un número aleatorio entre 0 y no superior a 1, entonces tendremos que multiplicar eso por el número de elementos (longitud del arreglo) en la lista que estamos usando. Nosotros tenemos que forzar que el resultado sea un entero (¡no se permiten decimales!) así que lo convertiremos. Es lo mismo si tenemos cualquier cualquier número float que queramos convertir a un int:


int x = (int) 24.6;


4. Ahora tenemos que construir la frase, tomando una palabra de cada una de las listas, y concatenandolas unas con otras (también se le añadieron espacios entre las palabras). Usamos el operador "+" cuando concatenamos los objetos String en conjunto. Para tener un elemento de un arreglo, tu tienes que darle el número index al arreglo (posición) de la cosa que quieres usar:

String s = pets[0]; //s is now the String "Fido"
s= s+ " " + " es un perro"; //s es ahora "Fido es un perro"

5. Finalmente, imprimimos a frase en la línea de comando.

No hay comentarios:

Publicar un comentario