1 - introduccion al lenguaje

41
Prof. Ángel D. Almarza M. Departamento de Computación. Cátedra de Computación Avanzada. Computación Avanzada (Adaptación presentación 1-2005) (Presentación nro. 1)

Upload: trinitro-tolueno

Post on 19-Jan-2016

22 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1 - Introduccion Al Lenguaje

Prof. Ángel D. Almarza M.Departamento de Computación. Cátedra de Computación Avanzada.

Computación Avanzada(Adaptación presentación 1-2005)

(Presentación nro. 1)

Page 2: 1 - Introduccion Al Lenguaje

Lenguaje de ProgramaciónJava 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 (POO)

Es independiente de la plataforma (independiente del sistema op.)

Es Seguro

Es Robusto

Es Confiable

Es fácil de aprender (estructuras similares, lenguaje C, C++)

Se ajusta a Internet (diseño de applets)

Es gratuito (disponible online)

Introducción

Page 3: 1 - Introduccion Al Lenguaje

RequerimientosJava SE Development Kit (JDK)

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

Entornos Integrados de Desarrollo:NetBeans versión 6.1: disponible Personal Técnico del Departamento de Computación.

NetBeans versión 6.9: descarga gratuita en línea (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

Page 4: 1 - Introduccion Al Lenguaje

Elementos del LenguajeSensible al uso de mayúsculas y minúsculas

Al escribir identificadores, por ejemplo el identificador Edad es diferente del identificador edad.

Todas las sentencias de Java deben escribirse en minúsculas, por ejemplo al escribir la sentencia if else, el compilador generaría un error al escribirlo en mayúsculas.

ComentariosUna sola línea:

int max = 10; //cantidad de elementos

Múltiples líneas:/* Método que retorna el mayor valor de un vector v de tV

* elementos tipo int

*/

Convenciones de codificaciónEnlace a convenciones java.sun

Elementos del Lenguaje

Page 5: 1 - Introduccion Al Lenguaje

Tipos de DatosPrimitivos

Una variable de tipo primitivo contiene un valor simple: un número (entero o real), un carácter (char), o un valor tipo boolean.

Referencias de Memoria o ApuntadoresUn dato cuyo valor es una dirección 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

Page 6: 1 - Introduccion Al Lenguaje

Variables

Elementos del Lenguaje

Declaración de variables tipo identificador; int x; short diaSemana;

Inicialización 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 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.

Page 7: 1 - Introduccion Al Lenguaje

Conversión de Tipos

Elementos del Lenguaje

Conversión automática Conversión 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

Conversión de tipo (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. Incluye conversión de un dato de tipo mayor a uno menor.

(tipo_dato) expresión_a_convertirEjemplo:float kilogramos, resultado;double calculo, valor;// casting kilogramos = (float)(calculo * 1.2); resultado = (float) valor;

Page 8: 1 - Introduccion Al Lenguaje

ConstantesEl identificador de una constante debe escribirse en MAYÚSCULAS.

Declaraciónfinal 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.

Page 9: 1 - Introduccion Al Lenguaje

OperadoresOperadores unarios: operadores de un solo operandooperador operando //notación de prefijo

Ejemplo: y = -x;

--z;

operando operador //notación de postfijo

Ejemplo: x++;

Elementos del Lenguaje

Page 10: 1 - Introduccion Al Lenguaje

OperadoresOperadores binarios: operadores de dos operandos

op1 operador op2 //notación de infijo

Ejemplo:

y = a + b;

z = (a + b)* y;

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

Elementos del Lenguaje

Método de la Clase Math para generar números aleatorios entre 0 y 1.

Page 11: 1 - Introduccion Al Lenguaje

OperadoresOperadores ternarios: operadores de tres operandos

op1 ? op2 : op3 //notación de infijo

Ejemplo:

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

Elementos del Lenguaje

Page 12: 1 - Introduccion Al Lenguaje

Operadores Aritméticos Operadores aritméticos Prioridad de los operadores aritméticos

grupo 0: ( ) (paréntesis)

grupo 1: – (unario) ++ --

grupo 2: * / %

grupo 3: + - + (concatenación)

Los paréntesis se utilizan para especificar el orden en que deben ejecutarse las operaciones.

Elementos del Lenguaje

Page 13: 1 - Introduccion Al Lenguaje

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

Elementos del Lenguaje

Page 14: 1 - Introduccion Al Lenguaje

Operadores Relacionales Operadores relacionales: > ; <; >=; <=; !=; ==

¿Cómo 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 cálculo.

Page 15: 1 - Introduccion Al Lenguaje

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

&& (and); || (or)

Operadores lógicos a nivel de bits & (and a nivel de bit) ; | (or a nivel de bits)

Operadores de desplazamiento de bits >> ; << ; >>> (no conserva el signo)

Page 16: 1 - Introduccion Al Lenguaje

Otros 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

Page 17: 1 - Introduccion Al Lenguaje

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);

Page 18: 1 - Introduccion Al Lenguaje

Asignación

Asignación sencillavariable = expresión;

temperatura = 25.5;

Escritura de expresiones de asignación muy frecuentes

Page 19: 1 - Introduccion Al Lenguaje

Estructuras Selectivas

Selectiva simple

if (condicion) {// bloque de sentencias

}

if (edad > 18) sumaMayor++;

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

}

Page 20: 1 - Introduccion Al Lenguaje

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--;

}

Page 21: 1 - Introduccion Al Lenguaje

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 = ‘B’;

else if (nota >= 7)calificacion = 'N';

else if (nota >= 5)calificacion = 'A';

else calificacion = 'S';

Page 22: 1 - Introduccion Al Lenguaje

Estructuras Selectivas Pérdida del else

el else está asociado al if inmediatamente anterior  

if (sexo == ‘F’) { if (edad > 60) jubiladas++;}else caballeros++;

Page 23: 1 - Introduccion Al Lenguaje

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;}

Page 24: 1 - Introduccion Al Lenguaje

Estructuras Repetitivas Mientras

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

}

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

raiz++;

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

Page 25: 1 - Introduccion Al Lenguaje

Estructuras Repetitivas Hacer mientras

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

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

Page 26: 1 - Introduccion Al Lenguaje

Estructuras RepetitivasDesde o Para

for ( 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) ;

Page 27: 1 - Introduccion Al Lenguaje

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

Page 28: 1 - Introduccion Al Lenguaje

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");}

Page 29: 1 - Introduccion Al Lenguaje

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

Page 30: 1 - Introduccion Al Lenguaje

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 }

}

Page 31: 1 - Introduccion Al Lenguaje

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

Page 32: 1 - Introduccion Al Lenguaje

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};

Page 33: 1 - Introduccion Al Lenguaje

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

Page 34: 1 - Introduccion Al Lenguaje

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

Page 35: 1 - Introduccion Al Lenguaje

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

Page 36: 1 - Introduccion Al Lenguaje

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];

Page 37: 1 - Introduccion Al Lenguaje

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}};

Page 38: 1 - Introduccion Al Lenguaje

Arreglos Bidimensonales (Matrices) Acceso a los elementos nomMatriz [indFila] [indColumna] Recorridoint 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]);}

Page 39: 1 - Introduccion Al Lenguaje

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

Page 40: 1 - Introduccion Al Lenguaje

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

Page 41: 1 - Introduccion Al Lenguaje

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];