Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

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

Download "Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola"

Transcripción

1 Objetivos Trabajar sobre el Tipo Abstracto de Datos Lista, reforzando el desacople entre especificación e implementación. Retomar las implementaciones vistas, como ser Listas Doblemente Encadenadas, Listas Circulares y Listas Indizadas, estudiando las ventajas y desventajas de cada una de ellas. Trabajar con tipos abstractos de datos que son variantes de listas, tales como Pilas y Colas, que restringen las políticas de inserción, supresión y obtención de elementos. Desarrollar y analizar implementaciones de Pilas y Colas que sean eficientes. Resolver problemas complejos usando Listas, Pilas y Colas. Aplicar el concepto de Orden de ejecución visto en el práctico 5, implementando soluciones que satisfagan restricciones dadas. Primera parte: TAD Lista - especificaciones e implementaciones. Ejercicio 1 Considere el siguiente conjunto de operaciones que especifican al TAD Lista no ordenada de naturales. /* Crea la lista vacia. */ LNat null (); /* Inserta el natural x al principio de la lista. */ LNat cons ( unsigned int x, LNat l); /* Verifica si la lista esta vacia. */ bool isempty ( LNat l); /* Devuelve el primer elemento de una lista. Pre :! isempty (l) */ unsigned int head ( LNat l); /* Devuelve el resto de una lista. Pre :! isempty (l) */ LNat tail ( LNat l); (a) Utilizando sólo las operaciones presentadas implemente las siguientes operaciones: 1

2 i. LNat change(unsigned int x, unsigned int y, LNat l); /* Retorna la lista resultado de cambiar el valor x (cada vez que aparece) por el valor y en la lista l. */ ii. LNat take(unsigned int i, LNat l); /* Retorna la lista resultado de tomar los primeros i elementos. Si la lista l tiene menos de i elementos devuelve todos los elementos de l. */ iii. LNat drop(unsigned int i, LNat l); /* Retorna la lista resultado de no tomar los primeros i elementos. Si la lista l tiene i o menos de i elementos devuelve la lista vacía. */ iv. LNat append(lnat l, LNat p); /* Agrega la lista p al final de la lista l. */ v. unsigned int ith(lnat l, unsigned int i); /* Devuelve el elemento en la posición i-ésima de l. Precondición: la lista l tiene al menos i elementos. */ vi. LNat snoc(unsigned int x, LNat l); /* Inserta un elemento al final de la lista. */ (b) Qué precauciones debe tomar al implementar las operaciones de la parte (a) para que éstas no tengan efectos secundarios sobre las estructuras pasadas por parámetro? (c) Dé una implementación para el TAD de la parte (a) que garantice la ejecución de las operaciones cons y snoc en O(1). Implemente el TAD completo (tipo y operaciones). (d) Qué cambios realizaría en la especificación si se pidiera especificar el TAD Lista ordenada? Ejercicio 2 Considere ahora el siguiente conjunto de operaciones que especifican al TAD Lista indizada de naturales con manejo explícito de posiciones. /* Crea la lista vacia. */ LNat null (); /* Verifica si la lista esta vacia. */ bool isempty ( LNat l); /* Dado un natural p, retorna TRUE si, y solamente si, la lista esta definida en la posicion p, considerando a las posiciones a partir de 0. */ bool isdefined ( unsigned int p, LNat l); /* Inserta un elemento x en la posicion p de la lista, considerando a las posiciones a partir de 0. Si la lista tiene longitud m, con m -1 menor a p, lo inserta en la posicion m. Si la lista tiene longitud m, con m -1 mayor o igual a p, inserta x en la posicion p y desplaza en una posicion los elementos que estuvieran en las posiciones siguientes. */ LNat insert ( unsigned int x, unsigned int p, LNat l); /* Retorna el elemento en la posicion p de l, si p esta definida en l. */ unsigned int element ( unsigned int p, LNat l); /* Dado un entero p, elimina de la lista el elemento en la posicion p. Si la posicion no esta definida, la operacion no tiene efecto. Si la posicion esta definida, elimina el elemento en dicha posicion y desplaza en una posicion los elementos que estuvieran en las posiciones siguientes ( contrae la lista ). */ LNat delete ( unsigned int p, LNat l); (a) Utilizando sólo las operaciones presentadas implemente las siguientes operaciones: i. LNat change(unsigned int x, unsigned int y, LNat l); /* Retorna la lista resultado de cambiar el valor x (cada vez que aparece) por el valor y en la lista l. */ Instituto de Computación - Facultad de Ingeniería - UdelaR Página 2 de 10

3 ii. LNat take(unsigned int i, LNat l); /* Retorna la lista resultado de tomar los primeros i elementos. Si la lista l tiene menos de i elementos devuelve todos los elementos de l. */ iii. LNat drop(unsigned int i, LNat l); /* Retorna la lista resultado de no tomar los primeros i elementos. Si la lista l tiene i o menos de i elementos devuelve la lista vacía. */ iv. LNat append(lnat l, LNat p); /* Agrega la lista p al final de la lista l. */ v. unsigned int ith(lnat l, unsigned int i); /* Devuelve el elemento en la posición i-ésima de l. Pre: la lista l tiene al menos i elementos. */ (b) Compare sus soluciones con las de la parte (a) del ejercicio 1. i. Es necesario tener las mismas precauciones que en el ejercicio 1 para evitar efectos secundarios? Por qué? ii. La implementación de la función ith y sus precondiciones es más sencilla? Por qué? (c) Qué implementación elegiría que garantice la ejecución de la operación isdefined en O(1)? Solución propuesta Parte a 1 LNat change ( unsigned int x, unsigned int y, LNat l) { 2 /* Retorna la lista resultado de cambiar el valor x ( cada vez que aparece ) 3 por el valor y en la lista l. */ 4 { 5 LNat result = null (); 6 if (! isempty (l)) { 7 int i = 0; 8 while isdefined (i, l) { 9 if ( element (i, l) == x) { 10 result = insert (y, i, result ); 11 } else { 12 result = insert ( element (i, l), i, result ); 13 } 14 i ++; 15 } 16 } 17 return result ; 18 } 1 /* Retorna la lista resultado de tomar los primeros i elementos. Si la lista l tiene 2 menos de i elementos devuelve todos los elementos de l. */ 3 LNat take ( unsigned int i, LNat l) { 4 LNat result = null (); 5 if (! isempty (l)) { 6 int j = 0; 7 while ((j < i) && isdefined (j, l)) { 8 /* la posicion inicial es 0 */ 9 /* toma todos los elementos entre 0 e i -1 */ 10 result = insert ( element (j, l), j, result ); 11 j ++; 12 } 13 } 14 return result ; 15 } Instituto de Computación - Facultad de Ingeniería - UdelaR Página 3 de 10

4 1 /* Retorna la lista resultado de no tomar los primeros i elementos. Si la lista l 2 tiene i o menos de i elementos devuelve la lista vac \ ia. */ 3 LNat drop ( unsigned int i, LNat l) { 4 5 LNat result = null (); 6 unsigned int j = 0; 7 unsigned int k = i; 8 /* ignora las posiciones entre 0 e i -1 */ 9 while isdefined (k, l) { 10 result = insert ( element (k, l), j, result ); 11 j ++; 12 k ++; 13 }; return result ; 16 } 1 /* Agrega la lista p al final de la lista l. */ 2 LNat append ( LNat l, LNat p) { 3 LNat result = null (); 4 unsigned int i = 0; 5 while isdefined (i, l) { 6 result = insert ( element (i, l), i, result ); 7 i ++; 8 }; 9 unsigned int j = 0; 10 while isdefined (j, p) { 11 result = insert ( element (j, p), i, result ); 12 i ++; 13 j ++; 14 }; 15 return result ; 16 } 1 /* Devuelve el elemento en la posicion i- esima de l. 2 Pre : la lista l tiene al menos i elementos. */ 3 unsigned int ith ( LNat l, unsigned int i) { 4 return element (i, l); 5 } Parte b I No es necesario tener las mismas precauciones, porque se tiene una posición que permite acceder al elemento buscado sin posibilidad de menoscabar la estructura recorrida. Parte b II La implementación es más sencilla en este caso porque puedo acceder directamente a la posición i con una de las operaciones definidas. Sin embargo la precondición es la misma para ambos casos porque la posición i siempre debe estar definida. Parte c Se debería elegir una implementación donde la representación de lista tenga un cabezal que tenga la cantidad de elementos insertados. De esta forma solo se debe consultar el cabezal y no recorrer la lista para saber si una posición está definida. Segunda parte: TAD Pila y Cola - especificaciones e implementaciones. Instituto de Computación - Facultad de Ingeniería - UdelaR Página 4 de 10

5 Ejercicio 3 (a) Escribir un módulo de especificación para el TAD Pila (Stack) no acotada de naturales, conteniendo un conjunto mínimo de constructores, selectores, predicados y destructores. Desarrolle una especificación funcional (compuesta por funciones, no procedural). (b) Desarrolle una implementación completa de tal manera que todas las operaciones, excepto aquella que oficia de destructora, tengan O(1) de tiempo de ejecución en el peor caso. (c) Qué modificaría en la especificación para el TAD Pila (Stack) acotada de naturales? (d) Desarrolle una implementación completa usando una estructura de memoria estática y otra usando una estructura de memoria dinámica, de tal manera que todas las operaciones tengan O(1) de tiempo de ejecución en el peor caso. Analice las eventuales ventajas y desventajas de ambas implementaciones. Solución propuesta Parte a Es conveniente recordar que las operaciones pueden clasificarse de la siguiente forma: Constructoras: permiten construir los elementos del TAD. Selectoras: permiten obtener partes de elementos del TAD, por ejemplo, el primer elemento de una lista. Predicados: permiten saber si un cierto elemento del TAD cumple con cierta propiedad, por ejemplo, si un árbol es vacío. Destructoras: permiten destruir los elementos del TAD. 1 /* CONSTRUCTORAS */ 2 StackNat NullStack (); 3 /* Crea la pila vacia. */ 4 5 StackNat Push ( unsigned int x; s: StackNat ); 6 /* Inserta un elemento al principio ( tope ) de la pila. */ /* SELECTORAS */ 10 unsigned int Top ( s: StackNat ); 11 /* Devuelve el primer elemento de la pila. 12 Pre :! IsEmptyStack (s) */ StackNat Pop ( s: StackNat ); 15 /* Devuelve la pila sin su primer elemento. 16 Pre :! IsEmptyStack (s) */ /* PREDICADO */ 20 bool IsEmptyStack ( s: StackNat ); 21 /* Verifica si la pila esta vacia. */ Instituto de Computación - Facultad de Ingeniería - UdelaR Página 5 de 10

6 Parte b struct nodo { 4 unsigned int elem ; 5 nodo * sig ; 6 }; typedef nodo * StackNat ; 11 /* CONSTRUCTORAS */ 12 StackNat NullStack () { 13 return NULL ; 14 } StackNat Push ( unsigned int x; StackNat s) { 18 StackNat nuevo = new nodo ; 19 nuevo - > elem = x; 20 nuevo -> sig = s; return nuevo ; 23 } /* SELECTORAS */ 27 unsigned int Top ( StackNat s) { 28 return s -> elem ; 29 } StackNat Pop ( StackNat s) { 32 StackNat borrar = s; 33 StackNat res = s -> sig ; 34 delete borrar ; return res ; 37 } /* PREDICADO */ 41 bool IsEmptyStack ( StackNat s) { 42 return s == NULL ; 43 } Notar que si bien la operacion Pop tiene O(1), en caso de querer implementar un procedimiento DestruirPila que libere todos los elementos, este tendra O(n) con n la cantidad de elementos de la pila. Este procedimiento se puede implementar usando la operación Pop. Instituto de Computación - Facultad de Ingeniería - UdelaR Página 6 de 10

7 Parte c Como en la pila se puede almacenar solo un número acotado de elementos, se debe agregar un predicado que permita verificar si una pila está llena (IsFullStack). Además se debe agregar a la operación de Push la precondición de que la pila no esté llena. 1 /* CONSTRUCTORAS */ 2 StackNat NullStack ( unsigned int capacidad ); 3 /* Crea la pila vacia que puede almacenar hasta capacidad elementos. */ 4 5 StackNat Push ( unsigned int x, StackNat s); 6 /* Inserta un elemento al principio ( tope ) de la pila. 7 Pre :! IsFullStack (c) */ /* SELECTORAS */ 11 unsigned int Top ( StackNat s); 12 /* Devuelve el primer elemento de la pila. 13 Pre :! IsEmptyStack (s) */ void Pop ( StackNat s); 16 /* Devuelve la pila sin su primer elemento. 17 Pre :! IsEmptyStack (s) */ /* PREDICADO */ 21 bool IsEmptyStack ( StackNat s); 22 /* Verifica si la pila esta vacia. */ bool IsFullStack ( StackNat s); 25 /* Verifica si la pila esta llena. */ Instituto de Computación - Facultad de Ingeniería - UdelaR Página 7 de 10

8 Parte d Se hará la implementacion de una pila con una estructura de memoria estática. La implementación con estructura dinámica sigue como ejercicio para el lector. Respecto a la pregunta, la ventaja de hacerlo con una estructura dinámica es la usual, el mejor aprovechamiento de la memoria. La ventaja de la estructura estática es la mayor rapidez en las operaciones, salvo en la de crear la pila. 1 2 struct StackNodos { 3 unsigned int * elems ; 4 unsigned int capacidad ; 5 unsigned int tope ; 6 }; 7 8 typedef StackNodos * StackNat ; /* CONSTRUCTORAS */ 12 StackNat NullStack ( unsigned int capacidad ) { 13 StackNat pila = new StackNodos ; 14 pila - > capacidad = capacidad ; 15 pila -> tope = 0; 16 pila - > elems = new unsigned int [ tamanio ]; return pila ; 19 } StackNat Push ( unsigned int x, StackNat s) { 22 (s- > cantidad )++; 23 s- > elems [s- > cantidad - 1] = x; 24 } /* SELECTORAS */ 28 unsigned int Top ( StackNat s) { 29 return s- > elems [s- > cantidad - 1]; 30 } void Pop ( s: StackNat ) { 33 (s-> cantidad )--; 34 } /* PREDICADOS */ 38 bool IsEmptyStack ( StackNat s) { 39 return (s- > cantidad == 0); 40 } bool IsFullStack ( StackNat s) { 43 return (s- > cantidad == s- > tamanio ); 44 } Instituto de Computación - Facultad de Ingeniería - UdelaR Página 8 de 10

9 Tercera parte: Aplicaciones. Ejercicio 4 Dada una expresión en notación infija, compuesta de operadores binarios + y *, números naturales y paréntesis, se pide: (a) Escribir un procedimiento que transforme la expresión a su representación en notación posfija. Para realizar esta operación use una Pila de caracteres en donde ir colocando los operadores (según su orden de precedencia). La expresión de entrada es una lista de caracteres. La expresión de salida será una lista de operadores y operandos representando la expresión posfija. Asuma que las expresiones de entrada son sintácticamente correctas. Ejemplos: Expresión infija de entrada: 10 * Expresión posfija equivalente: 10 5 * 3 + Expresión infija de entrada: 10 * ( ) Expresión posfija equivalente: * Expresión infija de entrada: * 3 Expresión posfija equivalente: * + Expresión infija de entrada: ( ) * 3 Expresión posfija equivalente: * Expresión infija de entrada: ( * ) * 3 Expresión posfija equivalente: * * (b) Evaluar la expresión en notación posfija. Para realizar esta operación use una Pila donde ir colocando los operandos. Escribir a tales efectos un procedimiento que reciba la expresión a evaluar (lista de operadores y operandos) y retorne un número natural. Análisis Tenga presente que en la notación posfija, no se usan paréntesis por no ser necesarios, por lo que la lista solución no tendrá paréntesis. Para implementar la solución necesitaremos dos estructuras, una pila para guardar los operadores y una lista de caracteres, que es la lista resultado. Como entrada hay una lista con la expresión leída de izquierda a derecha. A continuación se dará un conjunto de reglas para cada caso, que ameritan reflexión y la realización de varios ejemplos para ver por qué funcionan: Si el elemento de la lista procesado es un operando, es sencillo, se debe insertar al final de la lista resultado. Cuando se lee un operador (+, *, ( o )) hay que atender varias situaciones, ya que la inserción o no en la pila y en la lista resultado depende del contenido de la pila y de la precedencia que tienen los operadores entre si, partiendo de que + tiene menor precedencia que *. Cuando se lee un operador y en el tope de la pila hay un operador de menor precedencia el operador leido se agrega a la pila. Salvo para el caso de ) que nunca se agrega a la pila, sino que se avanza en el resultado hasta sacar un ( de la pila. Avanzar en el resultado significa ir sacando elementos del tope de la pila y agregarlos al final de la lista resultado. Leer el operador ( también es un caso especial, en el sentido que siempre se agrega a la pila. Instituto de Computación - Facultad de Ingeniería - UdelaR Página 9 de 10

10 Cuando el elemento del tope de la pila tiene mayor o igual precedencia que el elemento procesado, se va avanzando en el resultado hasta encontrar un elemento de menor precedencia en la pila o un (, que se dejará en la pila y se apilará el operador leido. Si la pila es vacía se apila el operador leído. Y finalmente si ya se terminó de leer la entrada y quedan elementos en la pila, se avanza en la resultado hasta que la pila quede vacía. Tenga en cuenta que si se quieren agregar los operadores / y -, al / se le debe asignar igual precedencia que a * y al - igual precedencia que al +. En resumen en pseudocódigo sería: 1 Entrada : lstent // la lista de entrada 2 Salida : lstsol // la lista resultado 3 lstsol = vacia 4 pila_aux = vacia 5 mientras ( no_vacia ( lstent )) { 6 c = primero ( lstent ); 7 lstent = resto ( lstent ) 8 si esoperando ( c) { 9 agregar_al_final (c, lstsol ); 10 } sino { // es operador 11 si esvacia ( pila_aux ) { 12 push (c, pila_aux ); 13 } sino si es ")" { 14 // avanzar en el resultado hasta quitar un ( de la pila 15 } sino si es "(" { 16 push (c, lstsol ); 17 } sino si esmenorprecedencia ( tope ( pila_aux ), c) { 18 push (c, pila_aux ); 19 } sino { // la precedencia es igual o mayor 20 // avanzar en la pila hasta encontrar un elemento de menor precedencia que c, 21 // sea vacia, o encuntrar un "(". Todos los elementos removidos se van 22 // colocando al final de la lista push (c, pila_aux ); // finalmente colocar el elemento leido en la pila 25 } 26 } 27 } 28 retornar lstsol También notar que tiene O(n) de ejecución con n la cantidad de elementos de la entrada y solo es necesario hacer una pasada por la lista. Parte b Para evaluar una expresión solo se precisa una pila como estructura auxiliar. La idea general es leer la expresión de izquierda a derecha, ir guardando los operadores en la pila, y cada vez que se lee un operando, se lo aplica a dos operandos de la pila y se hace push del resultado en la pila. Para más información ver: Data Structures and Algoritm Analysis in C, Mark Allen Weiss, p. 72 (Postfix Expressions). Instituto de Computación - Facultad de Ingeniería - UdelaR Página 10 de 10

TAD: Pila. TALLER: TAD Pila

TAD: Pila. TALLER: TAD Pila TALLER: TAD Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos. Una pila también se la conoce con el nombre de estructura de tipo

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria 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 de datos y de la

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Estructuras de Datos. La pila es un objeto dinámico en constante cambio.

Estructuras de Datos. La pila es un objeto dinámico en constante cambio. 21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Tema: Tipos Abstractos de Datos (TAD s) en C++. Programación II. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C++. Objetivos Específicos Explicar el concepto "Tipo Abstracto

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 ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

Tema 5. Estructura de datos Pila

Tema 5. Estructura de datos Pila Tema 5. Estructura de datos Pila 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 de datos y de la

Más detalles

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna Ingeniería en Computación Unidad de Aprendizaje: Estructura de Datos Unidad de Competencia II: Estructuras de Datos Lineales Marzo 2015 M. en C. Edith Cristina Herrera Luna ESTRUCTURAS DE DATOS Propósito

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

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

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

Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores Pilas y Colas Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Pilas Estructura Operaciones Ejemplos de aplicación Implementación Colas Definición Operaciones

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

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

11. PILAS Introducción Fundamentos

11. PILAS Introducción Fundamentos 11. PILAS 11.0 INTRODUCCIÓN... 25 11.1 FUNDAMENTOS... 25 11.2. REPRESENTACIÓN DE LAS PILAS EN C++... 26 Implementación mediante estructuras estáticas... 31 Implementación mediante cursores... 35 Implementación

Más detalles

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas

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

14. ÁRBOLES. 14.1 Fundamentos y terminología básica

14. ÁRBOLES. 14.1 Fundamentos y terminología básica Ricardo Ferrís / Jesús Albert Algoritmos y estructuras de datos I 14. ÁRBOLES 14.1 FUNDAMENTOS Y TERMINOLOGÍA BÁSICA... 79 14.2. ÁRBOLES BINARIOS... 81 14.3. FUNDAMENTOS... 82 14.3. OPERACIONES CON ÁRBOLES

Más detalles

7.4. UTILIDADES DE LAS PILAS

7.4. UTILIDADES DE LAS PILAS 7.4. UTILIDADES DE LAS PILAS o Llamadas a subprogramas o Paso de programas recursivos a iterativos o Un caso especial, quick_sort iterativo. o Equilibrado de símbolos o Tratamiento de expresiones aritméticas

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder

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

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013 TADs en C Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013 1. Objetivos Definición de TADs en C Ocultación de la implementación del TAD Manejo básico de memoria dinámica 2. Usando

Más detalles

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Pilas, Colas Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Quiz: STL Quiz: STL Standard Template Library (STL) std::vector - Arreglo dinámico,

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo) . Sobrecarga de operadores. unarios Operador de incremento (prefijo). Devolución de objetos en los métodos. Retorno por referencia Sobrecarga de operadores Los operadores aceptan uno o varios operandos

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos

Más detalles

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica. Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Pilas y Colas. Capítulo 3

Pilas y Colas. Capítulo 3 Pilas y Colas Capítulo 3 Pilas Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una

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

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería:

CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo. La estructura sería: CI2126 PRÁCTICA 9: TAD COLA. 1) Implemente las operaciones C_Insert y C_Remove del TAD COLA usando a. un arreglo La estructura sería: typedef struct s_cola ELEM elementos[max]; int primero,ultimo; STRUCTCOLA,*COLA;

Más detalles

PILAS Fundamentos

PILAS Fundamentos Alg. y Estr. Datos-I / Fund. Progr.-II (R. Ferrís, J. Albert) 11 PILAS 11.1 Fundamentos En este tema y en el siguiente se analizarán las estructuras de datos lineales pilas y colas. Las pilas y las colas

Más detalles

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda

Más detalles

TEMA 8: Gestión dinámica de memoria

TEMA 8: Gestión dinámica de memoria TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras

Más detalles

ESTRUCTURAS DE DATOS

ESTRUCTURAS DE DATOS CURSO: ESTRUCTURAS DE DATOS 1 SEMESTRE: III 2 CODIGO: 602301 3 COMPONENTE: 4 CICLO: 5 AREA: Profesional 6 FECHA DE APROBACIÓN: 7 NARURALEZA: OBLIGATORIO 8 CARÁCTER: TEORICO - PRÁCTICO 9 CRÉDITOS (RELACIÓN):

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;

Más detalles

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL 1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto

Más detalles

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Capítulo. Listas, pilas y colas en C. Contenido. Introducción Capítulo 32 Listas, pilas y colas en C Contenido Listas enlazadas Clasificación de listas enlazadas Operaciones en listas enlazadas Inserción de un elemento en una lista Búsqueda de un elemento de una

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista: Tipos Abstractos de Datos: TAD Lista en educación Profesional 1.- Introducción Los tipos abstractos de datos son fundamentales para la informática puesto que de ellos se sirven todos los programas para

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

Unidad Nº V Listas Enlazadas

Unidad Nº V Listas Enlazadas Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta

Más detalles

ANEXO XVII DE LA RESOLUCION N

ANEXO XVII DE LA RESOLUCION N Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:

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

Requerimientos de Software

Requerimientos de Software Requerimientos de Software Ingeniería de Requerimientos Se define como el proceso de establecer los servicios que el consumidor requiere de un sistema y las restricciones sobre las cuales de funcionar

Más detalles

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS CONTENIDO PRÓLOGO XIX CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS 1.1 Introducción 2 1.2 Resolución de problemas mediante la computadora 3 1.3 Conceptos de programación orientada a objetos

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

funciones printf scanf

funciones printf scanf FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones

Más detalles

Secretaría de Docencia Dirección de Estudios Profesionales

Secretaría de Docencia Dirección de Estudios Profesionales PROGRAMA DE ESTUDIO POR COMPETENCIAS ESTRUCTURAS DE DATOS I. IDENTIFICACIÓN DEL CURSO ESPACIO EDUCATIVO: Facultad de Ingeniería LICENCIATURA: Ingeniería en Computación ÁREA DE DOCENCIA: Programación e

Más detalles

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Alonso Ramírez Manzanares Computación y Algoritmos 10.03 Recursividad mat-151 1 Ejercicio de recursión: dibujando una regla Queremos dibujar las marcas de diferentes tamaños de una regla. Marcas grandes cada 1/2 cm, marcas más pequeñas cada 1/4 cm... hasta una

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Métodos que devuelven valor Dado el siguiente triángulo rectángulo: Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes 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 de datos y de la información

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1 Estructura de Datos Arreglos Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1 Introducción Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización

Más detalles

ÁRBOLES GENERALES Y Y ESTRUCTURAS DE ÍNDICES DEFINICIONES Y REPRESENTACIONES DEFINICIONES Y REPRESENTACIONES. NOMENCLATURA SOBRE ÁRBOLES. DECLARACIÓN Y REPRESENTACIÓN.. CONSTRUCCIÓN.. ÁRBOLES 2-3-4. ÁRBOLES

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Insertar Datos en Tablas

Insertar Datos en Tablas Insertar Datos en Tablas La instrucción básica para insertar valores a los atributos (columnas) de una tabla es la instrucción INSERT INTO Insertar una sola tupla Para insertar una tupla en la tabla, se

Más detalles

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Introducción a la Programación Y Computación 1 CODIGO: 770 CREDITOS: 4 ESCUELA: Ciencias y Sistemas AREA

Más detalles

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Dr. Eduardo A. Rodríguez Tello Laboratorio de Tecnologías de Información Cinvestav Tamaulipas ertello@tamps.cinvestav.mx Cursos de inducción a la MCC Cinvestav Tamaulipas

Más detalles

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Introducción a la Programación Y Computación 1 CODIGO: 770 CREDITOS: 4 ESCUELA: Ciencias y Sistemas AREA

Más detalles

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS ESTRUCTURAS DE DATOS UNIDAD ACADÉMICA: CARRERA: ESPECIALIZACIÓN: ÁREA: TIPO DE MATERIA: EJE DE FORMACIÓN: Facultad de Ingeniería en Electricidad y Computación Ingeniería en Ciencias Computacionales Sistemas

Más detalles

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA I. DATOS DE IDENTIFICACION 1. Unidad Académica: Facultad de Ciencias 2. Programa (s) de estudio: Licenciatura

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

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

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

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

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

Tablas de dispersión (hash tables)

Tablas de dispersión (hash tables) Tablas de dispersión (hash tables) La dispersión es una técnica empleada para realizar inserciones, eliminaciones y búsquedas en un tiempo promedio constante. La estructura de datos ideal para la tabla

Más detalles

TEMA 7. EL TDA PILA. 7.1. Definición

TEMA 7. EL TDA PILA. 7.1. Definición TEM 7. EL TD PIL 7.1. Definición 7.2. Operaciones del TD PIL 7.3. Implementaciones más usuales: vectores y listas enlazadas 7.4. Utilidades de las Pilas ibliografía Weiss Cairó y Guardati ho, Hopcroft

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

Proyecto 1 parte 2 Diccionario sobre arreglos

Proyecto 1 parte 2 Diccionario sobre arreglos Proyecto 1 parte 2 Diccionario sobre arreglos Algoritmos y Estructuras de Datos II Laboratorio 22 de marzo de 2011 Este proyecto es una implementación en lenguaje C del proyecto de la materia Algorítmos

Más detalles

Grafos. Amalia Duch Brown Octubre de 2007

Grafos. Amalia Duch Brown Octubre de 2007 Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido

Más detalles

GUIA No 5. CREACIÓN DE SubVI s

GUIA No 5. CREACIÓN DE SubVI s GUIA No 5 CREACIÓN DE SubVI s Una característica importante de LabView es el manejo de jerarquías y el poder utilizar fácilmente un programa anterior como un módulo de otro cualquiera. Cuando un VI es

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

7. Poblar base de datos a partir de documentos XML validados con esquemas XML

7. Poblar base de datos a partir de documentos XML validados con esquemas XML 7. Poblar base de datos a partir de documentos XML validados con esquemas XML En este capítulo se aborda el tema de la población de la base de datos que se creó con el constructor automático de bases de

Más detalles

Programación en java. Estructuras algorítmicas

Programación en java. Estructuras algorítmicas Programación en java Estructuras algorítmicas Estructuras algoritmicas 1. Conceptos basicos 1. Dato 2. Tipos de datos 3. Operadores 2. dsd Conceptos Basicos DATO: se considera una representación simbólica

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Estructuras de datos: Pilas, Colas, Listas

Estructuras de datos: Pilas, Colas, Listas Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Índice Pilas 1 Pilas 2 3 Referencias bibliográficas Pilas M. A. Weiss., pilas

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

Uso de pilas y colas. 1. Uso de la clase stack

Uso de pilas y colas. 1. Uso de la clase stack Uso de pilas y colas Este documento contiene ejercicios que hay que resolver en el Jutge (en la lista correspondiente del curso actual) y que aquí están señalados con la palabra Jutge. Recomendamos resolver

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Estructura de datos. Carrera: SCC Participantes

Estructura de datos. Carrera: SCC Participantes 1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teoría-horas práctica-créditos Estructura de datos Ingeniería en Sistemas Computacionales SCC - 0408 4-2-10 2.-

Más detalles

Complejidad computacional (Análisis de Algoritmos)

Complejidad computacional (Análisis de Algoritmos) Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Nombre: Carné: Examen C++ - Junio Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Examen Grupo B Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción.... 1 1.1 Ejercicio 1:

Más detalles