Está en la página 1de 42

1

UNIVERSIDAD TCNICA DE MANAB




FACULTAD DE CIENCIAS INFORMTICAS


PORTAFOLIO DE ESTRUCTURA DE DATOS






Nombre: Miguel Andrs Viteri Chica
Docente: Ing. Christian Torres.
Nivel Segundo B

PERIODO: MAYO 2013-SEPTIEBRE 2013

2

Misin y Visin


Universidad Tcnica de Manab

Misin:
Formar acadmicos, cientficos y profesionales responsables, humanistas, ticos y solidarios,
comprometidos con los objetivos del desarrollo nacional, que contribuyan a la solucin de los
problemas del pas como universidad de docencia con investigacin, capaces de generar y
aplicar nuevos conocimientos, fomentando la promocin y difusin de los saberes y las
culturas, previstos en la Constitucin de la Repblica del Ecuador.

Visin:
Ser institucin universitaria, lder y referente de la educacin superior en el Ecuador,
promoviendo la creacin, desarrollo, transmisin y difusin de la ciencia, la tcnica y la
cultura, con reconocimiento social y proyeccin regional y mundial.



Facultad de Ciencias Informticas


Misin:
Ser una unidad con alto prestigio acadmico, con eficiencia, transparencia y calidad en la
educacin, organizada en sus actividades, protagonistas del progreso regional y nacional.
Visin:
Formar profesionales eficientes e innovadores en el campo de las ciencias informticas, que
con honestidad, equidad y solidaridad, den respuestas a las necesidades de la sociedad
elevando su nivel de vida.








3


FACULTAD/DEPARTAMENTO: FACULTAD DE CIENCIAS INFORMTICAS
CARRERA: INGENIERA EN SISTEMAS INFORMTICOS
ASIGNATURA/MDULO: ESTRUCTURA DE DATOS CDIGO: OF-0201
Nivel / Semestre: 2 N de Crditos:5 Modalidad : Presencial
Paralelo: 2do. B Perodo Acadmico: Sept. 25/2012 Feb 14/2013 rea Acadmica: SOFTWARE
PRERREQUISITO (S): CORREQUISITO (S):
CONTENIDOS DISCIPLINARES QUE
DEBEN SER APROBADAS ANTES DE
CURSAR ESTE CONTENIDO
DISCIPLINAR


CDIGO
CONTENIDOS DISCIPLINARES
QUE DEBEN SER CURSADOS AL
MISMO TIEMPO QUE ESTE
CONTENIDO DISCIPLINAR


CDIGO
PROGRAMACIN I OC-0100

DOCENTE: Ing. CHRISTIAN RONALD TORRES MORN
Ttulo: MAGITER EN GERENCIA EDUCATIVA E-mail: crtorres@utm.edu.ec
Datos personales: Profesor contratado a tiempo completo de la asignatura Estructura de Datos, y Herramientas Web
Director de Tesis de Ingeniera en Sistemas Informticos, miembro de los equipos de Vinculacin con la sociedad, Docente
Tutor de pasantas pre profesionales, coautor del manual de Estructura de Datos junto a la Ing. Esthela San Andrs Lz,
coautor del folleto de flujogramas para NBU.



UNIVERSIDAD TCNICA DE MANAB
FACULTAD DE CIENCIAS INFORMTICAS
CARRERA DE INGENIERA EN SISTEMAS INFORMTICOS

SYLLABUS



I.- INFORMACIN GENERAL



















II.- RUTA FORMATIVA
a.- DEL PERFIL DE EGRESO: Competencia/Resultado de Aprendizaje:
Competencia:
3. Construye soluciones informticas de calidad que mejoren la eficiencia y eficacia de una organizacin
haciendo uso correcto de la tecnologa.
Resultado de Aprendizaje:
a. Capacidad de planificar, disear, conducir e interpretar resultados de experimentos orientados a la
informtica.



b.- OBJETIVO GENERAL DE LA ASIGNATURA: Capacitar al estudiante con los conocimientos significativos en
administracin de memoria dinmica y herramientas tiles en los diseos, construcciones y usos principales de algoritmos en
la estructuracin de datos lineales y no lineales.
c.- DESCRIPCIN DE LA ASIGNATURA:
La materia introduce al estudiante a los conceptos y aplicacin en la administracin de memoria, aplicando programacin
estructurada y orientada a objetos, permite conocer la estructura bsica operacional de la memoria RAM y de los grandes
diseos de software, aplicando C++ el estudiante desarrollar proyectos cientficos tanto con interfaces en modo grfico y en
modo texto, tomando como referencia aplicaciones en el campo general de otras carreras.

4


Resultados del Aprendizaje
(Objetivos Especficos)

Formas de
Evidenciarlos
(Apreciacin)

Niveles del resultado de
aprendizaje

Ponderacin









1.- Identificar los tipos estructurados
de datos estticos y dinmicos
empleados en la creacin de
aplicaciones, considerando los
lenguajes de programacin. (Nivel
Taxonmico: Conocimiento)









1.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigacin y
Prcticas en el
Lenguaje de
programacin C++.

Describir la definicin de la estructura de datos,
los tipos de datos simples, bsicos y compuestos
en un ensayo tcnico con: descripcin general del
tema clara; ideas que tienen relacin, claridad y
objetividad con el tema; y una conclusin clara con
aporte personal.


Describir la definicin de la estructura de datos,
los tipos de datos simples, bsicos y compuestos
en un ensayo tcnico con: descripcin general del
tema confusa; pocas ideas que tienen relacin,
claridad y objetividad con el tema; y una
conclusin confusa con aporte personal.


Describir la definicin de la estructura de datos,
los tipos de datos simples, bsicos y compuestos
en un ensayo tcnico con: descripcin general del
tema confusa; poca o ninguna idea que tienen
relacin, claridad y objetividad con el tema; y una
conclusin confusa sin aporte personal.


NIVEL ALTO:

86-100






NIVEL MEDIO

71-85






NIVEL BSICO

70






2.- Elaborar aplicaciones dinmicas
de estructura lineal, almacenamiento
y recuperacin de los mismos en
unidades de almacenamiento,
aplicarn soluciones de
administracin de memoria
mediante el desarrollo de
aplicaciones cientficas y
comerciales. (Nivel Taxonmico:
Aplicacin)








2.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigacin y
Prcticas en el
Lenguaje de
programacin C++.

Comparar con la utilizacin de un cuadro
comparativo tres semejanzas y tres diferencias
entre los tipos de datos que permiten almacenar
ms de un dato; reflejando las relaciones de las
comparaciones con ideas claras.


Comparar con la utilizacin de un cuadro
comparativo tres semejanzas y tres diferencias
entre los tipos de datos que permiten almacenar
ms de un dato; reflejando las relaciones de las
comparaciones con ideas pocos claras.


Comparar con la utilizacin de un cuadro
comparativo dos semejanzas y dos diferencias
entre los tipos de datos que permiten almacenar
ms de un dato; reflejando las relaciones de las
comparaciones con ideas confusas.


NIVEL ALTO:

86-100




NIVEL MEDIO

71-85






NIVEL BSICO

70

III.- RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA












5









3.- Implementar aplicaciones
dinmicas de estructura Lineal,
almacenamiento y recuperacin
de los mismos en unidades de
almacenamiento, aplicarn
soluciones de administracin de
memoria mediante el desarrollo
de aplicaciones cientficas y
comerciales (Nivel Taxonmico:
Aplicacin)









3.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigacin y
Prcticas en el
Lenguaje de
programacin C++.


Implementar aplicaciones dinmicas de
estructura Lineal, almacenamiento y recuperacin
de los mismos en unidades de almacenamiento,
aplicarn soluciones de administracin de
memoria mediante el desarrollo de aplicaciones
cientficas y comerciales.


Implementar aplicaciones dinmicas de
estructura Lineal, almacenamiento y recuperacin
de los mismos en unidades de almacenamiento,
aplicarn soluciones de administracin de
memoria mediante el desarrollo de aplicaciones
comerciales.


Implementar aplicaciones dinmicas de
estructura No Lineal, almacenamiento y
recuperacin de los mismos en unidades de
almacenamiento.



NIVEL ALTO:

86-100






NIVELMEDIO

71-85






NIVEL BSICO

70





4.- Implementar aplicaciones
dinmicas de estructura no Lineal,
almacenamiento y recuperacin de
los mismos en unidades de
almacenamiento, aplicarn
soluciones de administracin de
memoria mediante el desarrollo de
aplicaciones cientficas y comerciales
(Nivel Taxonmico: Aplicacin)






4.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigacin y
Prcticas en el
Lenguaje de
programacin C++.




Elaborar un programa con estructuras dinmicas
no lineales bien detallado.




Elaborar un programa con estructuras dinmicas
no lineales con poca claridad.



Elaborar un programa con estructuras dinmicas
no lineales de forma confusa.



NIVEL ALTO:

86-100




NIVEL MEDIO

71-85




NIVEL BSICO

70

6





5.- Organizar la informacin en
algoritmos y estructuras AVL y su
relacin con los gestores de Base de
Datos (Nivel Taxonmico: Aplicacin)



5.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigacin y
Prcticas en el
Lenguaje de
programacin C++.

Elaborar un programa que emplee estructuras
arborescentes de forma AVL uso de forma clara.


Elaborar un programa que emplee estructuras
arborescentes de forma AVL de forma poco clara.



Elaborar un programa que emplee estructuras
arborescentes de forma AVL de forma confusa.

NIVEL ALTO:

86-100


NIVEL MEDIO

71-85


NIVEL BSICO

70







7



N


PROGRAMA DEL CONTENIDO
DISCIPLINAR (ASIGNATURA, UNIDAD,
CURSO, TALLER, OTRO) POR TEMAS
N
TOT
AL
HOR
AS
P-A



HORAS PRESENCIALES



HORAS
AUTNOMAS



ESTRATEGIAS PARA EL
TRABAJO AUTNOMO
1.
UNIDAD I: GENERALIDADES Y
DEFINICIONES DE ESTRUCTURA DE
DATOS



Definicin

Variables, Tipos de datos.

Representacin Grfica de las
estructura de datos
Acceso a las estructura de

Datos (Estticas)

Tipos de Estructuras de Datos

Diferencia entre gestin

Esttica y Dinmica

Operaciones con varios
punteros
Asignacin dinmica de
memoria
Liberacin dinmica de
memoria
La constante NULL

Ventajas y desventajas de
punteros
46 23

Experiencia:

Aplicando lluvia de ideas
concretar conocimientos
relativo a la memoria y sus
diferentes importancias en el
funcionamiento del
computador

Reflexin:

En equipos de trabajo, analizar
el funcionamiento general del
computador y de los
programas, considerando las
siguientes aplicaciones:

Procesadores de texto, Hojas
de clculo, Reproductores,
Tareas del sistema operativo
como Impresin, etc.

Conceptualizacin:

Elaboracin de mapas
conceptuales, cuadros de
funcionamiento y estructurales
de la memoria.

Aplicacin:

Resolucin de ejercicios
demostrativos y de
planteamiento de problemas.
23
Tareas extra-
clases.
Investigacin del
tema de la unidad
Tareas en el
lenguaje de
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Formarn equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogern ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicar la tcnica de
procesos.
-Al final de la tarea se
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.
2. UNIDAD II: ESTRUCTURAS SIMPLES
Y COMPUESTAS



Listas Abiertas
60 30

Experiencia:

Aplicando lluvia de ideas
concretar conocimientos
relativo a problemas
30
Tareas extra-
clases.
Investigacin del
tema de la unidad
Tareas en el
lenguaje de
-Formarn equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogern ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicar la tcnica de
procesos.
-Al final de la tarea se


IV.- PROGRAMACIN





8


Definicin de listas abiertas

Declaracin e implementacin
de una lista

Operaciones con Listas

Insercin de un nodo

Bsqueda de un nodo

Recorridos de una lista

Eliminacin de un nodo

Listas y Archivos

Variaciones de listas

Pilas y Colas

Listas circulares o cerradas

Declaracin e implementacin
de una lista circular

Operaciones con Listas

Insercin de un nodo

Bsqueda de un nodo

Recorridos de una lista

Eliminacin de un nodo


Listas doblemente enlazadas abiertas
y cerradas

Declaracin e implementacin
de una lista doblemente
enlazada

Operaciones con Listas

Insercin de un nodo

Bsqueda de un nodo

Recorridos de una lista

Eliminacin de un nodo

informticos planteados



Reflexin:

En grupos de trabajo, analizar
el funcionamiento general de
los diferentes algoritmos
considerando las diferentes
aplicaciones.



Conceptualizacin:

Elaboracin de conclusiones
conceptuales, cuadros de
funcionamiento y alternativas
estructurales de solucin.



Aplicacin:

Resolucin de ejercicios
demostrativos y de
planteamiento de problemas.
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.

9
3.



Tipos de recorridos:
PreOrden
InOrden
PostOrden


Operaciones con rboles Binarios de
Bsqueda


Bsqueda de elementos.
Insercin de elementos.
Borrado de elementos.
* Nodo hoja.

*Nodo rama.

Movimiento a travs del rbol.
Comprobacin de rboles
vacos.

Comprobacin del nodo hoja.
Clculo de:

Nmero de nodos.

Altura del rbol.

Altura de un nodo.

rboles degenerados.

rboles binarios y su
importancia en la agilidad y
seguridad de los datos en el
campo empresarial en general.

Reflexin:

En grupos de
trabajo, analizar el
funcionamiento general de los
principales sistemas
informticos, considerando el
avance tecnolgico del
software en la base de datos

Conceptualizacin:

Elaboracin de
propuestas algortmicas,
prcticas y de alternativas de
resolucin.

Aplicacin:

Resolucin de
ejercicios demostrativos y de
planteamiento de problemas.
lenguaje de
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Al final de la tarea se
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.
4. UNIDAD IV: TIPOS DE RBOLES
ESPECIALES

rboles equilibrados.

Definicin.

Operaciones en AVL.

Factor de equilibrio.

Rotacin simple de nodos.

Rotacin simple a la derecha.

Rotacin simple a la izquierda.

Rotacin doble de nodos a la
derecha.

Rotacin doble de nodos s la
izquierda.

Reequilibrados de rboles
AVL.
Reequilibrados en rboles
AVL por insercin de un nodo.
28 14

Experiencia:

Aplicando el planteamiento de
problemas, identificar
dificultades y generar la
necesidad de encontrar
soluciones algortmicas.

Reflexin:

En grupos de trabajo, analizar
el funcionamiento de los
diferentes algoritmos
propuestos.

Conceptualizacin:

Elaboracin de propuestas de
funcionamiento y alternativas
estructurales de solucin.

Aplicacin:
14
Tareas extra-
clases.
Investigacin del
tema de la unidad
Tareas en el
lenguaje de
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Formarn equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogern ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicar la tcnica de
procesos.
-Al final de la tarea se
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.
UNIDAD III: ESTRUCTURAS
ARBORESCENTES



Definicin, implementacin
26 13

Experiencia:

Aplicando debates
definir la importancia de
aplicar algoritmos generales de
13
Tareas extra-
clases.
Investigacin del
tema de la unidad
Tareas en el
-Formarn equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogern ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicar la tcnica de
procesos.








10




Tipos de recorridos:
PreOrden
InOrden
PostOrden


Operaciones con rboles Binarios de
Bsqueda


Bsqueda de elementos.
Insercin de elementos.
Borrado de elementos.
* Nodo hoja.

*Nodo rama.

Movimiento a travs del rbol.
Comprobacin de rboles
vacos.

Comprobacin del nodo hoja.
Clculo de:

Nmero de nodos.

Altura del rbol.

Altura de un nodo.

rboles degenerados.

rboles binarios y su
importancia en la agilidad y
seguridad de los datos en el
campo empresarial en general.

Reflexin:

En grupos de
trabajo, analizar el
funcionamiento general de los
principales sistemas
informticos, considerando el
avance tecnolgico del
software en la base de datos

Conceptualizacin:

Elaboracin de
propuestas algortmicas,
prcticas y de alternativas de
resolucin.

Aplicacin:

Resolucin de
ejercicios demostrativos y de
planteamiento de problemas.
lenguaje de
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Al final de la tarea se
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.

11
4. UNIDAD IV: TIPOS DE RBOLES
ESPECIALES

rboles equilibrados.

Definicin.

Operaciones en AVL.

Factor de equilibrio.

Rotacin simple de nodos.

Rotacin simple a la derecha.

Rotacin simple a la izquierda.

Rotacin doble de nodos a la
derecha.

Rotacin doble de nodos s la
izquierda.

Reequilibrados de rboles
AVL.
Reequilibrados en rboles
AVL por insercin de un nodo.
28 14

Experiencia:

Aplicando el planteamiento de
problemas, identificar
dificultades y generar la
necesidad de encontrar
soluciones algortmicas.

Reflexin:

En grupos de trabajo, analizar
el funcionamiento de los
diferentes algoritmos
propuestos.

Conceptualizacin:

Elaboracin de propuestas de
funcionamiento y alternativas
estructurales de solucin.

Aplicacin:
14
Tareas extra-
clases.
Investigacin del
tema de la unidad
Tareas en el
lenguaje de
programacin
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Tcnica de
Manab, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Formarn equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogern ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicar la tcnica de
procesos.
-Al final de la tarea se
interrogarn, as:
Qu cosas fueron difciles?
Qu cosas fueron fciles?
Qu aprend hoy da?
Qu aporte a mi equipo?
-Aplicarn un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarn lo
lineamientos ms importantes
de la introduccin llamativa,
fundamentacin y conclusin
crtica.


Reequilibrados en rboles
AVL por borrado de un nodo.

Resolucin de ejercicios
demostrativos y de
planteamiento de problemas.


V.- METODOLOGA Y RECURSOS
Se aplicar un PEA, Dinmica de integracin y socializacin, documentacin, presentacin de los temas de clase y objetivos, lectura de motivacin
y video del tema, tcnica lluvia de ideas, para interactuar entre los receptores, aplicando el ciclo del aprendizaje.
Se aplicaran talleres con ASAT (aporte significativos de los aprendizajes de tareas o talleres)
Revisin de la clase programada antes del da sealado para la sesin correspondiente (blog-docente)
Consultas, tareas y talleres se entregarn en archivo escrito al docente y en archivo lgico al rea de contacto del curso.
Los recursos disponibles para el curso sern: pizarra tiza lquida(4), proyector, internet inalmbrico, dispensador de agua, aire acondicionado,
mesas de trabajo en equipo, proyector para equipos de trabajos en su lugar respectivo, sistema de audio, impresora de ltima generacin,
computadores(2) del aula,1 porttiles por equipo del estudiante, libros-CD-interactivo- pdf., blog. del estudiante y del docente para interactividad
y fortalecimiento contino.



12

MEDIO CICLO FINAL DE CICLO EXAMEN DE
RECUPERACIN

ASISTENCIA
EXMENES (30%) 15 15

ACT. EN EL AULA (40%)

Tareas 5 5

Ejercicios de aplicacin 2.5 2.5

Lecciones orales 2.5 2.5

Pruebas escritas 5 5

Participacin 2.5 2.5

Exposiciones 2.5 2.5

ACTIVIDADES DE INVESTIGACIN
PORTAFOLIO
PROYECTO
INFORME FINAL
(30%)

5
10

5

10

TOTAL 50% 50%

100%

VI.- PLANEACIN DE LA EVALUACIN
Las evaluaciones estarn orientadas a los procesos, lo que conlleva a que ninguna evaluacin tenga una ponderacin
determinante para la acreditacin.
Durante el periodo acadmico, el estudiante de la Universidad Tcnica de Manab, se someter obligatoriamente a los
siguientes parmetros de evaluacin de los aprendizajes: evaluacin de medio ciclo, evaluacin de final de cic lo, evaluacin de
actividades varias y evaluaciones de investigaciones.


ACREDITACIN






VI.- BIBLIOGRAFA
a.- Bibliografa Bsica:
AUTOR TTULO DE LIBRO EDICIN AO PUBLICACIN EDITORIAL
MARTNEZ, Romn Estructura de Datos, Referencia
practica con objetos orientados
a objetos
7 2008 Elda Quiroga
TORRES, Christian Manuales de estructura de
Datos en C++
1 2010 Estudiantil-FCI-UTM.
Ecuador
b.- Bibliografa Recomendada:
AUTOR TTULO DE LIBRO EDICIN AO PUBLICACIN EDITORIAL
Garrido Antonio Abstraccin y Estructura
de Datos en C++
1 2006 Delta Publicaciones S. L.
c.- Lecturas complementarias:
http://c.conclase.net/edd/.
http//www.utm.edu.ec
http://evirtual.utm.edu.ec/course/view.php?id=25
robotica.uv.es/pub/Libro/PDFs/CAPI5.pdf
www.dc.uba.ar ... Algoritmos y Estructuras de Datos II
http://www.programacion.com/articulo/estructuras_de_datos_y_algoritmos_en_java_309/2
http://www.youtube.com/watch?v=tOOEff1r-tk

13



VII.- COMPROMISO TICO
Escuchar y respetar democrticamente el criterio de los dems.
Hacer silencio cuando alguien est haciendo uso de la palabra.
Mantener el aula limpia, evitando botar basura en el piso
No deteriorar ni rayar, las paredes, mesas y sillas.
Procurar en todo momento la correcta manipulacin y utilizacin de los equipos informticos.
La asistencia es obligatoria a todas las actividades programadas en esta asignatura.
El estudiante ingresar a clase a la hora establecida y solo por una ocasin se aceptar el retraso de 10 minutos.
El estudiante por ningn concepto utilizar celulares en el aula, igual comportamiento tendr el docente.
El intento de copia de cualquier estudiante ser sancionado con la calificacin de cero y no habr oportunidad de
recuperacin, independiente de las sanciones establecidas por la universidad.
Los trabajos se entregarn en la fecha establecida y no se recibir en otra oportunidad.
El estudiante ingresar al aula sin gorra y no consumir alimentos dentro del aula.
El trabajo escrito ser realizado con las propias palabras e ideas del estudiante. Si se descubre la copia textual de un
prrafo o un texto se calificar con cero.



Lugar y fecha: Portoviejo, 6 de Mayo del 2013




Ing. Christian Ronald Torres Morn
(f) Docente (f) Coordinador


ANEXO. N 1

RESULTADOS DE APRENDIZAJE DE LA CARRERA ESPECFICOS A LOS QUE APUNTA LA MATERIA
(ABET).



a. Capacidad de realizar anlisis, sntesis y aplicacin de las matemticas y ciencias bsicas en la solucin de
problemas de ingeniera en sistemas informticos.

b. Capacidad de planificar, disear, conducir e interpretar resultados de experimentos orientados a la informtica.

c. La capacidad de disear sistemas, procesos, modelos y componentes informticos que cumplan los estndares
nacionales o internacionales, tomando en cuenta las limitaciones econmicas, ambientales, sociales, polticas, de
salud y seguridad del entorno, y cumpliendo satisfactoriamente con las especificaciones y restricciones
existentes o indicadas por los interesados o por los criterios de sostenibilidad.

d. Capacidad para funcionar como parte de un equipo de profesionales de distintas reas del conocimiento,
demostrando una efectiva cooperacin, comunicacin, con habilidades para resolver conflictos y
contribuyendo proactivamente en la propuesta de lneas estratgicas desde el punto de vista informtico, para
la solucin de problemas.

e. Capacidad para identificar, formular, evaluar y resolver tcnicamente problemas de ingeniera planteados de

14

a

b

c

d

e

f

g

h

i

j

k


A


M

B


acuerdo a las necesidades del medio.

f. Capacidad para comprender, reconocer y aplicar valores y cdigos de tica profesional, que le permitan
desenvolverse sin perjudicar a sus clientes y contribuyendo al desarrollo de la sociedad.

g. Habilidad para presentar efectivamente, ideas, proyectos, informes de investigaciones, documentos de
trabajo de manera escrita, oral y digital, utilizando las herramientas de las nuevas tecnologas de la informacin.

h. Habilidad y capacidad para comprender el impacto de las soluciones informticas a la realidad local, nacional e
internacional en un contexto econmico global, ambiental y social.

i. Habilidad y aptitud para ser un profesional con el compromiso del aprendizaje continuo, con capacidad para
reconocer las oportunidades para mejorar en su campo profesional.

j. Habilidad para identificar temas y problemas de actualidad con respecto al entorno local, regional y global, con el
fin de relacionarlos con propuestas de soluciones creativas y eficientes.

k. Capacidad y destreza para utilizar tcnicas, habilidades y herramientas en el desarrollo de software y hardware
para implementar soluciones a problemas de su profesin.


Contribucin de la materia a los resultados de aprendizaje de la carrera:
A: Alta M: Medio B: Baja











15
DIARIO METACOGNITIVO

ESTRUCTURA DE DATOS
Fecha: 06 Mayo 2013- 08 Mayo 2013.
Temas discutidos:
Definicin de estructuras de Datos
Estructuras
Estructuras de datos
Son datos elementales aquellos que se consideran indivisibles en unidades ms simples.
Una estructura de datos es una clase de datos que se puede caracterizar por su organizacin y
operaciones definidas sobre ella. Algunas veces a estas estructuras se les l lama t ipos de datos.
Los tipos de datos ms f recuentes utilizados en los diferentes lenguajes de programacin son:
Lgicas de datos.- En un programa, cada variable pertenece a alguna estructura de datos explcita o
implcitamente definida, la cual determina el conjunto de operaciones validas para ella.
Primitivas y simples.- Aquellas que no estn compuestas por otras estructuras de datos por ejemplo,
enteros, booleanos y caracteres.

Lineales: pi las, colas y listas ligadas lineales.
No lineales incluyen grafos y rboles.
Organizacin de archivos.-Las tcnicas de estructuracin de datos aplicadas a conjuntos de datos que los
sistemas operativos manejan como cajas negras comnmente se llaman Organizacin de Archivos.


CLASIFICACIN DE LAS ESTRUCTURAS DE DATOS
Se clasifican en:
a) Por su almacenamiento
b) Por su organizacin
c) Por su comportamiento



16



a) Por su almacenamiento.- Se clasifican en:
Internas
Externas
Internas.- Son aquellas cuyas estructuras se almacena en la memoria principal.
Externas.- Son aquellas que se almacenan en las memorias secundarias de un sistema de computadoras.
b) Por su organizacin.- Se clasifican en:
Estticas
Dinmicas
Estticas.- son aquellas cuya agrupacin de memoria no se disminuye o aumenta estas son: cadenas,
conjuntos, escalares, entre otros.
Dinmicas.- Son aquellas cuya agrupacin de memoria pueden aumentar o disminuir durante la
ejecucin del programa, estas son: pila, colas, listas.
d) Por su comportamiento.- Se clasifican en:
Simples
Compuesto o Estructurados
Simples.-Son aquellas que almacenan un valor y son:
Escalares.-
Enteros
Real
Lgicos
Caracteres
Compuesto.- Son aquellos que almacenan mltiples valores en su estructura y son los siguientes:
Cadenas
Arreglos
Conjuntos
Registros
Listas
Pilas
Colas
rboles
Archivos
Base de datos







17























Estructuras
Supongamos que queremos hacer una agenda con los nmeros de telfono de nuestros amigos.
Necesitaramos un array de Cadenas para almacenar sus nombres, otro para sus apellidos y otro para sus
nmeros de telfono. Esto puede hacer que el programa quede desordenado y difcil de seguir. Y aqu es
donde vienen en nuestro auxilio las estructuras.
Para definir una estructura usamos el siguiente formato:
struct nombre_de_la_estructura {
campos de estructura;
};
NOTA: Es importante no olvidar el ';' del final, si no a veces se obtienen errores extraos.
Para nuestro ejemplo podemos crear una estructura en la que almacenaremos los datos de cada persona.






18






Vamos a crear una declaracin de estructura llamada amigo:
struct estructura_amigo {
char nombre[30];
char apellido[40];
char telefono[10];
char edad;
};

A cada elemento de esta estructura (nombre, apellido, telfono) se le llama campo o miembro. (NOTA:
He declarado edad como char porque no conozco a nadie con ms de 127 aos.


Ahora ya tenemos definida la estructura, pero aun no podemos usarla. Necesitamos declarar una variable
con esa estructura.
struct estructura_amigo amigo;
Ahora la variable amigo es de tipo estructura_amigo. Para acceder al nombre de amigo usamos:
amigo.nombre.










19
ESTRUCTURA DE DATOS
Fecha: 13 Mayo 2013- 15 mayo 2013
Temas discutidos:
Temas discutidos:
Paso de estructuras a funciones
Estructuras Anidadas
Internas
Externas
Paso de estructuras a funciones:
Las estructuras se pueden pasar directamente a una funcin igual que hacamos con las
variables. Por supuesto en la definicin de la funcin debemos indicar el tipo de argumento que
usamos:

int nombre_funcin ( struct nombre_de_la_estructura nombre_de_la variable_estructura )

Pasar slo miembros de la estructura:
Otra posibilidad es no pasar toda la estructura a la funcin sino tan slo los miembros que
sean necesarios. Los ejemplos anteriores seran ms correctos usando esta tercera opcin, ya que slo
usamos el miembro 'edad':
int suma( char edad )
{
return edad+20;
}
int main()
{
printf( "%s tiene ", amigo.apellido );
printf( "%i aos ", amigo.edad );
printf( "y dentro de 20 aos tendr %i.\n", suma(amigo.edad) );
}
Por supuesto a la funcin suma hay que indicarle que va a recibir una variable tipo char (amigo->edad es
de tipo char).





20


Estructuras dentro de estructuras (Anidadas):

Es posible crear estructuras que tengan como miembros otras estructuras. Esto tiene diversas utilidades,
por ejemplo tener la estructura de datos ms ordenada. Imaginemos la siguiente situacin: una tienda de
msica quiere hacer un programa para el inventario de los discos, cintas y cd's que tienen. Para cada
ttulo quiere conocer las existencias en cada soporte (cinta, disco, cd), y los datos del proveedor (el que
le vende ese disco). Podra pensar en una estructura as:

struct inventario {
char titulo[30];
char autor[40];
int existencias_discos;
int existencias_cintas;
int existencias_cd;
char nombre_proveedor[40];
char telefono_proveedor[10];
char direccion_proveedor[100];
};
char direccion_proveedor[100];
};

Sin embargo utilizando estructuras anidadas se podrsa hacer de esta otra forma mas ordenada:
struct estruc_existencias {
int discos;
int cintas;
int cd;
};
struct estruc_proveedor {
char nombre[40];
char telefono[10];
char direccion[100];
};

struct estruc_inventario {
char titulo[30];
char autor[40];
struct estruc_existencias existencias;
struct estruc_proveedor proveedor;
} inventario;



21


ESTRUCTURA DE DATOS

Fecha: 20 mayo 2013-20 mayo 2013.
Temas discutidos:
Manejo de Punteros
Typedef
Typedef
Ya conocemos los tipos de datos que nos ofrece C: char, int, float, double con sus variantes unsigned, arrays y
punteros. Adems tenemos las estructuras. Pero existe una forma de dar nombre a los tipos ya establecidos y a
sus posibles variaciones: usando typedef. Con typedef podemos crear nombres para los tipos de datos ya
existentes, ya sea por capricho o para mejorar la legibilidad o la portabilidad del programa.
Por ejemplo, hay muchos programas que definen muchas variables del tipo unsigned char. Imaginemos un
hipottico programa que dibuja una grfica:
unsigned char x0, y0; /* Coordenadas del punto origen */
unsigned char x1, y1; /* Coordenadas del punto final */
unsigned char x, y; /* Coordenadas de un punto genrico */
int F; /* valor de la funcin en el punto (x,y) */
int i; /* Esta la usamos como contador para los bucles */
La definicin del tipo unsigned char aparte de ser larga no nos da informacin de para qu se usa la variable,
slo del tipo de dato que es.
Para definir nuestros propios tipos de datos debemos usar typedef de la siguiente forma:
typedef tipo_de_variable nombre_nuevo;
En nuestro ejemplo podramos hacer:
typedef unsigned char COORD;
typedef int CONTADOR;
typedef int VALOR;

Punteros

22
Son tipos de datos simples capaces de almacenar la posicin de una variable en memoria principal. Se dice que
ellos direccionan a otras variables.
Ejemplo:

Se dice que las variables ubicadas en las posiciones 1003 y 1006 son punteros, pues direccionan o "apuntan a"
las posiciones 1000 y 1007 respectivamente.
















23
ESTRUCTURA DE DATOS
Fecha: 22 mayo 2013 -27 mayo 2013.
Temas discutidos:
Aporte
Ejercicios de punteros utilizando el typedef
Tipos de Datos Dinmicos
Listas Abiertas
Ejercicio
Ejercicio:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
typedef struct _alumnos {
char nom[30];
struct _alumnos *sig;
}tipoAlumno;

/*
********************************************
struct _alumnos{
char nombre[30];
struct _alumnos *sig;
};
typedef struct _alumnos tipoAlumno;
**********************************************
*/
typedef tipoAlumno *pnodo;
typedef tipoAlumno *Lista;

// FUNCIONES PROTOTIPOS

void almacenar(Lista *l, char c[]);
void ver_lista(Lista l);


void main()
{Lista L1=NULL;
almacenar(&L1, "Ana Maria");
ver_lista(L1);

getch();
}

void almacenar (Lista *l, char c[])

24
{pnodo nodo;
nodo = (pnodo)malloc(sizeof(tipoAlumno));
if (nodo==NULL) //if (l==NULL), if!(L) esto es igual a lista vacia
{ //if (l !=NULL), if (l) lista llena
cout<<"\n Sin espacio de memoria\n";
return;
}
//LLENO LA INFORMACION DEL NODO
strcpy(nodo->nom,c);
//PROCEDO HACER LOS ENLACES
if(!*l)
{// es el primer nodo q va a ingresar a la lista
nodo->sig=NULL;
*l=nodo;
}
else
{nodo->sig=*l;
*l=nodo;
}
} void ver_lista(lista l)
{pnodo n=.l
while(l)
{cout<<"\n"<<n->nom;
n=n->sig;
}




La forma ms simple de estructura dinmica es la lista abierta. En esta forma los nodos se organizan de modo
que cada uno apunta al siguiente, y el ltimo no apunta a nada, es decir, el puntero del nodo siguiente vale
NULL. En las listas abiertas existe un nodo especial: el primero.
Normalmente diremos que nuestra lista es un puntero a ese primer nodo o llamaremos a ese nodo la cabeza de
la lista. Eso es porque mediante ese nico puntero podemos acceder a toda la lista. Cuando el puntero que usamos
para acceder a la lista vale NULL, diremos que la lista est vaca.
En una definicin ms simple diremos que dentro de una lista abierta cada elemento slo dispone de un
puntero, que apuntar al siguiente elemento de la lista o valdr NULL si es el ltimo elemento.



El nodo tpico para construir listas tiene esta forma:

struct nodo {
int dato;
struct nodo *siguiente;
};




25











Operaciones Bsicas con las Listas
Con las listas tendremos un pequeo repertorio de operaciones bsicas que se pueden realizar:

Aadir o insertar elementos.
Buscar o localizar elementos.
Borrar elementos.
Moverse a travs de una lista, anterior, siguiente, primero.

Cada una de estas operaciones tendr varios casos especiales, por ejemplo, no ser lo mismo
insertar un nodo en una lista vaca, o al principio de una lista no vaca, o la final, o en una posicin
intermedia.

Insertar un elemento en una lista vaca
Este es, evidentemente, el caso ms sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto
un puntero que apunte a l, adems el puntero a la lista valdr NULL:







Lista vaca
El proceso es muy simple, bastar con que:
1. nodo->siguiente apunte a NULL.
En el ejemplo, cada elemento de la lista slo contiene un dato de tipo entero, pero en
la prctica no hay lmite en cuanto a la complejidad de los datos a almacenar.


26
2. Lista apunte a nodo.




Insertar un elemento en la primera posicin de una lista



Insertar al principio
Podemos considerar el caso anterior como un caso particular de ste, la nica diferencia es que en el caso
anterior la lista es una lista vaca, pero siempre podemos, y debemos considerar una lista vaca como una lista.
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a l, y de una lista, en este caso no
vaca:



Insertado al principio
El proceso sigue siendo muy sencillo:
Hacemos que nodo->siguiente apunte a Lista.
Hacemos que Lista apunte a nodo.
Insertar un elemento en la ltima posicin de una lista

Este es otro caso especial. Para este caso partiremos de una lista no vaca:





27





Insertar al final
El proceso en este caso tampoco es excesivamente complicado:
Necesitamos un puntero que seale al ltimo elemento de la lista. La manera de conseguirlo es empezar por el
primero y avanzar hasta que el nodo que tenga como siguiente el valor NULL.
Hacer que nodo->siguiente sea NULL.
Hacer que ultimo->siguiente sea nodo.



Insertado al final


Insertar un elemento a continuacin de un nodo cualquiera de una lista
De nuevo podemos considerar el caso anterior como un caso particular de este. Ahora el nodo "anterior" ser
aquel a continuacin del cual insertaremos el nuevo nodo:


Insertar dentro
Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y un puntero al nodo a
continuacin del que lo insertaremos.
El proceso a seguir ser:

28
Hacer que nodo->siguiente seale a anterior->siguiente.
Hacer que anterior->siguiente seale a nodo.


Insertado dentro



Buscar o Localizar elemento en una lista abierta
Muy a menudo necesitaremos recorrer una lista, ya sea buscando un valor particular o un nodo concreto. Las
listas abiertas slo pueden recorrerse en un sentido, ya que cada nodo apunta al siguiente, pero no se puede
obtener, por ejemplo, un puntero al nodo anterior desde un nodo cualquiera si no se empieza desde el
principio.
Para recorrer una lista procederemos siempre del mismo modo, usaremos un puntero auxiliar como ndice:
Asignamos al puntero ndice el valor de Lista.
Abriremos un bucle que al menos debe tener una condicin, que el ndice no sea NULL.
Dentro del bucle asignaremos al ndice el valor del nodo siguiente al ndice actual.

Eliminar elemento a una lista abierta
Eliminar el primer nodo en una lista abierta




Eliminar primer nodo
Es el caso ms simple. Partiremos de una lista con uno o ms nodos, y usaremos un puntero auxiliar, nodo:


29
1. Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista.
2. Asignamos a Lista la direccin del segundo nodo de la lista: Lista->siguiente.
3. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.

Si no guardamos el puntero al primer nodo antes de actualizar Lista, despus nos resultara imposible liberar la
memoria que ocupa. Si liberamos la memoria antes de actualizar Lista, perderemos el puntero al segundo
nodo.





Primer nodo eliminado
Si la lista slo tiene un nodo, el proceso es tambin vlido, ya que el valor de Lista->siguiente es NULL, y
despus de eliminar el primer nodo la lista quedar vaca, y el valor de Lista ser NULL.
De hecho, el proceso que se suele usar para borrar listas completas es eliminar el primer nodo hasta que la lista
est vaca.
Eliminar un nodo cualquiera de una lista abierta
En todos los dems casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que
tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Y un
puntero auxiliar nodo.




Eliminar un nodo
El proceso es parecido al del caso anterior:
1. Hacemos que nodo apunte al nodo que queremos borrar.
2. Ahora, asignamos como nodo siguiente del nodo anterior, el siguiente al que queremos
eliminar: anterior->siguiente = nodo->siguiente.
3. Eliminamos la memoria asociada al nodo que queremos eliminar.

30




Nodo eliminado
Si el nodo a eliminar es el ltimo, es procedimiento es igualmente vlido, ya que anterior pasar a ser el
ltimo, y anterior->siguiente valdr NULL.




Moverse a travs de una lista abierta
Slo hay un modo de moverse a travs de una lista abierta, hacia delante.
An as, a veces necesitaremos acceder a determinados elementos de una lista abierta. Veremos ahora como
acceder a los ms corrientes: el primero, el ltimo, el siguiente y el anterior.
Primer elemento de una lista
El primer elemento es el ms accesible, ya que es a ese a que apunta el puntero que define la lista. Para obtener
un puntero al primer elemento bastar con copiar el puntero Lista.
Elemento siguiente a uno cualquiera
Supongamos que tenemos un puntero nodo que seala a un elemento de una lista. Para obtener un puntero al
siguiente bastar con asignarle el campo "siguiente" del nodo, nodo->siguiente.
Elemento anterior a uno cualquiera
Ya hemos dicho que no es posible retroceder en una lista, de modo que para obtener un puntero al nodo
anterior a uno dado tendremos que partir del primero, e ir avanzando hasta que el nodo siguiente sea
precisamente nuestro nodo.
ltimo elemento de una lista
Para obtener un puntero al ltimo elemento de una lista partiremos de un nodo cualquiera, por ejemplo el
primero, y avanzaremos hasta que su nodo siguiente sea NULL.
Saber si una lista est vaca

31
Basta con comparar el puntero Lista con NULL, si Lista vale NULL la lista est vaca.
Borrar una lista completa
El algoritmo genrico para borrar una lista completa consiste simplemente en borrar el primer elemento
sucesivamente mientras la lista no est vaca.




Anexos

Presentacin de algunos ejercicios vistos en el curso de Estructura de Datos.

Ejercicios:
#1:









32
#2:



#3:


33





#4:













34









#5:





35



#6:



36



#7:


37




#8:

38









39


#9:


40








41

#10:




42

También podría gustarte