Vous êtes sur la page 1sur 27

CURSO 2012- 2013

Introduccin a la Programacin
con J ava



INTRODUCCIN A LA PROGRAMACIN
1

GRADO EN INGENIERA INFORMTICA







Departamento de Lenguajes y Computacin
Universidad de Almera

Sesin
02
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 2

1 - Introduccin.
1.1 - La Tecnologa J ava.
1.1.1 - Acerca de la Tecnologa Java.
El lenguaje de programacin J ava es un lenguaje de alto nivel que puede caracterizarse
por ser:
Simple.
Neutral a la arquitectura.
Orientado a objetos.
Portable.
Distribuido.
De alto rendimiento.
Multi-hilo.
Robusto.
Dinmico.
Seguro.
En el lenguaje de programacin J ava, todo el cdigo fuente se escribe primero en texto
plano contenido en un archivo con extensin . j ava. Esos archivos (cdigo fuente)
son compilados (a travs del compilador javac) en archivos con extensin . cl ass.
Un archivo . cl ass no contiene cdigo binario nativo de su procesador; en su lugar
contiene cdigo de bytes (bytecodes), un lenguaje que entiende la Mquina Virtual de
J ava (J VM J ava Virtual Machine). En otras palabras, los bytecodes pueden
considerarse como el lenguaje mquina de una mquina virtual, la Mquina Virtual de
J ava.



Ya que la Mquina Virtual de J ava est disponible en muchos sistemas operativos
diferentes, los mismos archivos . cl ass pueden ser ejecutados tanto en Microsoft
Windows como Solaris, Linux o MacOS, entre otros.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 3


A travs de la mquina virtual de J ava, la misma aplicacin es
capaz de ejecutarse en mltiples plataformas.
La Plataforma Java.
Una plataforma es el ambiente de hardware o software en el que se ejecuta un
programa. Ya hemos mencionado algunas de las plataformas ms populares como
Microsoft Windows, Linux, Solaris y MacOS. La mayora de las plataformas pueden
describirse como una combinacin del sistema operativo y el hardware base. La
plataforma de J ava difiere de la mayora de plataformas modernas en que es una
plataforma virtual compuesta slo por software y que se ejecuta sobre distintas
plataformas hardware.
La plataforma J ava tiene dos componentes:
La Mquina Virtual de Java.
La Interfaz de Programacin de Aplicaciones (API -Application Programming
Interface-).
La API es una coleccin de componentes de software que proporcionan muchas
caractersticas tiles. Est agrupada en libreras de clases e interfaces relacionadas; estas
libreras se conocen como paquetes.

La API y la Mquina Virtual de J ava aslan el programa del
hardware.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 4

1.1.2 - Qu Puede Hacer la Tecnologa Java?
J ava (un lenguaje de programacin de alto nivel y de propsito general), es una
poderosa plataforma software. Cada implementacin completa de la plataforma J ava
proporcionar:
Herramientas de Desarrollo: Las herramientas de desarrollo proveen todo lo
que necesitar para compilar, ejecutar, monitorizar, depurar y documentar sus
aplicaciones. Como nuevo desarrollador, las herramientas principales que usar
sern el compilador j avac, el lanzador j ava y la herramienta j avadoc de
documentacin.
Interfaz de Programacin de Aplicaciones (Application Programming
Interface, o API): La API provee la funcionalidad central bsica del lenguaje
J ava. Ofrece un amplio rango de clases preparadas para usarse en sus propias
aplicaciones.
Tecnologas de Instalacin/Depuracin: El software J DK provee mecanismos
estndar tales como el software J ava Web Start y el software J ava Plug-In para
distribuir sus aplicaciones a los usuarios finales.
Kits de Herramientas (toolkits) de Interfaces de Usuario: Los kits de
herramientas Swing y J ava 2D (entre otros) hacen posible crear Interfaces
Grficas de Usuario sofisticadas (GUI -Graphical User Interface-).
Libreras Integradas: Libreras de integracin tales como J DBC
TM
, J NDI, RMI,
o CORBA permiten el acceso a bases de datos y la manipulacin de objetos
remotos.
Entonces, como herramientas de programacin en J ava tendremos:
Java SDK (Software Development Kit)
o Compilacin de aplicaciones Java: javac
o Ejecucin de aplicaciones java: java
o Generacin de Documentacin: javadoc
o Creacin de archives de distribucin JAR (Java ARchives): jar
o Depuracin de aplicaciones: jdb
o Desensamblador de aplicaciones Java: javap
Entornos integrados de desarrollo (IDE Integrated Development
Environments)
o Eclipse
o NetBeans
o Borland JBuilder
o
En prcticas haremos uso del Entorno Eclipse (versin INDIGO) y la versin de J DK
1.6.0 (ya instalada en los ordenadores del Aula de Prcticas).



INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 5

1.2 - Caractersticas de Java.
Java es Multiplataforma. Los programas escritos en J ava se compilan en un
lenguaje de bytecodes independiente de la mquina; todos los sistemas
operativos principales tienen entornos de ejecucin de aplicaciones J ava
(mquinas virtuales).
Java es seguro. Al cargar un programa en memoria, la J VM verifica todos y
cada uno de los bytecodes de la aplicacin.
Java tiene un amplio conjunto de bibliotecas estndar. Bibliotecas para
trabajar con colecciones y otras estructuras de datos, ficheros, acceso a bases de
datos (J DBC), interfaces grficas de usuario (J CF/Swing), redes de ordenadores
(RMI. J ini), aplicaciones distribuidas (EJ B), interfaces web (servlets/J SP), hilos,
compresin de datos, criptografa, etc.
Java simplifica algunos aspectos a la hora de programar.
o Gestin automtica de memoria (recolector de basura).
o Comprobacin estricta de tipos.
o Sintaxis simplificada respecto a otros lenguajes como, por ejemplo, C++.
No se manejan punteros de forma explcita (aunque en realidad,
todos son punteros).
No hay que crear makefiles (como en C/C++).
No hay que mantener archivos de cabecera.
No existen macros ya que son propensas a errores.
1.3 - Mitos y realidades de Java.
(extrado de http://www.corewebprogramming.com/)
MITO: J ava es un lenguaje de programacin para la web.
REALIDAD: J ava es un lenguaje de programacin de propsito general.

MITO: Escribe una vez y ejecuta en cualquier lugar.
REALIDAD: Se puede conseguir, aunque se tiene que comprobar. Las
interfaces grficas pueden comportarse de forma distinta segn la plataforma.

MITO: J ava es un lenguaje interpretado.
REALIDAD: Los compiladores J IT compilan el programa al cargarlo.

MITO: La seguridad y la independencia de la mquina son gratis.
REALIDAD: Las aplicaciones son un 20% (en media) ms lentas que las
equivalentes implementadas en C++.

MITO: J ava se impondr como el nico lenguaje de programacin.
REALIDAD: Siempre existen ventajas y desventajas. Microsoft tiene su propia
alternativa: la plataforma .NET. Hay determinadas aplicaciones que requieren
ser programadas en otros lenguajes de programacin, por ejemplo:
- Utilidades simples y eficientes: ANSI C
- Sistemas complejos de altas prestaciones: C++
- Aplicaciones para Windows: C#, Delphi,


INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 6

1.4 - La Aplicacin "Hola Mundo!".

El siguiente texto en negrita define los comentarios de la aplicacin "Hola Mundo!":

class Hol aMundo {

/**
* Ejemplo de una aplicacin muy sencilla
*/
public static void mai n( St r i ng[ ] ar gs) {

Syst em. out. pr i nt l n( " Hol a Mundo" ) ; // Imprime por Consola
}
}

Los comentarios son ignorados por el compilador pero son tiles para otros
programadores. El lenguaje J ava soporta tres tipos de comentarios:

/* texto */
El compilador ignora todo desde / * hasta */ .
/** documentacin */
Esto indica un comentario de documentacin. El compilador ignora este tipo de
comentarios, justo como ignora los comentarios que usan / * y */ . La
herramienta j avadoc usa doc comments cuando prepara documentacin
generada de forma automtica.
// texto
El compilador ignora todo desde / / hasta el final de la lnea.
1.4.1 - La Definicin de la Clase HolaMundo
El siguiente texto en negrita inicia el bloque de definicin de clase para la aplicacin
"Hola Mundo!":

class HolaMundo {

/ **
* Ej empl o de una apl i caci n muy senci l l a
*/
public static void mai n( St r i ng[ ] ar gs) {

Syst em. out
}
. pr i nt l n( " Hol a Mundo" ) ; / / I mpr i me por Consol a
}

1.4.2 - El Mtodo main
El siguiente texto en negrita inicia la definicin del mtodo mai n:

public class Hol aMundo {

/ **
* Ej empl o de una apl i caci n muy senci l l a
*/
public static void main(String[] args) {
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 7


Syst em. out. pr i nt l n( " Hol a Mundo" ) ; / / Muest r a por Consol a
}

}
En J ava, cada aplicacin (no cada clase) debe contener un mtodo mai n cuya definicin
es:
publ i c st at i c voi d mai n( St r i ng[ ] ar gs)

Los modificadores publ i c y st at i c pueden escribirse en cualquier orden (publ i c
st at i c o st at i c publ i c), pero la convencin es usar publ i c st at i c como se
muestra arriba. Puede nombrar el parmetro por cualquier cosa que desee, pero la
mayora de programadores escogen "args" o "argv".
El mtodo mai n es similar a la funcin mai n en C y C++; este es el punto de entrada
para su aplicacin y subsecuentemente invocar todos los otros mtodos requeridos por
su programa.
El mtodo mai n acepta un nico argumento: un array de elementos de tipo St r i ng.
publ i c st at i c voi d mai n( String[] args)
Este array es el mecanismo por el que el sistema pasa informacin a su aplicacin. Cada
cadena en el array se llama argumento de lnea de comandos. Estos permiten al usuario
afectar la operacin de la aplicacin sin recompilarla.
La aplicacin "Hola Mundo!" ignora sus argumentos de lnea de comandos, pero
debera tener presente el hecho de que tales argumentos existen.
Finalmente, la lnea:
Syst em. out. pr i nt l n( " Hol a Mundo" ) ;

usa la clase Syst emde la librera central para escribir "Hola Mundo!" a la salida
estndar.

Si estuvisemos trabajando en modo comando (sin interfaz grfica), la secuencia de
pasos para poder compilar y ejecutar este programa sera:

- (compilacin) javac HolaMundo.java
- (ejecucin) java HolaMundo.class

Pero en esta asignatura vamos a trabajar con el entorno Eclipse, una herramienta
integrada de desarrollo gratuita y ampliamente utilizada en el mundo empresarial.






INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 8



A continuacin indicaremos los pasos a seguir:


1. Crearemos una carpeta (preferentemente en vuestro pendrive) llamada
WORKSPACES. Dentro de esta carpeta, crearemos una nueva carpeta llamada
IntroduccionProgramacion. Esta carpeta ser nuestro espacio de trabajo
(workspace), es decir, el lugar donde se almacenarn todos proyectos, paquetes
y, en definitiva, todos los programas de ordenador que iremos construyendo a lo
largo del curso.
2. Ejecutaremos (abriremos o cargaremos) Eclipse (tendremos que asegurarnos de
que se trata de la versin J UNO), indicndole el workspace con el que deseamos
trabajar (la carpeta que hemos creado anteriormente).




3. En caso de no aparecer la pantalla anterior, le indicaremos cul es el workspace
deseado mediante la opcin File/Switch Workspace.

4. El siguiente paso consistir en la creacin de un proyecto J ava. Este proyecto se
llamar Practicas1213, indicando que se trata de un proyecto que contendr
todas las prcticas realizadas durante el curso 2012/2013. Para crear un nuevo
proyecto, accederemos a la opcin de men File/New/J ava Project.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 9




5. Una vez creado el proyecto, para cada sesin de Grupo de Trabajo (de prcticas)
crearemos un paquete (File/New/J ava Package). Un paquete se puede ver como
un contenedor de clases (programas J ava) donde se irn almacenando todo
nuestro trabajo. Para una correcta organizacin, cada paquete se nombrar de la
siguiente manera:

org.ip.sesionXX,

donde org es la abreviacin de organizacin, ip de Introduccin a la
Programacin y sesinXX indicar el nmero de sesin que corresponda en
cada caso (sesion02, sesion03,). En este caso, el paquete se nombrar
org.ip.sesion02.

INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 10

6. Ya que tenemos creado el paquete org.ip.sesion02, crearemos nuestro primer
programa J ava. Para ello, lo primero que deberemos hacer es crear una nueva
clase J ava (File/New/Class). Aparecer una pantalla como la que se muestra a
continuacin:



Atencin al recuadro public static void main(String[] args), que deber estar
seleccionado para que la clase incluya al mtodo principal.

7. Como resultado, tendremos ya creada la clase HolaMundo.java que incluir el
mtodo main() vaco. Escribiremos la primera instruccin que dar como
resultado el mensaje Hola Mundo escrito en la pantalla o consola (Console).
Tal y como se puede apreciar en la siguiente figura, vemos 3 reas bien
definidas (el resto la iremos viendo a lo largo del curso):






INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 11





a. rea #1: Explorador de Paquetes. Siguiendo una estructura arborescente
(forma de rbol), en esta rea se muestran todos los proyectos, paquetes
y clases que se almacenan en el workspace seleccionado.
b. rea #2: Editor de cdigo. Zona de trabajo donde escribiremos el cdigo
fuente.
c. rea #3: Esta rea est compuesta por mltiples pestaas, entre las que
destacamos la pestaa Problems, que mostrar aquellos mensajes de
error en tiempo de compilacin. Y, por otra parte, est la pestaa
Consola, que ser donde se muestren los mensajes de error o bien los
mensajes a los que da lugar nuestro programa. Las pestaas J avadoc y
Declaration se utilizarn ms adelante.

8. Para compilar y ejecutar basta con ejecutar la opcin de men Run/Run (o Ctrl +
F11) o bien hacer clic sobre el icono de la barra de men que se muestra a
continuacin:




Tras compilar y ejecutar nuestro primer programa, en la pestaa Console
veremos la salida que produce: Hola Mundo.



INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 12

2 - Datos y Variables.
Vamos a ver a continuacin un resumen sobre elementos de programacin bsicos para
la resolucin de los ejercicios que se debern realizar en esta sesin.

2.1 - Datos y Tipos de Datos.

Dato: Representacin formal de hechos, conceptos o instrucciones adecuada para su
comunicacin, interpretacin y procesamiento por seres humanos o medios automticos.

Tipo de dato: Especificacin de un dominio (rango de valores) y de un conjunto vlido
de operaciones a los que normalmente los traductores (compiladores o intrpretes)
asocian un esquema de representacin interna propia.

Clasificacin de tipos de datos:

En funcin de quien los define:
- Tipos de datos primitivos (o predeterminados).
- Tipos de datos definidos por el usuario.
En funcin de su representacin interna:
- Tipos de datos escalares o simples.
- Tipos de datos estructurados.

Tipos de datos primitivos en Java.

De tipo numrico:

Nmeros enteros: byte short, int, long
Nmeros en coma flotante: float, double

De tipo carcter: char
De tipo booleano: boolean


Literales enteros: (literal =especificacin del valor concreto de un tipo de dato).
Los nmeros enteros pueden expresarse:
- En decimal (base 10): 23, 30,
- En octal (base 8): 0377 (=255 en decimal)
- En hexadecimal (base 16). 0xff (=255 en decimal)

Los literales long van siempre acompaados del sufijo L (o l), por ejemplo,
1234567890L es de tipo long.

Literales reales:
Los nmeros reales pueden expresarse:
- Cadenas de dgitos con punto decimal: 134.34 0.0 .003
- En notacin cientfica (mantisa*10
exponente
): 123e45 1E-6
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 13

Por defecto, los literales reales representan valores de tipo double. Para
representar un valor de tipo float, hemos de utilizar el sufijo F (o f), por ejemplo,
123.45F 0.0f .001F.

Operadores aritmticos:
J ava incluye cinco operadores para realizar operaciones aritmticas:

Suma (+)
Resta (-)
Multiplicacin (*)
Divisin (/)
Mdulo (%) (resto de la divisin)

NOTA:
- Si los operandos son nmeros enteros, se realizan operaciones
enteras.
- En cuanto uno de los operandos es de tipo float o double, la operacin
se realiza en coma flotante.
- No existe un operador de exponenciacin. Para calcular x
y
hay que
utilizar la funcin Math.pow(x,y).
- Si se dividen enteros, el resultado es entero y el resto se pierde.
- Una divisin entera entre cero produce una excepcin (ruptura del
programa en tiempo de ejecucin).
- Una divisin entre cero, en coma flotante, produce Infinite o NaN
(Not a Number).

Expresiones aritmticas:
Se pueden combinar literales y operadores para formar expresiones complejas.
Por ejemplo, la expresin:

3 + 4
5

10( 5)( + + )

+ 9(
4

+
9 +

)

en J ava se escribira de la siguiente manera:

(3+4*x)/5 10*(y-5)*(a+b+c)/x +9*(4/x+(9+x)/y)

NOTA:
- Las expresiones aritmticas se evalan de izquierda a derecha.
- Los operadores aritmticos mantienen el orden de precedencia
habitual (* y / antes que +y -).
- Para especificar un orden de evaluacin deseado y evitar
ambigedades, HABR QUE HACER USO DE PARNTESIS.

((3+4*x)/5) +((10*(y-5)*(a+b+c))/x) +(9*(4/x+(9+x)/y))





INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 14

Literales de tipo carcter: valores entre comillas simples, por ejemplo, a, x,

Cadenas de caracteres (clase String):
- String no es un tipo primitivo, sino una clase predefinida.
- Una cadena (string) es una secuencia de caracteres.
- Las cadenas de caracteres, en J ava, son inmutables, es decir, no se
pueden modificar los caracteres individuales de la cadena.

Literales de tipo cadena: Texto entre comillas dobles . Por ejemplo, Hola
Mundo, Esto es una cadena, etc.

NOTA: Para introducir determinados caracteres dentro de una cadena, hay que hacer
uso de los que se conoce como secuencias de escape. Las secuencias de escape ms
comunes son las que se muestran a continuacin:

Secuencia de escape Descripcin
\t Tabulador (tab)
\n Avance de lnea (nueva lnea)
\r Retorno de carro
\b Retroceso
\ Comillas simples
\ Comillas dobles
\\ Barra invertida

Por ejemplo, para mostrar la cadena Esto es una cadena, habra que escribir la
instruccin:
System.out.println("\"Esto es una cadena\"");

NOTA: Para concatenar (unir) cadenas de caracteres, se hace uso del operador +. Por
ejemplo:

System.out.println(Total = +3 +4); cul sera la salida?
System.out.println(Total = +(3+4)); y en este caso?

Datos de tipo booleano (boolean): Representan algo que puede ser verdadero (true) o
falso (false).

Expresiones de tipo booleano:
- Se construyen a partir de expresiones de tipo numrico con
operadores relacionales.
- Se construyen a partir de otras expresiones booleanas con operadores
lgicos booleanos.

Operadores relacionales (de comparacin):

Operador Significado
== Igual
!= Distinto
< Menor
> Mayor
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 15

<= Menor o igual
>= Mayor o igual

Operadores lgicos (booleanos) (tienen menos precedencia que los de comparacin):

Operador Nombre Significado
! NOT Negacin lgica
&& AND y lgico
|| OR o lgico
^ XOR o exclusivo

A continuacin expresamos el significado de cada operador (tablas de verdad)


X !X
true false
false true

A B A&&B A||B A^B
false false false false false
false true false true true
true false false true true
true true true true false

- NOT: cambia el valor booleano.
- AND (&&): devuelve true si los dos operandos son true. En caso
contrario devuelve false. Si el primer operador es false, no evala al
segundo.
- OR (||): Devuelve false si los dos operandos son false. En caso
contrario devuelve true. No evala el segundo operador si el primero
es true.
- XOR (^): Devuelve true si los dos operandos son diferentes.
Ejemplos:
1) Nmero x entre 0 y 10: (x >=0) && (x <=10)
2) Nmero x fuera del intervalo [0,10]: (x <0) || (x>10)










INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 16

2.2 - Variables.
Una variable no es ms que un nombre simblico que identifica una direccin de
memoria. Imaginemos un modelo de memoria lineal con N posiciones.
Posicin Contenido
#0
#1

#3000 130
#3001 30
#3002

#N-2
#N-1
Por ejemplo:
Suma el contenido de la posicin #3000 con el contenido de la posicin #3001 y lo
almacenas en la posicin #3002. Quedara:
Posicin Contenido
#0
#1

#3000 130
#3001 30
#3002 160

#N-2
#N-1
La instruccin anterior quedara (expresada en un lenguaje de programacin de alto
nivel):
total =cantidad1 +cantidad2
Que significa: Suma cantidad1 a cantidad2 y el resultado lo almacenas en total
total, cantidad1 y cantidad2 son VARIABLES
= ES EL OPERADOR DE ASIGNACIN
Declaracin de Variables:
Para usar una variable en un programa, primero hay que declararla:
- As el ordenador conoce cmo codificar la informacin que va a
almacenar en la posicin de memoria correspondiente.
- Al declarar una variable, se reserva el espacio de memoria necesario
para almacenar un valor del tipo de la variable.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 17

- El identificador de la variable (nombre de la variable) se puede usar
para acceder al dato almacenado en memoria tanto para lectura como
para escritura.
Declaracin de variables en Java:
<tipo> identificador;
<tipo> identificador1, identificador2,;
- Las variables se deben declarar antes de ser utilizadas.
- Los identificadores de las variables son los nombres que utilizaremos
para poder referirnos a ella.
- Al declarar una variable hay que definir su tipo: la variable slo
admitir valores del tipo especificado (J ava es un lenguaje tipado).
- En una misma declaracin se pueden crear varias variables, siempre
que sean del mismo tipo.
Ejemplos:
int x; //Declaracin de una variable de tipo int (entero)
double r; //Declaracin de una variable de tipo double (real)
char c; //Declaracin de una variable de tipo carcter
int x,y,z; //Declaraciones mltiples en una sola lnea.
Identificadores en Java:
- El primer smbolo del identificador ser un carcter alfabtico (a,,z,
A,,Z,_,$), pero no un dgito (0,..,9). Despus del primer
carcter, se permite el uso de caracteres alfanumricos, signos de
dlar o guiones de subrayado.
- Los identificadores no pueden coincidir con palabras reservadas
(buscar en Internet), ya que tienen un significado propio del lenguaje.
- Las MAYSCULAS y las minsculas se consideran diferentes.
- En la prctica no se utiliza el carcter $.
Ejemplos vlidos:
a, pepe, r456, tu_practica, proGraMacion, programacion, variable$
Ejemplos NO vlidos:
34ab, tu practica, tu_prctica, tu.practica, caada.
NOTA: Al ser J ava un lenguaje sensible a maysculas y minsculas, habr que tener
cuidado con la escritura de cdigo.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 18

Por ejemplo:
int contador, Contador;
Tanto contador como Contador son variables de tipo int y son TOTALMENTE
DIFERENTES, es decir, cada una ocupara una zona de memoria diferente.
IMPORTANTE!!!
Convenciones (reglas para el nombrado de variables)
- Los identificadores deben ser descriptivos, intentando que su nombre
haga referencia al significado de aquello a lo que se refieren.
int n1,n2; //MAL
int contador1, contador2; //BIEN
- Los identificadores asociados a las variables suelen ir en minsculas.
int conTaDor; //MAL
int Contador; //MAL
int contador; //BIEN
- Cuando el identificador est formado por varias palabras
(identificador compuesto), la primera va en minsculas, inicindose
en maysculas el resto de palabras.
int mayorvalor; // MAL
int mayor_valor; //MAL (pero pasable)
int MayorValor; //MAL
int mayorValor; //BIEN
Iniciacin de las Variables:
En una declaracin, las variables se pueden inicializar (es ms, es altamente
aconsejable). Por ejemplo:
int i=0; //tambin se puede escribir int i =0;
float pi=3.1415927f;
double x=.3, y=.7;
double x =Math.sqrt(y)*(y/38); // inicializacin con expresin compleja.
Definicin de constantes en Java:
Una constante hace referencia a un valor que NO puede ser modificado. Las constantes
en J ava se declaran de la siguiente manera:
final <tipo> identificador = <valor>
- Las constantes se declaran igual que cuando se declara una variable y
se inicializa su valor.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 19

- Con la palabra reservada final se le indica al compilador que el valor
asignado NO puede ser modificado.
Convenciones (reglar para el nombrado de constantes):
- Los identificadores asociados a las constantes se suelen poner en
maysculas.
final double PI =3.141592;
- Si el identificador est formado por varias palabras, stas se separan
con un guin de subrayado (_).
final char RETORNO_DE_CARRO =\n;
final double TIPO =3.15;
2.3 - Expresiones y Sentencias.
Expresin: construccin que se evala para devolver un valor.
Sentencia: representacin de una accin o una secuencia de acciones. En J ava, todas las
sentencias terminan en punto y coma (;).
Construccin de expresiones:
- Literales y variables son expresiones primitivas
1.7 //literal de tipo double
contador //variable
Los literales se evalan al valor que representan.
Las variables se evalan al valor que contienen.
- Los operadores nos permiten combinar expresiones primarias y otras
expresiones formadas con operadores:
1 +2 +3*12 +(4+8) / 3.2
Los operadores se caracterizan por:
El nmero de operandos (unarios, binarios, ternarios)
El tipo de sus operandos (numricos o booleanos, entre
.otros).
El tipo de valor que generan como resultado.
Sentencias de Asignacin:
Las sentencias de asignacin constituyen el ingrediente bsico en la construccin de
programas con los lenguajes imperativos. La sintaxis es:
<variable> = <expresin>
Al ejecutar una sentencia de asignacin:
- Se evala la expresin que aparece a la DERECHA del operador de
asignacin (=).
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 20

- El valor que se obtiene como resultado de evaluar la expresin se
almacena en la variable que aparece a la IZQUIERDA del operador
de asignacin.
RESTRICCIN: El tipo del valor que se obtiene al evaluar la expresin debe ser
COMPATIBLE con el tipo de la variable.
Por ejemplo:
x =x+1; //Asignacin
int contador =1; //Declaracin con inicializacin
int contador2 =contador1; //Declaracin con asignacin
NOTA: Una sentencia de asignacin (=) NO es una igualdad matemtica (==).

Efectos Colaterales:
Al evaluar una expresin, algunos operadores provocan efectos colaterales (cambios de
estado del programa) no deseados. Tal es el caso de los operadores unarios de
incremento (++) y decremento (--).
El operador ++incrementa la variable en 1, mientras que el -- lo decrementa en 1.
Tenemos 4 posibilidades:
x++(pos-incremento). Primero evala x y luego incrementa su valor;
++x (pre-incremento). Incrementa el valor de x y luego evala.
x(pos-decremento). Primero evala y luego decrementa.
--x (pre-decremento). Decrementa y luego evala.
Ejemplos:
a) i=0; i++; (equivale) i=0; i = i+1; (da como resultado) i = 1;
b) i=1; j=++i; i=1; i=i+1; j=i, i=2; j=2;
c) i=1; j=i++; i=1; j=i; i=i+1; i=2; j=1;
d) i=3; n=2*(++i); i=3; i=i+1; n=2*i; i=4; n=8;
e) i=3; n=2*(i++); ? (resolver)
f) i=1; k=++i+i; ? (resolver)
El uso de los operadores de incremento y decremento reduce el tamao del cdigo (cosa
deseable), pero hace que las expresiones sean MS DIFCILES de interpretar. En
general, es conveniente EVITAR el uso de estos operadores en expresiones que
modifican mltiples valores o hacen uso de la misma variable en distintas ocasiones.
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 21

Operadores combinados de asignacin (op=)
J ava define una serie de operadores que combinan el operador de asignacin con otros
operadores, ya sean aritmticos o booleanos. Por ejemplo:
a) x+=3; x = x + 3;
b) x-=3; x = x 3;
c) x*=3; x = x*3;
d) x/=3; x = x/3;
e) x%=3; ->x =x%3;
El operador +=se puede utilizar tambin con cadenas de caracteres:
a) cadena =hola;
cadena +=,;
Resultado: cadena =hola,;
b) nombre =Pepe;
apellido =Martnez;
nombre+= +apellido;
Resultado: nombre =Pepe Martnez

La forma general de los operadores combinados de asignacin es:
variable op=expresion;
que, internamente, se traduce a:
variable = variable op expresin

Conversin de tipos:
En determinadas ocasiones, nos interesa convertir el tipo de una variable en otro tipo
para poder trabajar con l. Por ejemplo, convertir un nmero entero en un nmero real
para poder realizar operaciones en coma flotante.
J ava permite realizar conversiones entre datos de tipo numrico (enteros y reales), as
como trabajar con caracteres como si fueran datos numricos:
- La conversin de un tipo con menos bits en uno con mayor nmero
de bits es automtica:
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 22

int long
float double
- La conversin de un tipo con ms bits a uno con menor nmero de
bits hay que realizarla de forma explcita mediante lo que se conoce
como cast. Como se pueden perder datos, el compilador exige que la
operacin se haga de forma explcita, para que seamos conscientes de
qu estamos haciendo.
Por ejemplo:
int i;
byte b;
i =13;
b =13;
b =i; // OPERACIN NO PERMITIDA
b =(byte) i; //SE FUERZA LA CONVERSIN
i =(int) 14.234; //SE ALMACENA 14 EN LA VARIABLE i

Castings.
Para realizar una conversin explcita de tipo (un casting), basta con poner el nombre
del tipo deseado entre parntesis antes del valor que se desea convertir.
Por ejemplo:
char c;
int x;
long k;
double d;
Operaciones sin conversin de tipo:
c =A;
x =100;
k =100L;
d =.34;
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 23

Conversiones implcitas de tipo (por asignacin)
x =c; // char int
k =100; // int long
k =x; // int long
d =3; // int double
Conversiones implcitas de tipos (por promocin aritmtica)
c+1 // char int
x / 2.0f; // int float
Errores de conversin (detectados por el compilador)
x =k; // long int
x =3.0;// double int
x =5/2.0f; //float int
Conversiones explcitas de tipo (castings)
x =(int) k;
x =(int) 3.0;
x =(int) (5/2.0f);

NOTA: El compilador de J ava comprueba siempre los tipos de las expresiones y nos
avisa de posibles errores: Incompatible types (N) y Possible loss of precision (C)
Algunas conversiones de inters:
De nmeros en coma flotante a nmeros enteros
En este caso, se trunca el valor (se redondea). Aunque en la librera Math nos permite el
redondeo de valores reales de manera controlada:
Math.round(x); Math.floor(x); Math.ceil(x)


INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 24

Conversin entre caracteres y nmeros enteros
Cada carcter tiene asociado un cdigo UNICODE. Los caracteres pueden interpretarse
como nmeros enteros sin signo.
int i;
char c;
i =a; // Resultado: i =97;
c =97; // Resultado: c =a;
c =a+1; // Resultado: c =b;
c =(char) (i+2); // Resultado: c=c;

Conversin entre caracteres y nmeros enteros
Cuando leemos un dato desde teclado, obtenemos una cadena de texto (un objeto de tipo
String) que deberemos convertir en un dato del tipo adecuado haciendo uso de una de
las siguientes funciones auxiliares:
String str;
b =Byte.parseByte(str); //String byte
s =Short.parseShort(str); //String short
i =Integer.parseInt(str); //String int
n =Long.parseLong(str); //String long
f =Float.parseFloat(str); //String float
d =Double.parseDouble(str); //String double

Evaluacin de expresiones:
- La precedencia de los operadores determina el orden de evaluacin
de una expresin.
3*4+1 (3*4)+1 (* tiene mayor precedencia q +)
INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 25

- Cuando en una expresin aparecen dos operadores con el mismo
nivel de precedencia, la asociatividad de los operadores determina el
orden de evaluacin.
a-b+c-d ((a-b)+c)-d (asociatividad de izq. a dch.)
a =b +=c =5 a = (b+=(c=5)) (idem)
- La precedencia y asociatividad determinan el orden de los
operadores, pero no especifican el orden el que se evalan los
operandos de un operador binario: en J ava, los operandos se evalan
de izq. a dch., es decir, el operando de la izq. se evala en primer
lugar.
son equivalentes las siguientes expresiones?
Expr1: n = x+(++x);
Expr2: n = (++x)+x;

NOTA: SIEMPRE ES RECOMENDABLE EL USO DE PARNTESIS, ya que
stos nos permiten especificar el orden de evaluacin de una expresin, adems de hacer
que sea ms interpretable.

INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 26

3 - Ejercicios.

1. Implemente el programa que se ha mostrado como ejemplo (HolaMundo).

2. Operadores unarios
int i, a, b, c;
: vamos a implementar un pequeo programa
(OperadorUnario) que muestre por pantalla (consola) un mensaje que indique el
valor de una variable antes de ser incrementada o decrementada mediante los
operadores ++y -- (pre y pos). Para ello, vamos a utilizar 4 variables de tipo
entero, i, a, b y c. La variable a almacenar el valor de i antes de
incrementarse/decrementarse. La variable b almacenar el valor de i durante la
operacin y la variable c mostrar el valor despus de haber sido modificado.
i =8; //inicializamos la variable i a un valor de tipo entero, por ejemplo, 8.
a =i;
b =i++; // o bien i-- || ++i || --i
c =i;
La salida por pantalla deber ser como se muestra a continuacin:

Antes Durante Despus
Operador i++ <valor> <valor> <valor>
Operador i-- <valor> <valor> <valor>
Operador ++i <valor> <valor> <valor>
Operador -i <valor> <valor> <valor>

Donde <valor>indicar el valor de las variables a, b y c, respectivamente.

3. A partir del ancho y alto de un rectngulo

, implemente un programa
(Rectangulo) que muestre por pantalla su rea, permetro y la longitud de su
diagonal.
4. A partir del radio y la altura de un cilindro

, implemente un programa (Cilindro)
que muestre por pantalla su rea y volumen.
TRABAJO AUTNOMO

5. Dada la temperatura t (en Fahrenheit) y la velocidad del viento v (en millas por
hora), implemente un programa (EnfriamientoViento) que calcule el
enfriamiento del viento (w) usando la frmula del National Weather Service:

w =35.74 +0.6215t +(0.4275t 35.75) * v
0.16

Por ejemplo, si t=200 y v=500, el valor de w previsto ha de ser,
aproximadamente, igual a 294.5108920119054.

6. Implemente un programa (AleatorioEntero) que genere un nmero aleatorio
(Math.random) entre 0 y N-1, donde N es un valor especificado (por ejemplo,
10). Ample el programa para que calcule un nmero aleatorio entre N y M.


INTRODUCCIN A LA PROGRAMACIN
Sesin 02

Pgina 27



NOTA: Para las funciones matemticas, consulte la librera Math del API de J ava
(java.lang.Math). Podemos encontrar una buena referencia en la siguiente direccin:

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html

NOTA: Un sitio web (pgina web) bastante bueno donde podemos encontrar ejemplos
de cdigo bastante tiles es:
http://www.exampledepot.com/

Vous aimerez peut-être aussi