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 (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);
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'};
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];