Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR"

Transcripción

1 Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

2 ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki Purely Functional Data Structures

3 Abstracción de datos Abstracción de datos Metodología que separa cómo se usa un dato compuesto de cómo se implementa. El programa se estructura para usar los datos no haciendo más suposiciones de las necesarias. La barrera de abstracción separa el nivel de uso, el nivel de implementación, y provee una interfase entre ambos niveles.

4 Abstracción de datos Las barreras de abstracción inducen tres vistas de las estructuras de datos La visión del diseñador La visión del usuario/programador La visión del implementador Es imprescindible saber seperarlas para comprender y manejar correctamente la abstracción de datos

5 Abstracción de datos Para especificar un tipo de datos debemos Especificar los constructores y selectores. Establecer las condiciones que deben cumplir. A veces se agregan restricciones de eficiencia. Existen dos maneras de hacer esto modelos abstractos (Hoare, 1972) Métodos y condiciones basados en otros modelos previos especificaciones algebraicas (Goguen,Tatcher,Wagner,Wright, 1978) Sistemas algebraicos abstractos con axiomas

6 Abstracción de datos Ejemplo: números racionales Rational makerat :: Integer -> Integer -> Rational numer :: Rational -> Integer denom :: Rational -> Integer si x es (makerat n d), entonces (numer x)/(denom x) = n/d

7 Implementando tipos abstractos Números racionales: implementación 1 Usando pares, sin preprocesamiento makerat n d = (n, d) numer r = fst r denom r = snd r No representa a un racional de manera única

8 Implementando tipos abstractos Números racionales: implementación 2 Usando pares, con preprocesamiento al construir makerat n d = let g = gcd n d in (n/g, d/g) numer r = fst r denom r = snd r Cada racional está representado de manera única

9 Implementando tipos abstractos Números racionales: implementación 3 Usando pares, con preprocesamiento al acceder makerat n d = (n, d) numer r = let g = gcd (fst r) (snd r) in fst r / g denom r = let g = gcd (fst r) (snd r) in snd r / g

10 Implementando tipos abstractos Números racionales: implementación 4 Usando pares, con preprocesamiento mixto makerat n d = let g = gcd n d in ((n, d), g)) numer r = fst (fst r) / snd r denom r = snd (fst r) / snd r

11 Implementando tipos abstractos Números racionales: implementación 5 Sin usar pares makerat n d = 2^n + 3^d numer r = factor 2 r denom r = factor 3 r factor k m = if m >= k && divide k m then 1 + factor k (m `div` k) else 0 divide k m = m `mod` k == 0 No funciona para números negativos...

12 Implementando tipos abstractos Propiedades Toda implementación satisface la especificación Una implementación específica satisface otras propiedades adicionales Obligaciones NO SE DEBEN usar estas propiedades adicionales SÓLO DEBEN usarse las propiedades especificadas Ejemplo: Cuál es el valor de (fst (makerat n d))? Tiene sentido esta expresión?

13 Implementando tipos abstractos NO SE DEBEN usar propiedades adicionales Pueden ser difíciles de identificar! Ejemplo: if numer r1 == numer r2 then 0 else 1 Da lo mismo en toda implementación? La propiedad de igualdad de numeradores NO ES consecuencia de la especificación. Entonces, NO DEBE usarse. Esta propiedad NO SE PUEDE ocultar. Hay formas de violar un TAD hasta en el mejor lenguaje!

14 Implementando tipos abstractos Qué propiedades se usan es cuestión de disciplina por parte del programador Sin embargo, un buen lenguaje provee mecanismos para garantizar la disciplina Ocultamiento de información Módulos, procedimientos locales, objetos con métodos privados, compilación separada, packages, etc. NO DEBE CONFUNDIRSE ocultar información con abstraer datos!

15 Implementando tipos abstractos Pilas Misma signatura que las listas! Stack a empty :: Stack a push :: a -> Stack a -> Stack a top :: Stack a -> a pop :: Stack a -> Stack a isempty :: Stack a -> Bool top (push x p) = x pop (push x p) = p isempty empty = True isempty (push x p) = False (top empty) y (pop empty) no están definidos

16 Implementando tipos abstractos Pilas Implementación con listas empty = [] push = (:) top = head pop = tail isempty = isnil Equivalentemente... empty = [ ] push a s = a : s top s = head s pop s = tail s isempty s = isnil s

17 Implementando tipos abstractos Deben probarse las propiedades especificadas (top empty) no está definido top empty = head [], por lo que no está definido top (push x p) = x top (push x p) = head (x : p) = x (pop empty) no está definido pop empty = tail [ ], por lo que no está definido pop (push x p) = p pop (push x p) = tail (x : p) = p isempty empty = True isempty empty = isnil [] = True isempty (push x p) = False isempty (push x p) = isnil (x : p) = False

18 Implementando tipos abstractos Calcular el costo de las operaciones Definición muy simple El costo de cada operación es 1 más el costo de la operación correspondiente de listas Cada operación de listas tiene costo constante Por lo tanto CADA OPERACIÓN tiene costo de peor caso O(1)

19 Implementando tipos abstractos Colas Otra estructura con acceso restringido Queue a emptyq :: Queue a queue :: Queue a -> a -> Queue a firstq :: Queue a -> a dequeue :: Queue a -> Queue a isemptyq :: Queue a -> Bool isemptyq emptyq = True Y condiciones sobre isemptyq (queue q x) = False operaciones no definidas firstq (queue emptyq x) = x firstq (queue (queue q y) x) = firstq (queue q y) dequeue (queue emptyq x) = emptyq dequeue (queue (queue q y) x) = queue x (dequeue (queue q y))

20 Implementando tipos abstractos Colas Implementación con listas emptyq = [ ] queue = snoc firstq = head dequeue = tail isemptyq = isnil snoc xs x = xs ++ [ x ]

21 Implementando tipos abstractos Propiedades de las colas isemptyq emptyq = True isemptyq emptyq = isnil [] = True isemptyq (queue q x) = False isemptyq (queue q x) = isnil (snoc q x) = isnil (q ++ [ x ]) Probamos que isnil (q ++ (x : xs)) = False para cualquier xs por recursión sobre la forma de la lista q Si q = [] isnil ([ ] ++ (x : xs)) = isnil (x : xs) = False Si q = snoc q' x' isnil ((q' ++ [ x' ]) ++ (x : xs)) = isnil (q' ++ (x' : (x : xs))) (por HI) = False

22 Implementando tipos abstractos Propiedades de las colas (cont. 2) (firstq emptyq) no está definido firstq emptyq = head nil, por lo que no está definido firstq (queue emptyq x) = x firstq (queue emptyq x) = head (snoc [] x) = head ([] ++ [ x ]) = head [ x ] = x firstq (queue (queue q y) x) = firstq (queue q y) firstq (queue (queue q y) x) = head (snoc (snoc q y) x) = head (snoc q y) = firstq (queue q y) Probar que head (snoc (snoc q y) x) = head (snoc q y) por inducción en la estructura de la lista q Observar que se demuestra usando propiedades de la representación!

23 Implementando tipos abstractos Propiedades de las colas (cont. 3) (dequeue emptyq) no está definido dequeue emptyq = tail [], por lo que no está definido dequeue (queue emptyq x) = emptyq dequeue (queue emptyq x) = tail (snoc [] x) = tail ([] ++ [ x ]) = tail [ x ] = [] = emptyq dequeue (queue (queue q y) x) = queue x (dequeue (queue q y)) dequeue (queue (queue q y) x) = tail (snoc (snoc q y) x) = snoc (tail (snoc q y)) x = queue (dequeue (queue q y)) x Probar que tail (snoc (snoc q y) x) = snoc (tail (snoc q y) por inducción en la estructura de la lista q En algunas presentaciones se usan funciones de abstracción y representación explícitas

24 Implementando tipos abstractos Colas: costo de las operaciones Salvo queue, las demás son O(1) El costo de queue es el costo de snoc que depende del costo de append En una implementación algebraica de listas, el costo de append es O(n), siendo n la longitud de xs En una implementación imperativa, tanto snoc como append se pueden implementar en O(1) Hay otras implementaciones funcionales... snoc xs x = xs ++ [ x ]

25 Implementando tipos abstractos Colas Implementación con dos listas Invariante de representación: (fst q) es [] sólo cuando (snd q) es [] emptyq = ([], []) queue q x = check (fst q) (x : snd q) firstq q = head (fst q) dequeue q = check (tail (fst q)) (snd q) isemptyq q = isnil (fst q) check [] r = (reverse r, []) check f r = (f, r)

26 Implementando tipos abstractos Propiedades de las colas isemptyq emptyq = True isemptyq emptyq = isnil (fst ([ ], [ ]))) = (isnil [ ]) = True isemptyq (queue q x) = False isemptyq (queue q x) = isnil (fst (check (fst q) (x : snd q))) Análisis por casos: fst q = [ ] (y entonces, (snd q) = [ ], por el invariante) = isnil (fst (reverse (x : snd q), [ ])) = isnil (reverse [ x ]) = isnil [ x ] = False fst q <> nil = isnil (fst (fst q, x : snd q)) = isnil (fst q) = False

27 Implementando tipos abstractos Propiedades de las colas (cont. 2) (firstq emptyq) no está definido firstq emptyq = head (fst ([ ], [ ])) = head [ ], no está definido firstq (queue emptyq x) = x firstq (queue emptyq x) = head (fst (check [ ] [ x ])) = head (fst (check [ ] [ x ])) = head [ x ] = x El resto, de ejercicio

28 Implementando tipos abstractos Colas: costo de las operaciones emptyq, firstq, isemptyq y queue son O(1) dequeue depende de check check es peor caso O(n) Sin embargo, se puede hacer otro análisis COSTO AMORTIZADO Se mide el costo de una sequencia de operaciones en lugar de medir el costo de cada una Así, todas las operaciones de esta implementación tienen costo amortizado O(1)

29 TADs en Haskell Cómo expresamos TADs en Haskell? Mediante MÓDULOS Un módulo Permite agrupar definiciones relacionadas Modularidad Es la unidad de compilación ( no en Hugs!) Compilación separada Limita el scope (alcance) de las variables Reuso de nombres Permite exportación e importación explícita Ocultación de información

30 TADs en Haskell Ejemplo: de agrupación de funciones Así todo el tipo es visible! module Complejos (Complex(..), realpart, imagpart, mkpolar) where data Complex = C Float Float realpart, imagpart :: Complex -> Float realpart (C r i) = r imagpart (C r i) = i...

31 TADs en Haskell Ejemplo: de ocultación de información Así la implementación está oculta! module Racionales (Rational, makerat, numer, denom) where data Rational = R Float Float makerat n r = reduce (n * signo d) (abs d) reduce x 0 = error Racional con denom. 0 reduce x y = R (x `quot` d) (y `quot` d) where d = gcd x y... Esta función no es visible para los usuarios

32 TADs en Haskell Cómo se utiliza un módulo? Mediante la cláusula import module Main where import Complejos import Racionales (Rational, makerat) mipar :: (Complex, Rational) mipar = (C 1 0, makerat 4 2) -- (numerador (snd mipar)) está permitido? -- Y (reduce (R 4 2))? Por qué?

33 TADs en otros lenguajes En general los lenguajes no proveen TADs, sino ocultación de información Como vimos, la idea de TAD es transversal a esta noción En lenguajes imperativos Módulos, APIs, etc. En lenguajes orientados a objetos Clases, interfases Lo importante es distinguir entre la especificación del TAD, y su implementación

34 Tipos algebraicos como TADs Recordemos que para un tipo algebraico (TAlg) Se determina la forma de sus elementos Se provee un mecanismo único de acceso a ellos Los TAlgs son más sencillos para razonar e implementar que los TADs Todo TAlg puede definirse como TAD Operaciones constructoras Operaciones de acceso o inspección

35 Tipos algebraicos como TADs Ejemplo: listas (versión 1) Lista a Nil :: Lista a Cons :: a -> Lista a -> Lista a isnil :: Lista a -> Bool hd :: Lista a -> a tl :: Lista a -> Lista a hd (Cons x xs) = x tl (Cons x xs) = xs isnil Nil = True isnil (Cons x xs) = False (hd Nil) y (tl Nil) no están definidos } Constructores } Funciones de acceso

36 Tipos Algebraicos como TADs Observaciones los constructores, con mayúsculas (convención) las funciones de acceso deben contemplar TODAS las partes a acceder Para especificar el comportamiento, basta dar una ecuación por cada combinación función de acceso/constructor Si hay casos no definidos, se agregan funciones que determinen el dominio de tales operaciones

37 Tipos Algebraicos como TADs Pattern matching Acceso genérico a un tipo algebraico Notación alternativa a las funciones de acceso Dependiendo del lenguaje se escribe diferente En Haskell, se usa la expresión case Pero el pattern matching es primitivo En lenguajes imperativos se puede usar otra versión de las funciones de acceso, más parecida al pattern matching

38 Tipos Algebraicos como TADs Pattern matching, ejemplo 1 Equivalencia entre la notación Haskell y el uso de funciones de acceso tradicionales y lenght xs = case xs of Nil -> 0 Cons y ys -> 1 + length ys lenght xs = if (isnil xs) then 0 else let y = hd xs; ys = tl xs in 1 + length ys son equivalentes (salvo detalles en el orden de reducción)

39 Tipos algebraicos como TADs Ejemplo: listas (versión 2; matching en imperativo) Lista a Nil :: Lista a Cons :: a -> Lista a -> Lista a matchnil :: Lista a -> Bool matchcons :: Lista a -> (Bool, (a, Lista a)) matchnil Nil = True matchnil (Cons x xs) = False fst (matchcons Nil) = False snd (matchcons Nil) no está definido cuando el fst da False matchcons (Cons x xs) = (True, (x, xs))

40 Tipos Algebraicos como TADs Posible implementación imperativa en C struct LIBase; typedef LIBase* ListInt; typedef struct LIBase { int head; ListInt tail; } LIBase; ListInt nil() { return NULL; } ListInt cons (int x, ListInt xs) { ListInt ys = (ListInt)malloc(sizeof(LIBase)); ys->head = x; ys->tail = xs; return ys; } bool matchnil (ListInt xs) { return (xs == NULL); } bool matchcons (ListInt ys, int x, ListInt xs) { bool retval = (ys == NULL); // o: bool retval = matchnil(ys); if (retval) { x = ys->head; xs = ys->tail; } return retval; } NO HACE ADMINISTRACIÓN DE MEMORIA!

41 Tipos Algebraicos como TADs Pattern matching, ejemplo 2 Equivalencia entre la notación Haskell y el uso de funciones de matching imperativas lenght xs = case xs of Nil -> 0 Cons y ys -> 1 + length ys y int lenght(listint xs) { int y; ListInt ys; if (matchcons(xs, y, ys)) { return 0; } else { return (1 + length(ys)); } } son equivalentes (salvo detalles en el orden de reducción)

42 Tipos Algebraicos como TADs Valores que pueden no estar... Maybe a Nothing :: Maybe a Just :: a -> Maybe a isnothing :: Maybe a -> Bool fromjust :: Maybe a -> a isnothing Nothing = True isnothing (Just x) = False fromjust (Just x) = x (fromjust Nothing) no está definido

43 Tipos Algebraicos como TADs Se puede hacer lo mismo con cualquier TAlg Ej: árboles de todo tipo binarios, tip, generales, etc. Hay que tener cuidado con la elección de las funciones de acceso el uso de las mismas pues puede violarse la abstracción, o la naturaleza algebraica

44 Ejercicio Implementar el tipo de datos abstracto IntSet single :: Integer -> IntSet insert :: IntSet -> Integer -> IntSet min :: IntSet -> Integer min (single x) = x min (insert s x) = if (min s) > y then y else (min s) TODAS LAS OPERACIONES O(1) en peor caso

Programación Funcional en Haskell

Programación Funcional en Haskell Programación Funcional en Haskell Paradigmas de Lenguajes de Programación 1 cuatrimestre 2006 1. Expresiones, valores y tipos Un programa en lenguaje funcional consiste en definir expresiones que computan

Más detalles

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR In contrast, functional implementations of these data structures abstract away from troublesome pointer manipulations

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

data Tree a = Tip Node a (Tree a) (Tree a) deriving Show

data Tree a = Tip Node a (Tree a) (Tree a) deriving Show Preguntas seleccionadas de pruebas de evaluación Pregunta 1 Dadas las siguientes definiciones: data Tree a = Tip Node a (Tree a) (Tree a) deriving Show cambiar :: [Int] -> Tree [Int] -> Tree [Int] cambiar

Más detalles

Nota 2. Luis Sierra. Marzo del 2010

Nota 2. Luis Sierra. Marzo del 2010 Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones

Más detalles

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL María Alpuente y María José Ramírez 1 LENGUAJES Y PARADIGMAS: INTRODUCCIÓN 1. Indica cuál de las siguientes

Más detalles

Tema 5: Abstracción. Índice

Tema 5: Abstracción. Índice Índice 1 Generalización de funciones... 2 1.1 Ejemplo 1...2 1.2 Ejemplo 2...3 1.3 Ejemplo 3...3 2 Barreras de abstracción... 4 3 Referencias...9 En el primer tema de la asignatura vimos que una de las

Más detalles

Nociones Básicas de Sémantica: Semántica Denotacional

Nociones Básicas de Sémantica: Semántica Denotacional Nociones Básicas de Sémantica: Semántica Denotacional Análisis de Lenguajes de Programación Mauro Jaskelioff 21/08/2015 Acerca de la Semántica Operacional En la semántica operacional el significado de

Más detalles

Tema 1. Introducción a los TAD

Tema 1. Introducción a los TAD Tema 1. Introducción a los TAD Objetivos En este tema nos ocupamos inicialmente del concepto de abstracción, dedicando la mayor atención a la abstracción de datos, estudiando aspectos relacionados con

Más detalles

Introducción a los Tipos Abstractos de Datos

Introducción a los Tipos Abstractos de Datos Página 1 de 8 Introducción a los Tipos Abstractos de Datos Introducción: Concepto de abstracción Abstracción funcional y abstracción de datos Construcción de tipos abstractos de datos Especificación de

Más detalles

Semántica Denotacional

Semántica Denotacional Semántica Denotacional Idea: El significado de un programa es la función denotada por el programa Componentes del metalenguaje para la definición semántica denotacional de un L.P.: Dominios sintácticos

Más detalles

Tema 2: Introducción a la programación con Haskell

Tema 2: Introducción a la programación con Haskell Tema 2: Introducción a la programación con Haskell Informática (2015 16) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles

Tema 1. Introducción a las estructuras y tipos de datos

Tema 1. Introducción a las estructuras y tipos de datos Tema 1. Introducción a las estructuras y tipos de datos http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia,bmartine,morales,sanchiz}@icc.uji.es Estructuras

Más detalles

Euclides extendido y Test de primalidad probabiĺıstico

Euclides extendido y Test de primalidad probabiĺıstico Euclides extendido y Test de primalidad probabiĺıstico Taller de Álgebra I Verano de 2014 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Clase 11. Análisis dinámico, 2ª parte.

Clase 11. Análisis dinámico, 2ª parte. Clase 11. Análisis dinámico, 2ª parte. Continuamos con el mismo tema de la clase anterior, pero esta vez nos ocuparemos principalmente de la fase de prueba. Nos detendremos brevemente en algunas de las

Más detalles

Técnicas Avanzadas de Testing Automático

Técnicas Avanzadas de Testing Automático Técnicas Avanzadas de Testing Automático Marcelo Frias ITBA - Buenos Aires, Argentina CONICET Preliminares: Calidad Validación y Verificación Especificaciones y V&V Análisis estático y dinámico Inspecciones

Más detalles

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal

Más detalles

Estándares de codificación Java

Estándares de codificación Java Estándares de codificación Java Ingeniería de Software Mtr. Ing. Nancy López Por qué convenciones de código El 80% del coste del código de un programa va a su mantenimiento. Casi ningún software lo mantiene

Más detalles

Tema 11. Listas infinitas

Tema 11. Listas infinitas Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 11. Listas infinitas 11.1 Listas infinitas 11.2 La criba de Eratóstenes 11.3 Redes de procesos

Más detalles

Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle

Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle Tema 2: Clase y objetos en Java Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle Índice Introducción Clases Objetos Semántica referencia Métodos y mensajes Creación de objetos Modelo

Más detalles

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato

Más detalles

Práctico 5. Definiciones Inductivas - Segunda Parte -

Práctico 5. Definiciones Inductivas - Segunda Parte - Práctico 5 Definiciones Inductivas - Segunda Parte - Objetivos: Trabajar con tipos inductivos. Realizar pruebas por inducción y análisis de casos. Familiarizarse con los lemas de inversión y las tácticas

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Árboles Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Paula Echenique Una de las estructuras de datos más importantes

Más detalles

Tema 3. Monitores Programación Concurrente

Tema 3. Monitores Programación Concurrente Tema 3. Monitores Programación Concurrente Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos 1. Concepto de Monitor 1.1. Fundamento teórico de los monitores 1.2. Sintaxis de

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

Parte II: Estructuras de datos y algoritmos

Parte II: Estructuras de datos y algoritmos Parte II: Estructuras de datos y algoritmos Tema 11. Tipos abstractos de datos. Conceptos básicos. Listas. Pilas. Colas. Vectores. Conjuntos. Mapas. Árboles. Árboles binarios. GRUPO DE COMPUTADORES Y TIEMPO

Más detalles

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores PROGRAMACIÓN CONCURRENTE Tema 5 Monitores 1 Indice Definición de los monitores Sincronización condicional usando monitores Algunos problemas con monitores 2 Problemas de las regiones críticas condicionales

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

Resumen Lenguaje Java

Resumen Lenguaje Java Resumen Lenguaje Java Comentarios Elementos del Lenguaje De una sola línea // comentario De varias líneas /* Este es un comentario de varias líneas */ Comentarios para Javadoc /** * The Example class */

Más detalles

Programación Funcional

Programación Funcional Programación Funcional Jeroen Fokker 1996 Universidad de Utrecht Departamento de Informática Traducci on: Programa MEMI Universidad Mayor de San Simón Hielko R. Ophoff & Bernardo Sánchez J. Revisión: Universidad

Más detalles

Tema 1. Abstracciones y Especificaciones.

Tema 1. Abstracciones y Especificaciones. Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones y especificaciones. 2. Conjuntos y diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1.

Más detalles

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla

Más detalles

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas

Más detalles

Informática I. Código 2547100 Semestre 2014-2. Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza

Informática I. Código 2547100 Semestre 2014-2. Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza Informática I Código 2547100 Semestre 2014-2 Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza Programming tools Editor de texto (gedit, kate, vim, wordpad, etc):

Más detalles

Tipos Abstractos de Datos y Diseño por Contrato

Tipos Abstractos de Datos y Diseño por Contrato Tipos Abstractos de Datos y Diseño por Contrato 1.- Motivación de los tipos abstractos de datos Nuestro objetivo es obtener descripciones apropiadas de los objetos, para lo cual se necesita un método que

Más detalles

Clase 6: Invariantes de representación y funciones de abstracción

Clase 6: Invariantes de representación y funciones de abstracción Clase 6: Invariantes de representación y funciones de abstracción 6.1 Introducción En esta clase, vamos a describir dos herramientas utilizadas para la comprensión de tipos de datos abstractos: los invariantes

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador). CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de

Más detalles

Tesis de Maestría en Informática

Tesis de Maestría en Informática PEDECIBA Informática Instituto de Computación Facultad de Ingeniería Universidad de la República Montevideo, Uruguay Tesis de Maestría en Informática Fusión en presencia de acumuladores Amarante 2010 Martínez

Más detalles

Estructura de datos. Temario General

Estructura de datos. Temario General Estructura de datos. Objetivo Otorgar al participante el conocimiento, la habilidad y la aptitud para: comprender y manejar las representaciones más utilizadas para el procesamiento de información en sistemas

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA Introducción Qué es programar? Idear y ordenar las acciones necesarias para realizar un proyecto (R.A.E) En nuestro contexto: Resolver problemas, Automatizar

Más detalles

Tema: Sobrecarga de Operadores.

Tema: Sobrecarga de Operadores. Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen

Más detalles

Tema 13: Programas interactivos

Tema 13: Programas interactivos Tema 13: Programas interactivos Informática (2015 16) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 38 Tema 13: Programas

Más detalles

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Fundación Misión Sucre Colegio Universitario de Caracas Taller 3: Estructuras de Datos Dinámicas Objetivo Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas Contenido

Más detalles

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Ingeniero en Computación José Alfredo Cobián Campos josealfredocobian@gmail.com Facultad de Ciencias

Más detalles

Tema: INTÉRPRETE ENSAMPOCO/3

Tema: INTÉRPRETE ENSAMPOCO/3 Compiladores. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: INTÉRPRETE ENSAMPOCO/3 Contenido En esta práctica se desarrollará un intérprete de lenguaje ENSAMPOCO/3

Más detalles

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

Lenguaje para descripción de datos

Lenguaje para descripción de datos Amparo López Gaona tación Fac. Ciencias, UNAM Mayo 2012 Definición de Datos El lenguaje para definición de datos permite especificar: Esquema de cada relación. El dominio de cada atributo. Restricciones

Más detalles

Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II 8 de abril de 2015 Clase de hoy 1 Repaso Tipos concretos versus abstractos Tipos abstractos de datos 2 3 4 TAD Pila Especificación del TAD Pila Repaso Tipos concretos versus abstractos Tipos abstractos

Más detalles

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Instituto de Computación - Facultad de Ingeniería - Universidad de la República Parcial de Programación 2 Julio de 2011 Generalidades: La prueba es individual y sin material. Duración: 3hs. Sólo se contestan dudas acerca de la letra de los ejercicios. Escriba las hojas de un sólo

Más detalles

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1 Departamento de Lenguajes y Sistemas Informáticos JavaScript Programación en Internet Curso 2005-2006 Contenidos Introducción El lenguaje Validación de formularios DLSI - Universidad de Alicante 1 Introducción

Más detalles

1 Estructura básica de un programa C++

1 Estructura básica de un programa C++ Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.

Más detalles

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero ÍNDICE El TAD lista lineal Implementación con estructuras

Más detalles

Modelos de Software. Ingeniería en Sistemas de Información 2015

Modelos de Software. Ingeniería en Sistemas de Información 2015 Modelos de Software Ingeniería en Sistemas de Información 2015 Diagrama de Clases UML La línea que separa el modelado de la programación a veces se vuelve algo difusa. Existen muchas herramientas que permiten

Más detalles

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,

Más detalles

LENGUAJE. Tema 1 - Introducción

LENGUAJE. Tema 1 - Introducción LENGUAJE Tema 1 - Introducción HISTORIA DEL LENGUAJE C El lenguaje de programación C fue creado por Dennis Ritchie cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del

Más detalles

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación

3.- Procesos. Concepto de Proceso. Despacho (calendarización) de Procesos. Operaciones en Procesos. Procesos en cooperación 3.- Procesos Despacho (calendarización) de Procesos Operaciones en Procesos Procesos en cooperación Compunicación Interprocesos Communicación en sistemas Cliente-Servidor Sistema de Batch jobs Sistema

Más detalles

INSTITUTO TECNOLOGICO EL LLANO LICENCIATURA EN INFORMATICA ESTRUCTURA DE DATOS I

INSTITUTO TECNOLOGICO EL LLANO LICENCIATURA EN INFORMATICA ESTRUCTURA DE DATOS I Presentación de la Materia: Programa de Estudios Horar io Lunes 08:30 10:30 Material: Apuntes ftp://ftp.paginasprodigy.com Usuario; tmx9714074 Contraseña: 11466 Softwa re: Java C++ Visual Basic 6 Visual

Más detalles

Unidad I: Tipo de Dato Abstracto (TDA)

Unidad I: Tipo de Dato Abstracto (TDA) Asignatura: Programación 2 Unidad 1: Tipo de Dato Abstracto (TDA) Tema 2: Tipo de Dato Abstracto (TDA) Autor: Prof. Hilda Contreras Unidad I: Tipo de Dato Abstracto (TDA) Introducción Suponga que debe

Más detalles

1. Existe algún programa en C para el cual no hay equivalente (semántico) en Prolog? O viceversa? Explica brevemente tu respuesta.

1. Existe algún programa en C para el cual no hay equivalente (semántico) en Prolog? O viceversa? Explica brevemente tu respuesta. A. Semántica / Verificación de Programas 1. Existe algún programa en C para el cual no hay equivalente (semántico) en Prolog? O viceversa? Explica brevemente tu respuesta. Church s thesis: any computable

Más detalles

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

Tema 4.- Pilas y Colas

Tema 4.- Pilas y Colas Apuntes elaborados por: Eduardo Quevedo, Raquel López y Aaron Asencio Revisado por: Javier Miranda el???? Tema 4.- Pilas y Colas Las pilas y colas son estructuras de datos que se utilizan generalmente

Más detalles

Estructuras de Datos en Java

Estructuras de Datos en Java Estructuras de Datos en Java 1. Antecedentes Introducción a la Orientación a Objetos La programación orientada a objetos (POO) es una nueva manera de enfocar la programación. Desde sus comienzos, la programación

Más detalles

Tema 3. El modelo Relacional

Tema 3. El modelo Relacional Tema 3. El modelo Relacional Juan Ignacio Rodríguez de León Resumen Presenta el modelo entidad-relación. Visión de alto nivel de las cuestiones referentes a diseño de bases de datos y los problemas encontrados

Más detalles

Laboratorio Informix. Stored Procedures Triggers

Laboratorio Informix. Stored Procedures Triggers Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Fundamentos de la Programación

Fundamentos de la Programación Fundamentos de la Programación El Software Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones, llamadas programas o software. Dos grandes grupos de software

Más detalles

TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES.

TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES. TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES. 4.1. Introducción. 4.2. Tratamiento de excepciones. 4.2.1. Excepciones en lenguajes tradicionales. 4.2.2. Tratamiento de excepciones moderno. 4.3. Tratamiento

Más detalles

Lección: Lenguaje de Programación JULIA

Lección: Lenguaje de Programación JULIA Lección: Lenguaje de Programación JULIA ICI3140 Métodos Numéricos Profesor : Dr. Héctor Allende-Cid e-mail : hector.allende@ucv.cl JULIA Julia is a highlevel, high-performance dynamic programming language

Más detalles

Secuencias. Mauro Jaskelioff 18/05/2015

Secuencias. Mauro Jaskelioff 18/05/2015 Secuencias Mauro Jaskelioff 18/05/2015 Secuencias Seq es un TAD para representar secuencias de elementos. A continuación veremos algunas de sus operaciones y las especificaremos en términos de la noción

Más detalles

El Principio Abierto/Cerrado

El Principio Abierto/Cerrado El Principio Abierto/Cerrado Francisco José García Peñalvo Licenciado en Informática. Profesor del Área de Lenguajes y Sistemas Informáticos de la Universidad de Burgos. fgarcia@.ubu.es Carlos Pardo Aguilar

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Inducción y recursión

Inducción y recursión Capítulo 11 Inducción y recursión Índice del Capítulo 11.1. Introducción.................................. 229 11.2. Inducción matemática............................. 230 11.3. Ayudas para pruebas por

Más detalles

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento.

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento. Clases y objetos Clase Implementación de un tipo de dato. Una clase sirve tanto de módulo como de tipo - Tipo: Descripción de un conjunto de objetos (equipados con ciertas operaciones). - Módulo: Unidad

Más detalles

2 INTRODUCCIÓN A LISP

2 INTRODUCCIÓN A LISP 2 INTRODUCCIÓN A LISP El objetivo de este capítulo es que puedan programar en Lisp tan pronto como sea posible Al final de la misma, conocerán lo suficiente de Lisp como para comenzar a escribir sus propios

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

4 o Ingeniería Informática

4 o Ingeniería Informática Esquema del tema 1. Introducción 4 o Ingeniería Informática II26 Procesadores de lenguaje Estructura de los compiladores e intérpretes 2. Etapas del proceso de traducción 3. La interpretación 4. La arquitectura

Más detalles

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++ 5.- Herencia Múltiple. Un hecho natural es que una persona tenga más de un pariente mayor, esta situación también se puede dar en la herencia de clases, naturalmente este tipo de herencia involucra un

Más detalles

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida INFORMÁTICA II 1 CONTENIDO 2 1 Programación orientada a objetos - POO 2 Clases 3 Constructores y destructores 4 Definiciones 5 Entrada y salida PROGRAMACIÓN ORIENTADA A OBJETOS Los lenguajes de programación

Más detalles

Verificación de Propiedades de un Tipo Abstracto de Datos usando su Especificación Algebraica

Verificación de Propiedades de un Tipo Abstracto de Datos usando su Especificación Algebraica Verificación de Propiedades de un Tipo Abstracto de Datos usando su Especificación Algebraica Pablo Sánchez Departamento de Matemáticas, Estadística y Computación Universidad de Cantabria (Santander, España)

Más detalles

VERIFICACIÓN, TEST Y DEBUGGING

VERIFICACIÓN, TEST Y DEBUGGING ESTRUCTURAS DE DATOS Y ALGORITMOS TECNÓLOGO EN INFORMÁTICA VERIFICACIÓN, TEST Y DEBUGGING ESTRUCTURAS DE DATOS Y ALGORITMOS - TECNÓLOGO EN INFORMÁTICA 1 1. INTRODUCCIÓN Podemos decir que un programa funciona

Más detalles

Organización de Computadoras

Organización de Computadoras Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal

Más detalles

Concurrencia en.net David Jesús Horat Flotats

Concurrencia en.net David Jesús Horat Flotats Concurrencia en.net David Jesús Horat Flotats ÍNDICE 1. Introducción n a.net 2. Sincronización n en.net 2.1 Contextos sincronizados 2.2 Método M Synchronized 2.3 Regiones de código c sincronizado 2.4 Sincronización

Más detalles

Pseudolenguaje. (1 byte) 0.. 255 (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en ) No hay. Dominio 0.. 2 n 1 [MIN(C)..

Pseudolenguaje. (1 byte) 0.. 255 (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio 0.. 2 n 1 [MIN(C).. Tipo C Dominio 0.. 2 n -1 [MIN(C).. MAX(C)] Operadores Aritméticos Otras funciones No hay CHR(...) CAP(...) ORD(...) E/S No Formateada: Leer (...) Escribir (...) char (1 byte) 0.. 255 (valores códigos

Más detalles