Posts

Javajutsu: condicional if-else

En java no existe una operación elseif o elsif, así que hay que hacer un else y luego un if como en c.

 

Ejemplo de if-else

/**
* IfElse
* Clase que muestra un bloque condicional if-else
*
* Para compilar:
*   javac IfElse.java
*
* Para ejecutarlo:
*   java IfElse
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase IfElse
*  Muestra el uso de un bloque condicional if-else: si se cumple la
* condición del if se ejecuta su bloque, en caso contrario se ejecuta
* el bloque del else.
*  if (condición)
*  {
*    sentecias_bloque_if;
*  }
* else
* {
*    sentecias_bloque_else;
* }
*
* @author Pello Altadill
*/
public class IfElse {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Declaramos una variable.
        int a = 666;
        int b = 0;
 
        if (a >= b)
        {
            System.out.println("A es mayor o igual que B");
        }
        else
        {
            System.out.println("A es menor que B");
        }
    
        
    }
}

 

Ejemplo de if-else-if

/**
* IfElse
* Clase que muestra un bloque condicional if-else
*
* Para compilar:
*   javac IfElse.java
*
* Para ejecutarlo:
*   java IfElse
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase IfElse
*  Muestra el uso de un bloque condicional if-else: si se cumple la
* condición del if se ejecuta su bloque, en caso contrario se ejecuta
* el bloque del else.
*  if (condición)
*  {
*    sentecias_bloque_if;
*  }
* else
* {
*    sentecias_bloque_else;
* }
*
* @author Pello Altadill
*/
public class IfElse {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Declaramos una variable.
        int a = 666;
        int b = 0;
 
        if (a >= b)
        {
            System.out.println("A es mayor o igual que B");
        }
        else
        {
            System.out.println("A es menor que B");
        }
    
        
    }
}


Javajutsu: estructura condicinal if

El if se hace como en c, aunque no todo es igual. Ver código comentado.

/**
* If
* Clase que muestra el uso de un bloque condicional if
*
* Para compilar:
*   javac If.java
*
* Para ejecutarlo:
*   java If
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase If
* Muestra el uso de un bloque condicional if, cuyo interior solo
* se ejecuta si la condición del if es verdadera
*  if (condición)
*  {
*    sentecias_bloque_if;
*  }
*
* @author Pello Altadill
*/
public class If {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Declaramos una variable.
        int x = 666;
        int y = 0;
        
        
        if (x == 666)
        {
            System.out.println("x lleva la marca de la bestia");
        }
        
        // La condicón del If puede ser cualquier expresión compleja siempre que devuelva un
        // valor booleano
        if (x > 0 && y < 0)
        {
            System.out.println("x es positivo e y negativo");
        }
        
        // Atención: JAVA NO considera los enteros como booleanos!!
        // Tradicionalmente en c y otros lenguajes similares cualquier valor que sea distinto de 0 se considera como un true booleano
        // mientras que el 0 se considera como false.
        /*
        if (x) // En JAVA NO HACER ESTO
        {
            System.out.println("x es distinto de 0");
        }
 
        if (y) // En JAVA NO HACER ESTO
        {
            System.out.println("y es distinto de 0");
        }
 
        // por tanto !y es como preguntar si y es igual a 0
        // esta forma de escribir es muy kewl pero se considera poco clara
        if (!y) // En JAVA NO HACER ESTO
        {
            System.out.println("y es 0!!");
        }*/
 
    }
}


JavaJutsu: operadores de bits

¿Te interesan los operadores a nivel de bits en Java? Algo malo debes estar haciendo ;)

Los operadores haberlos haylos, otra cosa es que se usen con frecuencia.

/**
* OperadoresBits
* Clase que muestra el uso de operadores de bits
*
* Para compilar:
*   javac OperadoresBits.java
*
* Para ejecutarlo:
*   java OperadoresBits
*/
 

/**
* clase OperadoresBits
* Muestra el uso de operadores de bits. Su uso no es que sea muy frecuente
* pero suele estar presente en todos los lenguajes tipo c.
*
* & : AND Conjunción de bits:  1011 & 1001 = 1001
* | : OR disjunción de bits:   1011 | 1001 = 1011
* ^ : XOR disjunción excluyente de bits:   1011 ^ 1001 = 0010
* <<: desplazamiento de bits a la izquierda
* >>: desplazamiento de bits a la derecha
*  
*
*  
* @author Pello Altadill
*/
public class OperadoresBits {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        int numero1, numero2;
        numero1 = 0x0010;
        numero2 = 0x1101;
        
        System.out.println("Resultado: \n" + (numero1 & numero2));
        System.out.println("Resultado: \n" + (numero1 | numero2));
        
        // se puede abreviar:
        // numero1 = numero1 & numero2;
        numero1 &= numero2;
        
        // Para operaciones en las que el resultado vaya a una de los propios
        // operandos (numero1 = numero1 & 0x1111) podemos usar una operadores de asignación especial:
        // &=, |=, ^=, >>=, >>>=, <<=  
 
    }
}


JavaJutsu: operadores booleanos

Los operadores booleanos son los esenciales de siempore: and, or y not, en su forma habitual: && , || , !

 

/**
* OperadoresBooleanos
* Clase que muestra el uso de operadores booleanos
*
* Para compilar:
*   javac OperadoresBooleanos.java
*
* Para ejecutarlo:
*   java OperadoresBooleanos
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase OperadoresBooleanos
* Muestra el uso de los operadores booleanos: se trata de operaciones
* que operan sobre sentencias y cuyo resultado es un booleano, true o false.
* Las operaciones son:
* && : operación AND, a && b: el resultado es verdadero si a y b son verdaderos
* || : operación OR, a || b: el resultado es verdadero si cualquiera de los dos es verdadero
* !  : operación NOT, !a : invierte el valor booleano de a. Si a es true !a devuelve false.
*
* @author Pello Altadill
*/
public class OperadoresBooleanos {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // probaremos con algunos enteros
        int bajo, alto, mediano;
        
        bajo = 4;
        alto = 666;
        mediano = 42;
        
        // Solo pueden ser true o false
        boolean a = false;
        boolean b = true;
        boolean c = true;
        
        boolean resultado = false;
        
        resultado = a || b;
        System.out.println("Si alguno entre A o B es true el resultado es: " + resultado);
        
        resultado = b && c;
        System.out.println("B y C son true por tanto el resultado es: " + resultado);
 
        resultado = !(b && c);
        System.out.println("B y C son true, pero si le hacemos un NOT: " + resultado);
 
        // Vamos a combinarlo con operadores de comparación
        resultado = (bajo < mediano) && (mediano < alto);
        System.out.println("El resultado es: " + resultado);
 
        resultado = (bajo == mediano) || (mediano <= alto);
        System.out.println("El resultado es: " + resultado);
 
    }
}


Javajutsu, operadores de comparación

¿Operadores de comparación? Los mismos que en c.

 

/**
* OperadoresComparacion
* Clase que muestra el uso de operadores de comparación
*
* Para compilar:
*   javac OperadoresComparacion.java
*
* Para ejecutarlo:
*   java OperadoresComparacion
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase OperadoresComparacion
* Muestra el uso de los operadores de comparación que sirven para comparar
* entre si dos valores. Es importantes saber que:
* - Los dos valores comparadods deben ser del mismo tipo
* - El resultado es booleano, es decir verdadero o falso
*
* Los operadores de comparación son los siguientes:
*    >   mayor que, por ejemplo a mayor que b: a > b
*    <   menor que
*    ==  igual que
*    >=  mayor o igual que
*    <=  menor o igual que
*    !=  distinto de
*
* Normalmente se utilizan como expresiones para establecer una condición
* en estructuras condicionales, bubles, etc... y unidos mediante operadores
* booleanos pueden construirse expresiones más complejas
*
* @author Pello Altadill
*/
public class OperadoresComparacion {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Solo pueden ser true o false
        boolean resultado;
        int enano, grande;
        
        char letra = 'a';
        char otraLetra = 'k';
        char mayuscula = 'A';
        
        String autobot = "Optimus";
        String decepticon = "Megatron";
        String agente = "007";
        
        enano = grande = 0;
        
        resultado = (enano == grande);
 
        System.out.println("Son iguales enano y grande? " + resultado);
        
        grande = 42;
        // Podemos comparar y mostrar directamente.  
        // la comparación la ponemos entre paréntesis por claridad  
        System.out.println("Son iguales enano y grande? " + (enano == grande));
        System.out.println("Es enano mayor que grande? " + (enano > grande));
        System.out.println("Es enano menor que grande? " + (enano < grande));        
        System.out.println("Es enano distinto de grande? " + (enano != grande));    
        
        // Podemos comparar letras    e incluso cadenas
        resultado = (letra > otraLetra);
        System.out.println("Es 'a' mayor que 'k' " + resultado);    
        
        resultado = (letra == mayuscula);
        System.out.println("Es 'a' igual que 'A' " + resultado);    
        
        // Con las cadenas podemos usar == y !=
        System.out.println("Optimos es igual que Megatron? " +  (autobot == decepticon));    
        System.out.println("Optimos es distinto de Megatron? " +  (autobot != decepticon));    
        // Esto no podriamos
        //System.out.println("Y si una palabra empieza por un número? " +  (agente > autobot));    
 
    }
}


JavaJutsu: operadores aritméticos

Los operadores aritméticos de java son iguales que en cualquier otro lenguaje tipo c.

/**
* OperadoresAritmeticos
* Clase que muestra el uso de operadores aritméticos: suma, resta...
*
* Para compilar:
*   javac OperadoresAritmeticos.java
*
* Para ejecutarlo:
*   java OperadoresAritmeticos
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase OperadoresAritmeticos
* Muestra la declaración de operadores arítmeticos:
* +, -, *, / : suma, resta, multiplicación, división
* % : resto de la división: 7 % 3 = 1
* ++, -- : incremento y decremento en 1
* - : cambio de signo
*
* Por último tenemos un operador condicional o terciario: ?:
* que equivale a una estructura if-else. Mostramos un  
* ejemplo simple
*
* @author Pello Altadill
*/
public class OperadoresAritmeticos {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        int a,b,c;
        float x,y,z;
        
        a = b = c = 0;
        x = y = z = 0;
 
        // Mostramos los valores antes y después
        System.out.println("a:" + a + ", b:" + b + ", c:" + c);
        System.out.println("x:" + x + ", y:" + y + ", z:" + z);
 
        a = b + 45;
        c = a * 666;
        x++;
        y = --z;
        
        System.out.println("a:" + a + ", b:" + b + ", c:" + c);
        System.out.println("x:" + x + ", y:" + y + ", z:" + z);
        
        // Para operaciones en las que el resultado vaya a una de los propios
        // operandos (x = x + 4) podemos usar una operadores de asignación especial:
        // += , -=, *=, /=, %=
        a += 666;
        c %= 2;
        
        // Atención a la diferencia entre ++c y c++:
        // a = ++c primero se incrementa c, luego se asigna a a
        // b = c++ primero se asigna a b, luego se incrementa c
        a = b = c = 0;
        c = 2;
        a = ++c;
        b = c++;
        System.out.println("a:" + a + ", b:" + b + ", c:" + c);
 
                
        // Podemos hacer las operaciones más complejas.
        // para asegurar y aclarar el orden de operaciones podemos
        // meter paréntesis.
        x = (y *34) + 42 - (1000 % z);        
 
        // El operador condicional ?: permite asignar dos valores alternativos
        // según una condición:   
        // (condición)?valor_si_condición_es_verdadera:valor_en_caso_contrario
        // Si y es mayor que 0 a x se le asigna y, en caso contrario a x se le asigna 5  
        z = (y > 0)?y:5;
        
        System.out.println("x:" + x + ", y:" + y + ", z:" + z);
    }
}


La entrada por consola se ha simplificado bastante con el objeto Console.

Ya no hace falta un StreamReader ni nada de eso.

/**
* EntradaPorConsola
* Clase que como solicitar datos al usuario y guardarlos
* en variables.
*
* Para compilar:
*   javac EntradaPorConsola.java
*
* Para ejecutarlo:
*   java EntradaPorConsola
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase EntradaPorConsola
* Muestra como se solicitan datos al usuario por consola y guardarlos
* en todo tipo de variables.
* En el caso
* de los enteros HAY QUE CONVERTIR lo que viene por el argumento
* porque viene como un String!
*
* @author Pello Altadill
*/
public class EntradaPorConsola {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])  
    {
        // Para leero por consola hay que crear
        // una instancia de Console
        Console consola = System.console();
        
        // Declaración de variables: tipo nombre;
        int edad;
        float temperatura;
        String lectura;
        boolean booleano;
        
        // Para solicitar datos al usuario, usamos el método
        // readLine();
        
        // Primero avisamos al usuario:
        System.out.println("Por favor, introduce un texto cualquiera: ");
        
        // Así no hay problemas porque son del MISMO TIPO
        lectura = consola.readLine();  
        
        // Y mostramos por pantalla lo que el usuario ha metido
        System.out.println("Has escrito: " + lectura + "\n");
                
        
        // Primero avisamos al usuario:
        System.out.println("Por favor, introduce un número con decimales: ");
 
        lectura = consola.readLine();  
 
        // Atención a la CONVERSIÓN. Utilizamos la clase Float,
        // y sú metodo para convertir de String al tipo simple float
        temperatura = Float.parseFloat(lectura);
 
        // Y mostramos por pantalla lo que el usuario ha metido
        System.out.println("Has escrito: " + temperatura + "\n");
        
 
        // Primero avisamos al usuario:
        System.out.println("Por favor, introduce tu edad: ");
 
        lectura = consola.readLine();  
 
        // Atención a la CONVERSIÓN. Utilizamos la clase Integer,
        // y sú metodo para convertir de String al tipo simple int
        edad = Integer.parseInt(lectura);
 
        // Y mostramos por pantalla lo que el usuario ha metido
        System.out.println("Has escrito: " + edad);
        
        // Vamos a solicitar un booleano
        System.out.println("Por favor, introduce un valor booleano: ");
 
        lectura = consola.readLine();  
 
        // Atención a la CONVERSIÓN. Utilizamos la clase Boolean,
        // y sú metodo para convertir de String al tipo simple boolean
        booleano = Boolean.parseBoolean(lectura);
 
        // Y mostramos por pantalla lo que el usuario ha metido
        System.out.println("Has escrito: " + booleano);
 
    }
}


Argumentos de programa principal o main

A los programas de java también se les pueden pasar argumento a la hora de ejecutarlos. Para eso se utiliza el array de Strings args[].

Argumentos tipo Cadena

/**
* ValoresCadenasArgumentos
* Clase que muestra la declaración de variables de cadenas o Strings
* y cómo pasarles lo que viene como argumento
*
* Para compilar:
*   javac ValoresCadenasArgumentos.java
*
* Para ejecutarlo:
*   java ValoresCadenasArgumentos
*/
 
 
/**
* clase ValoresCadenasArgumentos
* Clase que muestra la declaración de variables de cadenas o Strings
* y cómo pasarles lo que viene como argumento.  Los argumentos se trasvasan
* a través del parámetro args[] de la función main. Ese parámetro es un conjunto
* de Strings o Cadenas
*
*
* @author Pello Altadill
*/
public class ValoresCadenasArgumentos {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // En el caso de que el argumento sea una frase al ejecutar el programa la pasariamos así:
        //   C:\jdk>java ValoresCadenasArgumentos "Dios le ayuda"
        String frase = "A quien madruga, " + args[0];
 
        System.out.println("El primer argumento es: " + args[0]);    
        System.out.println("La frase final: \n" + frase);
        
    }
}

Argumentos para guardar en variable de tipo entero

Atención , en este caso tenemos que hacer una conversión.

/**
* ValoresEnteros
* Clase que muestra la declaración de variables numéricas enteras
* y cómo pasarles lo que viene como argumento
*
* Para compilar:
*   javac ValoresEnteros.java
*
* Para ejecutarlo:
*   java ValoresEnteros
*/
 
 
/**
* clase ValoresEnteros
* Muestra la declaración de tipos numéricos enteros básicos:
* y cómo pasarles lo que viene como argumento. En el caso
* de los enteros HAY QUE CONVERTIR lo que viene por el argumento
* porque viene como un String!
*
* @author Pello Altadill
*/
public class ValoresEnterosArgumentos {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Declaración de variables: tipo nombre;
        int dias;
        short contador;
        String diasString;
        
        // Así no hay problemas porque son del MISMO TIPO
        diasString = args[0];
        
        // Atención a la CONVERSIÓN. Utilizamos la clase Integer,
        // y sú metodo para convertir de String a int
        dias = Integer.parseInt(args[0]);
        
        // Con los short y con cualquier otro tipo básico hariamos
        // lo mismo, usar su clase correspondiente y la misma función:
        contador = Short.parseShort(args[0]);
        
        // ATENCIÓN: si lo que pasamos como argumento NO ES un entero
        // el programa casca irremediablemente y vomita una excepción
        
        // Vamos a probar a mostrarlos por pantalla: concatenamos con +
        System.out.println("El total de días es: " + dias);
 
        System.out.println("El contador queda así: " + contador);
    }
}


Variables de cadenas o Strings

/**
* ValoresCadenas
* Clase que muestra la declaración de variables de cadenas o Strings
*
* Para compilar:
*   javac ValoresCadenas.java
*
* Para ejecutarlo:
*   java ValoresCadenas
*/
 
// Librería necesaria para trabajar con la entrada/salida
import java.io.*;
 
/**
* clase ValoresCadenas
* Muestra la declaración de Cadenas: son variables que  
* contienen más de un caracter: una palabra una frase, etc...
* Para esto no existen tipos primitivos y se usa una clase
* llamada String
*
* Una clase, como ya se verá más adelante es mucho más que un tipo
* de dato. Es una tipo complejo que tiene propiedas y métodos.
*
* @author Pello Altadill
*/
public class ValoresCadenas {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        String nombre;
        String frase = "A quien madruga, patada en los cojones";
        String presidente;
 
        // Podemos iniciarla con una cadena vacía
        String otraFrase = "Solo quiero que seamos \"amigos\"";
        
        int edad = 666;
        
        presidente = "Cthulhu";
        nombre = "Optimus Prime";
        
        // Los especiales comienzan por \
        char nuevaLinea = '\n';
        char tabulacion = '\t';
 
        // Podemos unir dos cadenas con el operador de concatenación.
        frase = frase + nuevaLinea;
 
        
        // Vamos a probar a mostrarlos por pantalla:
        System.out.println(frase);
 
        // Al concatenar números se convierten en cadenas
        frase = presidente + " tiene : " + edad + " años";
        
        System.out.println("La frase queda así: \n" + frase);
 
        System.out.println("Y la otra frase: \n" + otraFrase);
        
    }
}


Java: Variables Booleanas

Las variables booleanas solo pueden tener dos valores: true o false (verdadero o falso). Los valores booleanos son imprescindibles en la programación para la toma de decisiones en estructuras de control, bucles, etc...

/**
* ValoresBooleanos
* Clase que muestra la declaración de variables booleanas
*
* Para compilar:
*   javac ValoresBooleanos.java
*
* Para ejecutarlo:
*   java ValoresBooleanos
*/
 
 
/**
* clase ValoresBooleanos
* Muestra la declaración de booleanos: son variables que solo
* pueden tener dos posibles valores: true (verdadero) o false (falso)
*
* @author Pello Altadill
*/
public class ValoresBooleanos {
    
    /**
    * main
    * Función principal
    * esta función es la que se inicia directamente al ejecutar el programa
    */
    public static void main (String args[])
    {
        // Solo pueden ser true o false
        boolean terminado = false;
        boolean aprobar = true;
        boolean resultado = aprobar;
        
        // Vamos a probar a mostrarlos por pantalla: concatenamos con +
        System.out.println("Este programa ha terminado? " + terminado);
 
        System.out.println("Aprobaré la asignatura? " + aprobar);
 
        System.exit(0);
    }
}

subscribe via RSS