1 - introduccion al lenguaje

Post on 19-Jan-2016

22 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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)

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

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

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

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

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.

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;

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.

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

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.

OperadoresOperadores ternarios: operadores de tres operandos

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

Ejemplo:

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

Elementos del 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

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

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.

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)

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

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

Asignación

Asignación sencillavariable = 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 = ‘B’;

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

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

else calificacion = 'S';

Estructuras Selectivas Pérdida del else

el else está asociado al if inmediatamente anterior  

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

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)

raiz++;

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

Estructuras Repetitivas Hacer mientras

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

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

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

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

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

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

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

top related