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