430 likes | 577 Views
Computación Avanzada. Profesor: María Fátima De Abreu Período Lectivo 1-2005 Universidad de Carabobo. Facultad de Ingeniería. Dpto. de Computación. El lenguaje Java.
E N D
Computación Avanzada Profesor: María Fátima De Abreu Período Lectivo 1-2005 Universidad de Carabobo. Facultad de Ingeniería. Dpto. de Computación
El lenguaje Java • Java es un lenguaje de programación orientado a objetos diseñado para ser portable en diversas plataformas y sistemas operativos. Desarrollado por Sun Microsystems en 1995. • Es orientado a objetos • Es independiente de la plataforma • Es Seguro • Es Robusto • Es confiable • Es fácil de aprender • Se ajusta a Internet • Es gratuito
Compilador de Java • Como bajarlo de Internet • http://java.sun.com • Como instalarlo • http://java.sun.com/j2se/1.4.2/install-windows.html
Elementos del Lenguaje • Comentarios • Una sola línea int maxEcua = 4; // máximo número de ecuaciones • Varias líneas /* Programa que determina la solución de un sistema de ecuaciones utilizando el método de Gauss Jordan*/ • Convenciones de codificación
Tipos de Datos • Primitivos • Una variable de tipo primitivo contiene un valor simple : un número, un carácter o un valor booleano • Referencia (apuntador) • Un dato cuyo valor es una dirección de memoria
Conversión de tipos • Conversión de tipos (casting) Se permite entre tipos numéricos. Se puede convertir de carácter a entero y viceversa. No se puede convertir booleanos a números y viceversa. • Conversión de un dato de un tipo menor a uno mayor (Conversión automática) double < float < long < int < short < byte Ejemplo: long sumaEdades; short edad = 15; sumaEdades = edad;//convierte automaticamente short a long • Conversión de un dato de un tipo mayor a uno menor : (tipo_dato) expresión_a_convertir Ejemplo: float kilogramos, resultado; double calculo, valor; // casting kilogramos = (float)(calculo * 1.2); resultado = (float) valor;
Variables • Declaración de variables tipo identificador; int x; short diaSemana; • Inicialización de variables float sueldo = 12.45; int a, b, c; long z, y; z = y = a = b = c = 0; Si no se inicializan las variablesJava asignará cero a las variables de tipo numérico (enteros y reales), false a las de tipo bolean, \u0000 a las de tipo char. Los nombres de variablesdeben comenzar con una letra en minúscula. Si el nombre se deriva de una combinación de palabras las subsiguientes palabras deben comenzar con una letra mayúscula. Puede ser nombres cortos pero con significado, de modo que cualquier lector infiera su uso a partir de su nombre.
Constantes • Declaración de constantes final tipo identificador = valor; finalfloat ACELERACION = 9.8; La palabra final es un modificador de acceso que indica que ese es el valor final del lugar de memoria y que evita que su valor pueda ser modificado
Diferenciación de mayúsculas y minúsculas • Al escribir identificadores, por ejemplo el identificador Sueldo es diferente del identificador sueldo. • Todas las sentencias de Java deben escribirse en minúsculas, por ejemplo al escribir la sentencia if else, el compilador generaría un error si no se escriben en minúsculas.
Operadores de un solo operando • Operadores unarios operador operando//notación de prefijo Ejemplo: y = -x; --z; operando operador//notación de postfijo Ejemplo: x++;
Operadores de dos operandos • Operadores binarios op1 operador op2//notación de infijo Ejemplo: y = a + b; z = (a + b)* y; int x = (int)(Math.random()*10);
Operadores de tres operandos • Operadores ternarios op1 ? op2 : op3//notación de infijo Ejemplo: boolean z = (a+b>0)? true :false;
Operadores Aritméticos • Operadores aritméticos • Prioridad de los operadores aritméticos grupo 0: ( ) (paréntesis) grupo 1: ++ -- + (unario) –(unario) grupo 2: * / % • Los paréntesis se utilizan para especificar el orden en que deben ejecutarse las operaciones:
Operadores Aritméticos • 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
Operadores Relacionales • Operadores relacionales • ¿Cómo comparar valores de punto flotante?
Operadores Lógicos y de desplazamiento de bits • Operadores lógicos • Operadores lógicos a nivel de bits • Operadores de desplazamiento de bits
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 = 123.456789; System.out.println(“Suma = ” + s + “\n”); System.out.println((int)(s*1000)/1000.0);
Asignación • Asignación sencilla variable = expresión; temperatura = 25.5; • Escritura de expresiones de asignación 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 múltiple if else if if (condicion1){//bloque de sentencias 1 }else if(condicion2){//bloque de sentencias 2 else{//bloque de sentencias } if (nota >= 9)calificacion = “SB”;else if (nota >= 7)calificacion = 'N';else if (nota >= 5)calificacion = 'A';else calificacion = 'S';
Estructuras Selectivas • Pérdida del else if (temperatura > 37) if (tensionArterial > 12) contadorEnfermo++; else contadorSaludable++; el else está asociado al if inmediatamente anterior if (temperatura > 37) { if (tensionArterial > 12) contadorEnfermo++;} elsecontadorSaludable++;
Estructuras Selectivas • Selectiva Múltiple switch (expresión){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 (condición){// bloque de sentencias } raiz = 1;while ((raiz * raiz) < x){ System.out.println(“raiz: ”+raiz); raiz++; } raiz = 1;while ((raiz * raiz) < x) raiz++;
Estructuras Repetitivas • Hacer mientras do{ // bloque de sentencias }while (condición); raiz = 0;do{ raiz++;}while((raiz * raiz) < x));
Estructuras Repetitivas • Desde o Para for ( iniciaVarControl; condición; incremento ){// bloque de sentencias } for( int i = 1, multiplo3 = 1; i <= 5; i++, multiplo3 += 2 ) System.out.println("Valor: " + multiplo3) ; 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}
Métodos • Método con resultado tipo_a_retornaridentificador( lista de parametros formales){//bloque de sentenciasreturn valor_ a_retornar ;} double cubo( float x ){return x*x*x;} El valor a retornar puede ser un valor de tipo primitivo o una referencia Las variables locales no se inicializan por defecto
Métodos • Método 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 método • x += cubo(3); • System.out.println(cubo(3)); • inicializa(2.5, 2); • inicializa(r, l); • mensaje(); En Java el pase de parámetros es por valor
Métodos • Sobrecarga de métodos (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) • Declaración y Creación tipo[] nomVector = new tipo[numElementos]; tipo nomVector[] = new tipo[numElementos]; int[] edades = new int[20]; String[] ciudades = new String[50]; int edades[] = new int[20]; Date fiestas[]= new Date[16]; al crear un arreglo de objetos, Java lo inicializa en null, indicando que el arreglo aún no contiene objetos Los índices van desde 0 hasta numElementos-1
Arreglos Unidimensonales (Vectores) • Creación e inicialización 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 parámetros de métodos 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) • Asignación 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) • Declaración y Creación 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) • Creación e inicialización 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 parámetros de métodos 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) • Asignación 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 número de corchetes requeridos varía de acuerdo a la dimensión del arreglo. String [ ][ ][ ] arregloMulti = new String [10][5][3];