U03 Parte1 ElLenguajeDeProgramacionJava
U03 Parte1 ElLenguajeDeProgramacionJava
Elementos de Programación
1
Índice
1. Algo de historia 3
3. Variables 7
3.1. Declaración de variables en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Convenciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Tipos de Datos 8
4.1. Datos Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2. Datos Compuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Operadores 10
5.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2. Operadores de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.3. Operadores unarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.4. Operador instanceof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.5. Operador condicional ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.6. Operadores Incrementales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.7. Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.8. Operador ( + ) y (+=) para concatenar cadenas de caracteres . . . . . . . . . . . . . . . . . . 11
5.9. Operadores Lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.10. Operadores que actúan a nivel de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.11. Separadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6. Sentencias 13
6.1. Bloques de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3. Ejemplo 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7. La clase Math 14
7.1. Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.2. Ejemplo 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.3. Ejemplo 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8. Resumen 16
2
Unidad 3: El lenguaje de Programación Java
Primera Sesión de Estudios
En este Tema
Estudiaremos aquı́ la estructura y sintaxis de los programas Java y conoceremos los elementos que utiliza:
constantes, tipos, variables, expresiones, operadores, sentencias.
Java dispone de muchos tipos de datos para evitar errores en la lógica del programa y para optimizar el
uso de los recursos de la computadora. Comenzaremos conociendo los tipos de datos simples.
Objetivos
Al finalizar este tema Ud. debe lograr:
Conocer la estructura de los programas en lenguaje Java y los principales elementos que utiliza.
1. Algo de historia
Java fue diseñado en 1990 por James Gosling, de Sun Microsystems, como software para dispositivos
electrónicos de consumo. Curiosamente, todo este lenguaje fue diseñado antes de que diese comienzo la era
World Wide Web, puesto que fue diseñado para dispositivos electrónicos como calculadoras, microondas y la
televisión interactiva.
En los primeros años de la década de los noventa, Sun Microsystems decidió intentar introducirse en
el mercado de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos.
Tras unos comienzos dudosos, Sun decidió crear una filial, denominada FirstPerson Inc., para dar margen de
maniobra al equipo responsable del proyecto.
Inicialmente Java se llamó Oak (roble en inglés), aunque tuvo que cambiar de denominación, debido a que
dicho nombre ya estaba registrado por otra empresa. Se dice este nombre se le puso debido a la existencia de
tal árbol en los alrededores del lugar de trabajo de los promotores del lenguaje.
Tres de las principales razones que llevaron a crear Java son:
1. Creciente necesidad de interfaces mucho más cómodas e intuitivas que los sistemas de ventanas que
proliferaban hasta el momento.
2. Fiabilidad del código y facilidad de desarrollo. Gosling observó que muchas de las caracterı́sticas que
ofrecı́an C o C++ aumentaban de forma alarmante el gran costo de pruebas y depuración. Por ello en
sus ratos libres creó un lenguaje de programación donde intentaba solucionar los fallos que encontraba
en C++.
3. Enorme diversidad de controladores electrónicos. Los dispositivos electrónicos se controlan mediante la
utilización de microprocesadores de bajo precio y reducidas prestaciones, que varı́an cada poco tiempo
y que utilizan diversos conjuntos de instrucciones. Java permite escribir un código común para todos
los dispositivos.
3
Por todo ello, en lugar de tratar únicamente de optimizar las técnicas de desarrollo y dar por sentada la
utilización de C o C++, el equipo de Gosling se planteó que tal vez los lenguajes existentes eran demasiado
complicados como para conseguir reducir de forma apreciable la complejidad de desarrollo asociada a ese
campo. Por este motivo, su primera propuesta fue idear un nuevo lenguaje de programación lo más sencillo
posible, con el objeto de que se pudiese adaptar con facilidad a cualquier entorno de ejecución.
Habitualmente tendemos a asociar el termino “Java” al desarrollo de páginas web en Internet. Los neófitos
creen que Java es un lenguaje para desarrollar páginas web y esto es totalmente erróneo. La confusión surge
porque Java permite incrustar código dentro de páginas web para que sea ejecutado en el navegador del
usuario. Estos son los famosos Applets que fueron promocionados en los años ’90, pero hoy dı́a son obsoletos
y quedaron prácticamente en desuso.
Tampoco debemos confundir Java con JavaScript. El primero es un lenguaje de Programación y el segundo
es un lenguaje de scripting que permite agregar funcionalidad dinámica en las páginas web. JavaScript no
tiene nada que ver con Java. También es cierto que podemos utilizar Java para desarrollar páginas web, esta
tecnologı́a se basa en el desarrollo de aplicaciones tipo Servlets, esto es parte de lo que se conoce como JEE
(Java Enterprise Edition) y excede el alcance del curso.-
1 // Esto es un comentario
2 System . out . println ( " Hola mundo " ) ;
1 /* Todo esto
2 tambi é n es un
3 comentario */
4 System . out . println ( " Hola mundo " ) ;
La diferencia entre el comentario que empieza por /** y el que empieza por /* es que el primero sale en
la documentación generada por javadoc y en la mayorı́a de herramientas que hacen documentación a partir
del código. El comentario que empieza por /* no sale en la documentación.
Javadoc es una utilidad de Oracle para la generación de documentación de APIs en formato HTML a
partir de código fuente Java. Javadoc es el estándar de la industria para documentar clases de Java. La
mayorı́a de los IDEs los generan automáticamente.
Javadoc también proporciona una API1 para crear doclets2 y taglets3 , que le permite analizar la es-
tructura de una aplicación Java. Ası́ es como JDiff puede generar informes de lo que ha cambiado entre dos
versiones de una API. Para ampliar este tema consulte http://es.wikipedia.org/wiki/Javadoc
4
Hay unos detalles, sin embargo, que conviene tener en cuenta para comentarios que van a salir en la
documentación que se generará con Javadoc. Conviene poner uno de estos comentarios delante de cada clase,
cada método y cada atributo, de esta forma, en la documentación aparecerán convenientemente documentadas
las clases, métodos y atributos. Lo siguiente puede ser un ejemplo.
Ejemplo 3.1
Observe el código 1 implementado en Java. Se muestran varios comentarios para describir los pasos o
acciones propuestas.
El algoritmo permite tomar 2 datos numéricos enteros de las cajas de diálogo que se muestran, efectuar
su suma y mostrarla en una tercer caja de diálogo.
1 /*
2 * To change this template , choose Tools | Templates
3 * and open the template in the editor .
4 */
5 package u3_ejemplo1 ;
6 /**
7 *
8 * @author FICH
9 */
10 import javax . swing . JOptionPane ;
11 public class U3_Ejemplo1 {
12 /** Este programa ingresa dos numeros e informa su suma
13 * @param args the command line arguments
14 */
15 public static void main ( String [] args ) {
16 // TODO code application logic here
17 int a , b ;// Defino dos variables numericas tipo entero
18 a = Integer . parseInt ( JOptionPane . showInputDialog ( " Ingrese un n ú mero " ) ) ;// Ingreso el
valor de a ;
19 b = Integer . parseInt ( JOptionPane . showInputDialog ( " Ingrese otro n ú mero " ) ) ; // Ingreso
el valor de b
20 JOptionPane . showMessageDialog ( null , " La suma es : " +( a + b ) ) ; // Muestro la suma de a + b
21 }
22 }
Los comentarios son ignorados por el compilador, por lo tanto no afectan al algoritmo.
Sugerencia
Pierda algunos segundos escribiendo comentarios. Evitará ası́ perder minutos y horas valiosas, tratando
de entender partes del programa que necesita corregir, ampliar o reutilizar.
1 a = Integer . parseInt ( JOptionPane . showInputDialog ( " Ingrese un n ú mero " ) ) ;// Correcto
2
3 a = integer . parseint ( joptionpane . showinputdialog ( " ingrese un n ú mero " ) ) ;// Incorrecto
5
El efecto NO será el mismo.
Importante
Es recomendable no modificar las lı́neas que aparecen automáticamente en el programa fuente del
proyecto (programa principal) si no tiene experiencia en Java.
La elección adecuada de los identificadores favorece la comprensión del programa. No se deberı́an usar
identificadores muy largos ni demasiado cortos. Es recomendable que sugieran un significado pues
favorece la lectura y comprensión de la lógica del programa. Por ejemplo: si se desea nombrar una
variable que contenga el promedio de edades de un grupo de personas, es posible identificarla con p;
pero mucho mejor es con PromedioEdades
6
abstract continue for new switch
boolean default goto null synchronized
break do if package this
byte double implements private threadsafe
byvalue else import protected throw
case extends instanceof public transient
catch false int return true
char final interface short try
class finally long static void
const float native super while
cast future generic inner var
operator outer rest (y mas...)
2.6. Constantes
Un valor constante en Java se crea utilizando una representación literal de él. Java utiliza cinco tipos de
elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier
lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él.
3.452
-107
31.98E+3
$04
‘A’
“Universidad”
False
True
3. Variables
Son posiciones de memoria que permiten organizar la información que maneja un programa. Al declarar
las variables en el programa Java en la declaración a través de un identificador y un tipo asociado a dicha
variable, son asignadas en la memoria virtual del sistema operativo. Como su nombre lo indica, la información
que contiene una variable puede cambiar o variar durante la ejecución o vida del programa.
7
3.1. Declaración de variables en Java
3.2. Convenciones
Los identificadores asociados a variables se suelen poner en minúsculas. Ejemplo:
Cuando el identificador esta formado por varias palabras el identificador comienza en minúscula y las
palabras sucesivas comienzan con su primer letra en mayúscula y el resto en minúsculas. Ejemplo:
1 Int a , b ; a = b = 0;
2 Int contador = 0;
3 Int saldo = 0 , debe = 0 , haber = 0;
Una vez declarada una variable, puede definirse; esto es, colocar un dato en la posición de memoria que
ella representa.
La carga o definición de datos en las variables se puede realizar a través de dos acciones:
Asignación
Lectura
4. Tipos de Datos
Podemos distinguir 2 tipos de datos en Java
1. Datos Simples
2. Datos Compuestos (Vectores y Matrices), Cadenas (Strings)
true
false
1 char s [];
2 int iArray [];
Los lı́mites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la
corrupción de memoria.
En Java un array es realmente un objeto, porque tiene redefinido el operador [ ]. Tiene una función
miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.
Para crear un array en Java hay dos métodos básicos. Crear un array vacı́o:
1 String nombres [ ] = { " Juan " ," Pepe " ," Pedro " ," Maria " };
1 String nombres [ ];
2 nombres = new String [4];
3 nombres [0] = new String ( " Juan " ) ; // BIEN
4 nombres [1] = new String ( " Pepe " ) ; // BIEN
9
5 nombres [2] = new String ( " Pedro " ) ; // BIEN
6 nombres [3] = new String ( " Maria " ) ; // BIEN
Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:
Es decir, todos los arrays en Java se crean en tiempo de ejecución y son estáticos. Para convertir un
array en el equivalente a un array dinámico en C/C++, se usa la clase vector, que permite operaciones
de inserción, borrado, etc. en el array.
5. Operadores
Los operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla
aparecen los operadores que se utilizan en Java, por orden de precedencia.
Suma (+)
Resta (-)
Multiplicación (*)
División (/)
Resto de la división entera ( %)
10
5.4. Operador instanceof
El operador instanceof permite saber si un objeto pertenece o no a una clase determinada. Es un operador
binario cuya forma general es:
NombreDeObjeto instanceof NombreDeClase
y devuelve true o false, según el objeto pertenezca o no a la clase.
1. Precediendo a la variable. (Ej. ++ i) en este caso se incrementa la variable y luego se utiliza, con el
valor incrementado en 1.
2. Siguiendo a la variable. (Ej. i ++ ) en este caso se utiliza la variable sin incrementar y cuando finaliza
la ejecución de la expresión a la que pertenece se incrementa la variable en 1.
Se puede utilizar para concatenar en la salida por pantalla el valor de una variable con una expresión
constante, Ejemplo:
Los operadores relacionales devuelven un valor booleano. Para las cadenas, se pueden utilizar los opera-
dores relacionales para comparaciones además de + y += para la concatenación:
El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargará
el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.
5.11. Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los sepa-
radores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:
12
6. 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
1 int i = 1;
2 import java . awt .*;
3 System . out . println ( " El primer programa " ) ;
4 rect . mover (10 , 20) ;
En el lenguaje Java, los caracteres espacio en blanco se pueden emplear libremente como separadores, esto
lo 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á automáticamente en
esta tarea sin apenas percibirlo.
6.2. Expresiones
Una expresión es todo aquello que se puede poner a la derecha del operador asignación “=”. Por ejemplo:
1 int x = 123;
2 double = ( x +100) /4;
3 float area = circulo . calcularArea (2.5) ;
4 rectangulo r = new Rectangulo (10 , 10 , 200 , 300) ;
h= t / 3600;
m= (t % 3600) / 60; //El operador % devuelve el resto de la división entera.
s= t % 60;
13
Código: Creamos un nuevo proyecto en NetBeans IDE con el nombre U3 ejemplo02 y copiamos el siguiente
código
1 package u3_ejemplo02 ;
2 /**
3 *
4 * @author FICH
5 */
6 import javax . swing . JOptionPane ;
7 public class U3_Ejemplo02 {
8 /**
9 * @param args the command line arguments
10 */
11 public static void main ( String [] args ) {
12 // TODO code application logic here
13 int t ; // Almacenara el tiempo en segundos
14 t = Integer . parseInt ( JOptionPane . showInputDialog ( " Ingrese el tiempo en segundos " ) ) ;
// Lectura del tiempo
15 int h = t / 3600; // horas
16 int m = ( t % 3600) / 60; // minutos
17 int s = t % 60; // segundos
18 JOptionPane . showMessageDialog ( null , " Horas : " + h + " \ nMinutos : " + m + " \ nSegundos : " + s
) ; // Ventana de salida
19 }
20 }
7. La clase Math
La clase Math representa la librerı́a matemática de Java. Las funciones que contiene son las de todos los
lenguajes, parece que se han metido en una clase solamente a propósito de agrupación, por eso se encapsulan
en Math.
14
Math.abs( x ) para int, long, float, double Math.ceil( double )
Math.sin( double ) Math.floor( double )
Math.cos( double ) Math.rint( double )
Math.tan( double ) Math.pow( a,b )
Math.asin( double ) Math.round( x ) para double y float
Math.acos( double ) Math.random() devuelve un double
Math.atan( double ) Math.max( a,b ) para int, long, float y double
Math.atan2( double,double ) Math.min( a,b ) para int, long, float y double
Math.exp( double ) Math.E para la base exponencial
Math.log( double ) Math.PI para PI
Math.sqrt( double )
Código: Creamos un nuevo proyecto en NetBeans IDE con el nombre U3 ejemplo3 y copiamos el siguiente
código:
1 package u3_ejemplo03 ;
2 /** @author FICH
3 */
4 import static java . lang . Math .*;
5 import javax . swing . JOptionPane ;
6 public class U3_Ejemplo03 {
7 /**
8 * @param args the command line arguments */
9 public static void main ( String [] args ) {
10 // TODO code application logic here
11 double x , y ; // declaro x , y
12 x = Math . random () *100; // asigno valores aleatorios
13 y = Math . random () *100;
14 double maxAbs = Math . max ( Math . abs ( x ) , Math . abs ( y ) ) ;// utilizando max y abs
asigno el mayor
15 // muestro por pantalla el resultado . -
16 JOptionPane . showMessageDialog ( null , " 1 er . Numero : " + x + " \ n2do . Numero : " + y + " \ nMayAbs
: " + maxAbs ) ;
17 }
18 }
Area = PI * (radio)2
Código: Creamos un nuevo proyecto en NetBeans IDE con el nombre U3 ejemplo4 y copiamos el siguiente
código.
1 package u3_ejemplo04 ;
2 /**
3 *
4 * @author FICH
5 */
6 import static java . lang . Math .*;
7 import javax . swing . JOptionPane ;
8 public class U3_Ejemplo04 {
9 /**
10 * @param args the command line arguments
11 */
12 public static void main ( String [] args ) {
13 // TODO code application logic here
14 double r , a ;
15 r = Double . parseDouble ( JOptionPane . showInputDialog ( " Ingrese el radio " ) ) ; // radio
de
16 un circulo
17 a = Math . PI * Math . pow (r ,2) ; // calcula area
18 JOptionPane . showMessageDialog ( null , " Area del circulo es " + a ) ;
19 }
20 }
8. Resumen
1. Hemos visto algunas de las palabras reservadas lenguaje Java
2. Los identificadores en Java deben comenzar con una letra, ‘$’ o ‘ ’ y no pueden llevar espacios en su
nombre y no deben tener caracteres especiales como +, -, ? y otros.
3. Los identificadores que declaramos en nuestro programa no deben coincidir con ningunos de los identi-
ficadores reservados para el lenguaje Java (como abstract, continue, for, new, switch, etc.).
4. Las constantes poseen un único valor en todo el programa.
5. Las variables son posiciones de memoria donde almacenamos datos. Pueden cambiar su valor en di-
ferentes lugares del programa mediante la sentencia de asignación o lectura. Siempre deben declarase
antes de ser empleadas
6. Mediante las expresiones podemos combinar variables y constantes mediante operadores para obtener
resultados. Los operadores tienen un orden de aplicación (precedencia) que puede modificarse con el
uso de paréntesis (de forma similar a como lo hacemos en matemáticas).
7. Los tipos de datos determinan la forma en que se almacena la información en memoria y la forma
en que se puede operar sobre esa información. Cuando declaramos variables indicamos tipo, luego su
nombre y a continuación podemos o no asociarle un valor a esa variable. Los tipos de datos determinan
los valores posibles que puede contener una variable (por ejemplo una variable de tipo byte no puede
contener el número 3,45 ni el número 345).
16
8. Los tipos de datos simples ordinales son aquellos sobre los que se puede establecer un orden y una
secuencia. Después del caracter ‘A’ sigue el caracter ‘B’ pero no podemos saber cual número sigue al
3,45 (por eso los reales o flotantes no son ordinales).
9. Los tipos de datos simples ordinales más importantes son: byte, int, bool y char. Dos tipos de datos
simples NO ordinales usuales son: float y double
10. El cociente entre dos enteros da como resultado un entero. Por ejemplo, al dividir 20 entre 7 nos da
como resultado 2.
11. 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.
17