Sunteți pe pagina 1din 8
Asignatura: Estructura de Datos Carrera: Ingeniería en Sistemas Computacionales Clave de la asignatura: AED-1026 Horas
Asignatura: Estructura de Datos
Carrera: Ingeniería en Sistemas Computacionales
Clave de la asignatura: AED-1026
Horas teoría-horas práctica-créditos: 2 - 3 –5

Objetivo General Del Curso.

Identificar, seleccionar y aplicar eficientemente tipos de datos abstractos, métodos de ordenamiento y búsqueda para la optimación del rendimiento de soluciones de problemas del mundo real.

Caracterización de la asignatura.

La importancia de la materia radica en que aporta al perfil del egresado el conocimiento, la correcta selección y aplicación de las estructuras de datos en la solución de problemas, así como el determinar la eficiencia de algoritmos que permiten la selección de los mismos con el fin de desarrollar soluciones eficientes.

Puesto que para llevar esta materia es indispensable conocer la programación orientada a objetos, esta se encuentra ubicada para ser cursada después de las materias de Fundamentos de Programación y d Programación Orientada a Objetos, siendo esta materia pilar fundamental en el análisis, diseño y desarrollo de sistemas de información.

Temario.

UNIDAD

TEMAS

SUBTEMAS

1

Introducción a las Estructuras de datos

1.1 Tipos de datos abstractos(TDA)

1.2 Modularidad

 

1.3 Uso de TDA

1.4 Manejo de memoria Estática.

1.5. Manejo de memoria dinámica

2

Recursividad

2.1 Definición.

 
 

2.2 Procedimientos recursivos.

2.3 Ejemplos de casos recursivos.

3

Estructuras lineales

3.1 Listas

 
 

3.1.1

Operaciones básicas con listas.

3.1.2

Tipos de listas

3.1.3

Listas simples enlazadas

3.1.4

Listas doblemente enlazadas

3.1.5

Listas circulares

3.1.6

Aplicaciones

 

3.2

Pilas

 

3.2.1 Representación en memoria estática y dinámica

3.2.2 Operaciones básicas con pilas

3.2.3 Aplicaciones

3.2.4 Notación infija y postfija

3.2.5 Recursividad con ayuda de pilas

Ingeniería en Sistemas Computacionales

Planificación y Modelado

 

3.3

Colas

 

3.3.1

Representación en memoria estática y dinámica

3.3.2

Operaciones básicas con colas

3.3.3 Tipos de colas: Cola simple, cola circular y colas

 

dobles.

 
 

3.3.4

Aplicaciones: colas de prioridad

4

Estructuras no lineales

4.1 Árboles

 
 

4.1.1 Concepto de árbol.

4.1.2 Clasificación de árboles

4.1.3 Operaciones básicas sobre árboles

4.1.4 Aplicaciones

4.1.5 Árboles balanceados (AVL).

 

4.2 Grafos

 
 

4.2.1 Terminología de grafos

4.2.2 Operaciones básicas sobre grafos

5

Métodos de

5.1 Algoritmos de ordenamiento internos

ordenamientos

5.1.1 Burbuja

 

5.1.2 Quicksort

5.1.3 ShellSort

5.1.4 Radix

 

5.2 Algoritmos de ordenamiento Externos

 

5.2.1 Intercalacion

5.2.2 Mezcla Directa

5.2.3 Mezcla Natural

6

Métodos de búsqueda

6.1 Busqueda secuencia

 

6.2

Busqueda binaria

6.3

busqueda por funciones de HASH

7

Análisis de los algoritmos

7.1

Complejidad en el tiempo

7.2

Complejidad en el espacio

 

7.3

Eficiencia de los algoritmos

Evaluación de la 1ª unidad

1ª unidad

Examen 40% Ejercicio 30% Participación 10% Prod. de part. 5% Tarea 15%

NOTA: Las tareas, investigaciones y ejercicios (cuando se requiera) deberán ser entregados en una folder color Azul rey.

Bibliografía

Java 2 Manual de usuario y tutorial Agustín Froufe Quuintas Alfaomega Ra-Ma.

Java para estudiantes Douglas Bell, Mike Parr Prentice Hall

Ingeniería en Sistemas Computacionales

Planificación y Modelado

Unidad 1. Introducción a las estructuras de datos.

Competencia a especificar a desarrollar. Representar y aplicar los tipos de datos abstractos por medio de un lenguajes de programación.

1.1. Tipos de datos abstractos.

Estructura de Datos.- La definición que anteriormente se usaba para una estructura de datos es: un conjunto de tipos, un tipo diseñado partiendo de ese conjunto de tipos, un conjunto de funciones, y un conjunto de axiomas . Esta definición implica que una estructura de datos es un tipo con implementación. En nuestra era de la programación orientadas a objetos, tipo con implementación significa clase.

Un tipo de dato abstracto (TDA) es considerado aquel que es creado por el programador.

Abstracción.- Es la técnica de programación que permite crear nuevos tipos de datos adecuados a una aplicación, esta técnica si es utilizada adecuadamente puede producir programas más cortos, más legibles y flexibles

Para que una estructura sea considero un TDA debe de tener dos características:

1.

Interfaz.- Representa el comportamiento de la estructura (Métodos, funciones y procedimientos)

2.

Implementación.- Es la parte oculta para el cliente, es decir la utilización de la estructura sin conocer el comportamiento. Encapsulamiento.

estructura sin conocer el comportamiento. Encapsulamiento. Estructura de un TDA Por ejemplo la clase Figura cuenta

Estructura de un TDA

Por ejemplo la clase Figura cuenta con ciertos métodos que son llamados interfaz y la propia clase existente es la que encapsula todo la estructura en otras palabras es la implantación.

Ingeniería en Sistemas Computacionales

Planificación y Modelado

import java.io.*; public class Figuras{ public BufferedReader dato=new BufferedReader(new InputStreamReader(System.in)); byte b, h; int resul;

public static void main(String args[])throws IOException{ Figuras metodo=new Figuras(); metodo.solicitar(); metodo.visualizar();

}

public void solicitar()throws IOException{ System.out.println("Introduce el valor de la base"); b=Byte.parseByte(dato.readLine()); System.out.println("Introduce el valor de la base"); h=Byte.parseByte(dato.readLine());

}

 

public void visualizar(){ System.out.println("El area es "+ (b*h)/2);

}

}

Datos
Datos
Operaciones
Operaciones
TDA
TDA

Ingeniería en Sistemas Computacionales

Planificación y Modelado

1.2 Modularidad

La modularidad es la posibilidad de dividir una aplicación en piezas más pequeñas llamadas módulos. En el lenguaje de programación java los módulos los podemos apreciar en los métodos que utilizamos para el funcionamiento del mismo.

Las métodos en Java siempre son miembros de clases, no hay métodos o funciones fuera de las clases. La implementación de los métodos se incluye dentro del cuerpo de la clase.

Podemos apreciar del ejemplo anterior que la declaración de los métodos

principal, y la implementación y desarrollo de mismo están dentro del cuerpo de la clase

están declarados en la función

public class Figuras{ public BufferedReader dato=new BufferedReader(new InputStreamReader(System.in)); byte b, h; int
public class Figuras{
public BufferedReader dato=new BufferedReader(new InputStreamReader(System.in));
byte b, h;
int resul;
public static void main(String args[])throws IOException{
Figuras metodo=new Figuras();
metodo.solicitar();
metodo.visualizar();
}
public void solicitar()throws IOException{
System.out.println("Introduce el valor de la base");
b=Byte.parseByte(dato.readLine());
System.out.println("Introduce el valor de la base");
h=Byte.parseByte(dato.readLine());
Métodos
desarrollados
en el cuerpo
principal de
}
public void visualizar(){
System.out.println("El area es "+ (b*h)/2);
}
}

1.3 Uso de TDA

Un programa que maneja un TAD lo hace teniendo en cuenta las operaciones o la funcionalidad que tiene, sin interesarse por la representación física de los datos, es decir los tipos de datos que se utilizaran.

Algunas estructura TDA de programación son:

se utilizaran. Algunas estructura TDA de programación son: Pila.- Una pila (stack en inglés) es una

Pila.- Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.

Ingeniería en Sistemas Computacionales

Planificación y Modelado

en Sistemas Computacionales Planificación y Modelado Colas.- Una cola es una estructura de datos,

Colas.- Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción (meter) push se realiza por un extremo y la operación de extracción(sacar) pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.

elemento en entrar será también el primero en salir. Representación de una cola Arboles.- . U

Representación de una cola

Arboles.-. U n árbol es una estructura de datos ampliamente usada que imita la forma . Un árbol es una estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, también decimos que b es hijo de a). Sólo puede haber un único nodo sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les conoce como rama.

(tienen padre y uno o varios hijos) se les conoce como rama. Representación de un árbol

Representación de un árbol

Ingeniería en Sistemas Computacionales

Planificación y Modelado

Listas.- Es una secuencia de elementos homogéneos que tan compuestos de elementos llamados nodos. Es una Es una secuencia de elementos homogéneos que tan compuestos de elementos llamados nodos. Es una de la estructuras TDA más complejas en programación.

una de la estructuras TDA más complejas en programación. Representación de una lista en programación 1.4

Representación de una lista en programación

1.4 Manejo de memoria Estática.

Define la cantidad de memora necesaria para programa durante el tiempo de compilación. El tamaño no puede cambiar durante el tiempo de ejecución del programa. Los datos que se almacenan en memoria estática son:

Código fuente del programaLos datos que se almacenan en memoria estática son: Variables declaradas, las cuales pueden cambiar su

Variables declaradas, las cuales pueden cambiar su contenido pero no su tamaño.en memoria estática son: Código fuente del programa Todas las declaración de tipo static L.I. Evelia

Todas las declaración de tipo static static

cuales pueden cambiar su contenido pero no su tamaño. Todas las declaración de tipo static L.I.

Ingeniería en Sistemas Computacionales

Planificación y Modelado

En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. Este proceso se denomina "conversión", "moldeado" o "tipado".

El tamaño de los tipos que queremos convertir es muy importante. No todos los tipos se convertirán de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo que si contienen información útil, esta se perderá.

Por ello se establece la norma de que "en las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente":

las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente": L.I.