miércoles, 29 de junio de 2011

5.- Operadores

Operadores

Los operadores aritméticos
Concatenación de strings
La precedencia de operadores
La conversión automática y promoción
Los operadores unarios



Todos los lenguajes de programación permiten realizar operaciones entre los tipos de datos básicos: suma, resta, producto, cociente, etc., de dos números. Otros lenguajes como el BASIC y Java permiten "sumar", concatenar cadenas de caracteres.
En la página titulada "La primera aplicación", hemos aprendido a crear un poyecto nuevo, y la clase que describe la aplicación mínima que contiene la función estática main. Luego, le hemos añadido código para dar cierta funcionalidad a la aplicación, que ha consistido en imprimir un mensaje en la consola o mostrarlo en la ventana denominada Execution Log.
Recordaremos que la imagen del disquette significa un proyecto nuevo cuyo nombre aparece en letra negrita, y cuyos componentes son archivos código fuente en el que se guardan las clases.

Los operadores aritméticos

Java tiene cinco operadores aritméticos cuyo significado se muestra en la tabla adjunta

OperadorNombreEjemplo
+Suma3+4
-Diferencia3-4
*Producto3*4
/Cociente20/7
%Módulo20%7

El cociente entre dos enteros da como resultado un entero. Por ejemplo, al dividir 20 entre 7 nos da como resultado 2.
El operador módulo da como resultado el resto de la división entera. Por ejemplo 20%7 da como resultado 6 que es el resto de la división entre 20 y 7.
El operador módulo también se puede emplear con números reales. Por ejemplo, el cociente entre 7.5 y 3.0 es 2.5 y el resto es cero, es decir, 7.5=3.0 x 2.5+ 0. El operador módulo, funciona de la siguiente forma 7.5=3.0 x 2+1.5, calcula la diferencia entre el dividendo (7.5)  y el producto del divisor (3.0) por la parte entera (2) del cociente, devolviendo 1.5. Así pues, la operación 7.5%3.0 da como resultado 1.5.

El operador asignación

Nos habremos dado cuenta que el operador más importante y más frecuentemente usado es el operador asignación =, que hemos empleado para la inicialización de las variables. Así,

int numero;
 numero=20;
la primera sentencia declara una variable entera de tipo int y le da un nombre (numero). La segunda sentencia usa el operador asignación para inicializar la variable con el número 20.
Consideremos ahora, la siguiente sentencia.

a=b;
que asigna a a el valor de b. A la izquierda siempre tendremos una variable tal como a, que recibe valores, a la derecha otra variable b, o expresión que tiene un valor. Por tanto, tienen sentido las expresiones

a=1234;
 double area=calculaArea(radio);
 superficie=ancho*alto;
Sin embargo, no tienen sentido las expresiones

1234=a;
 calculaArea(radio)=area;
Las asignaciones múltiples son también posibles. Por ejemplo, es válida la sentencia
c=a=b;   //equivalente a c=(a=b);
la cual puede ser empleada para inicializar en la misma línea varias variables
c=a=b=321;  //asigna 321 a a, b y c
El operador asignación se puede combinar con los operadores aritméticos

ExpresiónSignificado
x+=yx=x+y
x-=yx=x-y
x*=yx=x*y
x/=yx=x/y
Así, la sentencia
x=x+23;
evalúa la expresión x+23, que es asignada de nuevo a x. El compilador lee primero el contenido de la porción de memoria nombrada x, realiza la suma, y guarda el resultado en la misma porción de memoria. Se puede escribir la sentencia anterior de una forma equivalente más simple
x+=23;

Concatenación de strings

En Java se usa el operador + para concatenar cadenas de carcateres o strings. Veremos en el siguiente apartado una sentencia como la siguiente:
System.out.println("la temperatura centígrada es "+tC);
El operador + cuando se utiliza con strings y otros objetos, crea un solo string que contiene la concatenación de todos sus operandos. Si alguno de los operandos no es una cadena, se convierte automáticamente en una cadena. Por ejemplo, en la sentencia anterior el número del tipo double que guarda la variable tC se convierte en un string que se añade al string "la temperatura centígrada es ".
Como veremos más adelante, un objeto se convierte automáticamente en un string si su clase redefine la función miembro toString de la clase base Object.
Como vemos en el listado, para mostrar un resultado de una operación, por ejemplo, la suma de dos números enteros, escribimos
iSuma=ia+ib;
        System.out.println("El resultado de la suma es "+iSuma);
Concatena una cadena de caracteres con un tipo básico de dato, que convierte automáticamente en un string.
El operador += también funciona con cadenas.

String nombre="Juan ";
 nombre+="García";
 System.out.println(nombre);

public class OperadorAp {
    public static void main(String[] args) {
        System.out.println("Operaciones con enteros");
        int ia=7, ib=3;
        int iSuma, iResto;
        iSuma=ia+ib;
        System.out.println("El resultado de la suma es "+iSuma);
        int iProducto=ia*ib;
        System.out.println("El resultado del producto es "+iProducto);
        System.out.println("El resultado del cociente es "+(ia/ib));
        iResto=ia%ib;
        System.out.println("El resto de la división entera es "+iResto);

        System.out.println("**********************************");
        System.out.println("Operaciones con números decimales");
        double da=7.5, db=3.0;
        double dSuma=da+db;
        System.out.println("El resultado de la suma es "+dSuma);
        double dProducto=da*db;
        System.out.println("El resultado del producto es "+dProducto);
        double dCociente=da/db;
        System.out.println("El resultado del cociente es "+dCociente);
        double dResto=da%db;
        System.out.println("El resto de la división es "+dResto);
   }
}

La precedencia de operadores

El lector conocerá que los operadores aritméticos tienen distinta precedencia, así la expresión
a+b*c 
es equivalente a

a+(b*c)
ya que el producto y el cociente tienen mayor precedencia que la suma o la resta. Por tanto, en la segunda expresión el paréntesis no es necesario. Sin embargo, si queremos que se efectúe antes la suma que la multiplicación tenemos de emplear los paréntesis

(a+b)*c
Para realizar la operación  escribiremos

a/(b*c);
o bien,

a/b/c;
En la mayoría de los casos, la precedencia de las operaciones es evidente, sin embargo, en otros que no lo son tanto, se aconseja emplear paréntesis. Como ejemplo, estudiemos un programa que nos permite convertir una temperatura en grados Fahrenheit en su equivalente en la escala Celsius. La fórmula de conversión es


cuya codificación es
tC=(tF-32)*5/9;
Las operaciones se realizan como suponemos, ya que si primero se realizase el cociente 5/9, el resultado de la división entera sería cero, y el producto por el resultado de evaluar el paréntesis sería también cero. Si tenemos dudas sobre la precedencia de operadores podemos escribir
tC=((tF-32)*5)/9;
public class PrecedeApp {
    public static void main(String[] args) {
        int tF=80;
        System.out.println("la temperatura Fahrenheit es "+tF);
        int tC=(tF-32)*5/9;
        System.out.println("la temperatura centígrada es "+tC);
    }
}

La conversión automática y promoción (casting)

Cuando se realiza una operación, si un operando es entero (int) y el otro es de coma flotante (double) el resultado es en coma flotante (double).
int a=5;
 double b=3.2;
 double suma=a+b;
Cuando se declaran dos variables una de tipo int y otra de tipo double.
int entero;
 double real=3.20567;
¿qué ocurrirá cuando asignamos a la variable entero el número guardado en la variable real?. Como hemos visto se trata de dos tipos de variables distintos cuyo tamaño en memoria es de 32 y 64 bits respectivamente. Por tanto, la sentencia

entero=real;
convierte el número real en un número entero eliminando los decimales. La variable entero guardará el número 3.

Se ha de tener cuidado, ya que la conversión de un tipo de dato en otro es una fuente frecuente de error entre los programadores principiantes. Ahora bien, supongamos que deseamos calcular la división 7/3, como hemos visto, el resultado de la división entera es 2, aún en el caso de que tratemos de guardar el resultado en una variable del tipo double, como lo prueba la siguiente porción de código.

int ia=7;
 int ib=3;
 double dc=ia/ib;
Si queremos obtener una aproximación decimal del número 7/3, hemos de promocionar el entero ia a un número en coma flotante, mediante un procedimiento denominado promoción o casting.

int ia=7;
 int ib=3;
 double dc=(double)ia/ib;
Como aplicación, consideremos el cálculo del valor medio de dos o más números enteros

int edad1=10;
 int edad2=15;
 double media=(double)(edad1+edad2)/2;
El valor medio de 10 y 15 es 12.5, sin la promoción se obtendría el valor erróneo 12.
Imaginemos ahora, una función que devuelve un entero int y queremos guardarlo en una variable de tipo float. Escribiremos
float resultado=(float)retornaInt();
Existen también conversiones implícitas realizadas por el compilador, por ejemplo cuando pasamos un entero int a una función cuyo único parámetro es de tipo long.

Los operadores unarios

Los operadores unarios son:
  • ++ Incremento
  • -- Decremento
actúan sobre un único operando. Se trata de uno de los aspecto más confusos para el programador, ya que el resultado de la operación depende de que el operador esté a la derecha i++ o a la izquierda ++i.
Conoceremos, primero el significado de estos dos operadores a partir de las sentencias equivalentes:

i=i+1;  //añadir 1 a i
 i++;  
Del mismo modo, lo son

i=i-1;  //restar 1 a i
 i--;  
Examinemos ahora, la posición del operador respecto del operando. Consideremos en primer lugar que el operador unario ++ está a la derecha del operando. La sentencia

j=i++;
asigna a j, el valor que tenía i. Por ejemplo, si i valía 3, después de ejecutar la sentencia, j toma el valor de 3 e i el valor de 4. Lo que es equivalente a las dos sentencias

j=i;
 i++;
Un resultado distinto se obtiene si el operador ++ está a la izquierda del operando

j=++i;
asigna a j el valor incrementado de i. Por ejemplo, si i valía 3, después de ejecutar la sentencia j e i toman el valor de 4. Lo que es equivalente a las dos sentencias

++i;
 j=i;
public class UnarioApp {
    public static void main(String[] args) {
        int i=8;
        int a, b, c;
        System.out.println("\tantes\tdurante\tdespués");
        i=8; a=i; b=i++; c=i;
        System.out.println("i++\t"+a+'\t'+b+'\t'+c);
        i=8; a=i; b=i--; c=i;
        System.out.println("i--\t"+a+'\t'+b+'\t'+c);

        i=8; a=i; b=++i; c=i;
        System.out.println("++i\t"+a+'\t'+b+'\t'+c);
        i=8; a=i; b=--i; c=i;
        System.out.println("--i\t"+a+'\t'+b+'\t'+c);

    }
}

La salida del programa es, la siguiente

antes          durante      después
i++  8  8  9
i--  8  8  7
++i  8  9  9
--i  8  7  7

La primera columna (antes) muestra el valor inicial de i, la segunda columna (durante) muestra el valor de la expresión, y la última columna (después) muestra el valor final de i, después de evaluarse la expresión.
Se deberá de tener siempre el cuidado de inicializar la variable, antes de utilizar los operadores unarios con dicha variable.

martes, 28 de junio de 2011

4.- Elementos Básicos de Java

Elementos Básicos de Java

La sintáxis de un lenguaje define los elementos de dicho lenguaje y cómo se combinan para formar un programa. Los elementos típicos de cualquier lenguaje son los siguientes:
  • Identificadores: los nombres que se dan a las variables
  • Tipos de datos
  • Palabras reservadas: las palabras que utiliza el propio lenguaje
  • Sentencias
  • Bloques de código
  • Comentarios
  • Expresiones
  • Operadores
A lo largo de las páginas que siguen examinaremos en detalle cada uno de estos elementos.

Identificadores

Un identificador es un nombre que identifica a una variable, a un método o función miembro, a una clase. Todos los lenguajes tienen ciertas reglas para componer los identificadores:
  • Todos los identificadores han de comenzar con una letra, el carácter subrayado ( _ ) o el carácter dollar ( $ ).
  • Puede incluir, pero no comenzar por un número
  • No puede incluir el carácter espacio en blanco
  • Distingue entre letras mayúsculas y minúsculas
  • No se pueden utilizar las plabras reservadas como identificadores
Además de estas restricciones, hay ciertas convenciones que hacen que el programa sea más legible, pero que no afectan a la ejecución del programa. La primera y fundamental es la de encontrar un nombre que sea significativo, de modo que el programa sea lo más legible posible. El tiempo que se pretende ahorrar eligiendo nombres cortos y poco significativos se pierde con creces cuando se revisa el programa después de cierto tiempo.
Tipo de identificador
Convención
Ejemplo
nombre de una clase
Comienza por letra mayúscula
String, Rectangulo, CinematicaApplet
nombre de función
comienza con letra minúscula
calcularArea, getValue, setColor
nombre de variable
comienza por letra minúscula
area, color, appletSize
nombre de constante
En letras mayúsculas
PI, MAX_ANCHO

Comentarios

Un comentario es un texto adicional que se añade al código para explicar su funcionalidad, bien a otras personas que lean el programa, o al propio autor como recordatorio. Los comentarios son una parte importante de la documentación de un programa. Los comentarios son ignorados por el compilador, por lo que no incrementan el tamaño del archivo ejecutable; se pueden por tanto, añadir libremente al código para que pueda entenderse mejor.
La programación orientada a objetos facilita mucho la lectura del código, por lo que lo que no se precisa hacer tanto uso de los comentarios como en los lenguajes estructurados. En Java existen tres tipos de comentarios
  • Comentarios en una sola línea
  • Comentarios de varias líneas
  • Comentarios de documentación
Como podemos observar un comentario en varias líneas es un bloque de texto situado entre el símbolo de comienzo del bloque /*, y otro de terminación del mismo */. Teniendo encuentra este hecho, los programadores diseñan comentarios como el siguiente:
/*--------------------------------|
|   (C) Angel Franco García        |
|   fecha: Marzo 1999              |
|   programa: PrimeroApp.java      |
|---------------------------------*/
Los comentarios de documentación es un bloque de texto situado entre el símbolo de comienzo del bloque /**, y otro de terminación del mismo */.El programa javadoc utiliza estos comentarios para generar la documentación del código.

/** Este es el primer programa de una
serie dedicada a explicar los fundamentos del lenguaje Java */
Habitualmente, usaremos comentarios en una sola línea //, ya que no tiene el inconveniente de aprendernos los símbolos de comienzo y terminación del bloque, u olvidarnos de poner este último, dando lugar a un error en el momento de la compilación. En la ventana de edición del Entorno Integrado de Desarrollo (IDE) los comentarios se distinguen del resto del código por el color del texto.

public class PrimeroApp{
    public static void main(String[] args) {
//imprime un mensaje
        System.out.println("El primer programa");
    }
}
Un procedimiento elemental de depuración de un programa consiste en anular ciertas sentencias de un programa mediante los delimitadores de comentarios. Por ejemplo, se puede modificar el programa y anular la sentencia que imprime el mensaje, poniendo delante de ella el delimitador de comentarios en una sola línea.
//System.out.println("El primer programa");
Al correr el programa, observaremos que no imprime nada en la pantalla.
La sentencia System.out.println() imprime un mensaje en la consola, una ventana DOS que se abre en el escritorio de Windows 95. La funciónprintln tiene un sólo argumento una cadena de caracteres u objeto de la clase String.

Sentencias

Una sentencia es una orden que se le da al programa para realizar una tarea específica, esta puede ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria), inicializarla, llamar a una función, etc. Las sentencias acaban con ;. este carácter separa una sentencia de la siguiente. Normalmente, las sentencias se ponen unas debajo de otras, aunque sentencias cortas pueden colocarse en una misma línea. He aquí algunos ejemplos de sentencias
int i=1;
 import java.awt.*;
 System.out.println("El primer programa");
 rect.mover(10, 20);
En el lenguaje Java, los caracteres espacio en blanco se pueden emplear libremente. Como podremos ver en los sucesivos ejemplos, es muy importante para la legibilidad de un programa la colocación de unas líneas debajo de otras empleando tabuladores. El editor del IDE nos ayudará plenamente en esta tarea sin apenas percibirlo.

Bloques de código

Un bloque de código es un grupo de sentencias que se comportan como una unidad. Un bloque de código está limitado por las llaves de apertura {y cierre }. Como ejemplos de bloques de código tenemos la definición de una clase, la definición de una función miembro, una sentencia iterativafor, los bloques try ... catch, para el tratamiento de las excepciones, etc.

Expresiones

Una expresión es todo aquello que se puede poner a la derecha del operador asignación =. Por ejemplo:
x=123;
y=(x+100)/4;
area=circulo.calcularArea(2.5);
Rectangulo r=new Rectangulo(10, 10, 200, 300);
La primera expresión asigna un valor a la variable x.
La segunda, realiza una operación
La tercera, es una llamada a una función miembro calcularArea desde un objeto circulo de una clase determinada
La cuarta, reserva espacio en memoria para un objeto de la clase Rectangulo mediante la llamada a una función especial denominada constructor.

Variables

Una variable es un nombre que se asocia con una porción de la memoria del ordenador, en la que se guarda el valor asignado a dicha variable. Hay varios tipos de variables que requieren distintas cantidades de memoria para guardar datos.
Todas las variables han de declararse antes de usarlas, la declaración consiste en una sentencia en la que figura el tipo de dato y el nombre que asignamos a la variable. Una vez declarada se le podrá asignar valores.
Java tiene tres tipos de variables:
  • de instancia
  • de clase
  • locales
Las variables de instancia o miembros dato como veremos más adelante, se usan para guardar los atributos de un objeto particular.
Las variables de clase o miembros dato estáticos son similares a las variables de instancia, con la excepción de que los valores que guardan son los mismos para todos los objetos de una determinada clase. En el siguiente ejemplo, PI es una variable de clase y radio es una variable de instancia.PI guarda el mismo valor para todos los objetos de la clase Circulo, pero el radio de cada círculo puede ser diferente
class Circulo{
 static final double PI=3.1416;
 double radio;
//...
}
Las variables locales se utilizan dentro de las funciones miembro o métodos. En el siguiente ejemplo area es una variable local a la funcióncalcularArea en la que se guarda el valor del área de un objeto de la clase Circulo. Una variable local existe desde el momento de su definición hasta el final del bloque en el que se encuentra.
class Circulo{
//...
   double calcularArea(){
  double area=PI*radio*radio;
  return area;
   }
}
En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias. Es una buena costumbre inicializar las variables en el momento en el que son declaradas. Veamos algunos ejemplos de declaración de algunas variables
 int x=0;
 String nombre="Angel";
 double a=3.5, b=0.0, c=-2.4;
 boolean bNuevo=true;
 int[] datos;
Delante del nombre de cada variable se ha de especificar el tipo de variable que hemos destacado en letra negrita. Las variables pueden ser
  • Un tipo de dato primitivo
  • El nombre de una clase
  • Un array
El lenguaje Java utiliza el conjunto de caracteres Unicode, que incluye no solamente el conjunto ASCII sino también carateres específicos de la mayoría de los alfabetos. Así, podemos declarar una variable que contenga la letra ñ
int año=1999;
Se ha de poner nombres significativos a las variables, generalmente formados por varias palabras combinadas, la primera empieza por minúscula, pero las que le siguen llevan la letra inicial en mayúsculas. Se debe evitar en todos los casos nombres de variables cortos como xxi, etc.
double radioCirculo=3.2;
Las variables son uno de los elementos básicos de un programa, y se deben
  • Declarar
  • Inicializar
  • Usar

Tipos de datos primitivos

Tipo
Descripcion
boolean
Tiene dos valores true o false.
char
Caracteres Unicode de 16 bits  Los caracteres alfa-numéricos son los mismos que los ASCII con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535 (valores de 16-bits sin signo). 
byte
Tamaño 8 bits.  El intervalo de valores va desde -27 hasta 27 -1 (-128 a 127)
short
Tamaño 16 bits.  El intervalo de valores va desde -215 hasta 215-1 (-32768 a 32767)
int
Tamaño 32 bits.  El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a 2147483647)
long
Tamaño 64 bits. El intervalo de valores va desde -263 hasta  263-1 (-9223372036854775808 a 9223372036854775807)
float
Tamaño 32 bits. Números en coma flotante de simple precisión. Estándar IEEE 754-1985  (de 1.40239846e–45f a 3.40282347e+38f)
double
Tamaño 64 bits. Números en coma flotante de doble precisión. Estándar IEEE 754-1985. (de 4.94065645841246544e–324d  a 1.7976931348623157e+308d.)
Los tipos básicos que utilizaremos en la mayor parte de los programas serán booleanint y double.

Caracteres

En Java los caracteres no están restringidos a los ASCII sino son Unicode. Un carácter está siempre rodeado de comillas simples como 'A', '9', 'ñ', etc. El tipo de dato char sirve para guardar estos caracteres.
Un tipo especial de carácter es la secuencia de escape, similares a las del lenguaje C/C++, que se utilizan para representar caracteres de control o caracteres que no se imprimen. Una secuencia de escape está formada por la barra invertida (\) y un carácter. En la siguiente tabla se dan las secuencias de escape más utilizadas.
Carácter
Secuencia de escape
retorno de carro
\r
tabulador horizontal
\t
nueva línea
\n
barra invertida
\\

Variables booleanas

En el lenguaje C/C++ el valor 0 se toma como falso y el 1 como verdadero. En el lenguaje Java existe el tipo de dato boolean. Una variable booleana solamente puede guardar uno de los dos posibles valores: true (verdadero) y false (falso).
boolean encontrado=false;
{...}
encontrado=true;

Variables enteras

Una variable entera consiste en cualquier combinación de cifras precedidos por el signo más (opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de números enteros:
12, -36, 0, 4687, -3598
Como ejemplos de declaración de variable enteras tenemos:
int numero=1205;
 int x,y;
 long m=30L;
int es la palabra reservada para declarar una variable entera. En el primer caso, el compilador reserva una porción de 32 bits de memoria en el que guarda el número 1205. Se accede a dicha porción de memoria mediante el nombre de la variable, numero. En el segundo caso, las porciones de memoria cuyos nombres son x e y, guardan cualquier valor entero si la variable es local o cero si la variable es de instancia o de clase. El uso de una variaable local antes de ser convenientemente inicializada puede conducir a consecuencias desastrosas. Por tanto, declarar e inicializar una variable es una práctica aconsejable.
En la tercera línea 30 es un número de tipo int por defecto, le ponemos el sufijo L en mayúsculas o minúsculas para indicar que es de tipo long.
Existen como vemos en la tabla varios tipos de números enteros (byteshortintlong), y también existe una clase denominada BigInteger cuyos objetos pueden guardar un número entero arbitrariamente grande.

Variables en coma flotante

Las variables del tipo float o double (coma flotante) se usan para guardar números en memoria que tienen parte entera y parte decimal.
double PI=3.14159; 
 double g=9.7805, c=2.9979e8;
El primero es una aproximación del número real p, el segundo es la aceleración de la gravedad a nivel del mar, el tercero es la velocidad de la luz en m/s, que es la forma de escribir  2.9979 108. El carácter punto '.', separa la parte entera de la parte decimal, en vez del carácter coma ',' que usamos habitualmente en nuestro idioma.

Otras ejemplos son los siguientes
float a=12.5f;
 float b=7f;
 double c=7.0;
 double d=7d;
En la primera línea 12.5 lleva el sufijo f, ya que por defecto 12.5 es double. En la segunda línea 7 es un entero y por tanto 7f es un número de tipofloat. Y así el resto de los ejemplos.
Conceptualmente, hay infinitos números de valores entre dos números reales. Ya que los valores de las variables se guardan en un número prefijado de bits, algunos valores no se pueden representar de forma precisa en memoria. Por tanto, los valores de las variables en coma flotante en un ordenador solamente se aproximan a los verdaderos números reales en matemáticas. La aproximación es tanto mejor, cuanto mayor sea el tamaño de la memoria que reservamos para guardarlo. De este hecho, surgen las variables del tipo float y double. Para números de precisión arbitararia se emplea la clase BigDecimal.

Valores constantes

Cuando se declara una variable de tipo final, se ha de inicializar y cualquier intento de modificarla en el curso de la ejecución del programa da lugar a un error en tiempo de compilación.
Normalmente, las constantes de un programa se suelen poner en letras mayúsculas, para distinguirlas de las que no son constantes. He aquí ejemplos de declaración de constantes.
final double PI=3.141592653589793;
 final int MAX_DATOS=150;

Las cadenas de caracteres o strings

Además de los ocho tipos de datos primitivos, las variables en Java pueden ser declaradas para guardar una instancia de una clase, como veremos en el siguiente capítulo (Clases y objetos).
Las cadenas de caracteres o strings son distintas en Java y en el lenguaje C/C++, en este último, las cadenas son arrays de caracteres terminados en el carácter  '\0'. Sin embargo, en Java son objetos de la clase String.
String mensaje="El primer programa";
Empleando strings, el primer programa quedaría de la forma equivalente
public class PrimeroApp{
    public static void main(String[] args) {
//imprime un mensaje 
 String mensaje="El primer programa";
        System.out.println(mensaje);
    }
}
En una cadena se pueden insertar caracteres especiales como el carácter tabulador '\t' o el de nueva línea '\n'
String texto="Un string con \t un carácter tabulador y \n un salto de línea";

Palabras reservadas

En el siguiente cuadro se listan las palabras reservadas, aquellas que emplea el lenguaje Java, y que el programador no puede utilizar como identificadores. Algunas de estas palabras le resultarán familiares al programador del lenguaje C/C++. Las palabras reservadas señaladas con un arterisco (*) no se utilizan.
abstract
boolean
break
byte
byvalue*
case
cast*
catch
char
class
const*
continue
default
do
double
else
extends
false
final
finally
float
for
future*
generic*
goto*
if
implements
import
inner*
instanceof
int
interface
long
native
new
null
operator*
outer*
package
private
protected
public
rest*
return
short
satatic
super
switch
synchronized
this
throw
transient
true
try
var*
void
volatile
while


Las palabras reservadas se pueden clasificar en las siguientes categorías:
  • Tipos de datos: boolean, float, double, int, char
  • Sentencias condicionales: if, else, switch
  • Sentencias iterativas: for, do, while, continue
  • Tratamiento de las excepciones: try, catch, finally, throw
  • Estructura de datos: class, interface, implements, extends
  • Modificadores y control de acceso: public, private, protected, transient
  • Otras: supernull, this.

miércoles, 22 de junio de 2011

3.- Analizando Codigo de la primera aplicacion en Java

Analizando linea a linea el Hola Mundo en Java

Compilando y ejecutando

Comentarios en Java

Clase HolaMundo

public static void main(String args[] )

palabra public en Java

Static en Java

void en Java

String args[] en Java

Mostrar mensaje por consola en Java


viernes, 17 de junio de 2011

2.- Primera Aplicacion en Java (HolaMundo)

Cómo crear tu primera aplicación Java visual con Eclipse

Eclipse es una plataforma de software de Código abierto independiente de una plataforma para desarrollar Aplicaciones. Esta plataforma, es usada para desarrollar entornos integrados de desarrollo (IDE), como el IDE de Java (Java Development Toolkit JDT).
Eclipse fue desarrollado originalmente por IBM como el sucesor de VisualAge. Ahora es desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios.
En primer lugar descargaremos Eclipse, desde la web: http://www.eclipse.org/downloads/ (unos 121 MB de tamaño), si estamos trabajando en entorno Windows pulsaremos sobre Download now: Eclipse SDK 3.2.2, Windows:

Para trabajar con Eclipse en otras plataformas / sistemas operativos (Linux, Solaris, Mac, AIX, HP-UX, etc) , pulsaremos en "Other downloads for 3.2.2 (http://download.eclipse.org/eclipse/downloads/drops/
R-3.2.2-200702121330):

La versión 3.2.2 de Eclipse necesita, al menos la versión 1.4 de Java runtime environment (JRE) o Java development kit (JDK), es recomendable tenerla instalada, para descargarla: http://www.java.com/es/download/manual.jsp
Podemos descargar algunos ejemplos de aplicaciones desarrolladas en Eclipse, desde la propia web:http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2.2-200702121330/
eclipse-examples-3.2.2-win32.zip.


Para traducir Eclipse al castellano descargaremos el fichero .zip de: http://download.eclipse.org/eclipse/downloads/drops/L-3.2.1_Language_Packs-200609210945/index.php

Los ficheros descargados son:
Nombre ficheroDescripciónTamaño
eclipse-SDK-3.2.2-win32.zipEclipse SDK 3.2.2 (Windows)121 MB
NLpack1-eclipse-SDK-3.2.1-win32.zipPaquete de idiomas (español, etc) para Eclipse SDK 3.2.155 MB
eclipse-examples-3.2.2-win32.zipEjemplos de Eclipse 3.2.23,58 MB
jre-6u1-windows-i586-p-iftw.exeJava runtime environment 1.6.0_01360 KB


Empezaremos instalando JRE (si aún no lo tenemos), para ello ejecutaremos "jre-6u1-windows-i586-p-iftw.exe".
Eclipse no necesita instalación, es suficiente con descomprimir el fichero "eclipse-SDK-3.2.2-win32.zip" en la carpeta que deseemos:

Antes de ejecutar Eclipse, descomprimiremos el fichero "NLpack1-eclipse-SDK-3.2.1-win32.zip" en la misma carpeta que Eclipse:
Reemplazaremos todos los ficheros, pulsando "Yes to All":
Una vez descomprimido Eclipse y el paquete de idiomas, en la carpeta donde hayamos descomprimido Eclipse ejecutaremos el fichero eclipse.exe:
Nos pedirá una carpeta para el espacio de trabajo (workspace) para esta sesión, en nuestro caso C:/Documents and Settings/alonso/workspace. Si queremos que no nos lo vuelva a preguntar en futuras sesiones marcaremos "Use this as the default and do not ask again" ("Utilizar este directorio predeterminado y no volver a preguntar"). Pulsaremos "OK" ("Aceptar") para continuar:
Para crear un nuevo proyecto / aplicación / programa en Java con Eclipse pulsaremos en "Archivo" - "Nuevo" - "Proyecto":
Seleccionaremos el tipo de proyecto Java que queramos crear: "Proyecto Java" y pulsaremos "Siguiente":
Indicaremos el nombre del proyecto Java de Eclipse (en nuestro caso "PrimaraAplicacion"), indicaremos la carpeta donde queramos guardar el proyecto Eclipse ("Crear proyecto nuevo en área de trabajo" o bien "Crear proyecto a partir de un fuente existente"). También podremos seleccionar el Java runtime environment (JRE) que queramos utilizar para este prouecto. Pulsaremos "Finalizar" para concluir el asistente de creación de proyecto o "Siguiente" para continuar con la creación y configuración del proyecto Java Eclipse:
Podremos configurar más opciones para el proyecto, una vez configuradas pulsaremos "Finalizar" para iniciar el desarrollo del proyecto Eclipse:
Cerraremos la ventana de "Bienvenida" para visualizar el proyecto creado "PrimeraAplicacion":
El aspecto del nuevo proyecto Java - Eclipse:

A continuación crearemos una nueva clase Java para crear el típico mensaje "Hola mundo". Para ello pulsaremos sobre "PrimeraAplicación" con el botón derecho del ratón, seleccionaremos "Nuevo" - "Clase":
Indicaremos el nombre del paquete en "Paquete" (no se recomienda utilizar el paquete predeterminado), en nuestro caso "holaMundo". Indicaremos el nombre de la clase en "Nombre" (en nuestro caso "HolaMundo"). Podremos configurar una serie de parámetros de la clase: modificadores (public, default, private, protected, abstract, final, static), apéndices de método, etc. Marcaremos "public static void main(String[] args)", pues será la clase principal de la aplicación:
Añadiremos la línea de código:
System.out.println("Hola mundo");
Para compilar nuestra aplicación Java Eclipse pulsaremos en la flecha hacia bajo que aparece en la parte derecha del botón "Ejecutar", nos mostrará un menú emergente, seleccionaremos "Ejecutar como" y pulsaremos en "Aplicación Java":
Nos advertirá de que los cambios no se han guardado (las clases sin guardar desde la última compilación). Para guardar siempre antes de compilar marcaremos "Guardar siempre los recursos antes de lanzar". Pulsaremos "Aceptar" para compilar:
En la parte inferior de la ventana aparecerá el resultado de la compilación de nuestra aplicación Java con Eclipse:
El código de la aplicación Java "HolaMundo":
package holaMundo;


public class HolaMundo { 
  /**
   * @param args
   */
  public static void main(String[] args) {
    System.out.println("Hola mundo");      
  }
}
Cuando se produce un error o un aviso se puede ver en la pestaña "Problemas". Nos indicará una descripción del problema y la línea de código donde se produce. En la línea de código también nos la mostrará subrayada (rojo si es un error y amarillo si es un aviso). En nuestro caso nos está avisando de que hemos importado la clase "awt.Dialog" pero no la hemos utilizado:

miércoles, 15 de junio de 2011

1.- Definicion y Principales Caracteristicas del Lenguaje Java

Definición:


Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de 1991, con el que se van a poder crear tanto programas asociados a páginas HTML (applets) como programas
independientes de éstas (aplicaciones). Y todo ello, independiente de la plataforma de computación. Los programas hechos en Java podrán ejecutarse en INTEL,MOTOROLA, Solaris, Windows y Macintosh, entre otros.


Características principales:- Java:


Java organiza sus programas en una colección de objetos. Esto nos va a permitir estructurar los programas de una maneramás eficiente y en un formato más fácil de comprender.

- Distribuido: Java dispone de una serie de librerías para que los programas se puedan ejecutar en varias máquinas y puedan interactuar entre sí.
- Robusto: Java está diseñado para crear software altamente fiable.
- Seguro: Java cuenta con ciertas políticas que evitan que se puedan codificar virus con este lenguaje, sin olvidar además que existen muchas otras restricciones que limitan lo que se puede o no se puede hacer conlos recursos críticos de una máquina.
- Interpretado: La interpretación y ejecución se hace a través de la Máquina Virtual Java (JVM) es el entorno en el que se ejecutan los programas Java, su misión principal es la de garantizar la ejecución de lasaplicaciones Java en cualquier plataforma.
- Independiente de la Arquitectura: El código compilado de Java se va a poder usar en cualquier plataforma.
- Multiejecución: Java permite elaborar programas que permitan ejecutar varios procesos al mismo tiempo sobre la misma máquina