Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Packages –Unidad de compilación que permite la especificación.

Slides:



Advertisements
Presentaciones similares
Una estructura de control permite controlar el flujo de la ejecución de instrucciones. Con estas estructuras, el programador puede determinar el orden.
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Maestría en Data Mining
Visual Basic for Applications 3 de Mayo de Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?
11.3 Simplifying Rational Expressions
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
SENTENCIAS SECUENCIALES
Introducción a JAVA COMP 250. Estructura de Selección selection statements selection statements – Escoger cuál acción ejecutar dependiendo de dos ó más.
Conceptos Básicos del lenguaje de programación COBOL
Entrada y salida Fundamentos de programación/Programación I
Pilas Laboratorio de Programación II. Definición de pila Consideremos una pila de platos: Si se añade un plato a la pila, los que están más abajo son.
Procedimientos Almacenados y Disparadores
ADA: lenguaje de programación concurrente
Introducción al VHDL VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables.
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.
Oracle y Java Continuación *
25/11/07Laboratorio de Bases de Datos1 PL/SQL* *Tomado del curso de Francisco Moreno.
Transformaciones que conservan ángulos
1 Entrada/Salida en Java Jaime Ramírez, Ángel Lucas González DLSIIS. Facultad de Informática Universidad Politécnica de Madrid.
Un lenguaje de programación para sistema empotrados
Tema 1. Introducción a la programación (Lenguaje java).
ESTRUCTURAS DE CONTROL
EXCEPCIÓN DE ERRORES.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Punteros Tipo access:
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Overloading de subprogramas procedure Put(Item: in integer;
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento.
Seminario de Lenguajes A – Opción Ada Estructura general de programas –Especificación de contexto –Encabezado –Declaraciones –Cuerpo Seminario de Lenguajes.
Seminario de Lenguajes A – Opción Ada
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Genéricos –Molde a partir del cual se pueden crear instancias.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados.
PL/SQL Francisco Moreno Universidad Nacional.
Algoritmos y Estructuras de Datos
Listas Ligadas1UVM Listas Ligadas. 2UVM Listas Ligadas3UVM 5.1 Objetivos El estudiante manejará el tad Lista Ligada, sobre memoria estática.
Manejo de excepciones en Java
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
1 Chapter 8 Scope Dale/Weems/Headington. 2 Tópicos del Capítulo 8 l Local Scope vs. Global Scope of an Identifier l Detailed Scope Rules to Determine.
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
PL/SQL Francisco Moreno Universidad Nacional.
PRÁCTICA INVENTADA TOP MANTA Matías Blanco – Sergio Pérez.
Archivos y Búsqueda Secuencial
Programación orientada a objetos
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Conversión cadena a número
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
Estructura general de un programa en el servidor de Bases de Datos.
Agenda Clase 11 Parametrización. Pasaje de parámetros (modos). Razones de escogencia entre modos. Clausuras como parámetros. Etiquetas, Conformat Arrays,
ELO3291 Manejo de Excepciones Lectura sugerida de texto en linea: Eckel, Bruce. Thinking About C++, 2nd Edition, Prentice-Hall, Gratis en
ELO3291 Manejo de Excepciones Agustín J. González ELO329.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
Algorítmica y Programación
MODULA Lenguaje de Programación Anabel Martín González
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Lenguajes de Programación Tema 3. Paradigma Imperativo
Lenguaje C++ Problemas.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Oracle Pl/SQl Developer – Nivel 1
Manejo de Excepciones Agustín J. González ELO329.
Hardware Description Language
Manejo de Excepciones Agustín J. González ELO329.
Diego Hernández R Pascal Variables Diego Hernández R
David I. Morales A. MCC- IIMAS- UNAM
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Manejo de excepciones en Java
Manejo de Excepciones en C++
Manejo de Excepciones en C++
Transcripción de la presentación:

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Packages –Unidad de compilación que permite la especificación de grupos de entidades lógicamente relacionadas: Colección de tipos, variables y/o constantes, subprogramas, packages Combinación de los anteriores Tipos de datos abstractos y datos abstractos –Dos partes Especificación Cuerpo

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Packages –Especificación Cada package tiene una especificación pero no necesariamente un cuerpo En la especificación se encuentran las declaraciones públicas package Rational_Numbers is type Rational is record Numerator: integer; Denominator: Positive; end record; function "="(X,Y: Rational) return boolean; function "/"(X,Y: integer) return Rational; function "+"(X,Y: Rational) return Rational; function "-"(X,Y: Rational) return Rational; function "*"(X,Y: Rational) return Rational; function "/"(X,Y: Rational) return Rational; end Rational_Numbers;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Packages –Cuerpo En el cuerpo se encuentra la parte no pública del package Implementa las declaraciones de la especificación El cuerpo es obligatorio cuando –La especificación tiene declaraciones que requieren un cuerpo –Se requiere inicialización

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Packages –Cuerpo package body Rational_Numbers is procedure Same_Denominator(X, Y: in out Rational) is begin -- reduces X and Y to the same denominator: end Same_Denominator; function "="(X,Y: Rational) return Boolean is U : Rational := X; V : Rational := Y; begin Same_Denominator(U, V); return U.Numerator = V.Numerator; end "="; function "/"(X, Y: Integer) return Rational is begin if Y > 0 then return (Numerator => X, Denominator => Y); else return (Numerator => -X, Denominator => -Y); end if; end "/"; function "+"(X, Y: Rational) return Rational is... end "+"; function "-"(X, Y: Rational) return Rational is... end "-"; function "*"(X, Y: Rational) return Rational is... end "*"; function "/"(X, Y: Rational) return Rational is... end "/"; end Rational_Numbers;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Packages –Uso de un package (with y use) with Rational_Numbers; procedure Use_Rational_Numbers is R1, R2: Rational_Numbers.Rational; begin R1 := Rational_Numbers."/"(1, 2); R2 := Rational_Numbers."/"(2, 4); end Use_Rational_Numbers; with Rational_Numbers; use Rational_Numbers; procedure Use_Rational_Numbers is R1, R2: Rational; begin R1 := 1 / 2; R2 := 2 / 4; end Use_Rational_Numbers; –Posibles conflictos con la cláusula use

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Packages –Tipos privados Parte privada del package = mayor abstracción package StackInt is type Stack is private; procedure Push(S: in out Stack; I: in integer); procedure Pop(S: in out Stack; I: out integer); function IsEmpty(S: in Stack) return boolean; private type Nodo; type Stack is access Nodo; type Nodo is record Valor: integer; Siguiente: Stack; end record; end StackInt;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Packages –Tipos privados package body StackInt is procedure Push(S: in out Stack; I: in integer) is begin S := new Nodo'(I, S); end Push; procedure Pop(S: in out Stack; I: out integer) is begin if S /= null then I := S.Valor; S := S.Siguiente; end if; end Pop; function IsEmpty(S: in Stack) return boolean is begin return S = null; end IsEmpty; end StackInt;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Packages –En el programa se puede: Tipos comunes (ej: Rational_Numbers): –Declarar variables y constantes –Asignar –Comparar por igualdad –Operaciones definidas por el package –Acceder a la estructura, referenciar campos, elementos, etc. Tipos privados (ej: StackInt): –Declarar variables y constantes –Asignar –Comparar por igualdad –Operaciones definidas por el package

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Packages –Tipos privados limitados package StackInt is type Stack is limited private; procedure Push(S: in out Stack; I: in integer); procedure Pop(S: in out Stack; I: out integer); function IsEmpty(S: in Stack) return boolean; private type Nodo; type Stack is access Nodo; type Nodo is record Valor: integer; Siguiente: Stack; end record; end StackInt; –En el programa se puede Declarar variables y constantes Operaciones definidas por el package

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Packages –Inicialización package body PkgImagen is begin -- abrir archivo de imagen -- leer contenido del archivo y cargarlo en una variable Imagen -- cerrar archivo end PkgImagen;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 Excepciones –Terminación normal y anormal –Mecanismo de tratamiento y recuperación de errores en tiempo de ejecución y situaciones excepcionales –Ejemplos: división por cero, overflow, indice de un arreglo que excede sus límites, fin de archivo, etc. procedure Clase7_Excepciones1 is subtype Rango is integer range 1..10; Vector: array (Rango) of integer := ( ); I: integer; package IIO is new Integer_IO(integer); use IIO; begin loop Get(I); (posible Data_error) exit when I = 0; Put(Vector(I)); (posible Constraint_error) end loop; end Clase7_Excepciones1;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde12 Excepciones –Algunas excepciones predefinidas son: Constraint_error –Se produce cuando el programa viola alguna forma de restricción (restricciones de rango, restricciones de índice, restricciones de discriminante, etc.) Data_Error –Se produce cuando se lee un valor que no se corresponde con el tipo de la variable sobre la cual se lee Storage_error –Se produce cuando hay una cantidad de memoria insuficiente para satisfacer los requerimientos de memoria en tiempo de ejecución de un programa

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde13 Excepciones –Cómo atrapar y manejar un error? Manejadores de excepciones begin Sentencia 1; Sentencia N; exception when Constraint_error => Sentencias; when others => Sentencias; end; –Los manejadores de excepciones pueden aparecer en: Bloques begin/end, cuerpo de subprograma, package o task –Qué pasa luego de manejar un error? Dos esquemas. En Ada termina anormalmente la unidad en ejecución y devuelve el control a la unidad llamadora

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde14 Excepciones –Qué pasa si la unidad no define un manejador? => Propagación procedure P is procedure Q is begin.... end Q; begin... Q;... exception when constraint_error => end P; se propaga al llamador

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde15 Excepciones –Propagación automática procedure P is procedure Q is begin.... exception when constraint_error =>.... end Q; begin... Q;... exception when constraint_error => end P; (1) se maneja y vuelve al punto de llamado (2) se maneja y termina

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde16 Excepciones –La propagación sigue la cadena dinámica procedure P is procedure R is begin....(1) end R; procedure Q is begin.... R; (2).... exception when constraint_error =>.... end Q; begin... Q; (3)... exception when constraint_error => end P; P Q R

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde17 Excepciones –Propagación por programa begin Sentencia 1; Sentencia 2; Sentencia N; exception when Constraint_error => Sentencias; raise; end;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde18 Excepciones –Ejemplo procedure Clase7_Excepciones1 is subtype Rango is integer range 1..10; Vector: array (Rango) of integer := ( ); I: integer; package IIO is new Integer_IO(integer); use IIO; begin loop Get(I); exit when I = 0; Put(Vector(I)); end loop; end Clase7_Excepciones1; begin loop begin Get(I); exit when I = 0; Put(Vector(I)); exception when Data_error => Put("El valor ingresado no es entero"); when Constraint_error => Put("El valor debe estar en 1..10"); end; end loop; end Clase7_Excepciones2;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde19 Excepciones –Generación de excepción por programa El programador puede generar cualquier excepción por programa Get(PossiblePrice); if PossiblePrice <= MinPrice or PossiblePrice > MaxPrice then raise Data_Error; end if;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde20 Excepciones –Declaración de excepciones El programador puede declarar sus propias excepciones Price_error: exception; Get(PossiblePrice); if PossiblePrice <= MinPrice or PossiblePrice > MaxPrice then raise Price_Error; end if; exception when Price_Error =>

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde21 Excepciones –Declaración de excepciones. Ejemplo package StackInt2 is type Stack is private; procedure Push(S: in out Stack; I: in integer); procedure Pop(S: in out Stack; I: out integer); Overflow, Underflow: exception;..... end StackInt2; begin loop I := I + 1; Push(S, I); end loop; exception when Overflow => Put_Line("llena"); end; begin loop Pop(S, I); Put(I); end loop; exception when Underflow => Put_Line("Vacia"); end; procedure Push(S: in out Stack; I: in integer) is begin if S.CantNodos = MaxCount then raise Overflow; end if;..... end Push; procedure Pop(S: in out Stack; I: out integer) is begin if S.CantNodos = 0 then raise Underflow; end if;..... end Pop;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde22 Excepciones –Alcance de una excepción Es igual que para cualquier identificador procedure P is E: exception; procedure Q is begin raise E; end Q; procedure R is E: exception; begin Q; exception when E => -- excepción E local end R; begin R; exception when E => -- excepción E global end P;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde23 Excepciones en Java public void writeList() { PrintWriter out = null; try { System.out.println("Entering try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught " + "ArrayIndexOutOfBoundsException: " + e.getMessage()); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); }

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde24 Excepciones en Java public void writeList() { PrintWriter out = null; try { System.out.println("Entering try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } finally { if (out != null) { System.out.println("Closing PrintWriter"); out.close(); } else { System.out.println("PrintWriter not open"); }

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde25 Excepciones en Java public void writeList() { PrintWriter out = null; try { System.out.println("Entering try statement"); out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught " + "ArrayIndexOutOfBoundsException: " + e.getMessage()); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } finally { if (out != null) { System.out.println("Closing PrintWriter"); out.close(); } else { System.out.println("PrintWriter not open"); }

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde26 Excepciones en Delphi Zero := 0; try dummy := 10 / Zero; except on EZeroDivide do MessageDlg('Can not divide by zero!', mtError, [mbOK], 0) ; end;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde27 Excepciones en Delphi AboutBox := TAboutBox.Create(nil) ; try AboutBox.ShowModal; finally AboutBox.Release; end;