1 - introduccion al lenguaje
TRANSCRIPT
![Page 1: 1 - Introduccion Al Lenguaje](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/18.jpg)
Asignación
Asignación sencillavariable = expresión;
temperatura = 25.5;
Escritura de expresiones de asignación muy frecuentes
![Page 19: 1 - Introduccion Al Lenguaje](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/19.jpg)
Estructuras Selectivas
Selectiva simple
if (condicion) {// bloque de sentencias
}
if (edad > 18) sumaMayor++;
if (edad > 18){sumaMayor++;contador++;
}
![Page 20: 1 - Introduccion Al Lenguaje](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062305/55cf94a2550346f57ba3594f/html5/thumbnails/41.jpg)
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];