Alexander estructura de datos
Upcoming SlideShare
Loading in...5
×
 

Alexander estructura de datos

on

  • 369 views

 

Statistics

Views

Total Views
369
Views on SlideShare
366
Embed Views
3

Actions

Likes
0
Downloads
12
Comments
0

1 Embed 3

http://estructuradatos3a.blogspot.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Alexander estructura de datos Alexander estructura de datos Document Transcript

    • Universidad Técnica de Manabí Facultad De Ciencias Informática ESTRUCTURA DE DATOS ING. CRISTHIAN TORRES SEGUNDO “B” PORTAFOLIO DE ESTRUCTURA DE DATOS. Elaborado por: HERNAN ALEXANDER CEDEÑO QUIJIJE Periodo: Abril ~ Septiembre 2013
    • UNIVERSIDAD TÉCNICA DE MANABÍ MISIÓN 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 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 DE CIENCIAS INFORMATICA MISIÓ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. VISIÓN: 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.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS INDICE DE CONENIDOS.  SYLLABUS  PRONTUARIO DEL CURSO  CARTA DE PRESENTACIÓN  AUTORRETRATO  DIARIO META COGNITO  ARTICULOS DE REVISTA PROFESIONALES  TRABAJO DE EJECUCIÓN  TAREAS  MATERIALES RELACIONADOS CON LA CLASE.  ANEXOS  RESUMEN DE CIERRE
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS SYLLABUS I.-INFORMACIÓN GENERAL 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. II.- RUTA FORMATIVA a.- DEL PERFIL DE EGRESO: Competencia/Resultado de Aprendizaje: 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 modo texto, tomando como referencia aplicaciones en el campo general de otras carreras.
    • Resultados del Aprendizaje (Objetivos Específicos) Formas 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 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
    • 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
    • IV.- PROGRAMACIÓN 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
    •  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. 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.
    •  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. 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.
    • 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  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
    • 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
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS PROGRAMA CODIFICACIÓN DEL CURSO: Título del curso: estructura de dato Número créditos: cinco (5) créditos Total de Horas del Curso: 80 horas PRONTUARIO I. INFORMACIÓN GENERAL II. DESCRIPCIÓN DEL CURSO 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 modo texto, tomando como Referencia aplicaciones en el campo general de otras carreras.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS CARTA DE PRESENTACIÓN Este portafolio presenta mi trayectoria en el curso de: ESTRUCTURA DE DATO, este curso tuvo como objetivos desarrollar las destrezas de. Las habilidades y agilidad. Durante este semestre pude conocer sobre. Las estructuras anidadas, funciones, punteros, listas simples, pilas, y colas, listas doblemente enlazadas, arboles abb, arboles avl. Las técnicas presentadas por el docente me ayudaron a mejorar como futuro profesional de la Informática.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS AUTORRETRATO Mi nombre es Cedeño Quijije Hernan Alexander. Soy estudiante de la asignatura de ESTRUCTURA DE DATO, actualmente curso el segundo semestre en la Facultad de Ciencias Informáticas de la Universidad Técnica de Manabí. Soy una persona responsable, seguro de sí mismo y organizad. Mis metas y objetivo son de convertirme en un profesional de la Ingeniería en Sistemas Informáticos.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase: #1 Fecha: 06 Mayo 2013. Tema: APLICACIÓN DE LA PROGRAMACION BÁSICA INTRODUCCIÓN. En la programación existen problemas en los cuales se requiere operar con una colección de datos. Por ejemplo, si requerimos almacenar información de los empleados de una empresa para luego manipular esta información, si requerimos simular los clientes que son atendidos en un supermercado, etc. En estos casos necesitamos agrupar estos objetos para luego trabajar con ellos, en conclusión, una estructura de datos es una manera de disponer de una colección de datos, así como, de la forma en cómo van a ser manipulados, , esto es, saber cómo se agregarán nuevos datos, cómo se accederán a estos datos, cómo se eliminan datos, etc.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase: #2 Fecha: 08 Mayo 2013. Tema: ESTRUCTURA Su sintaxis es: struct nombre { tipo miembro1; tipo miembro2; ... } identificador1, identificador2, ...; Nombre es el nombre de la estructura y los identificadores corresponden a variables del tipo de la estructura. Tanto el nombre como las variables pueden no existir. Los miembros son las componentes de la estructura. La forma de declarar variables del tipo definido en la estructura es: struct nombre identificador1, identificador2, ...; Se admite el uso de estructuras dentro de la declaración de otra estructura ya que los miembros, en general, pueden tener cualquier tipo. struct fecha { int mes; int día; int año; }; /* Estructura fecha */ struct cuenta { int cuen_no; char cuen_tipo; float saldo; struct fecha ultimo_pago; } cliente[100]; /* Estructura cuenta y declaración */ struct cuenta clientes[20]; clientes[0].cuen_no = cliente[99].ultimo_pago.anio;
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Variable es el espacio de memoria. #include <iostream.h> #include <string.h> #include <conio.h> Struct tnotas{ char nom_est[30]; float calif ; }; Void main() { Struct tnotas c; c.calif=7.5; el . Identifica que se va a acceder a la estructura y luego se escribe un nombre que se va a dar strcpy(c.nom_est,”Juan Jose Flores”); getch(); Nom_est calif Juan Jose Flores 7.5
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase: #3 Fecha: 13 Mayo 2013. Estructura que permita almacenar nombre, apellidos, sueldo, ciudad. Departamento de empleados de una fábrica.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase #4 Fecha: 15 mayo 2013 ¿QUÉ ES UNA ESTRUCTURA? Una estructura es un grupo de variables los cuales pueden ser de diferentes tipos sostenidos. Asignar:  En cualquier lugar del programa.  Usa el = en algunos caso como string, se usa strcy, strcat.  Los mecanismos son d argumento get, printf.  Solo es posible cuando se crea la variable.  Se usa el = y la {}; detallando cada elemento y separado con (,) , se debe tener en cuenta al ser usado en estructura por la variable de tipo de dato. cabeceras.h funciones prototipos tipos de datos main implemenación por prototipo AMBITO GLOBAL AMBITO LOCAL
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 5 Fecha: 20 mayo 2013 EJERCICIO DE ESTRUCTURA DE DATO #include <conio.h> #include <stdio.h> #include <iostream.h> #include <iomanip.h> //creacion de la estructura control_asistencia struct control_asistencia{ char est[30]; char nivel[30]; char aula[]; char hora_inicio[30]; char hora_fin[30]; int dia; int mes; int anio; }; //Se puede enviar un array de estructura de datos //pasamos unas etructura normal, si se envia paso de parametros //por valor loque se efetue en la variable no se devuelve a la variable global void registrar(struct control_asistencia &c); void imprimir(struct control_asistencia c); //implementacion del programa void registrar (control_asistencia &c) {clrscr ();
    • printf("nIngreso de la informacion"); printf("n Ingrese el nombre del estudiante"); cin>>c.est; printf("n ingrese el paralelo"); cin>>c.nivel; printf ("n ingrese el codigo de aula del estudiante"); cin>>c.aula; printf ("n ingrese la hora de inicio "); cin>>c.hora_inicio; printf("n ingrese hora de salida"); cin>>c.hora_fin; char ch; printf("n ingrese la fecha en el formato dd/mm/anio"); cin>>c.dia>>ch>>c.mes>>ch>>c.anio; cout <<"*******....ingreso finalizado...********"; } void imprimir (control_asistencia c) { cout<<"ndatos ingresados"; cout<<"nnombre"<<"t"<<"nivel"<<"t"<<"paralelo"<<"t"<<"aula"<<"t"<<"hora inicio"<<"t"<<"hora final"<<"t"<<"fecha"; cout<<setw(9)<<c.est<<setw(12)<<c.aula<<setw(1)<<c.nivel<<setw(6)<<c.hora_inicio<<setw(6)<<c.hora_fin<<setw(2) <<c.dia<<"/"<<setw(2)<<c.mes<<"/"<<setw(4)<<c.anio<<endl; } void main() {control_asistencia e; registrar(e); imprimir(e); getch(); }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 6 Fecha: 20 mayo 2013. Tema: FUNCIONES Una función es un módulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque. La forma general de una función es: Tipodato Nomfun (parametros) { cuerpo de instrucciones; return [dato,var,expresion]; }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 7 Fecha: 22 mayo 2013 EJERCICIO
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS EJERCICIO: z
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 8 Fecha: 27 mayo 2013 Tema: Estructuras anidadas Una estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. EJEMPLO: Crear un programa para mostrar fecha actual de una persona . Se crea estructura : (día,mes,año)
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Para sacarle a mat cada una de las posiciones a direccion de memoria donde está el contenido
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Una cadena de caracteres es un array de caracteres. La forma de definir un puntero
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 9 Fecha: 29 mayo 2013.
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 10 Fecha: 03 junio 2013 #include <conio.h> #include <stdio.h> #include <iostream.h> #include <iomanip.h> //creacion de la estructura control_asistencia struct control_asistencia{ char est[30]; char nivel[30]; char aula[]; char hora_inicio[30]; char hora_fin[30]; int dia; int mes; int anio; }; //Se puede enviar un array de estructura de datos //pasamos unas etructura normal, si se envia paso de parametros //por valor loque se efetue en la variable no se devuelve a la variable global void registrar(struct control_asistencia &c); void imprimir(struct control_asistencia c); //implementacion del programa
    • void registrar (control_asistencia &c) {clrscr (); printf("nIngreso de la informacion"); printf("n Ingrese el nombre del estudiante"); cin>>c.est; printf("n ingrese el paralelo"); cin>>c.nivel; printf ("n ingrese el codigo de aula del estudiante"); cin>>c.aula; printf ("n ingrese la hora de inicio "); cin>>c.hora_inicio; printf("n ingrese hora de salida"); cin>>c.hora_fin; char ch; printf("n ingrese la fecha en el formato dd/mm/anio"); cin>>c.dia>>ch>>c.mes>>ch>>c.anio; cout <<"*******....ingreso finalizado...********"; } void imprimir (control_asistencia c) { cout<<"ndatos ingresados"; cout<<"nnombre"<<"t"<<"nivel"<<"t"<<"paralelo"<<"t"<<"aula"<<"t"<<"hora inicio"<<"t"<<"hora final"<<"t"<<"fecha"; cout<<setw(9)<<c.est<<setw(12)<<c.aula<<setw(1)<<c.nivel<<setw(6)<<c.hora_inicio<<setw(6)<<c.hora_fin<<setw(2) <<c.dia<<"/"<<setw(2)<<c.mes<<"/"<<setw(4)<<c.anio<<endl; } void main() {control_asistencia e; registrar(e); imprimir(e);
    • getch(); } /*El mismo ejecicio anterior usando punteros */ #include <conio.h> #include <stdio.h> #include <iostream.h> #include <iomanip.h> //creacion de la estructura control_asistencia struct control_asistencia{ char est[30]; char nivel[30]; char aula[]; char hora_inicio[30]; char hora_fin[30]; int dia; int mes; int anio; }; //Se puede enviar un array de estructura de datos
    • //pasamos unas etructura normal, si se envia paso de parametros //por valor loque se efetue en la variable no se devuelve a la variable global void registrar(struct control_asistencia *c); void imprimir(struct control_asistencia c); //implementacion del programa void registrar (control_asistencia *c) {clrscr (); printf("nIngreso de la informacion"); printf("n Ingrese el nombre del estudiante"); cin>>c->est; printf("n ingrese el paralelo"); cin>>c->nivel; printf ("n ingrese el codigo de aula del estudiante"); cin>>c->aula; printf ("n ingrese la hora de inicio "); cin>>c->hora_inicio; printf("n ingrese hora de salida"); cin>>c->hora_fin; char ch; printf("n ingrese la fecha en el formato dd/mm/anio"); cin>>c->dia>>ch>>c->mes>>ch>>c->anio; cout <<"*******....ingreso finalizado...********"; void imprimir (control_asistencia c) { cout<<"ndatos ingresados"; cout<<"nnombre"<<"t"<<"nivel"<<"t"<<"paralelo"<<"t"<<"hora inicio"<<"t"<<"hora final"<<"t"<<"fecha" cout<<setw(16)<<c.est<<setw(5)<<c.aula<<setw(8)<<c.nivel<<setw(6)<<c.hora_inicio<<setw(6)<<c.hora_fin<<setw(2 )<<c.dia<<"/"<<setw(2)<<c.mes<<"/"<<setw(4)<<c.anio<<endl; } void main()
    • {control_asistencia e; registrar(&e); imprimir(e); getch(); } /*El mismo ejecicio anterior mediante asignacion a la estructura verdadera */ #include <conio.h> #include <stdio.h> #include <iostream.h> #include <iomanip.h> #include <string.h> //creacion de la estructura control_asistencia struct control_asistencia{ char est[30]; char nivel[30]; char aula[]; char paralelo; char hora_inicio[30]; char hora_fin[30];
    • int dia; int mes; int anio; }; //Se puede enviar un array de estructura de datos //pasamos unas etructura normal, si se envia paso de parametros //por valor loque se efetue en la variable no se devuelve a la variable global void registrar(struct control_asistencia *c,char e[],char n[],char p,char a[],char hi[],char hf[],int d,int m,int anio); void imprimir(struct control_asistencia c); //implementacion del programa void registrar (control_asistencia *c,char e[],char n[],char p,char a[],char hi[],char hf[],int d,int m,int anio) {clrscr (); strcpy(c->est,e); strcpy(c->nivel,n); c->paralelo=p; strcpy(c->aula,a); strcpy(c->hora_inicio,hi); strcpy(c->hora_fin,hf); c->dia=d; c->mes=m; c->anio=anio; cout <<"*******....ingreso finalizado...********"; } void imprimir (control_asistencia c) { cout<<"ndatos ingresados"; cout<<"nnombre"<<"t"<<"nivel"<<"t"<<"paralelo"<<"t"<<"hora inicio"<<"t"<<"hora final"<<"t"<<"fecha";
    • cout<<"n"<<c.est<<"t"<<c.nivel<<"t"<<c.paralelo<<"t"<<"t"<<c.hora_inicio<<"t"<<"t"<<c.hora_fin<<"t"<<" t"<<c.dia<<"/"<<c.mes<<"/"<<c.anio<<endl; } void main() {control_asistencia e; registrar(&e,"kelvin","tecero",'A',"Fci-102","14:00","17:00",3,6,2013); imprimir(e); getch(); }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 11 Fecha: 05 mayo 2013 ESTRUCTURAS ANIDADAS #include<iostream.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct _alumnos{ char nom[25]; struct _alumnos *sig; } tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *Lista; //funciones prototipos void almacenar (Lista *l , char c[]); void ver_lista(Lista l); void main() { Lista L1=NULL; int op;
    • do{ prinf almacenar(&L1,"ANA MARIA"); almacnar (&L,"CARLOS BRAVO") ver_lista(L1); } void almacenar(Lista *l, char c[]); { pnodo nodo; nodo=(pnodo)malloc(sizeof(tipoAlumno)); 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) { //es el primer nodo que va a ingresar a la lista nodo ->sig=NULL; *l=nodo; }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 12 Fecha: 10 mayo 2013
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 13 Fecha: 12 mayo 2013 LISTAS ENLAZADAS SIMPLES Una lista de enlace simple es una lista enlazada de nodos, donde cada nodo tiene un único campo de enlace. Una variable de referencia contiene una referencia al primer nodo, cada nodo (excepto el último) enlaza con el nodo siguiente, y el enlace del último nodo contiene null para indicar el final de la lista. Aunque normalmente a la variable de referencia se la suele llamar top, se puede elegir cualquier nombre. A continuación se presentan dos ejemplos para representar gráficamente a una lista enlazada simple: Manejo de la Memoria: El almacenamiento de los elementos de las listas no es consecutivo como lo es en los arreglos:
    • A continuación revisaremos los algoritmos de inserción de nodos en una lista enlazada simple, ver presentación. Ahora conocemos como se crean nodos y se insertan en una posición determinada de la lista enlazándose con sus nodos adyacentes. Taller: – Inserción ordenada – Concatenación e Inversión – Eliminación de nodos #include<conio.h> #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include <string.h> typedef struct _alumnos{ char nom[30];
    • struct _alumnos *sig; }tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *Lista; //funciones prototipos void almacenar(Lista *l, char c[]); void ver_lista(Lista l); void main() {Lista L1=NULL; int op; do{ clrscr(); printf("n1. Registrar Nombre"); printf("n2. Mostrar Lista"); printf("n3. Salir"); do{ cin>>op; }while ((op>3) ||(op<1)); if (op==1) { char nombre[25]; clrscr(); printf("nREGISTRO DE NUEVO CLIENTEn"); printf("n Ingrese un Nombre:"); fflush(stdin); gets(nombre); almacenar(&L1,nombre); }
    • else if (op==2) {clrscr(); ver_lista(L1); } }while(op!=3); } void almacenar(Lista *l, char c[]) {pnodo nodo; nodo=(pnodo)malloc(sizeof(tipoAlumno)); 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) {//es el primer nodo que va a ingresar a la lista nodo->sig=NULL; *l=nodo; } else {nodo->sig=*l; *l=nodo; } }
    • EJERCICIO: //ahora se cambiara para ingresar al final de la lista #include<conio.h> #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include <string.h> typedef struct _alumnos{ char nom[30]; struct _alumnos *sig; }tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *Lista; //funciones prototipos void almacenar(Lista *l, char c[]); void ver_lista(Lista l); void almacenar_fin(Lista *l, char c[]);
    • void main() {Lista L1=NULL; int op; do{ clrscr(); printf("n1. Registrar Nombre"); printf("n2 registrar al final"); printf("n3. Mostrar Lista"); printf("n4. Salir"); do{ cin>>op; }while ((op>4) ||(op<1)); if (op<=2) { char nombre[25]; clrscr(); printf("nREGISTRO DE NUEVO CLIENTEn"); printf("n Ingrese un Nombre:"); fflush(stdin); gets(nombre); if(op==1) almacenar(&L1,nombre); else almacenar_fin(&L1,nombre); } else if (op==3) {clrscr(); ver_lista(L1); }
    • }while(op!=4); } void almacenar(Lista *l, char c[]) {pnodo nodo; nodo=(pnodo)malloc(sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"n Sin espacio de memoria"; return; } //Se llena la informacion del nodo strcpy(nodo->nom,c); //Procedo hacer los enlaces // (1)se simplifico el codigo anterior nodo->sig=*l; *l=nodo; } void ver_lista(Lista l) {pnodo n=l; while (n) {cout<<"n"<<n->nom; n=n->sig; } getch(); }
    • void almacenar_fin(Lista *l, char c[]) {pnodo nodo; nodo=(pnodo)malloc(sizeof(tipoAlumno)); 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){ nodo->sig=*l; *l=nodo;} else { pnodo aux=*l; while (aux->sig!=NULL)//(aux->sig) { aux=aux->sig;} aux->sig=nodo; nodo->sig=NULL; } }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Clase # 14 Fecha: 17 mayo 2013 EJERCICIO: include<iostream.h> #include<string.h> #include<conio.h> #include<stdio.h> #include<stdlib.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[]); void ver_lista(lista l); void almacenar_fin(lista *l, char c[]); void ordenar(lista *l, char c[]); void eliminar(lista *l,char c[]); void eliminar_all(lista *l); void main () {clrscr(); lista l1=NULL; int op;
    • char nombre[25]; do{ clrscr(); printf("n !****************************************!"); printf("n 1.REGISTRAR NOMBRE AL INICIO"); printf("n 2.REGISTRAR NOMBRE AL FINAL"); printf("n 3.MOSTRAR LISTA"); printf("n 4.INGRESAR ORDENADA LA LISTA"); printf("n 5.ELIMINAR UN ELEMENTO CUALQUIERA"); printf("n 6.ELIMINAR TODA LA LISTA"); printf("n 7.SALIR"); printf("n !*****************************************!n"); do{ cin>>op; }while ((op>7) || (op<1)); if (op<=2) { clrscr(); printf ("n****REGISTRO NUEVO CLIENTE****n"); printf ("n*****Ingrese un nombre********n"); fflush(stdin); cin>>nombre; if(op==1) almacenar (&l1,nombre); else almacenar_fin(&l1,nombre); } else if(op==3) {clrscr(); ver_lista(l1); }
    • else if (op==4) { clrscr(); printf ("n****REGISTRO NUEVO CLIENTE****n"); printf ("n*****Ingrese un nombre********n"); fflush(stdin); cin>>nombre; ordenar(&l1,nombre); } else if(op==5) { clrscr(); printf ("n****BORRAR NODO****n"); printf ("n*****Ingrese el nombre a eliminar********n"); scanf("n%s",nombre); eliminar(&l1,nombre); } else if(op==6) { clrscr(); eliminar_all(&l1); printf ("n*****Lista borrada con exito********"); getch(); } } while (op!=7); } void almacenar(lista *l, char c[]) {pnodo nodo; nodo=(pnodo) malloc(sizeof(tipoAlumno));
    • if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } //LENO LA INFORMACION DLE NODO strcpy (nodo->nom,c); //PROCESO HACER LOS ENELACES /* if(!*l) de las dos formas es lo mismo asi q mejor se elimina los casos {//es e; [rimer nodo que va ingresra a la lista nodo->siguiente=NULL; *l=nodo; } else {*/ nodo->sig=*l; *l=nodo; } void almacenar_fin(lista *l, char c[]) {pnodo nodo; nodo=(pnodo) malloc(sizeof(tipoAlumno)); if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } strcpy (nodo->nom,c); //PROCESO HACER LOS ENELACES if(!*l) {nodo->sig=*l; *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) { if(!l) { cout<<"**********************LA LISTA ESTA VACIA********************"; } else { while (l) { cout<<"n" <<l->nom; l=l->sig; } } getch(); } void ordenar(lista *l, char c[]) { pnodo aux=*l,nodo; nodo=(pnodo) malloc(sizeof(tipoAlumno));
    • if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } //LENO LA INFORMACION DEL NODO strcpy (nodo->nom,c); //PROCESO HACER LOS ENELACES */ if(!*l) //de las dos formas es lo mismo asi q mejor se elimina los casos { nodo->sig=*l; *l=nodo; } else 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; } getch(); } void eliminar(lista *l,char c[]) { pnodo nodo,aux; if(!*l) printf("nLista vacia....nImposible eliminar elementos");
    • else { if(strcmp((*l)->nom,c)==0) { aux=*l; *l=aux->sig; free(aux); } else { aux=*l; while((aux->sig)&&(strcmp(aux->sig->nom,c))!= 0) aux=aux->sig; if(aux->sig) { nodo=aux->sig; aux->sig=nodo->sig; free(nodo); printf("nSe elimino elemento %s con exito",c); getch(); } } } } void eliminar_all(lista *l) {pnodo aux; while(*l) { aux=*l; *l=aux->sig; free(aux); } }
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS TAREA#3 Estructuras Anidadas Estructuras Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aqui hay ejemplo de la declaracion de una estructura: struct mystruct { int int_member; double double_member; char string_member[25]; } variable; "variable" es una instancia de "mystruct" y no es necesario ponerla aquí. Se podría omitir de la declaración de "mystruct" y más tarde declararla usando: struct mystruct variable; También es una práctica muy común asignarle un alias o sinónimo al nombre de la estructura, para evitar el tener que poner "struct mystruct" cada vez. C nos permite la posibilidad de hacer esto usando la palabra clave typedef, lo que crea un alias a un tipo: typedef struct { ...
    • } Mystruct; La estructura misma no tiene nombre (por la ausencia de nombre en la primera línea), pero tiene de alias "Mystruct". Entonces se puede usar así: Mystruct variable; Note que es una convención, y una buena costumbre usar mayúscula en la primera letra de un sinónimo de tipo. De todos modos lo importante es darle algún identificador para poder hacer referencia a la estructura: podríamos tener una estructura de datos recursiva de algún tipo. Ejemplo de una estructura: #include <stdio.h> #include <string.h> /* Definimos una estructura para cds */ struct cd { char titulo[30]; char artista[25]; float precio; int canciones; } Cd1 = { /* inicializamos la estructura Cd1 creada con sus valores * usando las definiciones iníciales*/ "Canciones Bebe", /* titulo */ "Pinocho", /* artista */ 12.50, /* precio */ 16 /* total canciones */ }; Estructuras Anidadas Una estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. Ya que se trabajan con datos en estructuras si definimos un tipo de dato en una estructura y necesitamos definir ese dato dentro de otra estructura solamente se llama el dato de la estructura anterior. struct empleado /* creamos una estructura llamado empleado*/ { char nombre_empleado[25]; char direccion[25]; char ciudad[20]; char provincia[20]; long int codigo_postal; double salario; }; /* las estructuras necesitan punto y coma (;) al final */ Y luego necesitamos una nueva estructura en nuestro programa: struct cliente /* creamos una estructura llamada cliente */ { char nombre_cliente[25]; char direccion[25]; char ciudad[20]; char provincia[20]; long int codigo_postal; double saldo;
    • }; /* las estructuras necesitan punto y coma (;) al final */ Podemos ver que tenemos datos muy similares en nuestras estructuras, así que podemos crear una sola estructura llamadainfopersona con estos datos idénticos: struct infopersona /* creamos la estructura que contiene datos parecidos */ { char direccion[25]; char ciudad[20]; char provincia[20]; long int codigo_postal; }; /* las estructuras necesitan punto y coma (;) al final */ También está permitido anidar estructuras, con lo cual se pueden conseguir superestructuras muy elaboradas. Ejemplo: struct stDireccion { char Calle[64]; int Portal; int Piso; char Puerta[3]; char CodigoPostal[6]; char Poblacion[32]; }; struct stPersona { struct stNombre { char Nombre[32]; char Apellidos[64]; } NombreCompleto; stDireccion Direccion; char Telefono[10]; }; En general, no es una práctica corriente definir estructuras dentro de estructuras, ya que tienen un ámbito local, y para acceder a ellas se necesita hacer referencia a la estructura más externa. Por ejemplo para declarar un objeto del tipo stNombre hay que utilizar el operador de acceso (::): stPersona::stNombre NombreAuxiliar; Sin embargo para declarar un objeto de tipo stDireccion basta con declararla: stDireccion DireccionAuxiliar;
    • UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMATICA CARRERA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Crear una función que permita eliminar un nodo de las lista de nombres, realizado en clase. Además debe implementar una función que elimine toda la lista. Incorpore en el menú las dos opciones y ejecute el programa. Elabore 1 pdf con todo el código y las capturas de pantallas de las ejecuciones. #include<iostream.h> #include<string.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> CODIFICACION typedef struct _alumnos{ char nom[25]; struct _alumnos *sig; }tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *lista; //funciones prototipo
    • void almacenar(lista *l, char c[]); void ver_lista(lista l); void almacenar_fin(lista *l, char c[]); void ordenar(lista *l, char c[]); void eliminar(lista *l,char c[]); void eliminar_all(lista *l); void main () {clrscr(); lista l1=NULL; int op; char nombre[25]; do{ clrscr(); printf("n !****************************************!"); printf("n 1.REGISTRAR NOMBRE AL INICIO"); printf("n 2.REGISTRAR NOMBRE AL FINAL"); printf("n 3.MOSTRAR LISTA"); printf("n 4.INGRESAR ORDENADA LA LISTA"); printf("n 5.ELIMINAR UN ELEMENTO CUALQUIERA"); printf("n 6.ELIMINAR TODA LA LISTA"); printf("n 7.SALIR"); printf("n !*****************************************!n"); do{ cin>>op; }while ((op>7) || (op<1)); if (op<=2) { clrscr(); printf ("n****REGISTRO NUEVO CLIENTE****n"); printf ("n*****Ingrese un nombre********n"); fflush(stdin); cin>>nombre; if(op==1) almacenar (&l1,nombre); else almacenar_fin(&l1,nombre); } else if(op==3) {clrscr(); ver_lista(l1); } else if (op==4) { clrscr(); printf ("n****REGISTRO NUEVO CLIENTE****n"); printf ("n*****Ingrese un nombre********n"); fflush(stdin); cin>>nombre; ordenar(&l1,nombre); } else if(op==5) { clrscr(); printf ("n****BORRAR NODO****n"); printf ("n*****Ingrese el nombre a eliminar********n"); scanf("n%s",nombre);
    • eliminar(&l1,nombre); } else if(op==6) { clrscr(); eliminar_all(&l1); printf ("n*****Lista borrada con exito********"); getch(); } } while (op!=7); } void almacenar(lista *l, char c[]) {pnodo nodo; nodo=(pnodo) malloc(sizeof(tipoAlumno)); if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } //LENO LA INFORMACION DLE NODO strcpy (nodo->nom,c);
    • //PROCESO HACER LOS ENELACES /* if(!*l) de las dos formas es lo mismo asi q mejor se elimina los casos {//es e; [rimer nodo que va ingresra a la lista nodo- >siguiente=NULL; *l=nodo; } else {*/ nodo->sig=*l; *l=nodo; } void almacenar_fin(lista *l, char c[]) {pnodo nodo; nodo=(pnodo) malloc(sizeof(tipoAlumno)); if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } strcpy (nodo->nom,c); //PROCESO HACER LOS ENELACES if(!*l) {nodo->sig=*l; *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) { if(!l) { cout<<"**********************LA LISTA ESTA VACIA********************"; } else { while (l) { cout<<"n" <<l->nom; l=l->sig; } } getch(); } void ordenar(lista *l, char c[]) { pnodo aux=*l,nodo;
    • nodo=(pnodo) malloc(sizeof(tipoAlumno)); if (nodo==NULL) {cout <<"n SIN ESPACIO DE MEMORIA"; return ; } //LENO LA INFORMACION DEL NODO strcpy (nodo->nom,c); //PROCESO HACER LOS ENELACES */ if(!*l) //de las dos formas es lo mismo asi q mejor se elimina los casos { nodo->sig=*l; *l=nodo; } else 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; } getch(); } void eliminar(lista *l,char c[]) { pnodo nodo,aux; if(!*l) printf("nLista vacia....nImposible eliminar elementos"); else { if(strcmp((*l)->nom,c)==0) { aux=*l; *l=aux->sig; free(aux); } else { aux=*l; while((aux->sig)&&(strcmp(aux->sig->nom,c))!= 0) aux=aux->sig; if(aux->sig) { nodo=aux->sig; aux->sig=nodo->sig; free(nodo); printf("nSe elimino elemento %s con exito",c); getch(); } }
    • } } void eliminar_all(lista *l) {pnodo aux; while(*l) { aux=*l; *l=aux->sig; free(aux); } CAPTURAS DE PANTALLA Siendo esta la captura de pantalla número 1 muestra el menu de nuestro programa con la opción 1. Captura numero 2 muestra la solicitud de la primera opción que es ingresar el nombre al inicio. Se ha ingresado el nombre “alexander ”.
    • La captura de pantalla 3, 4 muestra el menú con la opción 2 ingresar al final y la solicitud del nombre.
    • La captura 5, 6 muestran el menu con la opcion 3 que muestra la lista y a continuación la lista.
    • La captura 7 muestra el menu con la opcion 4 que es ingresar de forma ordenada. Las capturas 8 ,9, 10 muestran la peticion de la funcion ingreso ordenado de los nombre miguel, juan y kelvin.
    • Captura 11 muestra la lista ordenada con todos los nombre ingresados.
    • Captura 15: muestra el menu con la opcion mostrar lista. Captura 16: Muestra la lista, se denota la eliminacion del nodo “miguel”. Captura 17: Muestra el menu con la opcion eliminar toda la lista. Captura 18: Muestra el mensaje de confirmacion de lista borrada. Captura 19: Muestra mensaje de “LA LISTA ESTA VACIA”.