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:

Slides:



Advertisements
Presentaciones similares
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?
Advertisements

Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
Programación de Computadores
DECLARE CURSOR cur1 IS SELECT dnombre, loc FROM DEPART; v_nombre DEPART.DNOMBRE%TYPE; v_localidad DEPART.LOC%TYPE; BEGIN OPEN cur1; LOOP FETCH cur1 INTO.
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 7: OPERADORES Y ESTRUCTURAS DE SELECCION Ing. Ronald Criollo.
EL LENGUAJE DE PROGRAMACIÓN C
SENTENCIAS SECUENCIALES
LENGUAJES DE DESCRIPCION DE HARDWARE (HDL)
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.
Procedimientos Almacenados y Disparadores
ADA: lenguaje de programación concurrente
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.
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.
Curso de Programación 1 Plan 97
Oracle y Java Continuación *
25/11/07Laboratorio de Bases de Datos1 PL/SQL* *Tomado del curso de Francisco Moreno.
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 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.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Administración de Servidores de Bases de Datos Bases de Datos de Usuarios Caso particular Adaptive Server Enterprise.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
¿Qué hora es? What time is it?. ¿Qué hora es? It’s 1:00 Es la una (notice we do not say uno for time but una) 1:00 is the ONLY time where we say “Es la…”
PL/SQL Francisco Moreno Universidad Nacional.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
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.
PL/SQL Francisco Moreno Universidad Nacional.
Introduccion. Los lenguajes de programación surgieron para facilitar las tareas de programación, su evolución ha estado marcada por diferentes ideas que.
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.
DRAGON BALL Sergio Pérez Camacho Matías Blanco León.
Control de Flujo.
What has to be done today? It can be done in any order. Make a new ALC form Do the ALC Get two popsicle sticks Get 16 feet of yarn. That is 4 arms width.
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,
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.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Estructuras de Control
Algorítmica y Programación
MODULA Lenguaje de Programación Anabel Martín González
CICLOS ESTRUCTURA DE REPETICIÓN PROG 2270LGUILLERMO SOLLA.
Estructura de Datos Luis Humeau Waldi Saturno
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Características Objeto Relacionales en Oracle
Lenguajes de Programación Tema 3. Paradigma Imperativo
Estructuras de datos y algoritmos
Listas Dinámicas.
Hardware Description Language
Diego Hernández R Pascal Variables Diego Hernández R
David I. Morales A. MCC- IIMAS- UNAM
Estructuras Dinámicas
Características Objeto Relacionales en Oracle
Árboles Binarios Estructuras de Datos.
Diego Hernández R Pascal Variables Diego Hernández R
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Transcripción de la presentación:

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: estructuras de datos en tiempo de ejecución type PInteger is access integer; type TFecha is record Dia, Mes, Ano: integer; end record; type PFecha is access TFecha; PI: PInteger; -- null PF: PFecha; -- null F: TFecha; Alocación PI := new integer; PP := new TFecha; Desalocación –Garbage collector (depende de la implementación)

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Tipos definidos por el usuario –Punteros Referenciación PF.Dia := 20; PF.Mes := 4; PF.Ano := PF.Dia * PF.Mes; F := PF.all; PF.all := F; PF.all.Ano := PF.all.Dia * PF.all.Mes; I := PI.all; PI.all := I; Qué hacen las siguientes asignaciones? PF1: PFecha; PF2: PFecha;.... PF2 := PF1; PF2 := F; PF2.all := PF1; PF2.all := F;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Tipos definidos por el usuario –Punteros Operaciones –Asignación PF2 := PF1; –Comparación por igualdad (/desigualdad) if PF1 = PF2 then if PF1 /= PF2 then –Referenciación type PFecha is access TFecha; type TArreglo is array (1..10) of integer; type PArreglo is access TArreglo; PF: PFecha; PA: PArreglo; PF := new TFecha; PF.Dia := PF.Mes; PA := new TArreglo; PA(1) := PA(2); PA.all := (others => 1); –No se permiten operaciones aritméticas sobre access

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Tipos definidos por el usuario –Punteros y listas with Text_IO; use Text_IO; procedure Clase6_Listas is type Element; type List is access Element; type Element is record Value: character; Link: List; end record; procedure PutOnFront(Head: in out List; C: in character) is P: List; begin P := new Element; P.Value := C; P.Link := Head; Head := P; end PutOnFront; procedure Put(L: in List) is Act: List := L; begin while Act /= null loop Put(Act.Value); Act := Act.Link; end loop; end Put; L: List; C: character; begin loop Get(C); exit when C = 'X'; PutOnFront(L, C); end loop; Put(L); end Clase6_Listas;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Tipos definidos por el usuario –Punteros y listas with Text_IO; use Text_IO; procedure Clase6_Listas is type Element; type List is access Element; type Element is record Value: character; Link: List; end record; procedure PutOnFront(Head: in out List; C: in character) is P: List := new Element; begin P.Value := C; P.Link := Head; Head := P; end PutOnFront; procedure Put(L: in List) is Act: List := L; begin while Act /= null loop Put(Act.Value); Act := Act.Link; end loop; end Put; L: List; C: character; begin loop Get(C); exit when C = 'X'; PutOnFront(L, C); end loop; Put(L); end Clase6_Listas;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Tipos definidos por el usuario –Punteros y listas with Text_IO; use Text_IO; procedure Clase6_Listas is type Element; type List is access Element; type Element is record Value: character; Link: List; end record; procedure PutOnFront(Head: in out List; C: in character) is P: List := new Element; begin P.all := (C, Head); Head := P; end PutOnFront; procedure Put(L: in List) is Act: List := L; begin while Act /= null loop Put(Act.Value); Act := Act.Link; end loop; end Put; L: List; C: character; begin loop Get(C); exit when C = 'X'; PutOnFront(L, C); end loop; Put(L); end Clase6_Listas;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Tipos definidos por el usuario –Punteros, alocación con inicialización Tipo access: estructuras de datos en tiempo de ejecución type TFecha is record Dia, Mes, Ano: integer; end record; type TArreglo is array (1..10) of integer; type PInteger is access integer; type PFecha is access TFecha; type PArreglo is access TArreglo; PI: PInteger; PF: PFecha; PA: PArreglo; Alocación con inicialización PI := new integer'(2); PI := new integer'(2 + 2); PP := new TFecha'(13, PI.all, 1968); PA := new TArreglo'(others => 0);

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Tipos definidos por el usuario –Punteros y listas with Text_IO; use Text_IO; procedure Clase6_Listas is type Element; type List is access Element; type Element is record Value: character; Link: List; end record; procedure PutOnFront(Head: in out List; C: in character) is begin Head := new Element'(C, Head); end PutOnFront; procedure Put(L: in List) is Act: List := L; begin while Act /= null loop Put(Act.Value); Act := Act.Link; end loop; end Put; L: List; C: character; begin loop Get(C); exit when C = 'X'; PutOnFront(L, C); end loop; Put(L); end Clase6_Listas;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Tipos definidos por el usuario –Punteros y árboles Arbol binario de caracteres in order sin repeticiones type Nodo; type Arbol is access Nodo; type Nodo is record Valor: character; Izq, Der: Arbol; end record;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Tipos definidos por el usuario –Punteros y árboles procedure Insertar(A: in out Arbol; C: in character) is begin if A = null then -- árbol vacío A := new Nodo'(C, null, null); -- => crear raíz elsif C < A.Valor then Insertar(A.Izq, C); -- => insertar en rama izquierda elsif C > A.Valor then Insertar(A.Der, C); -- => insertar en rama derecha end if; end Insertar;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 Tipos definidos por el usuario –Punteros y árboles function Esta(A: in Arbol; C: in character) return boolean is Result: boolean; begin if A = null then -- árbol vacío Result := false; -- => C no está elsif C < A.Valor then Result := Esta(A.Izq, C); -- buscar en rama izquierda elsif C > A.Valor then Result := Esta(A.Der, C); -- buscar en rama derecha else -- C = A.Valor Result := true; end if; return Result; end Esta;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde12 Tipos definidos por el usuario –Punteros y árboles procedure Put(A: in Arbol) is begin if A /= null then Put(A.Izq); Put(A.Valor); New_line; Put(A.Der); end if; end Put;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde13 Tipos definidos por el usuario –Punteros y árboles with Text_IO; use Text_IO; procedure Clase6_Arbol is A: Arbol; C: character; begin loop Get(C); exit when C = '.'; Insertar(A, C); end loop; Put(A); end Clase6_Arbol;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde14 Tipos definidos por el usuario –Tipos derivados Tipo nuevo con las mismas características que el tipo base pero incompatible Provee protección adicional contra la mezcla indeseada de tipos type PInteger is access integer; subtype SubPInteger is PInteger; type NewPInteger is new PInteger; type NewSubPInteger is new SubPInteger; type NewRango is new integer range ; type Arreglo is array (NewRango range <>) of integer; type NewArreglo is new Arreglo; subtype SubArreglo is Arreglo(1..10); subtype SubNewArreglo is NewArreglo; SNA: SubNewArreglo(20..30);

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde15 Tipos definidos por el usuario –Tipos derivados type Registro (Disc: NewRango := 0) is record Campo: Arreglo(1..Disc); end record; type NewRegistro is new Registro; R: Registro; NR: NewRegistro; begin R := (10, (others => 10)); NR := (10, (others => 10)); R := NR; -- ilegal NR := R; -- ilegal R := Registro(NR); NR := NewRegistro(R); end Clase6_TiposDerivados;