Download De Ada a Java Contenido Bibliografía (Java) Java: Introducción a

Document related concepts
no text concepts found
Transcript
1
2
Contenido
De Ada a Java
• Introducción a Java
Javier Miranda
• Variables, tipos de datos y operadores
• Sentencias de control
• Subprogramas
• Tablas y matrices
Ada
• Excepciones
• Paquetes
18-feb-04
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
3
4
Bibliografía (Java)
Java: Introducción a Java
Javier Miranda
– L. Lemay, C. Perkins. Aprendiendo Java en 21
días. Prentice-Hall, 1996.
– R. Lafore. Data Structures & Algorithms in
Java. The Waite Group, 1998.
– M. Weiss. Data Structures & Problem Solving
Using Java. Addison-Wesley, 1999.
18-feb-04
Ada
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
5
6
Compilador
Primer Programa
Ejemplo 1.1
$ javac hola.java
//Este programa escribe Hola en pantalla
Java Source
File
class Hola
{
Compiler
public static void main(String[] args)
{
System.out.println(“Hola !");
}
Bytecode
}
18-feb-04
(C) Javier Miranda, 2002
.java
18-feb-04
.class
(C) Javier Miranda, 2002
1
7
8
Ejecución desde línea órdenes
Ejecución desde navegador
Ejemplo 1.2
$ java hola
import java.awt.Graphics;
Bytecode
Java
Interpreter
on Windows
Java
Interpreter
on Linux
...
18-feb-04
class Hola_Applet
extends java.applet.Applet
{
public void paint (Graphics g)
{
g.drawString(“Hola !",10,10);
}
}
Java
Interpreter
on Sun Solaris
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
9
10
Restricciones de seguridad en las
Applets
Página HTML con Applet
<html>
<body>
<applet
• No pueden leer ni escribir en el disco duro
local
code=“Hola_Applet.class"
width = 100 height = 40>
• No pueden ejecutar ningún programa del
ordenador local.
</applet>
</body>
• Sólo pueden conectarse con el servidor del
cual se cargan.
</html>
18-feb-04
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
11
12
De Ada a Java: Variables, Tipos
de datos y Operaciones
Palabras reservadas de Java
abstract
boolean
break
byte
byvalue
case
cast
catch
char
class
const
continue
18-feb-04
default
do
double
else
extends
false
final
finally
float
for
future
generic
goto
if
implements
import
inner
instanceof
int
interface
long
native
new
null
operator
outer
package
private
protected
public
rest
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
var
void
volatile
while
(C) Javier Miranda, 2002
Javier Miranda
Ada
18-feb-04
(C) Javier Miranda, 2002
2
Tipos de Datos Numéricos Básicos
Java
byte
short
int
long
float
double
Ada
Integer
Natural
Positive
Float
13
+ - * / mod rem
8 bits
16 bits
32 bits
64 bits
32 bits
64 bits
(C) Javier Miranda, 2002
Conversión de Tipos
i++;
Numero--;
Numero := Numero + 4;
Numero := Numero * 5;
Numero+=4;
Numero*=5;
18-feb-04
Letra : Character := ‘A’;
Java
(C) Javier Miranda, 2002
Nombre’Length
Nombre (3)
Nombre (2 .. 3)
Nombre.length()
Nombre.charAt (3)
Nombre.substring (2, 3)
Nombre.indexOf (‘v’)
Nombre.indexOf (“av”)
Nombre.toUpperCase()
Integer’Image (23);
String.valueOf (23);
(C) Javier Miranda, 2002
18
Tipo Lógico
Ada
String nombre;
nombre = new String
(“Java”);
Unicode
\u0008
\u0009
\u000a
\u000d
18-feb-04
17
Nombre : String (1 .. 3);
Nombre := “Ada”
18-feb-04
Descripción
Secuencia
Retroceder
\b
Tab
\t
Siguiente linea
\n
Principio linea
\r
numero2 = (float) numero1 * 2;
numero1 = (int) numero2;
(C) Javier Miranda, 2002
Ada
// Dos formas de declaración:
// 1) ASCII
char letra = 'A';
// 2) Formato 16 bits Unicode
char letra = '\u000A';
Caracteres especiales de Java
int numero1 = 2;
float numero2;
Tipo String
16
Java
Ejemplo:
18-feb-04
%
Tipo Carácter
Ada
(tipo_basico) Expr
Numero1 : Integer := 2;
Numero2 : Float;
begin
Numero2 := Float (Numero1*2);
Numero1 := Integer (Numero2);
end;
/
(C) Javier Miranda, 2002
Java
Tipo_Basico (Expr)
*
I := I + 1;
Numero := Numero – 1;
15
Ada
-
Ejemplos:
int
numero;
int
total = 0;
float radio;
final float PI = 3.14f;
18-feb-04
+
++ -+= -= *= /= %=
Ejemplos
Numero : Integer;
Total
: Natural := 0;
Radio : Float;
PI
: constant Float := 3.14;
14
Operadores
Java
Fin : Boolean := False;
boolean fin = false;
Operadores
Ada
=
/=
<, <=, >, >=
AND
OR
NOT
18-feb-04
Java
==
!=
<, <=, >, >=
&&
||
!
(C) Javier Miranda, 2002
3
19
20
Sentencia Condicional
De Ada a Java
Sentencias de Control
Ada
Javier Miranda
if Expr-1 then
...
elsif Expr-2 then
...
elsif Expr-N then
...
else
...
end if;
Ada
18-feb-04
(C) Javier Miranda, 2002
Java
if (Expr)
{
...
}
else
{
...
}
18-feb-04
(C) Javier Miranda, 2002
21
22
Sentencia Condicional Múltiple
Bucles
Java
Ada
Ada
switch (Expr)
{ case Valor-1:
...
break;
case Valor-2:
...
break;
default:
...
}
case Expr-1 is
when Valor-1 =>
...
when Valor-2 =>
...
when others =>
...
end case;
18-feb-04
(C) Javier Miranda, 2002
Java
while Expr loop
...
end loop;
while (Expr)
{
...
}
loop
do
{
exit when Expr;
end loop;
...
} while (Expr)
exit;
break;
continue;
18-feb-04
(C) Javier Miranda, 2002
23
Break
Continue
condition?
Continue
condition?
Ada
false
true
true
18-feb-04
Continue
false
Statement(s)
Statement(s)
break
continue
Statement(s)
Statement(s)
Next
Statement
Next
Statement
24
Bucles
(C) Javier Miranda, 2002
for Var in Desde …
Hasta loop
...
end loop;
Java
for (InicializacionVariable;
Condicion;
Incremento)
{
...
}
Ejemplo:
for i in 1 .. 10 loop
...
end loop;
18-feb-04
for (int i = 1; i<=10; i++)
{
...
}
(C) Javier Miranda, 2002
4
25
26
Subprogramas
De Ada a Java
Subprogramas
Java
Ada
-Funciones
-Procedimientos
Javier Miranda
- Métodos
Optional return
value
Optional Input
Method Signature
Method body
Ada
Black Box
18-feb-04
(C) Javier Miranda, 2002
28
Parámetros
Java
function Max
(Num1: Integer;
Num2: Integer)
return Integer is
begin
if Num1 > Num2 then
return Num1;
else
return Num2;
end if;
end Max;
Ada
int max
(int num1, int num2)
{
if (num1 > num2)
return num1;
else
return num2;
}
18-feb-04
(C) Javier Miranda, 2002
27
Funciones
Ada
18-feb-04
Java
- In: Todos los tipos de datos
básicos de Java
(byte, short, int, long, float,
double, char, boolean)
- in out: Todos los demás.
- in
- out
- in out
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
29
30
De Ada a Java
Tablas y Matrices
Sobrecarga
Ambos lenguajes permiten sobrecarga,
pero Java no permite sobrecargar los
Operadores (+, -, *, /, % )
Javier Miranda
Recursividad
Ambos lenguajes permiten recursividad
Ada
18-feb-04
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
5
31
32
Declaración
Inicialización
Java
Ada
Java
Ada
Hay dos formas:
type T_Tabla is
array (Positive range <>)
of Integer;
o
Tabla : T_Tabla (0 .. 9);
tabla = new int [10];
Tabla : array (0 .. 3) of Float
:= (3.4, 2.1, 5.2, 1.8);
int [] tabla;
Ambos lenguajes permiten también inicializar
las tablas utilizand bucles
int tabla[];
Ojo: En Java el índice siempre
comienza en 0
18-feb-04
float tabla [] =
{3.4, 2.1, 5.2, 1.8}
(C) Javier Miranda, 2002
for I in Tabla’Range loop
Tabla (i) := Float (I);
end loop;
for (int i = 0;
i <tabla.length; i++)
tabla [i] = (float) i;
18-feb-04
(C) Javier Miranda, 2002
33
34
Matrices
Línea de órdenes
Java
Ada
Pueden declararse de dos
formas que son equivalentes:
type T_Tabla is
array (Positive range <>,
Positive range <>)
of Integer;
Tabla : T_Tabla (0 .. 9, 0 .. 9);
public class Parametros_Linea_Ordenes {
public static void main(String[] args) {
int [][] tabla;
System.out.println(args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]= “ + args[i]);
}
int tabla[][];
tabla = new int [10][10];
}
Ojo: En Java el índice siempre
comienza en 0
18-feb-04
}
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
35
De Ada a Java
Excepciones
36
Declaración de Excepciones
Javier Miranda
Ada
Java
No_Encontrado : Exception;
class No_Encontrado
extends Exception {};
Ada
18-feb-04
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
6
37
Java
Ada
Excepciones
Elevación
raise No_Encontrado;
Ada
Java
procedure Ejemplo ( ... );
-- Excepciones:
-- No_Encontrado
-- Valor_Duplicado
public void Ejemplo ( ... )
throws No_Encontrado,
Valor_Duplicado;
throw new No_Encontrado();
Captura
{
begin
...
try
{
...
}
catch (No_Encontrado e)
{ ...}
catch (Valor_Duplicado e)
{...}
exception
when No_Encontrado =>
...
when Valor_Duplicado =>
...
end;
18-feb-04
38
(C) Javier Miranda, 2002
}
18-feb-04
(C) Javier Miranda, 2002
39
40
Re-elevación
Ada
De Ada a Java
Paquetes
Java
begin
...
exception
when No_Encontrado =>
...
raise;
when Valor_Duplicado =>
...
end;
Javier Miranda
try
{
...
}
catch (No_Encontrado e)
{ ...
throw e;
}
catch (Valor_Duplicado e)
{...}
18-feb-04
Ada
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
41
42
Interfaz
Ada: package
• Puede tener:
• Variables
• Constantes
• Tipos
• Procedimientos
• Funciones
• Excepciones
Ejemplo: Interfaz
Java: interface
• Sólo puede tener:
• Constantes
• Funciones
class Division_Por_Cero
extends Exception {};
Las excepciones se declaran
fuera de las interfaces.
En Java no es obligatorio programar
Utilizando interface. Se puede
programar utiliando solamente
clases (class).
18-feb-04
Java
Ada
(C) Javier Miranda, 2002
package Ejemplo is
Division_Por_Cero: exception;
interface Ejemplo {
public int Division (int A, B)
throws Division_Por_Cero;
function Division (A, B: Integer)
return Integer;
end Ejemplo;
18-feb-04
}
(C) Javier Miranda, 2002
7
43
44
Bibliotecas Estándar
Ejemplo: Cuerpo
Ada
Java
package body Ejemplo is
function Division (A, B: Integer)
return Integer is
begin
if B = 0 then
raise Division_Por_Cero;
end if;
return A / B;
end Division;
Otros paquetes Ada:
Ada.Characters.Handling
Ada.Characters.Latin1
Ada.Strings.Bounded
Ada.Strings.Unbounded
Ada.Numerics.Discrete_Random
Ada.Numerics.Float_Random
etc.
public int Division (int A, B)
throws Division_Por_Cero
{
if (B == 0) {
throw new
Division_Por_Cero ();
}
return A / B;
}
end Ejemplo;
}
18-feb-04
Ada
Ada.Text_IO
class Mi_Ejemplo
implements Ejemplo {
(C) Javier Miranda, 2002
Ada
46
Ejemplo (Ada)
(C) Javier Miranda, 2002
Ejemplo
(Java)
18-feb-04
(C) Javier Miranda, 2002
47
48
import java.io.*;
class Ejemplo is
public static void main (String [] args) {
BufferedReader fichero
= new BufferedReader (new FileReader(“Ejemplo.dat”));
De Ada a Java
Lectura de datos desde teclado
Javier Miranda
String linea;
linea = fichero.readLine ();
while (linea != null) {
System.out.println (linea);
linea = fichero.readLine ();
}
fichero.close ();
} // main
} // Ejemplo
18-feb-04
(C) Javier Miranda, 2002
with Text_IO;
procedure Ejemplo is
Fichero : Text_IO.File_Type;
Linea
: String (1 .. 80);
Longitud : Natural;
begin
Text_IO.Open (Fichero, In_File, “Ejemplo.dat”);
while not Text_IO.End_Of_File (Fichero) loop
Text_IO.Get_Line (Fichero, Linea, Longitud);
Text_IO.Put_Line (Linea (1 .. Longitud));
end loop;
Close (Fichero);
end Ejemplo;
Javier Miranda
18-feb-04
Otros paquetes Java:
java.awt --- GUI
java.util --- utilities
java.applet --- applet
java.net --- networking
18-feb-04
45
De Ada a Java
Ficheros de Texto
java.lang
java.io
Ada
(C) Javier Miranda, 2002
18-feb-04
(C) Javier Miranda, 2002
8
49
50
Lectura de String
Java
Ada
...
procedure Leer_String is
Linea
: String (1 .. 80);
Longitud : Natural;
begin
Text_IO.Get_Line (Linea,
Longitud);
end Leer_String;
Lectura de Entero
...
void leer_String {
String linea;
Buffered_Reader teclado
= new BufferedReader
(new InputStreamReader
(System.in));
linea = teclado.readLine ();
}
18-feb-04
Java
Ada
(C) Javier Miranda, 2002
...
...
void leer_Numero {
procedure Leer_Numero is
String linea;
package Int_IO is new
numero;
Text_IO.Integer_IO (Integer); int
Buffered_Reader teclado
= new BufferedReader
Numero : Integer;
(new InputStreamReader
begin
(System.in));
Int_IO.Get (Numero);
end Leer_String;
18-feb-04
linea = teclado.readLine ();
numero = Integer.parseInt (linea);
}
(C) Javier Miranda, 2002
9