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.

Slides:



Advertisements
Presentaciones similares
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Advertisements

Programación de Computadores
SENTENCIAS SECUENCIALES
LENGUAJES DE DESCRIPCION DE HARDWARE (HDL)
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Expresiones Lección 1 Hola, ¿qué tal? = Hi, hows it going?
Procedimientos Almacenados y Disparadores
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
Introducción al VHDL VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables.
Using Adjectives as Nouns Adjectives to Nouns Te duele la pierna derecha o la izquierda? Qué prefieres, un gorro azul o uno amarillo?
Ingresar dos valores correspondientes a la edad de una persona. Informar "La primera persona es mayor", "La segunda persona es mayor". C E1 E2 E1>E2 Si.
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.
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.
Realizado por: Ing. Mauricio Rivera1 Colas. Realizado por: Ing. Mauricio Rivera2 ¿Qué es una Cola? Una cola es un grupo ordenado de elementos homogéneos.
25/11/07Laboratorio de Bases de Datos1 PL/SQL* *Tomado del curso de Francisco Moreno.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Un lenguaje de programación para sistema empotrados
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 Tipos definidos por el usuario –Parámetros array ilimitados.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
PL/SQL Francisco Moreno Universidad Nacional.
Arboles Binarios de expresiones
PRÁCTICA INVENTADA TOP MANTA Matías Blanco – Sergio Pérez.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
 Ingresar dos valores correspondientes a la edad de una persona. Informar "La primera persona es mayor", "La segunda persona es mayor". C E 1 E 2 E1>E2.
Ejercicio N°4 Ingresar dos números enteros cualesquiera. Informar "el primero es mayor que el segundo", "el segundo es mayor que el primero" o "son iguales"
Ejercicio N°5 Ingresar cuatro números cualesquiera, si su suma es mayor a 15 elevarlo al cuadrado, si no, elevarlo al cubo. C Número1 (n1) Número2 (n2)
Introduccion. Los lenguajes de programación surgieron para facilitar las tareas de programación, su evolución ha estado marcada por diferentes ideas que.
Tipos de Datos (Data Types)
Matías Blanco – Sergio Pérez. The Problem A few peregrins, each one with his own strenght and money want to make the Saint James’ Way. They can start.
1 6. PARAMETRIZACIÓN. 2 Parametrización La parametrización permite realizar una abstracción de la identidad de varios ejemplos de los datos Los valores.
1Hacer in programa que lea un número desconocido de datos reales de un disco y detecte el final de los datos en el archivo 2Definir entradas y salidas.
DRAGON BALL Sergio Pérez Camacho Matías Blanco León.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Concurrencia en Ada.
Diseño Lógico Combinacional con VHDL
TRABAJO PRACTICO Nº2 Nombre: Ignacio D. Roca. Ejercicio Nº 1 TP 2 C numero numero= 0 Numero> 0 negativo f nulo verdadero positivo falso.
Estructura general de un programa en el servidor de Bases de Datos.
Introducción a VHDL Agenda Un poco de historia Definiciones generales Entidades Arquitecturas Configuraciones.
Agenda Clase 11 Parametrización. Pasaje de parámetros (modos). Razones de escogencia entre modos. Clausuras como parámetros. Etiquetas, Conformat Arrays,
Capítulo.3 - Diseño Lógico Combinacional con VHDL
Program p (input, output); type TDia = (lun,mar,mie,jue,vie,sab,dom); var d : tdia; nd : integer; function diaEnum (n: integer):TDia; var dia : TDia; (*f0*)begin.
LA ARQUITECTURA O LA FUNCIONALIDAD DEL SISTEMA DefiniciónDefiniciónDefinición Declaración y reglas sintácticas.Declaración y reglas sintácticas.Declaración.
Programación Visual Basic ‍2º año B ‍Nombre: javier vasaquez ‍Computadora Número:25.
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Estructuras de Control
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.
Estructura de Datos Luis Humeau Waldi Saturno
Administración de Sistemas Gestores de Bases de Datos.
Lenguajes de Programación Tema 3. Paradigma Imperativo
Resolución de problemas y algoritmos
PILAS. Operaciones de las Pilas Operaciones que se pueden realizar con una pila son: -PUSH (pila, elemento) -POP (pila) -VACIA (pila)
LENGUAJE DE PROGRAMACION “PILAS”
Ingeniero en Computación José Alfredo Cobián Campos
Cobol C Pascal Fortran 6. PARAMETRIZACIÓN SmallTalk Java C++
Diego Hernández R Pascal Variables Diego Hernández R
David I. Morales A. MCC- IIMAS- UNAM
Estructuras Dinámicas
UNIDAD 8 Agregar al Inicio
Características Objeto Relacionales en Oracle
END.
Transcripción de la presentación:

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 Subprogramas Packages –Sólo sirve para ser instanciado –Dos partes Especificación Cuerpo

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Genéricos –Ejemplo generic type Elem is private; procedure Exchange(A, B: in out Elem); procedure Exchange(A, B: in out Elem) is C: Elem := A; begin A := B; B := C; end Exchange; –Instanciación procedure SwapInt is new Exchange(integer); procedure SwapChar is new Exchange(character); procedure SwapFecha is new Exchange(TFecha); –Uso SwapInt(I1, I2); SwapChar(C1, C2); SwapFecha(F1, F2);

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Genéricos –O podría ser Instanciación procedure Swap is new Exchange(integer); procedure Swap is new Exchange(character); procedure Swap is new Exchange(TFecha); Uso Swap(I1, I2); Swap(C1, C2); Swap(F1, F2);

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Genéricos –Ejemplo: package pila genérica Especificación Implementación Instanciación generic type Elem is private; package Clase8_Stack is type Stack is private; private end Clase8_Stack; procedure Push(S: in out Stack; E: in Elem) is begin if S.CantNodos = MaxCount then raise Overflow; end if; S.Lista := new Nodo'(E, S.Lista); S.CantNodos := S.CantNodos + 1; end Push; package StackInt is new Clase8_Stack(integer); use StackInt; S: Stack;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Genéricos –Parámetros genéricos Formales Reales procedure Swap is new Exchange(integer); procedure Swap is new Exchange(character); procedure Swap is new Exchange(TFecha); package StackInt is new Clase8_Stack(integer); generic type Elem is private; procedure Exchange(A, B: in out Elem); generic type Elem is private; package Clase8_Stack is

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Especificación generic type Elem is private; package ArbolBinario is type Arbol is private; procedure Insertar(A: in out Arbol; E: in Elem); function Esta(A: in Arbol) return boolean; procedure Put(A: in Arbol); private type Nodo; type Arbol is access Nodo; type Nodo is record Valor: Elem; Izquierda: Arbol; Derecha: Arbol; end record; end ArbolBinario;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Implementación de Insertar procedure Insertar(A: in out Arbol; E: in Elem) is begin if A = null then A := new Nodo'(E, null, null); elsif E < A.Valor then Insertar(A.Izquierda, E); elsif A.Valor < E then Insertar(A.Derecha, E); end if; end Insertar;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Especificación generic type Elem is private; with function "<"(E1, E2: in Elem) return boolean; package ArbolBinario is type Arbol is private; procedure Insertar(A: in out Arbol; E: in Elem); function Esta(A: in Arbol) return boolean; procedure Put(A: in Arbol); private type Nodo; type Arbol is access Nodo; type Nodo is record Valor: Elem; Izquierda: Arbol; Derecha: Arbol; end record; end ArbolBinario;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Implementación de Esta function Esta(A: in Arbol) return boolean is Result: boolean; begin if A = null then Result := false; elsif E < A.Valor then Result := Esta(A.Izquierda); elsif A.Valor < E then Result := Esta(A.Derecha); else Result := true; end if; return Result; end Esta;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Implementación de Put procedure Put(A: in Arbol) is begin Put(A.Izquierda); Put(A.Valor); New_Line; Put(A.Derecha); end Put;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Especificación generic type Elem is private; with function "<"(E1, E2: in Elem) return boolean; with procedure Put(E: Elem); package ArbolBinario is type Arbol is private; procedure Insertar(A: in out Arbol; E: in Elem); function Esta(A: in Arbol) return boolean; procedure Put(A: in Arbol); private type Nodo; type Arbol is access Nodo; type Nodo is record Valor: Elem; Izquierda: Arbol; Derecha: Arbol; end record; end ArbolBinario;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde12 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Instanciación para caracteres with Text_IO, ArbolBinario; use Text_IO; procedure UseArbolBinario is package ArbolChar is new ArbolBinario(character, "<", Put); use ArbolChar; A: Arbol; C: character; begin loop Get(C); exit when C = '.'; Insertar(A, C); end loop; Put(A); end UseArbolBinario;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde13 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Instanciación para enteros procedure UseArbolBinario2 is package IIO is new Integer_IO(integer); use IIO; procedure Put(I: in integer) is begin Put(I, 0); end Put; package ArbolInt is new ArbolBinario(integer, "<", Put); use ArbolInt; A: Arbol; I: integer; begin loop Get(I); exit when I = 0; Insertar(A, I); end loop; Put(A); end UseArbolBinario2;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde14 Genéricos –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Instanciación para fechas 1 –Ejemplo: Arbol binario de búsqueda in-order sin repeticiones. Instanciación para fechas 2

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde15 Genéricos –Posibles parámetros genéricos: sin parámetros generic package UniqueId is function GetId return integer; end UniqueId; package body UniqueId is Next: integer := 0; function GetId return integer is begin Next := Next + 1; return Next; end GetId; end UniqueId; with UniqueId; procedure UseUniqueId is package SId is new UniqueId; package PId is new UniqueId; Socio: TSocio; Pelicula: TPelicula; begin Obtener ID para socio nuevo Socio.Id := SId.GetId; Obtener ID para película nueva Pelicula.Id := PId.GetId;... end UseUniqueId;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde16 Genéricos –Posibles parámetros genéricos: variables in, expresión default in out generic MaxCount: in integer := 100; type Elem is private; package Clase8_Stack2 is..... package StackInt is new Clase8_Stack2(50, integer); package IIO is new Integer_IO(integer); use StackInt, IIO;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde17 Genéricos –Posibles parámetros genéricos: tipos - private type Elem is private; - limited private type Elem is limited private; - discrete type Elem is (<>); - signed integer type Elem is range <>; - float, fixed, decimal type Elem is digits <>; type Elem is delta <>; type Elem is delta <> digits <>;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde18 Genéricos –Posibles parámetros genéricos: tipos - array type Arreglo is array (Color) of boolean; type Arr is array (Color range <>) of boolean; type Rango is (<>); type Arreglo is array (Rango) of boolean; type Rango is (<>); type Elem is private; type Arreglo is array (Rango) of Elem; - access type Elem is private; type Puntero is access Elem; - con discriminante type Rango is (<>); type Elem (Disc: Rango) is private;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde19 Genéricos –Posibles parámetros genéricos: subprogramas generic type Elem is private; with function "<"(E1, E2: in Elem) return boolean; with procedure Put(E: Elem); package ArbolBinario is

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde20 Genéricos –Posibles parámetros genéricos: package generic type Rango is (<>); type Elem is private; type Arreglo is array (Rango) of Elem; with package ElemStack is new Clase8_Stack(Elem); use ElemStack; procedure Invertir(A: in out Arreglo); procedure Invertir(A: in out Arreglo) is S: Stack; begin for I in A'Range loop Push(S, A(I)); end loop; for I in A'Range loop Pop(S, A(I)); end loop; end Invertir;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde21 Genéricos –Posibles parámetros genéricos: package with Clase8_Stack; procedure Clase8_PckGenPar is type Dias is (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo); type Vector is array (Dias) of character; package CharStack is new Clase8_Stack(character); procedure InvertirArreglo is new Invertir(Dias, character, Vector, CharStack); V: Vector := ('A', 'B', 'C', 'D', 'E', 'F', 'G'); begin InvertirArreglo(V); -- GFEDCBA end Clase8_PckGenPar;