You are on page 1of 41

Prof. ngel D. Almarza M.

Departamento de Computacin. Ctedra de Computacin Avanzada.


Computacin Avanzada
(Adaptacin presentacin 1-2005)
(Presentacin nro. 1)
Lenguaje de Programacin
Java es un lenguaje de programacin orientado a
objetos diseado para ser portable en diversas
plataformas y sistemas operativos. Desarrollado
por Sun Microsystems en 1995.

Es orientado a objetos (POO)
Es independiente de la plataforma (independiente del sistema op.)
Es Seguro
Es Robusto
Es Confiable
Es fcil de aprender (estructuras similares, lenguaje C, C++)
Se ajusta a Internet (diseo de applets)
Es gratuito (disponible online)



Introduccin
Requerimientos
Java SE Development Kit (JDK)

Contiene elementos necesarios para ejecutar un programa
independiente de la plataforma por medio de la mquina virtual de java
(JVM). Descarga gratuita en lnea (50 MB aprox.) disponible en:
http://java.sun.com/j2se/1.4.2/install-windows.html

Entornos Integrados de Desarrollo:
NetBeans versin 6.1: disponible Personal Tcnico del Departamento de
Computacin.
NetBeans versin 6.9: descarga gratuita en lnea (145 MB aprox.)
disponible en:
http://java.sun.com http://www.oracle.com/technetwork/java/index.html
Top Downloads: Java SE
JDK 6 Update 22 with NetBeans 6.9.1




Requerimientos
Elementos del Lenguaje
Sensible al uso de maysculas y minsculas
Al escribir identificadores, por ejemplo el identificador Edad es diferente
del identificador edad.
Todas las sentencias de Java deben escribirse en minsculas, por
ejemplo al escribir la sentencia if else, el compilador generara un error al
escribirlo en maysculas.
Comentarios
Una sola lnea:
int max = 10; //cantidad de elementos
Mltiples lneas:
/* Mtodo que retorna el mayor valor de un vector v de tV
* elementos tipo int
*/
Convenciones de codificacin
Enlace a convenciones java.sun








Elementos del Lenguaje
Tipos de Datos
Primitivos
Una variable de tipo primitivo contiene un valor simple: un nmero
(entero o real), un carcter (char), o un valor tipo boolean.

Referencias de Memoria o Apuntadores
Un dato cuyo valor es una direccin de memoria






Elementos del Lenguaje
D A T A
T Y P E
S I Z E L I T E R A L V A L U E
byte 8 bit
-
short 16 bit
-
int 32 bit
178
long 64 bit
8864L
float 32 bit
87.5F
double 64 bit
37.2 / 37.2D /3.72e1
char 16 bit
C
boolean
true / false

Variables
Elementos del Lenguaje
Declaracin de variables
tipo identificador;
int x;
short diaSemana;


Inicializacin de variables
float sueldo = 12.45F;
int a, b, c;
long z, y;
z = y = a = b = c = 0;
Si no se inicializan las variables Java
asignar cero a las variables de tipo
numrico (enteros y reales), false a
las de tipo bolean, \u0000 a las de
tipo char.
Los nombres de variables deben comenzar
con una letra en minscula. Si el nombre se
deriva de una combinacin de palabras las
subsiguientes palabras deben comenzar con
una letra mayscula. Puede ser nombres
cortos pero con significado, de modo que
cualquier lector infiera su uso a partir de su
nombre.
Conversin de Tipos
Elementos del Lenguaje
Conversin automtica
Conversin de un dato de un tipo menor a uno mayor
double < float < long < int < short < byte
Ejemplo:
long sumaEdades;
short edad = 15;
sumaEdades = edad; //convierte automaticamente short a long
Conversin de tipo (casting)
Se permite entre tipos numricos. Se puede convertir de carcter
a entero y viceversa. No se puede convertir booleanos a
nmeros y viceversa. Incluye conversin de un dato de tipo
mayor a uno menor.

(tipo_dato) expresin_a_convertir
Ejemplo:
float kilogramos, resultado;
double calculo, valor;
// casting
kilogramos = (float)(calculo * 1.2);
resultado = (float) valor;
Constantes
El identificador de una constante debe escribirse en
MAYSCULAS.
Declaracin
final tipo IDENTIFICADOR = valor;

Ejemplo:
final float ACELERACION = (float)9.8;





Elementos del Lenguaje
La palabra final es un
modificador de acceso que indica
que ese es el valor final del lugar de
memoria y que evita que pueda ser
modificado.
Operadores
Operadores unarios: operadores de un solo operando
operador operando //notacin de prefijo
Ejemplo:
y = -x;
--z;

operando operador //notacin de postfijo
Ejemplo:
x++;






Elementos del Lenguaje
Operadores
Operadores binarios: operadores de dos operandos
op1 operador op2 //notacin de infijo

Ejemplo:
y = a + b;
z = (a + b)* y;
int x = (int)(Math.random() * 10);






Elementos del Lenguaje
Mtodo de la Clase
Math para generar
nmeros aleatorios entre
0 y 1.
Operadores
Operadores ternarios: operadores de tres operandos

op1 ? op2 : op3 //notacin de infijo

Ejemplo:
int z = (a+b>0) ? 1 : -1;




Elementos del Lenguaje
Operadores Aritmticos
Operadores aritmticos
Prioridad de los operadores aritmticos
grupo 0: ( ) (parntesis)
grupo 1: (unario) ++ --
grupo 2: * / %
grupo 3: + - + (concatenacin)
Los parntesis se utilizan para especificar el
orden en que deben ejecutarse las operaciones.




Elementos del Lenguaje
Operadores Aritmticos
Operadores de incremento y decremento

Ejemplo:
int y, x = 10;
y = x++ + 5; //al evaluar; y = 15, x = 11
y = ++x + 5; //al evaluar; y = 17, x = 12
y = x-- + 5; //al evaluar; y = 17, x = 11
y = --x + 5; //al evaluar; y = 15, x = 10




Elementos del Lenguaje
Operadores Relacionales
Operadores relacionales: > ; <; >=; <=; !=; ==

Cmo comparar valores de punto flotante?
final double TOLERANCIA= 0.0001;
double a = (float) 12.45;
double b = (float) 12.49:
Math.abs(a-b) <= TOLERANCIA




Elementos del Lenguaje
Solo es posible realizar
comparaciones indirectas.
P.E: Retorna true si a y b son
iguales. Se calcul la diferencia
absoluta entre ambos valores para
compararlo con la tolerancia de
clculo.
Operadores Lgicos y de
desplazamiento de bits
Operadores lgicos
&& (and); || (or)

Operadores lgicos a nivel de bits
& (and a nivel de bit) ; | (or a nivel de bits)

Operadores de desplazamiento de bits
>> ; << ; >>> (no conserva el signo)
Otros Operadores
Operador condicional ternario
if (mes == 2)
ultimoDia = (anho % 4 == 0)? 29 : 28;

Operador new (pedir memoria)
int arreglo1[] = new int[100];
Circulo obj = new Circulo();

Resumen Prioridad de Operadores
Salida por Consola
System.out.println(e);

Donde e son elementos a escribir concatenados
con el operador +

Ejemplo:
float s = (float) 123.456789;
System.out.println(Suma = + s + \n);
System.out.println((int)(s*1000)/1000.0);
Asignacin
Asignacin sencilla
variable = expresin;
temperatura = 25.5;

Escritura de expresiones de asignacin
muy frecuentes

Estructuras Selectivas
Selectiva simple

if (condicion) {
// bloque de sentencias
}
if (edad > 18)
sumaMayor++;

if (edad > 18){
sumaMayor++;
contador++;
}
Estructuras Selectivas
Selectiva doble

if (condicion) {
// bloque de sentencias
}
else{
// bloque de sentencias
}
if (edad > 18)
sumaMayor++;
else
sumaMayor--;
if (edad > 18){
sumaMayor++;
contador++;
}else{
sumaMayor--;
contador--;
}
Estructuras Selectivas
Selectiva mltiple if else if

if (condicion1){
//bloque de sentencias 1
}else if (condicion2){
//bloque de sentencias 2
else{
//bloque de sentencias
}

if (nota >= 9)
calificacion = B;
else if (nota >= 7)
calificacion = 'N';
else if (nota >= 5)
calificacion = 'A';
else
calificacion = 'S';
Estructuras Selectivas
Prdida del else






el else est asociado al if inmediatamente
anterior
if (sexo == F) {
if (edad > 60)
jubiladas++;
}
else
caballeros++;
Estructuras Selectivas
Selectiva Mltiple
switch (expresin){
case constante1: sentencia; break;
case constante1: sentencia; break;
....
default: sentencia; break;
}
switch (califLetra){
case 'A': puntos = 20; break;
case 'B': puntos = 12; break;
case 'C': puntos = 8; break;
default : puntos = 0; break;
}
Estructuras Repetitivas
Mientras
while (condicin){
// bloque de sentencias
}

raiz = 1;
while ((raiz * raiz) < x)
raiz++;
raiz = 1;
while ((raiz * raiz) < x){
System.out.println(raiz: +raiz);
raiz++;
}
Estructuras Repetitivas
Hacer mientras
do{
// bloque de sentencias
}while (condicin);

raiz = 0;
do{
raiz++;
}while((raiz * raiz) < x));

Estructuras Repetitivas
Desde o Para
for ( iniciaVarControl; condicin; incremento ){
// bloque de sentencias
}
suma = 0;
for(int i = 1; i <= n; i++) suma += i;

for(float r = 0.0; r <= 15.0; r += 0.1)
System.out.println("Valor: " + r) ;

for( int i = 100; i >= 5; i -= 5 )
System.out.println("Valor: " + i);


boolean encontrado = false;
for( ; !encontrado; ){
// bloque de sentencias
}

for( int i = 1, multiplo3 = 1; i <= 5; i++, multiplo3 += 2 )

System.out.println("Valor: " + multiplo3) ;


Mtodos
Mtodo con resultado
tipo_a_retornar identificador( lista
de parametros formales)
{
//bloque de sentencias
return valor_ a_retornar ;
}


El valor a retornar puede
ser un valor de tipo
primitivo o una referencia
Las variables locales no se
inicializan por defecto

double cubo( float x ){
return x*x*x;
}


Mtodos
Mtodo tipo void
void identificador( lista de
parametros formales)
{
// bloque de sentencias
}



void inicializa( float r, float l ){
radio = r;
longitud = l;
}


void mensaje(){
System.out.println("Hola amigos");
}
Llamada a un mtodo
x += cubo(3);
System.out.println(cubo(3));
inicializa(2.5, 2);
inicializa(r, l);
mensaje();

En Java el pase de parmetros es por valor
Mtodos
Sobrecarga de mtodos (polimorfismo en la
sobrecarga)
class Desarmadores{
int tamanhoPunta( float ancho, float espesor,
float altura ){
// bloque de sentencias
}

int tamanhoPunta( float ancho ){
// bloque de sentencias
}
int tamanhoPunta(int indiceEstandard){
// bloque de sentencias
}
}

Arreglos Unidimensonales
(Vectores)
Declaracin y Creacin
tipo[] nomVector = new tipo[numElementos];
tipo nomVector[] = new tipo[numElementos];
al crear un arreglo de objetos, Java lo inicializa
en null, indicando que el arreglo an no
contiene objetos
int[] edades = new int[20];
String[] ciudades = new String[50];
int edades[] = new int[20];
Date fiestas[] = new Date[16];

Los ndices van desde 0 hasta numElementos-1
Arreglos Unidimensonales
(Vectores)
Creacin e inicializacin
char vocales [] = {'a', 'e', 'i', 'o', 'u'};

boolean [] respuestas = { true, false, true, true};

long cont[] = {10, 15, 20, 25};
Arreglos Unidimensonales
(Vectores)
Acceso a los elementos
nomVector[ndice]
Recorrido






int a[] = {1,2,3,4,5};

for (int k = 0; k < a.length; k++){
System.out.println( a[k] );
}
Arreglos Unidimensonales
(Vectores)
Como parmetros de mtodos
void ordenar( int x[], int n ){}
final int N = 100;
int a[] = new int[N];
ordenar(a, N);
En la llamada se pasa la referencia al arreglo
Arreglos Unidimensonales
(Vectores)
Asignacin de arreglos
final int N = 100;

int a[] = new int[N];
int b[] = new int[20];

a = b;
En a se copia la referencia al arreglo b de tal
modo que las dos variables (a y b) referencian
al arreglo b
Arreglos Bidimensonales
(Matrices)
Declaracin y Creacin
tipo nomMatriz[][] = new tipo[numFilas][numColumnas];

tipo[][] nomMatriz = new tipo[numFilas][numColumnas];
int ventas[][] = new int[20][12];

String [ ][ ] calendario = new String[5][7];
Arreglos Bidimensonales
(Matrices)
Creacin e inicializacin
tipo nomMatriz[ ][ ] = {{lista de valores de la fila 0},
{lista de valores de la fila 1},..};
int matriz [][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Arreglos Bidimensonales
(Matrices)
Acceso a los elementos
nomMatriz [indFila] [indColumna]
Recorrido
int ventas[][] = new int[20][12];

for (int i = 0; i < ventas.length; i++)
for (int j = 0; j < ventas[i].length; j++){
ventas[i][j] = (i*10 + k);
System.out.println(ventas[i][j]);
}
Arreglos Bidimensonales
(Matrices)
Como parmetros de mtodos

void ordenar( int x[][], int m, int n ){}
final int N = 100;
int a[][] = new int[N][N];
ordenar(a, N, N);
En la llamada se pasa la referencia al arreglo
Arreglos Bidimensonales
(Matrices)
Asignacin de arreglos

final int N = 100;

int a[][] = new int[N][20];
int b[][] = new int[20][N];

a = b;
En a se copia la referencia al arreglo b de tal
modo que las dos variables (a y b) referencian
al arreglo b
Arreglos Multidimensionales
El nmero de corchetes requeridos vara de acuerdo a la
dimensin del arreglo.

String [ ][ ][ ] arregloMulti = new String [10][5][3];