1 - introduccion al lenguaje
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];