Computación Avanzada

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Computación AvanzadaComputación Avanzada

Profesor: María Fátima De AbreuPeríodo Lectivo 1-2005

Universidad de Carabobo. Facultad de Ingeniería. Dpto. de Computación

El lenguaje JavaEl 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 confiableEs fácil de aprender Se ajusta a Internet Es gratuito

Elementos del LenguajeElementos del Lenguaje

ComentariosUna 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 DatosTipos de Datos

PrimitivosUna 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 tiposConversió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;

VariablesVariables

Declaración de variablestipo identificador;int x;

short diaSemana;

Inicialización de variablesfloat sueldo = 12.45;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 numérico (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 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.

ConstantesConstantes

Declaración de constantesfinal tipo identificador = valor;

final float 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 Diferenciación de mayúsculas y minúsculasminú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 operandoOperadores de un solo operando

Operadores unariosoperador operando //notación de prefijoEjemplo:

y = -x;

--z;

operando operador //notación de postfijoEjemplo:

x++;

Operadores de dos operandosOperadores de dos operandos

Operadores binariosop1 operador op2 //notación de infijo

Ejemplo: y = a + b;

z = (a + b)* y;

int x = (int)(Math.random()*10);

Operadores de tres operandosOperadores de tres operandos

Operadores ternariosop1 ? op2 : op3 //notación de infijo

Ejemplo:boolean z = (a+b>0)? true :false;

Operadores AritméticosOperadores Aritméticos

Operadores aritméticos Prioridad de los operadores aritméticosgrupo 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éticosOperadores 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 RelacionalesOperadores Relacionales

Operadores relacionales

¿Cómo comparar valores de punto flotante?

Operadores Lógicos y de Operadores Lógicos y de desplazamiento de bitsdesplazamiento de bits

Operadores lógicos

Operadores lógicos a nivel de bits

Operadores de desplazamiento de bits

Otros OperadoresOtros Operadores

Operador condicional ternarioif (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 ConsolaSalida 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

Asignación sencillavariable = expresión;

temperatura = 25.5;

Escritura de expresiones de asignación muy frecuentes

Estructuras SelectivasEstructuras Selectivas

Selectiva simple

if (condicion) {// bloque de sentencias

}

if (edad > 18) sumaMayor++;

if (edad > 18){sumaMayor++;contador++;

}

Estructuras SelectivasEstructuras 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 SelectivasEstructuras 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 SelectivasEstructuras Selectivas

Pérdida del elseif (temperatura > 37)

if (tensionArterial > 12)

contadorEnfermo++;

else contadorSaludable++;

el else está asociado al if inmediatamente anterior  

if (temperatura > 37) { if (tensionArterial > 12) contadorEnfermo++;}else contadorSaludable++;

Estructuras SelectivasEstructuras Selectivas

Selectiva Múltipleswitch (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 RepetitivasEstructuras Repetitivas

Mientraswhile (condición){ // bloque de sentencias

}

raiz = 1;while ((raiz * raiz) < x) raiz++;

raiz = 1;while ((raiz * raiz) < x){ System.out.println(“raiz: ”+raiz); raiz++; }

Estructuras RepetitivasEstructuras Repetitivas

Hacer mientrasdo{ // bloque de sentencias}while (condición);

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

Estructuras RepetitivasEstructuras Repetitivas

Desde o Parafor ( iniciaVarControl; condición; 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) ;

MétodosMétodos

Método 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;}

MétodosMé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étodoLlamada 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étodosMé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)Arreglos Unidimensonales (Vectores)

Declaración y Creación 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 aún 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)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)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)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)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 Arreglos Bidimensonales (Matrices)(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 Arreglos Bidimensonales (Matrices)(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 Arreglos Bidimensonales (Matrices)(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 Arreglos Bidimensonales (Matrices)(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 Arreglos Bidimensonales (Matrices)(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 MultidimensionalesArreglos Multidimensionales

El número de corchetes requeridos varía de acuerdo a la dimensión del arreglo.

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

FinFin

Recommended