Power Point - Universidad de Carabobo

Download Report

Transcript Power Point - Universidad de Carabobo

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
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 confiable
Es fácil de aprender
Se ajusta a Internet
Es gratuito
Compilador de Java
Como bajarlo de Internet
http://java.sun.com
Como instalarlo
http://java.sun.com/j2se/
1.4.2/install-windows.html
Elementos del Lenguaje
Comentarios
Una 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 Datos
Primitivos
Una 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 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;
Variables
Declaración de variables
tipo identificador;
int x;
Si no se inicializan las variables Java
short diaSemana;
asignará cero a las variables de tipo
numérico (enteros y reales), false a
lasvariables
de tipo bolean,
a las de
Los nombres de
deben\u0000
comenzar
tipominúscula.
char.
con una letra en
Si el nombre se
deriva de una combinación de palabras las
subsiguientes
palabras deben comenzar con
Inicialización
de variables
una=letra
mayúscula. Puede ser nombres
float sueldo
12.45;
pero con significado, de modo que
int a, b, cortos
c;
long z, y;cualquier lector infiera su uso a partir de su
z = y = a nombre.
= b = c = 0;
Constantes
Declaración de constantes
final 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
minú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 operando
Operadores unarios
operador operando
//notación de prefijo
Ejemplo:
y = -x;
--z;
operando operador
Ejemplo:
x++;
//notación de postfijo
Operadores de dos operandos
Operadores binarios
op1 operador op2 //notación de infijo
Ejemplo:
y = a + b;
z = (a + b)* y;
int x = (int)(Math.random()*10);
Operadores de tres operandos
Operadores ternarios
op1 ? op2 : op3
//notación de infijo
Ejemplo:
boolean z = (a+b>0)? true :false;
Operadores Aritméticos
Operadores aritméticos
Prioridad de los operadores
aritméticos
grupo 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éticos
Operadores de incremento y
decremento
Ejemplo:
int
y =
y =
y =
y =
y, x = 10;
x++ + 5; //al
++x + 5; //al
x-- + 5; //al
--x + 5; //al
evaluar;
evaluar;
evaluar;
evaluar;
y
y
y
y
=
=
=
=
15,
17,
17,
15,
x
x
x
x
=
=
=
=
11
12
11
10
Operadores Relacionales
Operadores relacionales
¿Cómo comparar valores de punto
flotante?
Operadores Lógicos y de
desplazamiento de bits
Operadores lógicos
Operadores lógicos a nivel de bits
Operadores de desplazamiento de
bits
Otros Operadores
Operador condicional ternario
if (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 = 123.456789;
System.out.println(“Suma = ” + s + “\n”);
System.out.println((int)(s*1000)/1000.0);
Asignación
Asignación sencilla
variable = expresión;
temperatura = 25.5;
Escritura de expresiones de asignación
muy frecuentes
Estructuras Selectivas
Selectiva simple
if (edad > 18)
sumaMayor++;
if (condicion) {
// bloque de sentencias
}
if (edad > 18){
sumaMayor++;
contador++;
}
Estructuras Selectivas
Selectiva doble
if (edad > 18)
sumaMayor++;
else
sumaMayor--;
if (condicion) {
// bloque de sentencias
}
else{
if (edad > 18){
sumaMayor++;
// bloque de sentencias
contador++;
}else{
}
sumaMayor--;
contador--;
}
Estructuras Selectivas
Selectiva múltiple if else if
if (nota >= 9)
calificacion =
if (condicion1){
else if (nota
>= 7)
//bloque de sentencias
1
calificacion =
}else if (condicion2){
else if (nota >= 5)
calificacion
=
//bloque de sentencias
2
else
else{
calificacion =
//bloque de sentencias
}
“SB”;
'N';
'A';
'S';
Estructuras Selectivas
Pérdida del else
if
if (temperatura
(temperatura >> 37)
37) {
if (tensionArterial
(tensionArterial >> 12)
12)
if
contadorEnfermo++;
contadorEnfermo++;
}
else
else contadorSaludable++;
contadorSaludable++;
el else está asociado al if inmediatamente
anterior
Estructuras Selectivas
Selectiva Múltiple
switch (expresión){
case constante1: sentencia; break;
case constante1: sentencia; break;
....
default: sentencia; break;
}
switch (califLetra){
case 'A': puntos
case 'B': puntos
case 'C': puntos
default : puntos
}
=
=
=
=
20; break;
12; break;
8; break;
0; break;
Estructuras Repetitivas
Mientras
while (condición){
// bloque de sentencias
}
raizraiz
= 1;= 1;
while
while
((raiz
((raiz
* raiz)
* raiz)
< x){
< x) raiz++;
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 Repetitivas
Desde o Para
for ( iniciaVarControl; condición; incremento ){
// bloque de sentencias
}
suma
for(float
for(
== 0;
ir==100;
0.0;
<=false:
5;
i -=
r5+=
) 0.1)
for(
int iint
1, encontrado
multiplo3
=i
1;ri>=
5;15.0;
i++,
multiplo3
+= 2 )
boolean
=<=
for(int
i = 1; i <=){ n; i++) suma
" +=
+ i);
r)
i;;
for( ;System.out.println("Valor:
!encontrado;
System.out.println("Valor: " + multiplo3) ;
}
// bloque de sentencias
Métodos
Método con resultado
tipo_a_retornar identificador( lista
de parametros
double cubo(
float x ){formales)
{
return x*x*x;
//bloque de sentencias
} return valor_ a_retornar ;
}
El valor a retornar puede
Las variables locales no se
ser un valor de tipo
inicializan por defecto
primitivo o una referencia
Métodos
Método tipo void
void identificador( lista de
formales)
void mensaje(){
inicializa(parametros
float r, float
l ){
{
System.out.println("
radio = r;
Hola amigos");
//
bloque =del;sentencias
longitud
}
}}
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];
int[]
edades =
new int[20];
int edades[]
= new
int[20];
String[]
ciudades
= new
String[50];
Date fiestas[]
= new
Date[16];
al crear un arreglo de objetos, Java lo inicializa
Los
índices
van desde
hasta numElementos-1
en
null,
indicando
que el0 arreglo
aún no
contiene objetos
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]
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 (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];
Fin