SlideShare una empresa de Scribd logo
1 de 104
Descargar para leer sin conexión
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
1
Segundo “B”
ESTRUCTURA DE DATOS
Henry Javier Cedeño Flores
Ing. Cristian Torres Morán
Mayo – Septiembre 2013
Periodo 2013-2014
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
2
FACULTAD CIENCIAS INFORMÁTICAS
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
3
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
TABLA DE CONTENIDOS
Etapa 1.Prontuario del curso.
Etapa 2.Carta de presentación.
Etapa 3.Autorretrato.
Etapa 4.Diario Metacognitivo.
Etapa 5.Artículos de revistas profesionales.
Etapa 6.Trabajo de ejecución.
Etapa 7.Materiales relacionados con la clase.
Etapa 8. Sección abierta.
Etapa 9. Resumen de cierre.
Etapa 10. Anexos.
Etapa 11. Investigación.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
4
ETAPA 1
PRONTUARIO
DEL CURSO
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
5
FACULTAD/DEPARTAMENTO: FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA: INGENIERÍA EN SISTEMAS INFORMÁTICOS
ASIGNATURA/MÓDULO: ESTRUCTURA DE DATOS CÓDIGO: OF-0201
Nivel / Semestre: 2 N° de Créditos:5 Modalidad : Presencial
Paralelo: 2do. “B” Período Académico: Sept. 25/2012 – Feb 14/2013 Área Académica: SOFTWARE
PRERREQUISITO (S): CORREQUISITO (S):
CONTENIDOS DISCIPLINARES QUE
DEBEN SER APROBADAS ANTES DE
CURSAR ESTE CONTENIDO
DISCIPLINAR
CÓDIGO
CONTENIDOS DISCIPLINARES
QUE DEBEN SER CURSADOS AL
MISMO TIEMPO QUE ESTE
CONTENIDO DISCIPLINAR
CÓDIGO
PROGRAMACIÓN I OC-0100
DOCENTE: Ing. CHRISTIAN RONALD TORRES MORÁN
Título: 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 Ingeniería en Sistemas Informáticos, miembro de los equipos de Vinculación con la sociedad, Docente
Tutor de pasantías pre profesionales, coautor del manual de Estructura de Datos junto a la Ing. Esthela San Andrés Láz,
coautor del folleto de flujogramas para NBU.
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERÍA EN SISTEMAS INFORMÁTICOS
SYLLABUS
I.- INFORMACIÓN GENERAL
II.- RUTA FORMATIVA
a.- DEL PERFIL DE EGRESO: Competencia/Resultado de Aprendizaje:
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
6
Competencia:
3. Construye soluciones informáticas de calidad que mejoren la eficiencia y eficacia de una organización
haciendo uso correcto de la tecnología.
Resultado de Aprendizaje:
a. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la
informática.
b.- OBJETIVO GENERAL DE LA ASIGNATURA:
Capacitar al estudiante con los conocimientos significativos en administración de memoria dinámica y herramientas útiles en
los diseños, construcciones y usos principales de algoritmos en la estructuración de datos lineales y no lineales
c.- DESCRIPCIÓN DE LA ASIGNATURA:
La materia introduce al estudiante a los conceptos y aplicación en la administración de memoria, aplicando programación
estructurada y orientada a objetos, permite conocer la estructura básica operacional de la memoria RAM y de los grandes
diseños de software, aplicando C++ el estudiante desarrollará proyectos científicos tanto con interfaces en modo gráfico y en
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
7
Resultados del Aprendizaje
(Objetivos Específicos)
Formas de
Evidenciarlos
(Apreciación)
Niveles del resultado de
aprendizaje
Ponderación
1.- Identificar los tipos estructurados
de datos estáticos y dinámicos
empleados en la creación de
aplicaciones, considerando los
lenguajes de programación. (Nivel
Taxonómico: Conocimiento)
1.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigación y
Prácticas en el
Lenguaje de
programación C++.
Describirá la definición de la estructura de datos,
los tipos de datos simples, básicos y compuestos
en un ensayo técnico con: descripción general del
tema clara; ideas que tienen relación, claridad y
objetividad con el tema; y una conclusión clara con
aporte personal.
Describirá la definición de la estructura de datos,
los tipos de datos simples, básicos y compuestos
en un ensayo técnico con: descripción general del
tema confusa; pocas ideas que tienen relación,
claridad y objetividad con el tema; y una
conclusión confusa con aporte personal.
Describirá la definición de la estructura de datos,
los tipos de datos simples, básicos y compuestos
en un ensayo técnico con: descripción general del
tema confusa; poca o ninguna idea que tienen
relación, claridad y objetividad con el tema; y una
conclusión confusa sin aporte personal.
NIVEL ALTO:
86-100
NIVEL MEDIO
71-85
NIVEL BÁSICO
70
2.- Elaborar aplicaciones dinámicas
de estructura lineal, almacenamiento
y recuperación de los mismos en
unidades de almacenamiento,
aplicarán soluciones de
administración de memoria
mediante el desarrollo de
aplicaciones científicas y
comerciales. (Nivel Taxonómico:
Aplicación)
2.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigación y
Prácticas en el
Lenguaje de
programación C++.
Comparará con la utilización de un cuadro
comparativo tres semejanzas y tres diferencias
entre los tipos de datos que permiten almacenar
más de un dato; reflejando las relaciones de las
comparaciones con ideas claras.
Comparará con la utilización de un cuadro
comparativo tres semejanzas y tres diferencias
entre los tipos de datos que permiten almacenar
más de un dato; reflejando las relaciones de las
comparaciones con ideas pocos claras.
Comparará con la utilización de un cuadro
comparativo dos semejanzas y dos diferencias
entre los tipos de datos que permiten almacenar
más de un dato; reflejando las relaciones de las
comparaciones con ideas confusas.
NIVEL ALTO:
86-100
NIVEL MEDIO
71-85
NIVEL BÁSICO
70
III.- RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
8
3.- Implementar aplicaciones
dinámicas de estructura Lineal,
almacenamiento y recuperación
de los mismos en unidades de
almacenamiento, aplicarán
soluciones de administración de
memoria mediante el desarrollo
de aplicaciones científicas y
comerciales (Nivel Taxonómico:
Aplicación)
3.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigación y
Prácticas en el
Lenguaje de
programación C++.
Implementará aplicaciones dinámicas de
estructura Lineal, almacenamiento y recuperación
de los mismos en unidades de almacenamiento,
aplicarán soluciones de administración de
memoria mediante el desarrollo de aplicaciones
científicas y comerciales.
Implementará aplicaciones dinámicas de
estructura Lineal, almacenamiento y recuperación
de los mismos en unidades de almacenamiento,
aplicarán soluciones de administración de
memoria mediante el desarrollo de aplicaciones
comerciales.
Implementará aplicaciones dinámicas de
estructura No Lineal, almacenamiento y
recuperación de los mismos en unidades de
almacenamiento.
NIVEL ALTO:
86-100
NIVELMEDIO
71-85
NIVEL BÁSICO
70
4.- Implementar aplicaciones
dinámicas de estructura no Lineal,
almacenamiento y recuperación de
los mismos en unidades de
almacenamiento, aplicarán
soluciones de administración de
memoria mediante el desarrollo de
aplicaciones científicas y comerciales
(Nivel Taxonómico: Aplicación)
4.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigación y
Prácticas en el
Lenguaje de
programación C++.
Elaborará un programa con estructuras dinámicas
no lineales bien detallado.
Elaborará un programa con estructuras dinámicas
no lineales con poca claridad.
Elaborará un programa con estructuras dinámicas
no lineales de forma confusa.
NIVEL ALTO:
86-100
NIVEL MEDIO
71-85
NIVEL BÁSICO
70
5.- Organizar la información en
algoritmos y estructuras AVL y su
relación con los gestores de Base de
Datos (Nivel Taxonómico: Aplicación)
5.- Pruebas escritas,
orales (fotos), talleres,
informes de ensayo,
investigación y
Prácticas en el
Lenguaje de
programación 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 BÁSICO
70
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
9
N°
PROGRAMA DEL CONTENIDO
DISCIPLINAR (ASIGNATURA, UNIDAD,
CURSO, TALLER, OTRO) POR TEMAS
N°
TOT
AL
HOR
AS
P-A
HORAS PRESENCIALES
HORAS
AUTÓNOMAS
ESTRATEGIAS PARA EL
TRABAJO AUTÓNOMO
1. UNIDAD I: GENERALIDADES Y
DEFINICIONES DE ESTRUCTURA DE
DATOS
 Definición
 Variables, Tipos de datos.
 Representación Gráfica de las
estructura de datos
 Acceso a las estructura de
Datos (Estáticas)
 Tipos de Estructuras de Datos
 Diferencia entre gestión
Estática y Dinámica
 Operaciones con varios
punteros
 Asignación dinámica de
memoria
 Liberación dinámica 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
Reflexión:
En equipos de trabajo, analizar
el funcionamiento general del
computador y de los
programas, considerando las
siguientes aplicaciones:
Procesadores de texto, Hojas
de cálculo, Reproductores,
Tareas del sistema operativo
como Impresión, etc.
Conceptualización:
Elaboración de mapas
conceptuales, cuadros de
funcionamiento y estructurales
de la memoria.
Aplicación:
Resolución de ejercicios
demostrativos y de
planteamiento de problemas.
23
Tareas extra-
clases.
Investigación del
tema de la unidad
Tareas en el
lenguaje de
programación
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Técnica de
Manabí, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Formarán equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogerán ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicará la técnica de
procesos.
-Al final de la tarea se
interrogarán, así:
¿Qué cosas fueron difíciles?
¿Qué cosas fueron fáciles?
¿Qué aprendí hoy día?
¿Qué aporte a mi equipo?
-Aplicarán un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarán lo
lineamientos más importantes
de la introducción llamativa,
fundamentación y conclusión
crítica.
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.
Investigación del
tema de la unidad
Tareas en el
lenguaje de
-Formarán equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogerán ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicará la técnica de
procesos.
-Al final de la tarea se
IV.- PROGRAMACIÓN
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
10
 Definición de listas abiertas
 Declaración e implementación
de una lista
Operaciones con Listas
 Inserción de un nodo
 Búsqueda de un nodo
 Recorridos de una lista
 Eliminación de un nodo
 Listas y Archivos
 Variaciones de listas
 Pilas y Colas
Listas circulares o cerradas
 Declaración e implementación
de una lista circular
Operaciones con Listas
 Inserción de un nodo
 Búsqueda de un nodo
 Recorridos de una lista
 Eliminación de un nodo
Listas doblemente enlazadas abiertas
y cerradas
 Declaración e implementación
de una lista doblemente
enlazada
Operaciones con Listas
 Inserción de un nodo
 Búsqueda de un nodo
 Recorridos de una lista
 Eliminación de un nodo
informáticos planteados
Reflexión:
En grupos de trabajo, analizar
el funcionamiento general de
los diferentes algoritmos
considerando las diferentes
aplicaciones.
Conceptualización:
Elaboración de conclusiones
conceptuales, cuadros de
funcionamiento y alternativas
estructurales de solución.
Aplicación:
Resolución de ejercicios
demostrativos y de
planteamiento de problemas.
programación
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Técnica de
Manabí, Internet.
Guardar la
evidencia en el
Portafolio Digital.
interrogarán, así:
¿Qué cosas fueron difíciles?
¿Qué cosas fueron fáciles?
¿Qué aprendí hoy día?
¿Qué aporte a mi equipo?
-Aplicarán un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarán lo
lineamientos más importantes
de la introducción llamativa,
fundamentación y conclusión
crítica.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
11
3. UNIDAD III: ESTRUCTURAS
ARBORESCENTES
 Definición, implementación
26 13
Experiencia:
• Aplicando debates
definir la importancia de
aplicar algoritmos generales de
13
Tareas extra-
clases.
Investigación del
tema de la unidad
Tareas en el
-Formarán equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogerán ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicará la técnica de
procesos.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
12
 Tipos de recorridos:
PreOrden
InOrden
PostOrden
Operaciones con Árboles Binarios de
Búsqueda
 Búsqueda de elementos.
Inserción de elementos.
Borrado de elementos.
* Nodo hoja.
 *Nodo rama.
 Movimiento a través del árbol.
Comprobación de árboles
vacíos.
 Comprobación del nodo hoja.
Cálculo de:
 Número 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.
Reflexión:
• En grupos de
trabajo, analizar el
funcionamiento general de los
principales sistemas
informáticos, considerando el
avance tecnológico del
software en la base de datos
Conceptualización:
• Elaboración de
propuestas algorítmicas,
prácticas y de alternativas de
resolución.
Aplicación:
• Resolución de
ejercicios demostrativos y de
planteamiento de problemas.
lenguaje de
programación
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Técnica de
Manabí, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Al final de la tarea se
interrogarán, así:
¿Qué cosas fueron difíciles?
¿Qué cosas fueron fáciles?
¿Qué aprendí hoy día?
¿Qué aporte a mi equipo?
-Aplicarán un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarán lo
lineamientos más importantes
de la introducción llamativa,
fundamentación y conclusión
crítica.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
13
4. UNIDAD IV: TIPOS DE ÁRBOLES
ESPECIALES
 Árboles equilibrados.
 Definición.
 Operaciones en AVL.
 Factor de equilibrio.
 Rotación simple de nodos.
 Rotación simple a la derecha.
 Rotación simple a la izquierda.
 Rotación doble de nodos a la
derecha.
 Rotación doble de nodos s la
izquierda.
 Reequilibrados de árboles
AVL.
 Reequilibrados en árboles
AVL por inserción de un nodo.
28 14
Experiencia:
Aplicando el planteamiento de
problemas, identificar
dificultades y generar la
necesidad de encontrar
soluciones algorítmicas.
Reflexión:
En grupos de trabajo, analizar
el funcionamiento de los
diferentes algoritmos
propuestos.
Conceptualización:
Elaboración de propuestas de
funcionamiento y alternativas
estructurales de solución.
Aplicación:
14
Tareas extra-
clases.
Investigación del
tema de la unidad
Tareas en el
lenguaje de
programación
C++.
CD. interactivo
libros PDF. Apoyo
para el
estudiante,
Espacio virtual de
la Universidad
Técnica de
Manabí, Internet.
Guardar la
evidencia en el
Portafolio Digital.
-Formarán equipos de 2
estudiantes
-Del taller o tarea respectivas
se escogerán ejercicios
representativos de acuerdo al
resultado de aprendizaje
-Se aplicará la técnica de
procesos.
-Al final de la tarea se
interrogarán, así:
¿Qué cosas fueron difíciles?
¿Qué cosas fueron fáciles?
¿Qué aprendí hoy día?
¿Qué aporte a mi equipo?
-Aplicarán un ASAT. (Aporte
Significativo de Aprendizaje de
la Tarea o Taller).
-Para el ensayo del tema
respetivo se Tomarán lo
lineamientos más importantes
de la introducción llamativa,
fundamentación y conclusión
crítica.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
14
MEDIO CICLO FINAL DE CICLO EXAMEN DE
RECUPERACIÓN
ASISTENCIA
EXÁMENES (30%) 15 15
ACT. EN EL AULA (40%)
Tareas 5 5
Ejercicios de aplicación 2.5 2.5
Lecciones orales 2.5 2.5
Pruebas escritas 5 5
Participación 2.5 2.5
Exposiciones 2.5 2.5
ACTIVIDADES DE INVESTIGACIÓN
PORTAFOLIO
PROYECTO
INFORME FINAL
(30%)
5
10
5
10
TOTAL 50% 50% 100%
 Reequilibrados en árboles
AVL por borrado de un nodo.
Resolución de ejercicios
demostrativos y de
planteamiento de problemas.
V.- METODOLOGÍA Y RECURSOS
 Se aplicará un PEA, Dinámica de integración y socialización, documentación, presentación de los temas de clase y objetivos, lectura de motivación
y video del tema, técnica 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)
 Revisión de la clase programada antes del día señalado para la sesión correspondiente (blog-docente)
 Consultas, tareas y talleres se entregarán en archivo escrito al docente y en archivo lógico al área de contacto del curso.
 Los recursos disponibles para el curso serán: pizarra tiza líquida(4), proyector, internet inalámbrico, 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 generación,
computadores(2) del aula,1 portátiles por equipo del estudiante, libros-CD-interactivo- pdf., blog. del estudiante y del docente para interactividad
y fortalecimiento continúo.
VI.- PLANEACIÓN DE LA EVALUACIÓN
Las evaluaciones estarán orientadas a los procesos, lo que conlleva a que ninguna evaluación tenga una ponderación
determinante para la acreditación.
Durante el periodo académico, el estudiante de la Universidad Técnica de Manabí, se someterá obligatoriamente a los
siguientes parámetros de evaluación de los aprendizajes: evaluación de medio ciclo, evaluación de final de ciclo, evaluación de
actividades varias y evaluaciones de investigaciones.
ACREDITACIÓN
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
15
VI.- BIBLIOGRAFÍA
a.- Bibliografía Básica:
AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL
MARTÍNEZ, Román 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.- Bibliografía Recomendada:
AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL
Garrido Antonio Abstracción 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
VII.- COMPROMISO ÉTICO
 Escuchar y respetar democráticamente el criterio de los demás.
 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 manipulación y utilización de los equipos informáticos.
 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 ocasión se aceptará el retraso de 10 minutos.
 El estudiante por ningún concepto utilizará celulares en el aula, igual comportamiento tendrá el docente.
 El intento de copia de cualquier estudiante será sancionado con la calificación de cero y no habrá oportunidad de
recuperación, independiente de las sanciones establecidas por la universidad.
 Los trabajos se entregarán 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
párrafo o un texto se calificará con cero.
Lugar y fecha: Portoviejo, 6 de Mayo del 2013
Ing. Christian Ronald Torres Morán
(f) Docente (f) Coordinador
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
16
ANEXO. N° 1
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
17
a b c d e f g h i j k
A M B
RESULTADOS DE APRENDIZAJE DE LA CARRERA ESPECÍFICOS A LOS QUE APUNTA LA MATERIA
(ABET).
a. Capacidad de realizar análisis, síntesis y aplicación de las matemáticas y ciencias básicas en la solución de
problemas de ingeniería en sistemas informáticos.
b. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la informática.
c. La capacidad de diseñar sistemas, procesos, modelos y componentes informáticos que cumplan los estándares
nacionales o internacionales, tomando en cuenta las limitaciones económicas, ambientales, sociales, políticas, 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 cooperación, comunicación, con habilidades para resolver conflictos y
contribuyendo proactivamente en la propuesta de líneas estratégicas desde el punto de vista informático, para
la solución de problemas.
e. Capacidad para identificar, formular, evaluar y resolver técnicamente problemas de ingeniería planteados de
acuerdo a las necesidades del medio.
f. Capacidad para comprender, reconocer y aplicar valores y códigos 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 tecnologías de la información.
h. Habilidad y capacidad para comprender el impacto de las soluciones informáticas a la realidad local, nacional e
internacional en un contexto económico 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 técnicas, habilidades y herramientas en el desarrollo de software y hardware
para implementar soluciones a problemas de su profesión.
Contribución de la materia a los resultados de aprendizaje de la carrera: A: Alta M: M
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
18
ETAPA 2
CARTA DE
PRESENTACIÓN
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
19
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE
INGENIERIA DE SISTEMAS INFORMÁTICOS
CARTA DE PRESENTACIÓN
Este portafolio presenta mi trayectoria
en el curso de:
ESTRUCTURA DE DATOS, este curso tiene como objetivos desarrollar
las destrezas de agilidad mental, retentiva y el intelecto durante este
semestre pude conocer sobre Estructura de datos, sobre las
GENERALIDADES Y DEFINICIONES DE ESTRUCTURA DE DATOS
como: Definición, variables, tipos de datos, representación graficas
de las estructura de datos, Acceso a las estructura de datos(Estáticas),
tipos de Estructuras de Datos, Diferencia entre gestión Estática y
Dinámica, Operaciones con varios punteros, Asignación dinámica de
memoria, Liberación dinámica de memoria, La contante NULL,
Ventajas y desventajas de punteros. : ESTRUCTURAS SIMPLES Y
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
20
COMPUESTAS: Listas abiertas, Definición de listas abiertas,
Declaración e implementación de una lista, Operaciones con listas,
Inserción de un nodo, Búsqueda de un nodo, Recorridos de una lista,
Eliminación de un nodo, Listas y Archivos, Variaciones de lista.
ETAPA 3
AUTORRETRATO
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
21
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICA
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
22
Mi nombre es HENRY JAVIER CEDEÑO FLORES, estoy en segundo semestre
de la facultad ciencias informáticas, soy una persona muy comprensiva y además
de eso me gusta ayudar a las personas cuando más lo necesite, yo estoy aquí con
un propósito de ser una buen ingeniero en sistemas y así poder progresar en mi
carrera profesional.
Estando aquí en estos dos años aprendido muchos de todos mis profesores
que he cruzado hasta hora, después vendrá nuevas ideas y nuevas enseñanza
dentro de la Universidad.
FACULTAD CIENCIAS INFORMATICAS
VISIÓN
Generarme destacadamente como un profesional con
principios y valores en el campo de las Ciencias
Informáticas, alcanzando todas mis metas y objetivos
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
23
propuestos, adquiriendo día a día nuevos conocimientos
siendo protagonistas del progreso regional y nacional.
MISIÓN
Contribuir con todos mis conocimientos y capacidades
profesionales de las Ciencias Informáticas a las
soluciones de los problemas que se presenten, que con
honestidad, equidad, disciplina y solidaridad dar
respuestas a las necesidades de la sociedad elevando su
nivel de vida.
UNIVERSIDAD TÉCNICA
MANABÍ
MISIÓN
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
24
Formar académicos, científicos y profesionales responsables,
humanistas, éticos y solidarios, comprometidos con los objetivos
del desarrollo nacional, que contribuyan a la solución de los
problemas del país como universidad de docencia con
investigación, capaces de generar y aplicar nuevos conocimientos,
fomentando la promoción y difusión de los saberes y las culturas,
previstos en la Constitución de la República del Ecuador.
VISIÓN
Ser una institución universitaria, líder y referente de la educación
superior en el Ecuador, promoviendo la creación, desarrollo,
transmisión y difusión de la ciencia, la técnica y la cultura, con
reconocimiento social y proyección regional y mundial.
FACULTAD CIENCIAS INFORMÁTICAS
MISIÓN
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
25
Formar profesionales eficientes e innovadores en el campo
de las ciencias informáticas, que con honestidad, equidad y
solidaridad, den respuestas a las necesidades de la sociedad
elevando su nivel de vida.
VISIÓN
Ser una unidad con alto prestigio académico, con eficiencia,
transparencia y calidad en la educación, organizada en sus
actividades, protagonistas del progreso regional y nacional.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
26
ETAPA 4
DIARIO
METACOGNITIVO
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
27
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
CLASE Nº 1
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 06 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
1.- ENTRADA DE LOS ESTUDIANTES.
2.- PRESENTCION DEL DOCENTE A LOS ESTUDIANTES.
ING. CHRISTIAN TORRES MORAN
3.- NOS INDICO LA CLAVE PARA EL INGRESO DEL AULA VRTUAL.
4.- ELECCIÓN DEL ASISTENTE DEL DOCENTE FACILITADOR..
5.- INDICACION DEL SYLABUS.
6.- INDICACION DEL PORTAFOLIO.
ISED2B
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
28
7.- CONTINUACION CON C++.
TEMA: Aplicación de la programación básica.
INTRODUCCION
Las estructuras básicasdisponibles en C y C++ (structs y arrays) tienen una
importante limitación: no puede cambiar de tamaño durante la ejecución. Los
arrays están compuestos por un determinado numero de elementos, número que se
decide en la fase de diseño, antes de que el programa ejecutable sea creado.
EJERCICIO DE ESTRUCTURA DE DATO
#include <conio.h>
#include<stdio.h>
void main()
{
clrscr();
char nom[30];
int edad;
struct struct.curso2;
printf("INGRESE EL NOMBRE: ");
scanf("%s",curso2nom);
printf("INGRESE LA EDAD: ");
scanf("%d",&curso2.edad);
printf("n EL ESTUDIANTE %s TIENE %d AÑOS DE EDAD",curso2nom,curso2edad);
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
29
10>=9
getch();
}
TEMA: Array y Inicializacion
Una pequeña explicación sobre los arrays.
Ejemplo
Hacer un programa que nos cree un arrays.
#include <iostream>
TF
TF>= TL
10>=9
10>=10
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
30
#include <stdio.h>
using namespace std;
int main()
{
int a[]={1,1,2,3,5,8,13,21};
cout<<"n los numeros del array son:";
for(int i=0;i<8;i++)
cout<<"n a[%d]=%d",i,a[i];
cin.get();cin.get();
return 0;
}
INICIALIZAR
Hacer una matriz de 3*3 donde la diagonal principal sea de puros
1 y los demás espacios ceros.
1.- Forma
#include <iostream>
using namespace std;
int main()
{
int matriz[3][3] = {1,0,0,0,1,0,0,0,1};
for(int i = 0;i<3;i++)
{
for(int j = 0;j<3;j++)
{
cout << matriz[i][j] << " ";
}
cout << endl;
}
cin.get();
return 0;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
31
}
2.- Forma
#include <iostream>
using namespace std;
int main()
{
int matriz[3][3];
for(int i = 0;i<3;i++)
{
for(int j = 0;j<3;j++)
{
if(i == j)
matriz[i][j] = 1;
else
matriz[i][j] = 0;
}
}
for(int i = 0;i<3;i++)
{
for(int j =0;j<3;j++)
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
32
{
cout << matriz[i][j] << " ";
}
cout << endl;
}
cin.get();
return 0;
}
3.- Forma
#include <iostream>
using namespace std;
int main()
{
int matriz[3][3];
matriz[0][0] = 1;
matriz[0][1] = 0;
matriz[0][2] = 0;
matriz[1][0] = 0;
matriz[1][1] = 1;
matriz[1][2] = 0;
matriz[2][0] = 0;
matriz[2][1] = 0;
matriz[2][2] = 1;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
33
for(int i = 0;i<3;i++)
{
for(int j = 0;j<3;j++)
{
cout << matriz[i][j] << " ";
}
cout << endl;
}
cin.get();
return 0;
}
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #2
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
34
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 13 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Creacion de una estructura básica
struct[ Etiqueta] Nombre de la estructura
Campo 1;
Campo o miembro de la estructura
Campo 2;
; Termina en punto y coma
struct
{
char nom [40];
char ced [10];
int edad;
char direc [50];
char tel [10];
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
35
ESTRUCTURA ANIDADAS
a) Por su almacenamiento .-. Se clasifican en:
Internas
Externas
Internas: Son aquellas estructuras se almacenan en la memoria principal.
Externas: Son aquellas que se almacenan en las memorias secundarias de
sistemas de computadoras.
EJEMPLO DE ESTRUCTURAS INTERNAS
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
36
#include<conio.h>
#include<stdio.h>
struct empresa
{
struct información
{
char nombre[20];
char dirección[20];
char teléfono[10];
}empre;
struct proveedor_
{
char nombre[20];
char dirección[20];
char teléfono[10];
char ciudad[26];
}proveedor;
struct cliente_
{
char nombre[20];
char cedula[10];
char dirección[20];
}cliente[60];
struct producto_
{
char nombre[20];
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
37
int cant;
float pvp;
}producto;
};
void main()
{
struct empresa E;
scanf("%s", E.cliente[0].nombre);
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
38
EJEMPLO DE ESTRUCTURA EXTERNA
#include<conio.h>
#include<stdio.h>
struct datos
{
char nombre[20];
char dirección[50];
};
struct information
{
struct dato dato;
char teléfono[10];
};
struct proveedor_
{
struct datos dato;
char teléfono[10];
char ciudad[25];
} ;
struct producto_
{
char nombre[20];
int cant;
float pvp;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
39
}producto;
struct empresa
{
struct informativo empresa;
struct proveedor_ proveedor;
struct datos cliente[60];
struct producto_ producto;
};
void main()
{
struct empresa E;
struct proveedor_ proveedor[60];
scanf("%s", E.proveedor.dato.nombre);
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
40
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #3
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 13 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Inicializacion de una variable estructurada
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
41
Inicializacion de una variable estructurada
A las estructuras se les pueden dar valores iniciales de manera analóga
a como hacíamos con los arrays. Primero tenemos que definir la estructura y
luego cuando declaramos una variable como estructura le damos el valor inicial
que queramos. Recordemos que esto no es en absoluto necesario.
La definición de la estructura es:
struct estructura_amigo{
char nombre[14];
char apellido[14];
char teléfono[12];
int edad;
};
Ejercicio en clase
El ampersan nos muestra las direcciones de memoria de las variables.
#include<iostream>
#include<conio.h>
#include<stdio.h>
struct datos
{
char nombre[15];
char apellido[15];
int cedula;
char ciudad[15];
float sueldo;
char departamento[15];
};
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
42
char mat
[1][6][15]={"juan","macias","1312868720","portoviejo","ventas","750"};
int main()
{
struct empleo ;
int c;
for( int c=0; c<6; c++)
cout<<&mat[0][c]<< "t";
getch();
cin.get();cin.get();
return 0;
};
EJERCICIO EN CLASE
#include <iostream.h>
#include <stdio.h>
struct Datos
{
char cedula[15];
char nombre[15];
char apellido[15];
char ciudad[15];
char departamento_de_trabajo[15];
float sueldo;
};
int main()
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
43
{
Datos empleado;
cout << "Cedula: ";fflush(stdout);
cin >> empleado.cedula;
cout << "Nombre: ";fflush(stdout);
cin >> empleado.nombre;
cout << "Apellido: ";fflush(stdout);
cin >> empleado.apellido;
cout << "Departamento: ";fflush(stdout);
cin >> empleado.departamento_de_trabajo;
cout << "Sueldo: ";fflush(stdout);
cin >> empleado.sueldo;
cout << endl << endl;
cout << "La cedula es : " << empleado.cedula << endl;
cout << "El empleado se llama " << empleado.nombre << " " << empleado.apellido << endl;
cout << "La ciudad donde vive es " << empleado.ciudad << endl;
cout << "El departamento donde vive es: " << empleado.departamento_de_trabajo << endl;
cout << "Su sueldo es de: " << empleado.sueldo;
cin.get();cin.get();
return 0;
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
44
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
45
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #4
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Miercoles, 15 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMAS: Estructuras
EJERCICIOS
#include <iostream.h>
#include <stdio.h>
struct venta
{
char nombres[10];
char apellidos[10];
float sueldos;
char departamento_de_trabajo[10];
float ventas;
};
int main()
{
struct venta datos[5];
for(int b=0;b<5;b++)
{
cout<<"ingrese nombres: ";
cin>> datos[b].nombres;
cout<<"ingrese apellidos:";
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
46
cin>> datos[b].apellidos;
cout<<"ingrese sueldos:";
cin>> datos[b].sueldos;
cout<<"ingrese departamnento-de_trabajo:";
cin>> datos[b].departamento_de_trabajo;
cout<<"ingrse ventas:";
cin>> datos[b].ventas;
}
cout << endl << endl;
for(int c=0;c<5;c++)
{
cout<< "nombre:"<<datos[c].nombres<<endl;
cout<< "apellidos:"<<datos[c].apellidos<<endl;
cout<< "sueldos:"<<datos[c].sueldos<<endl;
cout<<
"departamento_de_trabajo:"<<datos[c].departamento_de_trabajo<<endl;
cout<< "ventas:"<<datos[c].ventas<<endl;
}
cin.get(); cin.get();
return 0;
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
47
#include<iostream>
#include<conio.h>
#include<stdio.h>
struct datos
{
char nombre[15];
int cont;
float pvp;
};
struct empresa
{
struct informativo empre;
//struct datos cliente[200];
//struct producto_ producto;
int nproveedor;
struct proveedor_ proveedor[200];
};
void main()
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
48
{
struct empresa e={{{"Juan S.A.","UTM","136111"},"2568478"}};
int op,i;
do
{
clrscr();
printf("n1.- ver datos de la empresa");
printf("n2.- ingreso de proveedor para la empresa");
printf("n3.- ver proveedores de la empresa");
printf("n4.- productos de la empresa");
printf("n5.- ver productos de la empresa");
printf("n6.- salir");
scanf("%d",&op);/*if(op==1){clrscr();
printf("Registro de los datos de la empresa");
printf("nRUC");scanf("%s",e.empre.dato.ruc);
printf("nNombre");scanf("%s",e.empre.dato.nombre);
printf("nDireccion");scanf("%s",e.empre.dato.direccion);
printf("nTelefono");scanf("%s",e.empre.telefono);
e.nproveedor=0;}*/if(op==1){clrscr();
printf("datos de la empresa");
printf("nRUC: %s",e.empre.dato.ruc);
printf("nNombre: %s",e.empre.dato.nombre);
printf("nDirrecion: %s",e.empre.dato.direccion);
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
49
printf("nTelefono: %s",e.empre.telefono);
getch();
}
else if(op==2)
{
clrscr();
printf("Registro de proveedore # %d",e.nproveedor+1);
printf("nRUCt");
scanf("%s",e.proveedor[e.nproveedor].dato.ruc);
printf("nNombret");
scanf("%s",e.proveedor[e.nproveedor].dato.nombre);
printf("nDirecciont");
scanf("%s",e.proveedor[e.nproveedor].dato.direccion);
printf("nTelefonot");
fflush(stdin);
scanf("%s",e.proveedor[e.nproveedor].telefono);
printf("nCiudadt");
scanf("%s",e.proveedor[e.nproveedor].ciudad);
e.nproveedor++;
}
else if (op==3)
{
clrscr();
printf("Informacion de proveedoresn");
printf("RUCttNombrettDireccionttelefonotcuidad");
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
50
for(i=0;i<e.nproveedor;i++)
printf("n%stt%stt%stt%stt%s",e.proveedor[i].dato.ruc,e.proveedor[i].
dato.nombre,e.proveedor[i].dato.direccion,e.proveedor[i].telefono,e.proveedor[i].
ciudad);
getch();
}
}while(op!=6);
}
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #4
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
51
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 20 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Funciones
Las estructuras se pueden pasar directamente a una función igual que
hacíamos con las variables.
Una función es un modulo de un programa separado delcuerpo principal,
que realiza una tarea especifica y que puede un valor a la parte principal del
programa u otra función.
La forma general de una función es:
Tipodato Nomfun(parámetros)
{
Cuerpo de instrucciones;
return[dato,var,expresión]
}
EJERCICIOS
#include<iostream.>
#include<conio.h>
#include<stdio.h>
Using namespace std;
struct amigo
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
52
{
char nombre[30];
char apellido[30];
char cedula[15];
int edad;
};
struct amigo datos =
{
"henry","cedeño","1315717940",18,
};
int suma_edad(struct amigo datos_2)
{
datos_2.edad = 40;
return datos_2.edad+30;
}
int main()
{
cout << "nnNombre: " << datos.nombre << endl;
cout << "Apellido: " << datos.apellido << endl;
cout << "Cedula: " << datos.cedula << endl;
cout << "Edad: " << suma_edad(datos)<< endl;
cout << "Edad_2: " << datos.edad;
cin.get();
return 0;
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
53
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
54
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #5
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Miercoles, 22 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Punteros
Son tipos de datos simples capaces de almacenar la posición de una
variable en memoria principal. Se dice que ellos direccionan a otras variables.
Una variable puntero se declara como todas las variables. Debe ser del
mismo tipo que la variable apunta.
Se identifica con un (*):
int *punt
Es una variable puntero que apunta a variable que contiene un dato de tipo
entero llamada punt
Char*car:
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
55
EJERCICIOS
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Ingresar: ";
cin >> num;
cout <<"n"<< "Direccion de memoria de num: " << &num;
cout << "n"<< "Creacion de un puntero" << endl;
int *punt = &num;
cout << "n" << punt;
cout << "n" << "Prueba de puntero" << endl;
cout << "*punt: " << *punt;
*punt = 15;
cout <<endl<<"*punt: " << *punt;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
56
cin.get();
cin.get();
return 0;
}
EJERCICIOS
#include <iostream>
using namespace std;
int main()
{
char num = 0x98fc3f4a;
char *puntero_malo = &num;
cout << "int num = 0x98fc3f4ann";
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
57
cout << "char *puntero_malo = &numnn";
cout << "*puntero_malo: " << *puntero_malo;
cin.get();
return 0;
}
EJERCICIO
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
58
void main()
{clrscr();
int mat[5]={20,3,8,90,10};
int i, *q;
cout<<"Direccion"<<"----"<<"Contenido"<<"n";
for (i=0;i<5;i++)
cout<<&mat[i] <<" ---- "<<mat[i]<<"n";
cout<<"nDireccion"<<"----"<<"Contenido"<<"n";
for (i=0;i<5;i++)
cout<<mat+i <<" ---- "<<*(mat+i)<<"n";
q=mat; //q=&mat[0];
cout<<"nDireccion"<<"----"<<"Contenido"<<"n";
for (i=0;i<5;i++)
{cout<<q <<" ---- "<<*(q)<<"n";
q++;
}
getch();
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
59
EJERCICIO
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
struct fecha{int dia;
int mes;
int anio;
};
void Pidefecha(struct fecha &f);
void Verfecha(struct fecha f);
//void Suma(int d);
void Verfecha(struct fecha f)
{ cout << setfill('0') << setw(2) << f.dia << '/'
<< setw(2) << f.mes << '/' << setw(4) << f.anio;
}
void Pidefecha(struct fecha &f)
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
60
{ char ch;
cout << "Escriba la Fecha de la forma dd/mm/aa:";
cin >> f.dia >> ch >> f.mes >> ch >> f.anio;
}
//crear el main
void main()
{clrscr();
struct fecha f1;
Pidefecha(f1);
cout << "nFecha ingresada: ";
Verfecha(f1);
cout << " nHe terminado..";
getch();
}
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #6
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
61
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 27 de mayo 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Listas simple
DEFINICION
La forma más simple de estructura dinámica 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 y 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á vacía.
El nodo típico para construir listas tiene esta forma:
struct nodo {
int dato;
struct nodo *siguiente;
};
Declaraciones de tipos para manejar listas en C
typedef struct _nodo {
int dato;
struct _nodo *siguiente;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
62
} tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
tipoNodo es el tipo para declarar nodos, evidentemente.
pNodo es el tipo para declarar punteros a un nodo.
Lista es el tipo para declarar listas, como puede verse, un puntero a un nodo y una lista son la misma
cosa. En realidad, cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado.
Operaciones básicas con listas^
Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:
 Añadir o insertar elementos.
 Buscar o localizar elementos.
 Borrar elementos.
 Moverse a través 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 vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.
EJEMPLOS
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
63
#include<conio.h>
#include<stdio.h>
#include<string.h>
typedef struct agenda
{
char nombre[25];
char apellido[25];
char fono[18];
char correo[40];
int edad ;
}
_agenda;
void ingresar (_agenda &a, char nom[], char ape[], char fon[], char cor[],int e);
void mostrar (_agenda a);
void main()
{
clrscr();
_agenda amigo1,amigo2 ;
ingresar(amigo1,"segundo","b","121345678","hted2c@utm.edu.ec",29);
ingresar(amigo2,"silvia","delgado","052777665","ertacias@utm.edu.ec",37);
mostrar(amigo1);
mostrar(amigo2);
getch();
}
void ingresar (_agenda &a, char nom[],char ape[],char fon[], char cor[],int
e){strcpy (a.nombre,nom);
strcpy (a.apellido,ape);
strcpy (a.fono,fon);
strcpy (a.correo,cor);a.edad=e ;
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
64
void mostrar (_agenda a){ _agenda *q=&a;printf("nNombre: %sn Apellido:
%sn fono: %sn Correo: %sn edad: %d",q->nombre,q->apellido,q->fono,q-
>correo,q->edad);
getch()
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
65
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #7
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes, 03 de JUNIO 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Lista Simple Abierta
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<iomanip.h>
struct control_asistencia{
char est[45];
char nivel[30];
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
66
char paralelo;
char aula[7];
char hinicio[6];
char hfin[6];
int dia;
int mes;
int anio;
};
void registrar(control_asistencia *c);
void imprimir(control_asistencia c);
//implementación
void registrar(control_asistencia *c)
{clrscr();
printf("nIngreso de Informaciónn");
printf("n Ingrese el nombre del estudiante:");
cin>>c->est;
printf("n Ingrese el nivel:");
cin>>c->nivel;
printf("n Ingrese el paralelo:");
cin>>c->paralelo;
printf("n Ingrese el codigo del aula:");
cin>>c->aula;
printf("n Ingrese la hora de inicio:");
cin>>c->hinicio;
printf("n Ingrese la hora final:");
cin>>c->hfin;
char ch;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
67
printf("nIngrese la fecha en formato dd/mm/yyyy");
cin>>c->dia>>ch>>c->mes>>c->anio;
cout<<"Ingreso finalizado...";
getch();
}
void imprimir(control_asistencia c)
{clrscr();
cout<<"Datos Ingresadosn";
cout<<"Estudiante"<<"t"<<"Nivel"<<"Paralelo"<<"t"<<"Aula"<<"t"<<"Hora
Incio"<<"t"<<"Hora Fin"<<"t"<<"fecha";
cout<<setw(10)<<c.est<<setw(8)<<c.nivel<<setw(5)<<c.paralelo<<setw(6)<<c.a
ula<<setw(6)<<c.hinicio<<setw(6)<<c.hfin<<setw(2)<<c.dia<<"/"<<setw(2)<<c.
mes<<"/"<<setw(4)<<c.anio<<endl;
}
void main()
{control_asistencia E;
registrar(&E);
imprimir(E);
getch();
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
68
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
69
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #8
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Miercoles , 05 de JUNIO 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Lista Simple Abierta
EJEMPLO
#include <iostream>
using namespace std;
{
typedef struct _Alumnos
char nombre[25];
struct _alumnos *sig;
}
typedef tipoAlumno *pnodo;
typedef tipoAlumno *lista;
/* tipoAlumno;
**********************
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
70
struct alumnos
{
char nombre[25];
struct _alumnos *sig;
};
typedef struct_alumnos tipoAlumno;
*************************
*/
// 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);
void almacenar(lista *l, char c[]);
{
pnodo nodo;
nodo=new(pnodo);
if(nodo==NULL)
{
cout<< "n sin espacio de memoria";
return;
}
//se llena la informacion del nodo
strcpy(nodo->nom.c);
// procedo hacer los enlaces
if !(*l)
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
71
{
// es el primer nodo que va a ingresar a la lista
nodo->sig=NULL;
*l=nodo;
}
EJERCICIO
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
typedef struct _alumnos{
char nom[25];
struct _alumnos *sig;
}tipoAlumno;
typedef tipoAlumno *pnodo;
typedef tipoAlumno *Lista;
//Funciones prototipo
void almacenar (Lista *l , char c[]); //paso parametro doblepuntero
void ver_lista(Lista l);
void almacenar_fin (Lista *l , char c[]);
void Almacenar_ord(Lista *l, char c[]);
void main()
{ Lista L1= NULL; // L1 es puntero se inicializa con null la cabecera
int op;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
72
char nom[30];
do{
clrscr();
cout<<"n 1. Registrar nombre al inicio";
cout<<"n 2. Registrar nombre al final";
cout <<"n 3. Registro ordenado";
cout<<"n 4. Mostrar Lista";
cout<<"n 5. Salirnn ";
do{
cin>>op;
switch(op)
{
case 1:
cout<<"nREGISTRO DE NUEVO CLIENTE AL INICIOn";
cout<<"n Ingrese los nombres: "; fflush(stdin); gets(nom);
almacenar(&L1,nom);
break;
case 2:
cout<<"nREGISTRO DE NUEVO CLIENTE AL FINALn";
cout<<"n Ingrese los nombres: "; fflush(stdin); gets(nom);
almacenar_fin(&L1,nom);
break;
case 3:
cout << "REGISTRO ORDENADOn";
cout <<"nIngrese los nombre: ";fflush(stdin); gets(nom);
Almacenar_ord(&L1,"Vargas N");
Almacenar_ord(&L1,"Espinales S");
Almacenar_ord(&L1,"Delgado S");
Almacenar_ord(&L1,"Murillo S");
Almacenar_ord(&L1,"Molina K");
Almacenar_ord(&L1,"Balda J");
break;
case 4:
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
73
ver_lista(L1);
getch();
}
}while((op>5)||(op<1));
}while(op!=5);
}
void almacenar (Lista *l , char c[])
{
pnodo nodo;
nodo = (pnodo) malloc (sizeof(tipoAlumno));
if (nodo==NULL)
{ cout<<"n Sin espacio de memoria " ;
return;
}
//Lleno la imformacion del nodo
strcpy (nodo-> nom,c);
// Procedo hacer los enlaces
if (!*l)
{nodo->sig=NULL; //es el primer nodo que va a ingresar a la lista
*l=nodo;
}
}
void Almacenar_ord(Lista *l, char c[])
{
pnodo nodo;
nodo = (pnodo) malloc (sizeof(tipoAlumno));
if (nodo==NULL)
{ cout<<"n Sin espacio de memoria " ;
return;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
74
}
//Lleno la imformacion del nodo
strcpy (nodo-> nom,c);
if(!*l)
{
nodo->sig=*l;
*l=nodo;
}
else
{
pnodo aux = *l;
if(strcmp(aux->nom,c)>0)
{
nodo->sig=*l;
*l=nodo;
}
else
{
while((aux->sig) && strcmp(aux->sig->nom,c)<0)
{
aux=aux->sig;
}
nodo->sig=aux->sig;
aux->sig=nodo;
}
}
}
void almacenar_fin (Lista *l , char c[])
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
75
{
pnodo nodo;
nodo = (pnodo) malloc (sizeof(tipoAlumno));
if (nodo==NULL)
{ cout<<"n Sin espacio de memoria " ;
return;
}
//Lleno la imformacion del nodo
strcpy (nodo-> nom,c);
// Procedo hacer los enlaces
if (!*l)
{nodo->sig=*l; //es el primer nodo que va a ingresar a la lista
*l=nodo; }
else
{ pnodo aux =*l;
while(aux->sig!=NULL) //(aux->sig)
aux=aux->sig;
aux->sig=nodo;
nodo->sig = NULL ;
}
}
void ver_lista(Lista l)
{ pnodo n=l; //nodo n toma el valor de l
while (n)
{ cout<< "n"<< n->nom;
n=n->sig; //para q el puntero siga al otro nodo
}
getch();
}
OPCIONES QUE DESEE
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
76
REGISTRO DE NOMBRE AL INICIO
REGISTRO DE NOMBRE AL FINAL
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
77
REGISTRO ORDENADO
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
78
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #9
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes , 10 de JUNIO 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Lista Simple Abierta
Insertar un elemento en una lista vacía
Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el
nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a
la lista valdrá NULL:
El proceso es muy simple, bastará con que:
1. nodo->siguiente apunte a NULL.
2. Lista apunte a nodo.
Insertar un elemento en la primera posición de una lista
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
79
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 vacía, pero siempre
podemos, y debemos considerar una lista vacía 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 vacía:
El proceso sigue siendo muy sencillo:
1. Hacemos que nodo->siguiente apunte a Lista.
2. Hacemos que Lista apunte a nodo.
Insertar un elemento en la última posición de una lista
Insertar un elemento en la última posición de una lista
Insertar un elemento en la última posición de una lista
Este es otro caso especial. Para este caso partiremos de una lista no vacía:
El proceso en este caso tampoco es excesivamente complicado:
1. Necesitamos un puntero que señale 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.
2. Hacer que nodo->siguiente sea NULL.
3. Hacer que ultimo->siguiente sea nodo.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
80
Insertar un elemento a continuación 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 continuación del cual insertaremos el
nuevo nodo:
Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y
un puntero al nodo a continuación del que lo insertaremos.
El proceso a seguir será:
1. Hacer que nodo->siguiente señale a anterior->siguiente.
2. Hacer que anterior->siguiente señale a nodo.
Localizar elementos en una lista abierta
^
Muy a menudo necesitaremos recorrer una lista, ya sea buscando un valor
particular o un nodo concreto. Las listas abiertas sólo 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:
1. Asignamos al puntero índice el valor de Lista.
2. Abriremos un bucle que al menos debe tener una condición, que el
índice no sea NULL.
3. Dentro del bucle asignaremos al índice el valor del nodo siguiente al
índice actual.
Por ejemplo, para mostrar todos los valores de los nodos de una lista, podemos
usar el siguente bucle en C:
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
81
typedef struct _nodo {
int dato;
struct _nodo *siguiente;
} tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
...
pNodo indice;
...
indice = Lista;
while(indice) {
printf("%dn", indice->dato);
indice = indice->siguiente;
}
...
Supongamos que sólo queremos mostrar los valores hasta que encontremos uno
que sea mayor que 100, podemos sustituir el bucle por:
...
indice = Lista;
while(indice && indice->dato <= 100) {
printf("%dn", indice->dato);
indice = indice->siguiente;
}
...
Si analizamos la condición del bucle, tal vez encontremos un posible error: ¿Qué
pasaría si ningún valor es mayor que 100, y alcancemos el final de la lista?.
Podría pensarse que cuando indice sea NULL, si intentamos acceder a indice-
>dato se producirá un error.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
82
En general eso será cierto, no puede accederse a punteros nulos. Pero en este
caso, ese acceso está dentro de una condición y forma parte de una expresión
"and". Recordemos que cuando se evalúa una expresión "and", se comienza por
la izquierda, y la evaluación se abandona cuando una de las expresiones resulta
falsa, de modo que la expresión "indice->dato <= 100" nunca se evaluará si
indice es NULL.
Si hubiéramos escrito la condición al revés, el programa nunca funcionaría bien.
Esto es algo muy importante cuando se trabaja con punteros.
© Abril de 2001, S
Eliminar el primer nodo de una lista abierta
Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos
un puntero auxiliar, nodo:
1. Hacemos que nodo apunte al primer elemento de la lista, es decir a
Lista.
2. Asignamos a Lista la dirección 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, después
nos resultaría imposible liberar la memoria que ocupa. Si liberamos la memoria
antes de actualizar Lista, perderemos el puntero al segundo nodo.
Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de
Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará
vacía, 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é vacía.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
83
Eliminar un nodo cualquiera de una lista abierta
En todos los demás 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.
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.
Si el nodo a eliminar es el último, es procedimiento es igualmente válido, ya que
anterior pasará a ser el último, y anterior->siguiente valdrá NULL.
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
84
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #10
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Miercoles , 12 de JUNIO 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Localizar y elimina
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct empleado{char nombre[30];
char apellido[30];
long int cedula;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
85
char departamento[100];
float sueldo;
struct empleado *sig;
}
tipoempleado;
typedef tipoempleado *Lista; //tipo de dato puntero para manejar
listastypedef tipoempleado *pnodo; //tipo de dato puntero para crear
nodos Ahora sumemos a nuestras funciones de ingreso ya realizadas y
modificadas las funciones prototipos para buscar y eliminar
void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char
dep[],float suel);
void ingresarFIN(Lista *l, char nom[],char ape[],long int ced, char
dep[],float suel);
int verificarxcedula(Lista l, char ape[]);void buscarxdpt(Lista l, char
dep[]);
void buscarxdpt_all(Lista l, char dep[]);
void mostrar(Lista l);
void eliminar(Lista *l, char ape[]);
void eliminar_all(Lista *l);
void eliminar_nodos(Lista *l, char ape[]);
}
Proceso de modificar la funcion para evitar introducir nuevos nodos
con la misma información:
Debemos pensar en una función buscar que localice a un nodos con una
información que no se repita...pensando un poco podemos creer que la
información puede contener nombre o apellidos de igual valor.. Pero el
valor de cedula no es un dato que se repita. Si cambiamos la función
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
86
void verificarxcedula(Lista l, long int ced){pnodo aux=l;
while(aux && (aux->cedula!=ced))aux=aux->sig;
if(aux)return (1);
elsereturn (0);
}
Esta función solo generar 2 estados1.
Si existe =12.
No existe =0
Al emplearlo podíamos emplear en las funciones de ingreso de la
siguiente forma: La función verificar xceula antes de crear el espacio
de memoria con malloc Observen que la funcion fue diseñada para
devolver 1 si existe y 0 en caso de no existir
void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char
dep[],float suel){pnodo nodo;if (verificarxcedula(*l,ced)==1)
return;
nodo=(pnodo)malloc(sizeof(tipoempleado));//crear nodo solic. al S.O.
strcpy(nodo->nombre,nom);
strcpy(nodo->apellido,ape);
strcpy(nodo->departamento,dep);
nodo->cedula=ced;nodo->sueldo=suel;//enlaces de los nodos al
inicionodo->sig=*l;
*l=nodo;
}
PROCESO DE ELIMINACION DE NODOS
ELIMINAR TODA UNA LISTA
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
87
Recorrer cada nodo y en cada pasada debemos ir desplazando la
cabecera de la lista para irdesplazándola y poder tomar la dirección de
ese primer nodo<<El que se va a eliminar>> Teniendo la siguiente función:
void eliminar_all(Lista *l)
{
pnodo aux;
while(*l)
{
aux=*l;
*l=aux->sig;
free(aux);
ELIMINAR UN NODO ESPECÍFICO
Asumimos eliminar nodos de un empleado
Tendríamos que localizarlo y luego destruirlo con la funcion free
void eliminar(Lista *l, char ape[])
{
pnodo nodo, aux;if (!*l)
printf("nLista Vacia...nImposible eliminar elementos..");
else
{
if (strcmp((*l)->apellido,ape)==0){aux=*l;
*l=aux->sig;free(aux);
printf("nSe elimino elemento %s con exito",ape);
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
88
Else
{
aux=*l;
while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig;
if (aux->sig){nodo=aux->sig;
aux->sig=nodo->sig;
free(nodo);
printf("nSe elimino elemento %s con exito",ape);
}
}
}
}
UNIVERSIDAD TÉCNICA DE MANABÍ
FACULTAD DE CIENCIAS INFORMÁTICAS
CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
ESTRUCTURA DE DATOS
SEGUNDO SEMESTRE
Clase #11
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
89
PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS
FECHA: Lunes , 17 de JUNIO 2013
DOCENTE GUIA: Ing. Christian Torres Morán
TEMA: Ejercicio de eliminar
ELIMINAR TODOS LOS NODOS QUE COINCIDEN CON UN
CRITERIO
Podríamos usar el código de la funcion de eliminar un nodo especifico,
pero debemos procurar realizar nuestra operación hasta llegar al final
de los nodos con el fin de explorar todos los nodos
void eliminar_nodos(Lista *l, char ape[])
{
pnodo nodo, aux, tem=*l;
int c=0;
while(tem) //nuevo while{if (!*l)printf("nLista Vacia...nImposible
eliminar elementos..");
else
{
if (strcmp((*l)->apellido,ape)==0){aux=*l;
*l=aux->sig;free(aux);
tem=*l;
c++;
}
Else
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
90
{
aux=*l;
while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig;
if (aux->sig)
{
nodo=aux->sig;
aux->sig=nodo->sig;
free(nodo);
tem=*l;
c++;
}
elsetem=tem->sig;
}
}
}//cierre de nuevo
whileif(c==0)
printf("no se encontró el nodo con apellido %s",ape);
else
printf("nSe encontraron %d elementos con apellido %s y
fueron eliminados con éxito",c,ape);
}
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
91
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
92
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
93
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
94
EJERCICIO
#include <iostream>
#include <conio.h>
using namespace std;
typedef struct nodo
{
char nombre[15];
float peso;
float talla;
int tiempo;
struct nodo *sig;
}typo_nodo;
typedef typo_nodo *lista;
typedef typo_nodo *p_nodo;
void registrar(lista *l, char nom[], float peso, float talla, int tiempo);
void mostrar(lista l);
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
95
void insercion_federados(lista *lcal, lista *l);
void mostrar_calificados(lista lcal);
void eliminacion(lista *l);
void registrar(lista *l,char nom[], float peso, float talla, int tiempo)
{
p_nodo nodo, anterior = *l;
nodo = new typo_nodo;
strcpy(nodo->nombre,nom);
nodo->peso = peso;
nodo->talla = talla;
nodo->tiempo=tiempo;
if (nodo==NULL)
{
cout <<"n SIN ESPACIO DE MEMORIA";
return ;
}
else if (!*l !=NULL || anterior->tiempo > tiempo)
{
nodo->sig=*l;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
96
*l=nodo;
}
else
{
while((anterior->sig)&& anterior->sig->tiempo < tiempo)
anterior=anterior->sig;
nodo->sig=anterior->sig;
anterior->sig=nodo;
}
cin.get();
cin.get();
system("cls");
}
void mostrar(lista l)
{
if(!l)
{
cout << "*******La lista esta vacia**********";
}
else
{
cout << "NOMBRE PESO TALLA TIEMPO" << endl;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
97
while(l)
{
cout << l->nombre << "tt" << l->peso << "tt" << l->talla << "tt" << l-
>tiempo << endl;
l = l->sig;
}
}
cin.get();
cin.get();
system("cls");
}
void insercion_federados(lista *lcal, lista *l)
{
p_nodo lista1 = *l;
for(int i = 0;i<2;i++)
{
p_nodo nodo;
nodo = new typo_nodo;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
98
if(nodo == NULL)
{
cout << "*****NO HAY SUFICIENTE MEMORIA*******";
return;
}
if(!*l) return;
strcpy(nodo->nombre,lista1->nombre);
nodo->peso = lista1->peso;
nodo->talla = lista1->talla;
nodo->tiempo = lista1->tiempo;
lista1 = lista1->sig;
nodo->sig = *lcal;
*lcal = nodo;
}
}
void mostrar_calificados(lista lcal)
{
if(!lcal)
{
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
99
cout << "*******La lista esta vacia**********";
}
else
{
cout << "NOMBRE PESO TALLA TIEMPO" << endl;
while(lcal)
{
cout << lcal->nombre << "tt" << lcal->peso << "tt" << lcal->talla <<
"tt" << lcal->tiempo << endl;
lcal = lcal->sig;
}
}
cin.get();
cin.get();
system("cls");
}
void eliminacion(lista *l)
{
p_nodo aux = *l;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
100
int i = 0;
if(!*l)return;
else
{
while(i!=2)
{
aux = *l;
*l = aux->sig;
delete(aux);
i++;
}
}
system("cls");
}
int main()
{
lista l = NULL;
lista lcal = NULL;
char nombre[15], opc;
float peso;
float talla;
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
101
int tiempo;
do
{
cout << "********Federacion deportiva***********" << endl;
cout << "(A) Inscribir" << endl;
cout << "(B) mostrar inscritos" << endl;
cout << "(C) Insercion de federados"<<endl;
cout << "(D) Mostrar federados" << endl;
cout << "(E) Elimincacion de los federados de la lista de inscritos" <<
endl;
cout << "(F) Salir " << endl;
cout << "Ingresar: ";
do
{
do
{
opc = toupper(getche());
}while(!isalpha(opc));
}while(opc<'A' || opc>'D');
switch(opc)
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
102
{
case 'A':
{
system("cls");
for(int i = 0;i<4;i++)
{
cout << "*******INSCRIPCIONES*********nn";
cout << "Ingresar nombre: ";cin>>nombre;
cout << "Ingresar peso: ";cin >> peso;
cout << "Ingresar talla: ";cin >> talla;
cout << "Ingresar tiempo: ";cin >> tiempo;
registrar(&l,nombre,peso,talla,tiempo);
}
break;
}
case 'B':
{
system("cls");
cout << "Mostrando lista de inscritos para las olimpiadas" << endl <<
endl;
mostrar(l);break;
}
case 'C':
{
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
103
system("cls");
insercion_federados(&lcal,&l);
break;
}
case 'D':
{
system("cls");
cout << "Mostrando lista de federados" << endl << endl;
mostrar_calificados(lcal);
break;
}
case 'E':
{
system("cls");
eliminacion(&l);
}
}
}while(opc != 'F');
return 0;
}
OPCIONES QUE DESEE
FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES
104

Más contenido relacionado

Similar a Estructura folde

Silabo ingenieria de software
Silabo  ingenieria de software Silabo  ingenieria de software
Silabo ingenieria de software Jose Mera
 
Silabo ingenieria de software
Silabo  ingenieria de softwareSilabo  ingenieria de software
Silabo ingenieria de softwareJose Mera
 
Programa sistemas de información 2011
Programa sistemas de información 2011Programa sistemas de información 2011
Programa sistemas de información 2011C tb
 
SYLLABUS INVESTIGACIÓN DE OPERACIONES
SYLLABUS INVESTIGACIÓN DE OPERACIONESSYLLABUS INVESTIGACIÓN DE OPERACIONES
SYLLABUS INVESTIGACIÓN DE OPERACIONESMiltonValarezo
 
SYLLABUS MÉTODOS NUMÉRICOS
SYLLABUS MÉTODOS NUMÉRICOSSYLLABUS MÉTODOS NUMÉRICOS
SYLLABUS MÉTODOS NUMÉRICOSMiltonValarezo
 
Manual de-asignatura-logica-de-programacion
Manual de-asignatura-logica-de-programacionManual de-asignatura-logica-de-programacion
Manual de-asignatura-logica-de-programacionDorys Briceño
 
Portafolio de Cáculo Diferencial
Portafolio de Cáculo DiferencialPortafolio de Cáculo Diferencial
Portafolio de Cáculo Diferencialnegroronny
 
Pea informática
Pea   informáticaPea   informática
Pea informáticaMary Freire
 
Algoritmos y estructura de datos 1
Algoritmos y estructura de datos 1Algoritmos y estructura de datos 1
Algoritmos y estructura de datos 1Pedro Garcia Mtz
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestremerypp
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestremerypp
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestremerypp
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestremerypp
 
Pea informática
Pea   informáticaPea   informática
Pea informáticaJorge Rubio
 

Similar a Estructura folde (20)

Portafolio estructura
Portafolio estructuraPortafolio estructura
Portafolio estructura
 
Silabo ingenieria de software
Silabo  ingenieria de software Silabo  ingenieria de software
Silabo ingenieria de software
 
Silabo ingenieria de software
Silabo  ingenieria de softwareSilabo  ingenieria de software
Silabo ingenieria de software
 
Programa sistemas de información 2011
Programa sistemas de información 2011Programa sistemas de información 2011
Programa sistemas de información 2011
 
SYLLABUS INVESTIGACIÓN DE OPERACIONES
SYLLABUS INVESTIGACIÓN DE OPERACIONESSYLLABUS INVESTIGACIÓN DE OPERACIONES
SYLLABUS INVESTIGACIÓN DE OPERACIONES
 
Portafolio programacion
Portafolio programacionPortafolio programacion
Portafolio programacion
 
SYLLABUS MÉTODOS NUMÉRICOS
SYLLABUS MÉTODOS NUMÉRICOSSYLLABUS MÉTODOS NUMÉRICOS
SYLLABUS MÉTODOS NUMÉRICOS
 
Pea (3)
Pea (3)Pea (3)
Pea (3)
 
Pea
PeaPea
Pea
 
Manual de-asignatura-logica-de-programacion
Manual de-asignatura-logica-de-programacionManual de-asignatura-logica-de-programacion
Manual de-asignatura-logica-de-programacion
 
Portafolio de Cáculo Diferencial
Portafolio de Cáculo DiferencialPortafolio de Cáculo Diferencial
Portafolio de Cáculo Diferencial
 
Pea
PeaPea
Pea
 
Proyecto integrador 1
Proyecto integrador 1Proyecto integrador 1
Proyecto integrador 1
 
Pea informática
Pea   informáticaPea   informática
Pea informática
 
Algoritmos y estructura de datos 1
Algoritmos y estructura de datos 1Algoritmos y estructura de datos 1
Algoritmos y estructura de datos 1
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestre
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestre
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestre
 
Syllabus informática i 2014 semestre
Syllabus informática i 2014 semestreSyllabus informática i 2014 semestre
Syllabus informática i 2014 semestre
 
Pea informática
Pea   informáticaPea   informática
Pea informática
 

Estructura folde

  • 1. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 1 Segundo “B” ESTRUCTURA DE DATOS Henry Javier Cedeño Flores Ing. Cristian Torres Morán Mayo – Septiembre 2013 Periodo 2013-2014
  • 2. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 2 FACULTAD CIENCIAS INFORMÁTICAS
  • 3. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 3 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS TABLA DE CONTENIDOS Etapa 1.Prontuario del curso. Etapa 2.Carta de presentación. Etapa 3.Autorretrato. Etapa 4.Diario Metacognitivo. Etapa 5.Artículos de revistas profesionales. Etapa 6.Trabajo de ejecución. Etapa 7.Materiales relacionados con la clase. Etapa 8. Sección abierta. Etapa 9. Resumen de cierre. Etapa 10. Anexos. Etapa 11. Investigación.
  • 4. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 4 ETAPA 1 PRONTUARIO DEL CURSO
  • 5. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 5 FACULTAD/DEPARTAMENTO: FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA: INGENIERÍA EN SISTEMAS INFORMÁTICOS ASIGNATURA/MÓDULO: ESTRUCTURA DE DATOS CÓDIGO: OF-0201 Nivel / Semestre: 2 N° de Créditos:5 Modalidad : Presencial Paralelo: 2do. “B” Período Académico: Sept. 25/2012 – Feb 14/2013 Área Académica: SOFTWARE PRERREQUISITO (S): CORREQUISITO (S): CONTENIDOS DISCIPLINARES QUE DEBEN SER APROBADAS ANTES DE CURSAR ESTE CONTENIDO DISCIPLINAR CÓDIGO CONTENIDOS DISCIPLINARES QUE DEBEN SER CURSADOS AL MISMO TIEMPO QUE ESTE CONTENIDO DISCIPLINAR CÓDIGO PROGRAMACIÓN I OC-0100 DOCENTE: Ing. CHRISTIAN RONALD TORRES MORÁN Título: 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 Ingeniería en Sistemas Informáticos, miembro de los equipos de Vinculación con la sociedad, Docente Tutor de pasantías pre profesionales, coautor del manual de Estructura de Datos junto a la Ing. Esthela San Andrés Láz, coautor del folleto de flujogramas para NBU. UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERÍA EN SISTEMAS INFORMÁTICOS SYLLABUS I.- INFORMACIÓN GENERAL II.- RUTA FORMATIVA a.- DEL PERFIL DE EGRESO: Competencia/Resultado de Aprendizaje:
  • 6. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 6 Competencia: 3. Construye soluciones informáticas de calidad que mejoren la eficiencia y eficacia de una organización haciendo uso correcto de la tecnología. Resultado de Aprendizaje: a. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la informática. b.- OBJETIVO GENERAL DE LA ASIGNATURA: Capacitar al estudiante con los conocimientos significativos en administración de memoria dinámica y herramientas útiles en los diseños, construcciones y usos principales de algoritmos en la estructuración de datos lineales y no lineales c.- DESCRIPCIÓN DE LA ASIGNATURA: La materia introduce al estudiante a los conceptos y aplicación en la administración de memoria, aplicando programación estructurada y orientada a objetos, permite conocer la estructura básica operacional de la memoria RAM y de los grandes diseños de software, aplicando C++ el estudiante desarrollará proyectos científicos tanto con interfaces en modo gráfico y en
  • 7. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 7 Resultados del Aprendizaje (Objetivos Específicos) Formas de Evidenciarlos (Apreciación) Niveles del resultado de aprendizaje Ponderación 1.- Identificar los tipos estructurados de datos estáticos y dinámicos empleados en la creación de aplicaciones, considerando los lenguajes de programación. (Nivel Taxonómico: Conocimiento) 1.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++. Describirá la definición de la estructura de datos, los tipos de datos simples, básicos y compuestos en un ensayo técnico con: descripción general del tema clara; ideas que tienen relación, claridad y objetividad con el tema; y una conclusión clara con aporte personal. Describirá la definición de la estructura de datos, los tipos de datos simples, básicos y compuestos en un ensayo técnico con: descripción general del tema confusa; pocas ideas que tienen relación, claridad y objetividad con el tema; y una conclusión confusa con aporte personal. Describirá la definición de la estructura de datos, los tipos de datos simples, básicos y compuestos en un ensayo técnico con: descripción general del tema confusa; poca o ninguna idea que tienen relación, claridad y objetividad con el tema; y una conclusión confusa sin aporte personal. NIVEL ALTO: 86-100 NIVEL MEDIO 71-85 NIVEL BÁSICO 70 2.- Elaborar aplicaciones dinámicas de estructura lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales. (Nivel Taxonómico: Aplicación) 2.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++. Comparará con la utilización de un cuadro comparativo tres semejanzas y tres diferencias entre los tipos de datos que permiten almacenar más de un dato; reflejando las relaciones de las comparaciones con ideas claras. Comparará con la utilización de un cuadro comparativo tres semejanzas y tres diferencias entre los tipos de datos que permiten almacenar más de un dato; reflejando las relaciones de las comparaciones con ideas pocos claras. Comparará con la utilización de un cuadro comparativo dos semejanzas y dos diferencias entre los tipos de datos que permiten almacenar más de un dato; reflejando las relaciones de las comparaciones con ideas confusas. NIVEL ALTO: 86-100 NIVEL MEDIO 71-85 NIVEL BÁSICO 70 III.- RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA
  • 8. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 8 3.- Implementar aplicaciones dinámicas de estructura Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales (Nivel Taxonómico: Aplicación) 3.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++. Implementará aplicaciones dinámicas de estructura Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales. Implementará aplicaciones dinámicas de estructura Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones comerciales. Implementará aplicaciones dinámicas de estructura No Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento. NIVEL ALTO: 86-100 NIVELMEDIO 71-85 NIVEL BÁSICO 70 4.- Implementar aplicaciones dinámicas de estructura no Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales (Nivel Taxonómico: Aplicación) 4.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++. Elaborará un programa con estructuras dinámicas no lineales bien detallado. Elaborará un programa con estructuras dinámicas no lineales con poca claridad. Elaborará un programa con estructuras dinámicas no lineales de forma confusa. NIVEL ALTO: 86-100 NIVEL MEDIO 71-85 NIVEL BÁSICO 70 5.- Organizar la información en algoritmos y estructuras AVL y su relación con los gestores de Base de Datos (Nivel Taxonómico: Aplicación) 5.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación 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 BÁSICO 70
  • 9. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 9 N° PROGRAMA DEL CONTENIDO DISCIPLINAR (ASIGNATURA, UNIDAD, CURSO, TALLER, OTRO) POR TEMAS N° TOT AL HOR AS P-A HORAS PRESENCIALES HORAS AUTÓNOMAS ESTRATEGIAS PARA EL TRABAJO AUTÓNOMO 1. UNIDAD I: GENERALIDADES Y DEFINICIONES DE ESTRUCTURA DE DATOS  Definición  Variables, Tipos de datos.  Representación Gráfica de las estructura de datos  Acceso a las estructura de Datos (Estáticas)  Tipos de Estructuras de Datos  Diferencia entre gestión Estática y Dinámica  Operaciones con varios punteros  Asignación dinámica de memoria  Liberación dinámica 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 Reflexión: En equipos de trabajo, analizar el funcionamiento general del computador y de los programas, considerando las siguientes aplicaciones: Procesadores de texto, Hojas de cálculo, Reproductores, Tareas del sistema operativo como Impresión, etc. Conceptualización: Elaboración de mapas conceptuales, cuadros de funcionamiento y estructurales de la memoria. Aplicación: Resolución de ejercicios demostrativos y de planteamiento de problemas. 23 Tareas extra- clases. Investigación del tema de la unidad Tareas en el lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital. -Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos. -Al final de la tarea se interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica. 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. Investigación del tema de la unidad Tareas en el lenguaje de -Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos. -Al final de la tarea se IV.- PROGRAMACIÓN
  • 10. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 10  Definición de listas abiertas  Declaración e implementación de una lista Operaciones con Listas  Inserción de un nodo  Búsqueda de un nodo  Recorridos de una lista  Eliminación de un nodo  Listas y Archivos  Variaciones de listas  Pilas y Colas Listas circulares o cerradas  Declaración e implementación de una lista circular Operaciones con Listas  Inserción de un nodo  Búsqueda de un nodo  Recorridos de una lista  Eliminación de un nodo Listas doblemente enlazadas abiertas y cerradas  Declaración e implementación de una lista doblemente enlazada Operaciones con Listas  Inserción de un nodo  Búsqueda de un nodo  Recorridos de una lista  Eliminación de un nodo informáticos planteados Reflexión: En grupos de trabajo, analizar el funcionamiento general de los diferentes algoritmos considerando las diferentes aplicaciones. Conceptualización: Elaboración de conclusiones conceptuales, cuadros de funcionamiento y alternativas estructurales de solución. Aplicación: Resolución de ejercicios demostrativos y de planteamiento de problemas. programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital. interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.
  • 11. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 11 3. UNIDAD III: ESTRUCTURAS ARBORESCENTES  Definición, implementación 26 13 Experiencia: • Aplicando debates definir la importancia de aplicar algoritmos generales de 13 Tareas extra- clases. Investigación del tema de la unidad Tareas en el -Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos.
  • 12. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 12  Tipos de recorridos: PreOrden InOrden PostOrden Operaciones con Árboles Binarios de Búsqueda  Búsqueda de elementos. Inserción de elementos. Borrado de elementos. * Nodo hoja.  *Nodo rama.  Movimiento a través del árbol. Comprobación de árboles vacíos.  Comprobación del nodo hoja. Cálculo de:  Número 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. Reflexión: • En grupos de trabajo, analizar el funcionamiento general de los principales sistemas informáticos, considerando el avance tecnológico del software en la base de datos Conceptualización: • Elaboración de propuestas algorítmicas, prácticas y de alternativas de resolución. Aplicación: • Resolución de ejercicios demostrativos y de planteamiento de problemas. lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital. -Al final de la tarea se interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.
  • 13. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 13 4. UNIDAD IV: TIPOS DE ÁRBOLES ESPECIALES  Árboles equilibrados.  Definición.  Operaciones en AVL.  Factor de equilibrio.  Rotación simple de nodos.  Rotación simple a la derecha.  Rotación simple a la izquierda.  Rotación doble de nodos a la derecha.  Rotación doble de nodos s la izquierda.  Reequilibrados de árboles AVL.  Reequilibrados en árboles AVL por inserción de un nodo. 28 14 Experiencia: Aplicando el planteamiento de problemas, identificar dificultades y generar la necesidad de encontrar soluciones algorítmicas. Reflexión: En grupos de trabajo, analizar el funcionamiento de los diferentes algoritmos propuestos. Conceptualización: Elaboración de propuestas de funcionamiento y alternativas estructurales de solución. Aplicación: 14 Tareas extra- clases. Investigación del tema de la unidad Tareas en el lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital. -Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos. -Al final de la tarea se interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.
  • 14. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 14 MEDIO CICLO FINAL DE CICLO EXAMEN DE RECUPERACIÓN ASISTENCIA EXÁMENES (30%) 15 15 ACT. EN EL AULA (40%) Tareas 5 5 Ejercicios de aplicación 2.5 2.5 Lecciones orales 2.5 2.5 Pruebas escritas 5 5 Participación 2.5 2.5 Exposiciones 2.5 2.5 ACTIVIDADES DE INVESTIGACIÓN PORTAFOLIO PROYECTO INFORME FINAL (30%) 5 10 5 10 TOTAL 50% 50% 100%  Reequilibrados en árboles AVL por borrado de un nodo. Resolución de ejercicios demostrativos y de planteamiento de problemas. V.- METODOLOGÍA Y RECURSOS  Se aplicará un PEA, Dinámica de integración y socialización, documentación, presentación de los temas de clase y objetivos, lectura de motivación y video del tema, técnica 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)  Revisión de la clase programada antes del día señalado para la sesión correspondiente (blog-docente)  Consultas, tareas y talleres se entregarán en archivo escrito al docente y en archivo lógico al área de contacto del curso.  Los recursos disponibles para el curso serán: pizarra tiza líquida(4), proyector, internet inalámbrico, 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 generación, computadores(2) del aula,1 portátiles por equipo del estudiante, libros-CD-interactivo- pdf., blog. del estudiante y del docente para interactividad y fortalecimiento continúo. VI.- PLANEACIÓN DE LA EVALUACIÓN Las evaluaciones estarán orientadas a los procesos, lo que conlleva a que ninguna evaluación tenga una ponderación determinante para la acreditación. Durante el periodo académico, el estudiante de la Universidad Técnica de Manabí, se someterá obligatoriamente a los siguientes parámetros de evaluación de los aprendizajes: evaluación de medio ciclo, evaluación de final de ciclo, evaluación de actividades varias y evaluaciones de investigaciones. ACREDITACIÓN
  • 15. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 15 VI.- BIBLIOGRAFÍA a.- Bibliografía Básica: AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL MARTÍNEZ, Román 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.- Bibliografía Recomendada: AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL Garrido Antonio Abstracción 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 VII.- COMPROMISO ÉTICO  Escuchar y respetar democráticamente el criterio de los demás.  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 manipulación y utilización de los equipos informáticos.  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 ocasión se aceptará el retraso de 10 minutos.  El estudiante por ningún concepto utilizará celulares en el aula, igual comportamiento tendrá el docente.  El intento de copia de cualquier estudiante será sancionado con la calificación de cero y no habrá oportunidad de recuperación, independiente de las sanciones establecidas por la universidad.  Los trabajos se entregarán 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 párrafo o un texto se calificará con cero. Lugar y fecha: Portoviejo, 6 de Mayo del 2013 Ing. Christian Ronald Torres Morán (f) Docente (f) Coordinador
  • 16. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 16 ANEXO. N° 1
  • 17. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 17 a b c d e f g h i j k A M B RESULTADOS DE APRENDIZAJE DE LA CARRERA ESPECÍFICOS A LOS QUE APUNTA LA MATERIA (ABET). a. Capacidad de realizar análisis, síntesis y aplicación de las matemáticas y ciencias básicas en la solución de problemas de ingeniería en sistemas informáticos. b. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la informática. c. La capacidad de diseñar sistemas, procesos, modelos y componentes informáticos que cumplan los estándares nacionales o internacionales, tomando en cuenta las limitaciones económicas, ambientales, sociales, políticas, 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 cooperación, comunicación, con habilidades para resolver conflictos y contribuyendo proactivamente en la propuesta de líneas estratégicas desde el punto de vista informático, para la solución de problemas. e. Capacidad para identificar, formular, evaluar y resolver técnicamente problemas de ingeniería planteados de acuerdo a las necesidades del medio. f. Capacidad para comprender, reconocer y aplicar valores y códigos 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 tecnologías de la información. h. Habilidad y capacidad para comprender el impacto de las soluciones informáticas a la realidad local, nacional e internacional en un contexto económico 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 técnicas, habilidades y herramientas en el desarrollo de software y hardware para implementar soluciones a problemas de su profesión. Contribución de la materia a los resultados de aprendizaje de la carrera: A: Alta M: M
  • 18. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 18 ETAPA 2 CARTA DE PRESENTACIÓN
  • 19. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 19 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS CARTA DE PRESENTACIÓN Este portafolio presenta mi trayectoria en el curso de: ESTRUCTURA DE DATOS, este curso tiene como objetivos desarrollar las destrezas de agilidad mental, retentiva y el intelecto durante este semestre pude conocer sobre Estructura de datos, sobre las GENERALIDADES Y DEFINICIONES DE ESTRUCTURA DE DATOS como: Definición, variables, tipos de datos, representación graficas de las estructura de datos, Acceso a las estructura de datos(Estáticas), tipos de Estructuras de Datos, Diferencia entre gestión Estática y Dinámica, Operaciones con varios punteros, Asignación dinámica de memoria, Liberación dinámica de memoria, La contante NULL, Ventajas y desventajas de punteros. : ESTRUCTURAS SIMPLES Y
  • 20. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 20 COMPUESTAS: Listas abiertas, Definición de listas abiertas, Declaración e implementación de una lista, Operaciones con listas, Inserción de un nodo, Búsqueda de un nodo, Recorridos de una lista, Eliminación de un nodo, Listas y Archivos, Variaciones de lista. ETAPA 3 AUTORRETRATO
  • 21. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 21 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICA
  • 22. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 22 Mi nombre es HENRY JAVIER CEDEÑO FLORES, estoy en segundo semestre de la facultad ciencias informáticas, soy una persona muy comprensiva y además de eso me gusta ayudar a las personas cuando más lo necesite, yo estoy aquí con un propósito de ser una buen ingeniero en sistemas y así poder progresar en mi carrera profesional. Estando aquí en estos dos años aprendido muchos de todos mis profesores que he cruzado hasta hora, después vendrá nuevas ideas y nuevas enseñanza dentro de la Universidad. FACULTAD CIENCIAS INFORMATICAS VISIÓN Generarme destacadamente como un profesional con principios y valores en el campo de las Ciencias Informáticas, alcanzando todas mis metas y objetivos
  • 23. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 23 propuestos, adquiriendo día a día nuevos conocimientos siendo protagonistas del progreso regional y nacional. MISIÓN Contribuir con todos mis conocimientos y capacidades profesionales de las Ciencias Informáticas a las soluciones de los problemas que se presenten, que con honestidad, equidad, disciplina y solidaridad dar respuestas a las necesidades de la sociedad elevando su nivel de vida. UNIVERSIDAD TÉCNICA MANABÍ MISIÓN
  • 24. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 24 Formar académicos, científicos y profesionales responsables, humanistas, éticos y solidarios, comprometidos con los objetivos del desarrollo nacional, que contribuyan a la solución de los problemas del país como universidad de docencia con investigación, capaces de generar y aplicar nuevos conocimientos, fomentando la promoción y difusión de los saberes y las culturas, previstos en la Constitución de la República del Ecuador. VISIÓN Ser una institución universitaria, líder y referente de la educación superior en el Ecuador, promoviendo la creación, desarrollo, transmisión y difusión de la ciencia, la técnica y la cultura, con reconocimiento social y proyección regional y mundial. FACULTAD CIENCIAS INFORMÁTICAS MISIÓN
  • 25. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 25 Formar profesionales eficientes e innovadores en el campo de las ciencias informáticas, que con honestidad, equidad y solidaridad, den respuestas a las necesidades de la sociedad elevando su nivel de vida. VISIÓN Ser una unidad con alto prestigio académico, con eficiencia, transparencia y calidad en la educación, organizada en sus actividades, protagonistas del progreso regional y nacional.
  • 26. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 26 ETAPA 4 DIARIO METACOGNITIVO
  • 27. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 27 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE CLASE Nº 1 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 06 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán 1.- ENTRADA DE LOS ESTUDIANTES. 2.- PRESENTCION DEL DOCENTE A LOS ESTUDIANTES. ING. CHRISTIAN TORRES MORAN 3.- NOS INDICO LA CLAVE PARA EL INGRESO DEL AULA VRTUAL. 4.- ELECCIÓN DEL ASISTENTE DEL DOCENTE FACILITADOR.. 5.- INDICACION DEL SYLABUS. 6.- INDICACION DEL PORTAFOLIO. ISED2B
  • 28. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 28 7.- CONTINUACION CON C++. TEMA: Aplicación de la programación básica. INTRODUCCION Las estructuras básicasdisponibles en C y C++ (structs y arrays) tienen una importante limitación: no puede cambiar de tamaño durante la ejecución. Los arrays están compuestos por un determinado numero de elementos, número que se decide en la fase de diseño, antes de que el programa ejecutable sea creado. EJERCICIO DE ESTRUCTURA DE DATO #include <conio.h> #include<stdio.h> void main() { clrscr(); char nom[30]; int edad; struct struct.curso2; printf("INGRESE EL NOMBRE: "); scanf("%s",curso2nom); printf("INGRESE LA EDAD: "); scanf("%d",&curso2.edad); printf("n EL ESTUDIANTE %s TIENE %d AÑOS DE EDAD",curso2nom,curso2edad);
  • 29. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 29 10>=9 getch(); } TEMA: Array y Inicializacion Una pequeña explicación sobre los arrays. Ejemplo Hacer un programa que nos cree un arrays. #include <iostream> TF TF>= TL 10>=9 10>=10
  • 30. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 30 #include <stdio.h> using namespace std; int main() { int a[]={1,1,2,3,5,8,13,21}; cout<<"n los numeros del array son:"; for(int i=0;i<8;i++) cout<<"n a[%d]=%d",i,a[i]; cin.get();cin.get(); return 0; } INICIALIZAR Hacer una matriz de 3*3 donde la diagonal principal sea de puros 1 y los demás espacios ceros. 1.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3] = {1,0,0,0,1,0,0,0,1}; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0;
  • 31. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 31 } 2.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3]; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { if(i == j) matriz[i][j] = 1; else matriz[i][j] = 0; } } for(int i = 0;i<3;i++) { for(int j =0;j<3;j++)
  • 32. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 32 { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0; } 3.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3]; matriz[0][0] = 1; matriz[0][1] = 0; matriz[0][2] = 0; matriz[1][0] = 0; matriz[1][1] = 1; matriz[1][2] = 0; matriz[2][0] = 0; matriz[2][1] = 0; matriz[2][2] = 1;
  • 33. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 33 for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0; } UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #2
  • 34. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 34 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 13 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Creacion de una estructura básica struct[ Etiqueta] Nombre de la estructura Campo 1; Campo o miembro de la estructura Campo 2; ; Termina en punto y coma struct { char nom [40]; char ced [10]; int edad; char direc [50]; char tel [10]; }
  • 35. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 35 ESTRUCTURA ANIDADAS a) Por su almacenamiento .-. Se clasifican en: Internas Externas Internas: Son aquellas estructuras se almacenan en la memoria principal. Externas: Son aquellas que se almacenan en las memorias secundarias de sistemas de computadoras. EJEMPLO DE ESTRUCTURAS INTERNAS
  • 36. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 36 #include<conio.h> #include<stdio.h> struct empresa { struct información { char nombre[20]; char dirección[20]; char teléfono[10]; }empre; struct proveedor_ { char nombre[20]; char dirección[20]; char teléfono[10]; char ciudad[26]; }proveedor; struct cliente_ { char nombre[20]; char cedula[10]; char dirección[20]; }cliente[60]; struct producto_ { char nombre[20];
  • 37. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 37 int cant; float pvp; }producto; }; void main() { struct empresa E; scanf("%s", E.cliente[0].nombre); }
  • 38. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 38 EJEMPLO DE ESTRUCTURA EXTERNA #include<conio.h> #include<stdio.h> struct datos { char nombre[20]; char dirección[50]; }; struct information { struct dato dato; char teléfono[10]; }; struct proveedor_ { struct datos dato; char teléfono[10]; char ciudad[25]; } ; struct producto_ { char nombre[20]; int cant; float pvp;
  • 39. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 39 }producto; struct empresa { struct informativo empresa; struct proveedor_ proveedor; struct datos cliente[60]; struct producto_ producto; }; void main() { struct empresa E; struct proveedor_ proveedor[60]; scanf("%s", E.proveedor.dato.nombre); }
  • 40. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 40 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #3 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 13 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Inicializacion de una variable estructurada
  • 41. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 41 Inicializacion de una variable estructurada A las estructuras se les pueden dar valores iniciales de manera analóga a como hacíamos con los arrays. Primero tenemos que definir la estructura y luego cuando declaramos una variable como estructura le damos el valor inicial que queramos. Recordemos que esto no es en absoluto necesario. La definición de la estructura es: struct estructura_amigo{ char nombre[14]; char apellido[14]; char teléfono[12]; int edad; }; Ejercicio en clase El ampersan nos muestra las direcciones de memoria de las variables. #include<iostream> #include<conio.h> #include<stdio.h> struct datos { char nombre[15]; char apellido[15]; int cedula; char ciudad[15]; float sueldo; char departamento[15]; };
  • 42. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 42 char mat [1][6][15]={"juan","macias","1312868720","portoviejo","ventas","750"}; int main() { struct empleo ; int c; for( int c=0; c<6; c++) cout<<&mat[0][c]<< "t"; getch(); cin.get();cin.get(); return 0; }; EJERCICIO EN CLASE #include <iostream.h> #include <stdio.h> struct Datos { char cedula[15]; char nombre[15]; char apellido[15]; char ciudad[15]; char departamento_de_trabajo[15]; float sueldo; }; int main()
  • 43. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 43 { Datos empleado; cout << "Cedula: ";fflush(stdout); cin >> empleado.cedula; cout << "Nombre: ";fflush(stdout); cin >> empleado.nombre; cout << "Apellido: ";fflush(stdout); cin >> empleado.apellido; cout << "Departamento: ";fflush(stdout); cin >> empleado.departamento_de_trabajo; cout << "Sueldo: ";fflush(stdout); cin >> empleado.sueldo; cout << endl << endl; cout << "La cedula es : " << empleado.cedula << endl; cout << "El empleado se llama " << empleado.nombre << " " << empleado.apellido << endl; cout << "La ciudad donde vive es " << empleado.ciudad << endl; cout << "El departamento donde vive es: " << empleado.departamento_de_trabajo << endl; cout << "Su sueldo es de: " << empleado.sueldo; cin.get();cin.get(); return 0; }
  • 44. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 44 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS
  • 45. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 45 ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #4 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles, 15 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMAS: Estructuras EJERCICIOS #include <iostream.h> #include <stdio.h> struct venta { char nombres[10]; char apellidos[10]; float sueldos; char departamento_de_trabajo[10]; float ventas; }; int main() { struct venta datos[5]; for(int b=0;b<5;b++) { cout<<"ingrese nombres: "; cin>> datos[b].nombres; cout<<"ingrese apellidos:";
  • 46. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 46 cin>> datos[b].apellidos; cout<<"ingrese sueldos:"; cin>> datos[b].sueldos; cout<<"ingrese departamnento-de_trabajo:"; cin>> datos[b].departamento_de_trabajo; cout<<"ingrse ventas:"; cin>> datos[b].ventas; } cout << endl << endl; for(int c=0;c<5;c++) { cout<< "nombre:"<<datos[c].nombres<<endl; cout<< "apellidos:"<<datos[c].apellidos<<endl; cout<< "sueldos:"<<datos[c].sueldos<<endl; cout<< "departamento_de_trabajo:"<<datos[c].departamento_de_trabajo<<endl; cout<< "ventas:"<<datos[c].ventas<<endl; } cin.get(); cin.get(); return 0; }
  • 47. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 47 #include<iostream> #include<conio.h> #include<stdio.h> struct datos { char nombre[15]; int cont; float pvp; }; struct empresa { struct informativo empre; //struct datos cliente[200]; //struct producto_ producto; int nproveedor; struct proveedor_ proveedor[200]; }; void main()
  • 48. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 48 { struct empresa e={{{"Juan S.A.","UTM","136111"},"2568478"}}; int op,i; do { clrscr(); printf("n1.- ver datos de la empresa"); printf("n2.- ingreso de proveedor para la empresa"); printf("n3.- ver proveedores de la empresa"); printf("n4.- productos de la empresa"); printf("n5.- ver productos de la empresa"); printf("n6.- salir"); scanf("%d",&op);/*if(op==1){clrscr(); printf("Registro de los datos de la empresa"); printf("nRUC");scanf("%s",e.empre.dato.ruc); printf("nNombre");scanf("%s",e.empre.dato.nombre); printf("nDireccion");scanf("%s",e.empre.dato.direccion); printf("nTelefono");scanf("%s",e.empre.telefono); e.nproveedor=0;}*/if(op==1){clrscr(); printf("datos de la empresa"); printf("nRUC: %s",e.empre.dato.ruc); printf("nNombre: %s",e.empre.dato.nombre); printf("nDirrecion: %s",e.empre.dato.direccion);
  • 49. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 49 printf("nTelefono: %s",e.empre.telefono); getch(); } else if(op==2) { clrscr(); printf("Registro de proveedore # %d",e.nproveedor+1); printf("nRUCt"); scanf("%s",e.proveedor[e.nproveedor].dato.ruc); printf("nNombret"); scanf("%s",e.proveedor[e.nproveedor].dato.nombre); printf("nDirecciont"); scanf("%s",e.proveedor[e.nproveedor].dato.direccion); printf("nTelefonot"); fflush(stdin); scanf("%s",e.proveedor[e.nproveedor].telefono); printf("nCiudadt"); scanf("%s",e.proveedor[e.nproveedor].ciudad); e.nproveedor++; } else if (op==3) { clrscr(); printf("Informacion de proveedoresn"); printf("RUCttNombrettDireccionttelefonotcuidad");
  • 50. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 50 for(i=0;i<e.nproveedor;i++) printf("n%stt%stt%stt%stt%s",e.proveedor[i].dato.ruc,e.proveedor[i]. dato.nombre,e.proveedor[i].dato.direccion,e.proveedor[i].telefono,e.proveedor[i]. ciudad); getch(); } }while(op!=6); } UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #4 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013
  • 51. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 51 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 20 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Funciones Las estructuras se pueden pasar directamente a una función igual que hacíamos con las variables. Una función es un modulo de un programa separado delcuerpo principal, que realiza una tarea especifica y que puede un valor a la parte principal del programa u otra función. La forma general de una función es: Tipodato Nomfun(parámetros) { Cuerpo de instrucciones; return[dato,var,expresión] } EJERCICIOS #include<iostream.> #include<conio.h> #include<stdio.h> Using namespace std; struct amigo
  • 52. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 52 { char nombre[30]; char apellido[30]; char cedula[15]; int edad; }; struct amigo datos = { "henry","cedeño","1315717940",18, }; int suma_edad(struct amigo datos_2) { datos_2.edad = 40; return datos_2.edad+30; } int main() { cout << "nnNombre: " << datos.nombre << endl; cout << "Apellido: " << datos.apellido << endl; cout << "Cedula: " << datos.cedula << endl; cout << "Edad: " << suma_edad(datos)<< endl; cout << "Edad_2: " << datos.edad; cin.get(); return 0; }
  • 53. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 53
  • 54. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 54 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #5 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles, 22 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Punteros Son tipos de datos simples capaces de almacenar la posición de una variable en memoria principal. Se dice que ellos direccionan a otras variables. Una variable puntero se declara como todas las variables. Debe ser del mismo tipo que la variable apunta. Se identifica con un (*): int *punt Es una variable puntero que apunta a variable que contiene un dato de tipo entero llamada punt Char*car:
  • 55. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 55 EJERCICIOS #include <iostream> using namespace std; int main() { int num; cout << "Ingresar: "; cin >> num; cout <<"n"<< "Direccion de memoria de num: " << &num; cout << "n"<< "Creacion de un puntero" << endl; int *punt = &num; cout << "n" << punt; cout << "n" << "Prueba de puntero" << endl; cout << "*punt: " << *punt; *punt = 15; cout <<endl<<"*punt: " << *punt;
  • 56. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 56 cin.get(); cin.get(); return 0; } EJERCICIOS #include <iostream> using namespace std; int main() { char num = 0x98fc3f4a; char *puntero_malo = &num; cout << "int num = 0x98fc3f4ann";
  • 57. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 57 cout << "char *puntero_malo = &numnn"; cout << "*puntero_malo: " << *puntero_malo; cin.get(); return 0; } EJERCICIO #include<conio.h> #include<stdio.h> #include<iostream.h>
  • 58. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 58 void main() {clrscr(); int mat[5]={20,3,8,90,10}; int i, *q; cout<<"Direccion"<<"----"<<"Contenido"<<"n"; for (i=0;i<5;i++) cout<<&mat[i] <<" ---- "<<mat[i]<<"n"; cout<<"nDireccion"<<"----"<<"Contenido"<<"n"; for (i=0;i<5;i++) cout<<mat+i <<" ---- "<<*(mat+i)<<"n"; q=mat; //q=&mat[0]; cout<<"nDireccion"<<"----"<<"Contenido"<<"n"; for (i=0;i<5;i++) {cout<<q <<" ---- "<<*(q)<<"n"; q++; } getch(); }
  • 59. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 59 EJERCICIO #include<conio.h> #include<stdio.h> #include<iomanip.h> struct fecha{int dia; int mes; int anio; }; void Pidefecha(struct fecha &f); void Verfecha(struct fecha f); //void Suma(int d); void Verfecha(struct fecha f) { cout << setfill('0') << setw(2) << f.dia << '/' << setw(2) << f.mes << '/' << setw(4) << f.anio; } void Pidefecha(struct fecha &f)
  • 60. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 60 { char ch; cout << "Escriba la Fecha de la forma dd/mm/aa:"; cin >> f.dia >> ch >> f.mes >> ch >> f.anio; } //crear el main void main() {clrscr(); struct fecha f1; Pidefecha(f1); cout << "nFecha ingresada: "; Verfecha(f1); cout << " nHe terminado.."; getch(); } UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #6
  • 61. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 61 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 27 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Listas simple DEFINICION La forma más simple de estructura dinámica 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 y 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á vacía. El nodo típico para construir listas tiene esta forma: struct nodo { int dato; struct nodo *siguiente; }; Declaraciones de tipos para manejar listas en C typedef struct _nodo { int dato; struct _nodo *siguiente;
  • 62. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 62 } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Lista; tipoNodo es el tipo para declarar nodos, evidentemente. pNodo es el tipo para declarar punteros a un nodo. Lista es el tipo para declarar listas, como puede verse, un puntero a un nodo y una lista son la misma cosa. En realidad, cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado. Operaciones básicas con listas^ Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:  Añadir o insertar elementos.  Buscar o localizar elementos.  Borrar elementos.  Moverse a través 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 vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia. EJEMPLOS
  • 63. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 63 #include<conio.h> #include<stdio.h> #include<string.h> typedef struct agenda { char nombre[25]; char apellido[25]; char fono[18]; char correo[40]; int edad ; } _agenda; void ingresar (_agenda &a, char nom[], char ape[], char fon[], char cor[],int e); void mostrar (_agenda a); void main() { clrscr(); _agenda amigo1,amigo2 ; ingresar(amigo1,"segundo","b","121345678","hted2c@utm.edu.ec",29); ingresar(amigo2,"silvia","delgado","052777665","ertacias@utm.edu.ec",37); mostrar(amigo1); mostrar(amigo2); getch(); } void ingresar (_agenda &a, char nom[],char ape[],char fon[], char cor[],int e){strcpy (a.nombre,nom); strcpy (a.apellido,ape); strcpy (a.fono,fon); strcpy (a.correo,cor);a.edad=e ; }
  • 64. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 64 void mostrar (_agenda a){ _agenda *q=&a;printf("nNombre: %sn Apellido: %sn fono: %sn Correo: %sn edad: %d",q->nombre,q->apellido,q->fono,q- >correo,q->edad); getch() }
  • 65. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 65 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #7 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 03 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Lista Simple Abierta #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> struct control_asistencia{ char est[45]; char nivel[30];
  • 66. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 66 char paralelo; char aula[7]; char hinicio[6]; char hfin[6]; int dia; int mes; int anio; }; void registrar(control_asistencia *c); void imprimir(control_asistencia c); //implementación void registrar(control_asistencia *c) {clrscr(); printf("nIngreso de Informaciónn"); printf("n Ingrese el nombre del estudiante:"); cin>>c->est; printf("n Ingrese el nivel:"); cin>>c->nivel; printf("n Ingrese el paralelo:"); cin>>c->paralelo; printf("n Ingrese el codigo del aula:"); cin>>c->aula; printf("n Ingrese la hora de inicio:"); cin>>c->hinicio; printf("n Ingrese la hora final:"); cin>>c->hfin; char ch;
  • 67. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 67 printf("nIngrese la fecha en formato dd/mm/yyyy"); cin>>c->dia>>ch>>c->mes>>c->anio; cout<<"Ingreso finalizado..."; getch(); } void imprimir(control_asistencia c) {clrscr(); cout<<"Datos Ingresadosn"; cout<<"Estudiante"<<"t"<<"Nivel"<<"Paralelo"<<"t"<<"Aula"<<"t"<<"Hora Incio"<<"t"<<"Hora Fin"<<"t"<<"fecha"; cout<<setw(10)<<c.est<<setw(8)<<c.nivel<<setw(5)<<c.paralelo<<setw(6)<<c.a ula<<setw(6)<<c.hinicio<<setw(6)<<c.hfin<<setw(2)<<c.dia<<"/"<<setw(2)<<c. mes<<"/"<<setw(4)<<c.anio<<endl; } void main() {control_asistencia E; registrar(&E); imprimir(E); getch(); }
  • 68. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 68
  • 69. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 69 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #8 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles , 05 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Lista Simple Abierta EJEMPLO #include <iostream> using namespace std; { typedef struct _Alumnos char nombre[25]; struct _alumnos *sig; } typedef tipoAlumno *pnodo; typedef tipoAlumno *lista; /* tipoAlumno; **********************
  • 70. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 70 struct alumnos { char nombre[25]; struct _alumnos *sig; }; typedef struct_alumnos tipoAlumno; ************************* */ // 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); void almacenar(lista *l, char c[]); { pnodo nodo; nodo=new(pnodo); if(nodo==NULL) { cout<< "n sin espacio de memoria"; return; } //se llena la informacion del nodo strcpy(nodo->nom.c); // procedo hacer los enlaces if !(*l)
  • 71. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 71 { // es el primer nodo que va a ingresar a la lista nodo->sig=NULL; *l=nodo; } EJERCICIO #include <conio.h> #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <string.h> typedef struct _alumnos{ char nom[25]; struct _alumnos *sig; }tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *Lista; //Funciones prototipo void almacenar (Lista *l , char c[]); //paso parametro doblepuntero void ver_lista(Lista l); void almacenar_fin (Lista *l , char c[]); void Almacenar_ord(Lista *l, char c[]); void main() { Lista L1= NULL; // L1 es puntero se inicializa con null la cabecera int op;
  • 72. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 72 char nom[30]; do{ clrscr(); cout<<"n 1. Registrar nombre al inicio"; cout<<"n 2. Registrar nombre al final"; cout <<"n 3. Registro ordenado"; cout<<"n 4. Mostrar Lista"; cout<<"n 5. Salirnn "; do{ cin>>op; switch(op) { case 1: cout<<"nREGISTRO DE NUEVO CLIENTE AL INICIOn"; cout<<"n Ingrese los nombres: "; fflush(stdin); gets(nom); almacenar(&L1,nom); break; case 2: cout<<"nREGISTRO DE NUEVO CLIENTE AL FINALn"; cout<<"n Ingrese los nombres: "; fflush(stdin); gets(nom); almacenar_fin(&L1,nom); break; case 3: cout << "REGISTRO ORDENADOn"; cout <<"nIngrese los nombre: ";fflush(stdin); gets(nom); Almacenar_ord(&L1,"Vargas N"); Almacenar_ord(&L1,"Espinales S"); Almacenar_ord(&L1,"Delgado S"); Almacenar_ord(&L1,"Murillo S"); Almacenar_ord(&L1,"Molina K"); Almacenar_ord(&L1,"Balda J"); break; case 4:
  • 73. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 73 ver_lista(L1); getch(); } }while((op>5)||(op<1)); }while(op!=5); } void almacenar (Lista *l , char c[]) { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"n Sin espacio de memoria " ; return; } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); // Procedo hacer los enlaces if (!*l) {nodo->sig=NULL; //es el primer nodo que va a ingresar a la lista *l=nodo; } } void Almacenar_ord(Lista *l, char c[]) { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"n Sin espacio de memoria " ; return;
  • 74. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 74 } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); if(!*l) { nodo->sig=*l; *l=nodo; } else { pnodo aux = *l; if(strcmp(aux->nom,c)>0) { nodo->sig=*l; *l=nodo; } else { while((aux->sig) && strcmp(aux->sig->nom,c)<0) { aux=aux->sig; } nodo->sig=aux->sig; aux->sig=nodo; } } } void almacenar_fin (Lista *l , char c[])
  • 75. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 75 { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"n Sin espacio de memoria " ; return; } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); // Procedo hacer los enlaces if (!*l) {nodo->sig=*l; //es el primer nodo que va a ingresar a la lista *l=nodo; } else { pnodo aux =*l; while(aux->sig!=NULL) //(aux->sig) aux=aux->sig; aux->sig=nodo; nodo->sig = NULL ; } } void ver_lista(Lista l) { pnodo n=l; //nodo n toma el valor de l while (n) { cout<< "n"<< n->nom; n=n->sig; //para q el puntero siga al otro nodo } getch(); } OPCIONES QUE DESEE
  • 76. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 76 REGISTRO DE NOMBRE AL INICIO REGISTRO DE NOMBRE AL FINAL
  • 77. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 77 REGISTRO ORDENADO
  • 78. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 78 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #9 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes , 10 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Lista Simple Abierta Insertar un elemento en una lista vacía Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL: El proceso es muy simple, bastará con que: 1. nodo->siguiente apunte a NULL. 2. Lista apunte a nodo. Insertar un elemento en la primera posición de una lista
  • 79. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 79 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 vacía, pero siempre podemos, y debemos considerar una lista vacía 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 vacía: El proceso sigue siendo muy sencillo: 1. Hacemos que nodo->siguiente apunte a Lista. 2. Hacemos que Lista apunte a nodo. Insertar un elemento en la última posición de una lista Insertar un elemento en la última posición de una lista Insertar un elemento en la última posición de una lista Este es otro caso especial. Para este caso partiremos de una lista no vacía: El proceso en este caso tampoco es excesivamente complicado: 1. Necesitamos un puntero que señale 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. 2. Hacer que nodo->siguiente sea NULL. 3. Hacer que ultimo->siguiente sea nodo.
  • 80. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 80 Insertar un elemento a continuación 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 continuación del cual insertaremos el nuevo nodo: Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y un puntero al nodo a continuación del que lo insertaremos. El proceso a seguir será: 1. Hacer que nodo->siguiente señale a anterior->siguiente. 2. Hacer que anterior->siguiente señale a nodo. Localizar elementos en una lista abierta ^ Muy a menudo necesitaremos recorrer una lista, ya sea buscando un valor particular o un nodo concreto. Las listas abiertas sólo 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: 1. Asignamos al puntero índice el valor de Lista. 2. Abriremos un bucle que al menos debe tener una condición, que el índice no sea NULL. 3. Dentro del bucle asignaremos al índice el valor del nodo siguiente al índice actual. Por ejemplo, para mostrar todos los valores de los nodos de una lista, podemos usar el siguente bucle en C:
  • 81. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 81 typedef struct _nodo { int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Lista; ... pNodo indice; ... indice = Lista; while(indice) { printf("%dn", indice->dato); indice = indice->siguiente; } ... Supongamos que sólo queremos mostrar los valores hasta que encontremos uno que sea mayor que 100, podemos sustituir el bucle por: ... indice = Lista; while(indice && indice->dato <= 100) { printf("%dn", indice->dato); indice = indice->siguiente; } ... Si analizamos la condición del bucle, tal vez encontremos un posible error: ¿Qué pasaría si ningún valor es mayor que 100, y alcancemos el final de la lista?. Podría pensarse que cuando indice sea NULL, si intentamos acceder a indice- >dato se producirá un error.
  • 82. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 82 En general eso será cierto, no puede accederse a punteros nulos. Pero en este caso, ese acceso está dentro de una condición y forma parte de una expresión "and". Recordemos que cuando se evalúa una expresión "and", se comienza por la izquierda, y la evaluación se abandona cuando una de las expresiones resulta falsa, de modo que la expresión "indice->dato <= 100" nunca se evaluará si indice es NULL. Si hubiéramos escrito la condición al revés, el programa nunca funcionaría bien. Esto es algo muy importante cuando se trabaja con punteros. © Abril de 2001, S Eliminar el primer nodo de una lista abierta Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos un puntero auxiliar, nodo: 1. Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista. 2. Asignamos a Lista la dirección 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, después nos resultaría imposible liberar la memoria que ocupa. Si liberamos la memoria antes de actualizar Lista, perderemos el puntero al segundo nodo. Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará vacía, 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é vacía.
  • 83. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 83 Eliminar un nodo cualquiera de una lista abierta En todos los demás 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. 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. Si el nodo a eliminar es el último, es procedimiento es igualmente válido, ya que anterior pasará a ser el último, y anterior->siguiente valdrá NULL.
  • 84. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 84 UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #10 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles , 12 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Localizar y elimina #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct empleado{char nombre[30]; char apellido[30]; long int cedula;
  • 85. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 85 char departamento[100]; float sueldo; struct empleado *sig; } tipoempleado; typedef tipoempleado *Lista; //tipo de dato puntero para manejar listastypedef tipoempleado *pnodo; //tipo de dato puntero para crear nodos Ahora sumemos a nuestras funciones de ingreso ya realizadas y modificadas las funciones prototipos para buscar y eliminar void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char dep[],float suel); void ingresarFIN(Lista *l, char nom[],char ape[],long int ced, char dep[],float suel); int verificarxcedula(Lista l, char ape[]);void buscarxdpt(Lista l, char dep[]); void buscarxdpt_all(Lista l, char dep[]); void mostrar(Lista l); void eliminar(Lista *l, char ape[]); void eliminar_all(Lista *l); void eliminar_nodos(Lista *l, char ape[]); } Proceso de modificar la funcion para evitar introducir nuevos nodos con la misma información: Debemos pensar en una función buscar que localice a un nodos con una información que no se repita...pensando un poco podemos creer que la información puede contener nombre o apellidos de igual valor.. Pero el valor de cedula no es un dato que se repita. Si cambiamos la función
  • 86. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 86 void verificarxcedula(Lista l, long int ced){pnodo aux=l; while(aux && (aux->cedula!=ced))aux=aux->sig; if(aux)return (1); elsereturn (0); } Esta función solo generar 2 estados1. Si existe =12. No existe =0 Al emplearlo podíamos emplear en las funciones de ingreso de la siguiente forma: La función verificar xceula antes de crear el espacio de memoria con malloc Observen que la funcion fue diseñada para devolver 1 si existe y 0 en caso de no existir void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char dep[],float suel){pnodo nodo;if (verificarxcedula(*l,ced)==1) return; nodo=(pnodo)malloc(sizeof(tipoempleado));//crear nodo solic. al S.O. strcpy(nodo->nombre,nom); strcpy(nodo->apellido,ape); strcpy(nodo->departamento,dep); nodo->cedula=ced;nodo->sueldo=suel;//enlaces de los nodos al inicionodo->sig=*l; *l=nodo; } PROCESO DE ELIMINACION DE NODOS ELIMINAR TODA UNA LISTA
  • 87. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 87 Recorrer cada nodo y en cada pasada debemos ir desplazando la cabecera de la lista para irdesplazándola y poder tomar la dirección de ese primer nodo<<El que se va a eliminar>> Teniendo la siguiente función: void eliminar_all(Lista *l) { pnodo aux; while(*l) { aux=*l; *l=aux->sig; free(aux); ELIMINAR UN NODO ESPECÍFICO Asumimos eliminar nodos de un empleado Tendríamos que localizarlo y luego destruirlo con la funcion free void eliminar(Lista *l, char ape[]) { pnodo nodo, aux;if (!*l) printf("nLista Vacia...nImposible eliminar elementos.."); else { if (strcmp((*l)->apellido,ape)==0){aux=*l; *l=aux->sig;free(aux); printf("nSe elimino elemento %s con exito",ape); }
  • 88. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 88 Else { aux=*l; while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig; if (aux->sig){nodo=aux->sig; aux->sig=nodo->sig; free(nodo); printf("nSe elimino elemento %s con exito",ape); } } } } UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS SEGUNDO SEMESTRE Clase #11
  • 89. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 89 PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes , 17 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán TEMA: Ejercicio de eliminar ELIMINAR TODOS LOS NODOS QUE COINCIDEN CON UN CRITERIO Podríamos usar el código de la funcion de eliminar un nodo especifico, pero debemos procurar realizar nuestra operación hasta llegar al final de los nodos con el fin de explorar todos los nodos void eliminar_nodos(Lista *l, char ape[]) { pnodo nodo, aux, tem=*l; int c=0; while(tem) //nuevo while{if (!*l)printf("nLista Vacia...nImposible eliminar elementos.."); else { if (strcmp((*l)->apellido,ape)==0){aux=*l; *l=aux->sig;free(aux); tem=*l; c++; } Else
  • 90. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 90 { aux=*l; while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig; if (aux->sig) { nodo=aux->sig; aux->sig=nodo->sig; free(nodo); tem=*l; c++; } elsetem=tem->sig; } } }//cierre de nuevo whileif(c==0) printf("no se encontró el nodo con apellido %s",ape); else printf("nSe encontraron %d elementos con apellido %s y fueron eliminados con éxito",c,ape); }
  • 91. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 91
  • 92. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 92
  • 93. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 93
  • 94. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 94 EJERCICIO #include <iostream> #include <conio.h> using namespace std; typedef struct nodo { char nombre[15]; float peso; float talla; int tiempo; struct nodo *sig; }typo_nodo; typedef typo_nodo *lista; typedef typo_nodo *p_nodo; void registrar(lista *l, char nom[], float peso, float talla, int tiempo); void mostrar(lista l);
  • 95. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 95 void insercion_federados(lista *lcal, lista *l); void mostrar_calificados(lista lcal); void eliminacion(lista *l); void registrar(lista *l,char nom[], float peso, float talla, int tiempo) { p_nodo nodo, anterior = *l; nodo = new typo_nodo; strcpy(nodo->nombre,nom); nodo->peso = peso; nodo->talla = talla; nodo->tiempo=tiempo; if (nodo==NULL) { cout <<"n SIN ESPACIO DE MEMORIA"; return ; } else if (!*l !=NULL || anterior->tiempo > tiempo) { nodo->sig=*l;
  • 96. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 96 *l=nodo; } else { while((anterior->sig)&& anterior->sig->tiempo < tiempo) anterior=anterior->sig; nodo->sig=anterior->sig; anterior->sig=nodo; } cin.get(); cin.get(); system("cls"); } void mostrar(lista l) { if(!l) { cout << "*******La lista esta vacia**********"; } else { cout << "NOMBRE PESO TALLA TIEMPO" << endl;
  • 97. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 97 while(l) { cout << l->nombre << "tt" << l->peso << "tt" << l->talla << "tt" << l- >tiempo << endl; l = l->sig; } } cin.get(); cin.get(); system("cls"); } void insercion_federados(lista *lcal, lista *l) { p_nodo lista1 = *l; for(int i = 0;i<2;i++) { p_nodo nodo; nodo = new typo_nodo;
  • 98. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 98 if(nodo == NULL) { cout << "*****NO HAY SUFICIENTE MEMORIA*******"; return; } if(!*l) return; strcpy(nodo->nombre,lista1->nombre); nodo->peso = lista1->peso; nodo->talla = lista1->talla; nodo->tiempo = lista1->tiempo; lista1 = lista1->sig; nodo->sig = *lcal; *lcal = nodo; } } void mostrar_calificados(lista lcal) { if(!lcal) {
  • 99. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 99 cout << "*******La lista esta vacia**********"; } else { cout << "NOMBRE PESO TALLA TIEMPO" << endl; while(lcal) { cout << lcal->nombre << "tt" << lcal->peso << "tt" << lcal->talla << "tt" << lcal->tiempo << endl; lcal = lcal->sig; } } cin.get(); cin.get(); system("cls"); } void eliminacion(lista *l) { p_nodo aux = *l;
  • 100. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 100 int i = 0; if(!*l)return; else { while(i!=2) { aux = *l; *l = aux->sig; delete(aux); i++; } } system("cls"); } int main() { lista l = NULL; lista lcal = NULL; char nombre[15], opc; float peso; float talla;
  • 101. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 101 int tiempo; do { cout << "********Federacion deportiva***********" << endl; cout << "(A) Inscribir" << endl; cout << "(B) mostrar inscritos" << endl; cout << "(C) Insercion de federados"<<endl; cout << "(D) Mostrar federados" << endl; cout << "(E) Elimincacion de los federados de la lista de inscritos" << endl; cout << "(F) Salir " << endl; cout << "Ingresar: "; do { do { opc = toupper(getche()); }while(!isalpha(opc)); }while(opc<'A' || opc>'D'); switch(opc)
  • 102. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 102 { case 'A': { system("cls"); for(int i = 0;i<4;i++) { cout << "*******INSCRIPCIONES*********nn"; cout << "Ingresar nombre: ";cin>>nombre; cout << "Ingresar peso: ";cin >> peso; cout << "Ingresar talla: ";cin >> talla; cout << "Ingresar tiempo: ";cin >> tiempo; registrar(&l,nombre,peso,talla,tiempo); } break; } case 'B': { system("cls"); cout << "Mostrando lista de inscritos para las olimpiadas" << endl << endl; mostrar(l);break; } case 'C': {
  • 103. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 103 system("cls"); insercion_federados(&lcal,&l); break; } case 'D': { system("cls"); cout << "Mostrando lista de federados" << endl << endl; mostrar_calificados(lcal); break; } case 'E': { system("cls"); eliminacion(&l); } } }while(opc != 'F'); return 0; } OPCIONES QUE DESEE
  • 104. FACULTAD CIENCIAS INFORMATICA HENRY JAVIER CEDEÑO FLORES 104