Software Submódulo I ••• IMPLEMENTA SISTEMAS CON LA APLICACIÓN DE LOS DIFERENTES TIPOS DE ESTRUCTURAS DE DATOS ••• Guía Profesional elaborada por: Oscar David Bustos Torres DOCENTE DEL PLANTEL XOCHIMILCO GESTIÓN DITORIAL Clemente Mora González Jefe de Departamento de Fomento Editorial Leticia Mejia García Coordinadora de Fomento Editorial Miguel Antonio González Vidales Gestión Administrativa Ulises Ramírez Hernández Coordinador de Diseño Gráfico DIRECCIÓN GENERAL Av. Panamá #199 Esquina con Buenos Aires. Col. Cuauhtémoc Sur Tels. 01 (686) 9 05 56 00 al 08 Correo Electrónico: [email protected] Página Web: www.cecytebc.edu.mx CICLO ESCOLAR 2011-2 Prohibida la reproducción total o parcial de esta obra incluido el diseño tipográfico y de portada por cualquier medio, electrónico o mecánico, sin el consentimiento por escrito del editor. Nota: Al personal Docente interesado en enriquecer el contenido del presente documento, le agradecemos hacernos llegar sus comentarios o aportaciones a los siguientes correos: [email protected] [email protected] TORIO DIREC José Guadalupe Osuna Millán Gobernador del Estado de Baja California Javier Santillán Pérez Secretario de Educación y Bienestar Social del Estado CECYTE BC Héctor Montenegro Espinoza Director General Olga Patricia Romero Cázares Directora de Planeación Argentina López Bueno Directora de Vinculación Jesús Gómez Espinoza Director Académico Ricardo Vargas Ramírez Director de Administración y Finanzas Alberto Caro Espino Jefe del Departamento de Docencia MUNICIPIO DE MEXICALI Cristina de los Ángeles Cardona Ramírez Directora del Plantel Los Pinos Carlos Zamora Serrano Director del Plantel Bella Vista Jesús Ramón Salazar Trillas Director del Plantel Xochimilco Rodolfo Rodríguez Guillén Director del Plantel Compuertas Humberto Ignacio Ibarra Velazco Director del Plantel Misiones Francisco Javier Cabanillas García Director del Plantel Vicente Guerrero Cristopher Diaz Rivera Director del Plantel San Felipe MUNICIPIO DE TIJUANA Martha Xóchitl López Félix Directora del Plantel El Florido María de los Ángeles Martínez Villegas Directora del Plantel Las Águilas Jorge Ernesto Torres Moreno Director del Plantel Zona Río Rigoberto Gerónimo González Ramos Director del Plantel Villa del Sol Joel Chacón Rodríguez Director del Plantel El Pacífico Efraín Castillo Sarabia Director del Plantel El Niño Benito Andrés Chagoya Mortera Director del Plantel Cachanilla Gabriel Valdéz Manjarrez Director del Plantel Altiplano Juan Martín Alcibia Martínez Director del Plantel la Presa MUNICIPIO DE ENSENADA Alejandro Mungarro Jacinto Director del Plantel Ensenada Emilio Rios Macias Director del Plantel San Quintín MUNICIPIO DE ROSARITO Manuel Ignacio Cota Meza Director del Plantel Primo Tapia Héctor Rafael Castillo Barba Director del Plantel Rosarito Bicentenario MUNICIPIO DE TECATE Oscar Ambríz Salinas Director del Plantel Tecate MENSAJE DEL GOBERNADOR DEL ESTADO Jóvenes Estudiantes de CECYTE BC: La educación es un valuarte que deben apreciar durante su estancia en el Colegio de Estudios Científicos y Tecnológicos del Estado de Baja California, dado la formación y calidad educativa que les ofrece la Institución y sus maestros. Por ello, asuman el compromiso que el Gobierno del Estado hace para brindarles educación media superior, a fin de que en lo futuro tengan mejores satisfacciones de vida, y se conviertan en impulsores y promotores del crecimiento exitoso, con la visión que tiene nuestra entidad en el plano nacional. Esta administración tiene como objetivo crear espacios y condiciones apropiadas para que en un futuro inmediato, el campo laboral tenga profesionistas técnicos de acuerdo al perfil de la industria que cada día arriba a nuestra entidad; por lo que los invito a ser mejores en sus estudios, en su familia y en su comunidad. En ustedes se deposita la semilla del esfuerzo y dedicación que caracteriza a los bajacalifonianos. Son el estandarte generacional que habrá de marcar la pauta de nuestro desarrollo.Como Gobierno del Estado, compartimos el reto de ser formadores de los futuros profesionistas técnicos que saldrán de CECYTE BC. Unamos esfuerzos, Gobierno, Sociedad, Maestros y Alumnos, para brindar y recibir una mejor educación en Baja California, ser punta de desarrollo humano, crecimiento industrial y económico, y factor importante del progreso de México. MENSAJE DEL SECRETARIO DE EDUCACIÓN Alumno de CECYTE BC: La educación es una herramienta que aumenta tus oportunidades de desarrollo personal, y permite ampliar tu horizonte de posibilidades de progreso económico y social. Bajo esa perspectiva, el Gobierno del Estado de Baja California asume con responsabilidad su compromiso con los jóvenes en la tarea de crear espacios educativos en el nivel medio superior, y ofrecerles programas de estudios tecnológicos que les permitan integrarse con competencia a fuentes de trabajo y/o continuar estudios superiores. El Colegio de Estudios Científicos y Tecnológicos del Estado de Baja California, es un ejemplo de lo anterior. En las escuelas de esta Institución, los estudiantes pueden encontrar el camino de la superación, y el apoyo para alcanzar las metas que visualizan para forjar su futuro. Entre esos apoyos se encuentran la publicación y entrega de este material educativo, que el CECYTE BC distribuye, con el objetivo de que lo utilices en beneficio de tus estudios. La tarea que han desarrollado maestros, alumnos y autoridades aducativas en torno a CECYTE BC, han convertido a esta Institución en un modelo para la formación de generaciones de profesionistas técnicos que demanda el sector productivo que se asienta en la región. Además de eso, el Colegio se ha destacado por alentar el acercamiento de los padres de familia con la escuela, como una acción tendiente a fortalecer los vínculos que deben existir entre ellos, los docentes y administrativos en el proceso educativo, por ser esta, una responsabilidad compartida. Por todo esto, te felicito por realizar tus estudios en un plantel de CECYTE BC. Te exhorto a valorar este esfuerzo que hace la sociedad a través de la Administración Estatal, y a que utilices con pertinencia los materiales que se te otorgan para apoyar tu formación profesional. PRESENTACIÓN El documento que tienes en las manos significa un esfuerzo realizado entre la Coordinación Nacional de los CECyTEs y el Colegio de Estudios Científicos y Tecnológicos del Estado de Baja California por proporcionarte material de estudio de calidad para tu formación media superior. Las Guías Profesionales de Mantenimiento, Electrónica, Mecatrónica, Turismo, Producción, Análisis y Tecnología de los Alimentos, Laboratorista Químico, Programador de Software, Gestión Administrativa, Contabilidad y Música; comprenden módulos y submódulos en donde encontrarás lecturas, ejercicios y dinámicas que te servirán para adquirir un mayor entendimiento de la Profesión Técnica que ejercerás en lo futuro. El tiempo realizado por cada uno de los maestros involucrados en las Guías, representó horas de estudio, dedicación y esmero para crear un documento fundamental en la educación. Por ello, te invitamos a que obtengas el mejor provecho de estos materiales de estudio, que fueron diseñados especialmente para lo más preciado del Colegio: sus alumnos. Atentamente Héctor Montenegro Espinoza DIRECTOR GENERAL DEL CECYTE BC Técnico en Programador de Software Módulo II Estructurar los datos orientados a Objetos Submódulo I Implementar Sistemas con la Aplicación de los Diferentes Tipos de Estructuras de Datos 11 12 Oscar David Bustos Torres Baja California Oscar David Bustos Torres Baja California Lic. Rosalba Reyes Rosales Responsable de normatividad académica Biol. Irasema G. Anaya Gálvez Responsable de planes y programas de estudio Ing. Armando Mendoza Cruz Área académica 13 Al término del módulo el alumno será capaz de laborar en empresas pequeñas que tengan la necesidad de un programa inicial teniendo por ende un control computarizado en diferentes áreas de inserción tales como en el sector público o privado ya sea en comercios, tiendas, consultorios, escuelas, etc. Así mismo podrás Implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos siendo capaz de implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos, por medio de la elaboración de sus algoritmos correspondientes. Teniendo en cuenta esto como utilidad para realizar mejores prácticas y dominando los diferentes tipos de estructuras como la manipulación de estructuras básicas tales como arreglos, pilas, colas etc. como centro de la carrera de técnico programador de software. 14 15 Técnico en Programador de Software Módulo II Submódulo I Estructurar los datos orientados a objetos Implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos. Competencia 1 Manipular las estructuras de datos Competencia 2 mediante la Analizar estructuras de datos enlazadas. implementación de programas. Atributos de la Competencia Atributos de la Competencia Propiedades, características y reglas de la Listas estructura de datos Operaciones con listas. Introducción a las estructuras de datos Tipos de listas Arreglos Arboles Pilas Características, longitud. Colas Tipos de arboles. operaciones, tipos de cada una de ellas. Métodos de ordenamiento. Saberes Saberes Conocimientos de algoritmos Conocimiento de elaboración de manuales. Conocimiento del lenguaje de programación. Utilización de las tic’s Dominio en el uso de internet 16 17 Bienvenido, hoy iniciamos el módulo 2 “Estructurar los datos orientados a objetos” de tu carrera de técnico en programador de software, esta guía corresponde al sub módulo 2 titulado “Implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos” y te servirá de apoyo para que logres desarrollar conocimientos, habilidades, destrezas y actitudes, que te permitirán lograr las competencias laborales para tu vida. Al término del módulo el alumno será capaz de aplicar los conceptos de programación orientada a objetos utilizando la simbología UML, teniendo en cuenta esto como utilidad para realizar mejores prácticas y dominando los diferentes tipos de estructura de datos así como la manipulación de estructuras básicas tales como arreglos, pilas, colas etc. como centro de la carrera de técnico programador de software. Así el estudiante será capaz de laborar en áreas que tengan la necesidad de un programa inicial teniendo por ende un control computarizado ya sea en diferentes áreas de inserción tales como en el sector público o privado ya sea en comercios, tiendas, consultorios, escuelas, etc. Debes tener presente que para lograr las competencias propuestas, se requiere de todo tu esfuerzo y dedicación, así como de una actitud y disciplina apropiada en las competencias que serán desarrolladas en el aula, taller y/o industria para ti. 18 19 Manipular las estructuras de datos mediante la implementación de programas. 1 1. 2. 3. 4. 5. Introducción a las estructuras de datos. Arreglos y operaciones Pilas y operaciones Colas y operaciones métodos de ordenamiento. 1. 2. 3. 4. 5. Introducción a las estructuras de datos. Arreglos pilas colas métodos de ordenamiento. 1. 2. 3. 4. Arreglos pilas colas Métodos de ordenamiento. 1. Arreglos 2. pilas 3. colas 20 Implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos. Si observamos un poco nuestro entorno tanto en nuestras casas, oficinas, negocios y escuelas en cualquier parte puedes encontrar por lo menos una computadora en la cual se encuentra algún programa diseñado y elaborado por algún programador sobre todo implementado en algún proceso administrativo u operativo por ende te invitamos a que en esta nueva etapa de tu carrera lograras implementar un pequeño programa en algún lugar donde se requiera la aplicación de un programa. Como te comente anteriormente en cualquier parte vemos computadoras y es parte de nuestro mundo actual y vanguardista y cada vez es mayor frecuente el uso de programas y sistemas que faciliten nuestra tareas y funciones que faciliten nuestra vida actual y moderna siendo evidente la evolución de las computadoras como los programas para estos se requiere el diseño de nuevos programas informáticos en todas las áreas ya sea administrativos, operativas, institucionales y sobre todo en negocios pequeños. Así mismo realizaremos un recordatorio e iniciaremos con algunos planteamientos de algoritmos en vista de irte introduciendo a las estructuras de datos. Como inicio podrías ir analizando la búsqueda de un lugar o establecimiento en el cual pudieses realizar un algoritmo para la solución de un problema y en lo posterior puedas realizar un pequeño programa para dar solución a un problemática específica, por el momento vamos a resolver algunos algoritmos prácticos con ayuda de tu maestro. Recuerda también sacar del baul aquellos algoritmos realizados anteriormente para que puedas practicar y ejercitar tu mente. 21 Tipos de Datos Simples Estructurados La principal característica de los tipos de datos simples es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez. Dentro de este grupo de datos se encuentran: enteros, reales, caracteres, booleanos. 22 Introducción a las estructuras de datos Propiedades, características y reglas de las estructuras de ATRIBUTOS DE LA COMPETENCIA datos. Arreglos Pilas Colas operaciones, tipos de cada una de ellas. RESULTADO DE APRENDIZAJE Métodos de ordenamiento. Al término del módulo el alumno será capaz de laborar en empresas pequeñas que tengan la necesidad de un programa inicial teniendo por ende un control computarizado en diferentes áreas de inserción tales como en el sector público o privado ya sea en comercios, tiendas, consultorios, escuelas, etc. . Como primera actividad es muy importante realizar un encuadre grupal para que el alumno comprenda los algoritmos en la implementación de las estructuras de datos. El docente emplea fotografías, diapositivas, presentaciones en power point o películas donde se muestre el funcionamiento de distintos tipos estructuras de datos, explicando la utilidad que existe entre el algoritmo y la estructura de datos, así como la implementación de sus aplicaciones. El encuadre grupal ayuda a comprender la importancia de lograr la competencia. 23 Nombre Instrucciones para el Alumno Saberes a adquirir Introducción a las estructuras de datos No. 1 Resuelve cada una de las preguntas que aparecen en la parte inferior a este apartado. Estructura de datos Manera Didáctica de Lograrlos Investiga, comprende y resuelve cada una de las preguntas que a continuación se presentan para el desarrollo de esta competencia. ¿Qué es un dato? ¿Cuántos tipos de datos conoces? ¿Cuáles son los tipos de datos? ¿De qué tamaño es cada uno de los tipos de datos? 24 Introducción a las estructuras de datos. Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas No. 1 Analiza los ejemplos de los tipos de datos que se te muestra y aprenderás a diferenciar entre un dato simple y uno estructurado. Participa y colabora de manera efectiva en equipos diversos Lograras diferenciar entre el un dato simple y uno estructurado Dato simple Dato estructurado. Recuerda que a partir de este momento trabajaras con datos estructurados, ya que es muy fácil confundirte con los datos simples. 25 Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Introducción a las estructuras de datos Aprende por iniciativa e interés propio a lo largo de la vida. Encierra con un círculo los datos estructurados con color azul y subraya los datos simples con color rojo. int edad[5] Char perro[10] char gato char botella[12][5] Char apellido float promedio[4] Int jean[5] Int zapatos[20] 1 Identifica cuáles son datos estructurados Char Nombre[30] Int silla No. float promedio int mesa[3] int salón[10] int maestro[100] int alumno 26 Nombre Elabora un diagrama de flujo donde contenga datos simples y estructurados. No. Competencia a Desarrollar Manipular las estructuras de datos mediante la implementación de programas. Atributos de la Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. competencia 1 Instrucciones Manipula una interface IDE para conocer la estructura de un programa con para el Alumno estructura de datos. Instrucciones para el Docente Proporcionar la información así como el IDE necesario para que los alumnos elaboren la practica solicitada Recursos materiales de apoyo Papel, lápiz, computadora y manejo de un IDE para el desarrollo del código. Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. El alumno muestra su interés y participa de manera entusiasta para desarrollar el trabajo asignado. 27 Nombre Arreglos y Operaciones con los arreglos. No. 2 Instrucciones Conoce los conceptos y operaciones de un arreglo para estructura de datos para el Alumno Saberes a adquirir Manipulación Arreglos. de Manera Didáctica de Lograrlos Identifica y analiza las operaciones de las estructuras de datos. Un arreglo es una colección de datos finita homogénea y ordenada de elementos. Finita: todo arreglo tiene un límite, es decir debe de determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo. Homogénea: todos los elementos de un arreglo son del mismo tipo (todos enteros, todos carácter, todos booleanos, pero nunca una combinación de distintos tipos). Ordenada: se puede determinar cuál es primer elemento, el segundo, el tercero,…. Y el enésimo elemento. También los arreglos son las estructuras de datos más sencillas. Definición: Los arreglos son un grupo de posiciones en memoria relacionadas entre sí por el hecho de que todas tienen el mismo nombre y los datos que contiene son todos del mismo tipo. Los arreglos son entidades estáticas ya que conservan el mismo tamaño durante toda la ejecución del programa. Para poder referirnos a una posición en particular o a los datos dentro de esa 28 posición del arreglo, se especifica el nombre del arreglo y el número de posición del elemento. Las posiciones generalmente se cuentan a partir del cero como primera posición. Podemos clasificar a las operaciones en las que intervienen arreglos de la siguiente manera: Lectura/Escritura Asignación Inserción Actualización Eliminación Modificación Ordenación Búsqueda 29 Ejemplo de un arreglo de tipo entero de 10 posiciones. 30 Nombre Instrucciones para el Alumno arreglos No. 3 Identifica los tipos de arreglos en las siguientes figuras colocando el tipo de arreglo que se refiere. Competencias Genéricas a Desarrollar Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Manera Didáctica de Lograrlas Analiza, reflexiona y aplica los conocimientos adquiridos para la identificación de los diferentes tipos de arreglos. 31 32 Nombre Competencia a Desarrollar Atributos de la competencia Elabora un programa con las operaciones básicas de un arreglo No. 2 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. Desarrolla un programa en el lenguaje de programación sugerido por tu maestro, Instrucciones donde utilices un arreglo de tipo entero de 5 posiciones utilizando la operación de para el Alumno lectura y escritura, mostrando los datos capturados. Instrucciones para el Docente Recursos materiales de apoyo Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Proporcionar la información así como el IDE necesario para que los alumnos elaboren la practica solicitada Papel, lápiz, computadora y manejo de un IDE para el desarrollo del código. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. El alumno muestra su interés y participa de manera entusiasta para desarrollar el trabajo asignado. 33 Nombre Competencia a Desarrollar Atributos de la competencia Elabora un programa con las operaciones básicas de un arreglo No. 2 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. Desarrolla un programa en el lenguaje de programación sugerido por tu maestro, Instrucciones donde utilices un arreglo de tipo flotante de 5 posiciones utilizando la operación de para el Alumno lectura y escritura, mostrando los datos capturados. Instrucciones para el Docente Recursos materiales de apoyo Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Proporcionar la información así como el IDE necesario para que los alumnos elaboren la practica solicitada Papel, lápiz, computadora y manejo de un IDE para el desarrollo del código. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. El alumno muestra su interés y participa de manera entusiasta para desarrollar el trabajo asignado. 34 Nombre Competencia a Desarrollar Atributos de la competencia Elabora un programa con las operaciones básicas de un arreglo No. 2 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. Desarrolla un programa en el lenguaje de programación sugerido por tu maestro, Instrucciones donde utilices un arreglo de tipo carácter de 7 posiciones utilizando la operación de para el Alumno lectura y escritura, mostrando los datos capturados. Instrucciones para el Docente Recursos materiales de apoyo Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Proporcionar la información así como el IDE necesario para que los alumnos elaboren la practica solicitada Papel, lápiz, computadora y manejo de un IDE para el desarrollo del código. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. El alumno muestra su interés y participa de manera entusiasta para desarrollar el trabajo asignado. 35 Nombre Instrucciones para el Alumno Saberes a adquirir Pilas y Operaciones con los arreglos No. 3 Analiza y comprende las operaciones con las pilas. Manipulación Arreglos. de Manera Didáctica de Lograrlos Interpreta la información que se presenta a continuación y determina la diferencia entre una pila y la de un arreglo. Introducción a las Pilas Cuando se introdujeron al tema de arreglos lineales se mencionó que eran estructuras lineales, analizar las operaciones de lectura, escritura, asignación, los datos pueden insertarse o eliminarse en cualquier posición del arreglo. Pero en el caso de las pilas solo deberán agregarse o quitarse solamente por un extremo, estas son estructuras de datos lineales también, que tienen restricciones en cuanto a la posición en la cual puedan realizarse la inserción y eliminación de elementos. Una pila es una lista de elementos a la cual se puede insertar o eliminar elementos solo por uno de los extremos. En consecuencia, los elementos de una pila serán eliminados en el orden inverso al que se insertaron, es decir, el último elemento que se mete en la pila es el primero que se saca. Existen numerosos casos prácticos en los que se utiliza el concepto de pila por ejemplo: pilas de platos, pilas de latas en un supermercado, etc. Las pilas son estructuras de datos que tienes dos operaciones básicas: Push (para insertar un elemento) y pop (para extraer un elemento). Su Característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse. Por esta razón también se conocen como estructuras de datos LIFO (del inglés Last In First Out). Una posible implementación mediante listas enlazadas sería insertando y extrayendo siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recursividad (lo veremos en detalle en el tema siguiente). La variable que llama al mismo procedimiento en el q está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacándolas, esto es posible a la implementación de pilas. Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Por ejemplo, la gestión de ventanas en Windows (cuando cerramos Una ventana siempre recuperamos la que teníamos detrás). Otro ejemplo es la Evaluación general de cualquier expresión matemática para evitar tener que Calcular el número de variables temporales que hacen falta. 36 Operaciones con pilas Las operaciones que se pueden realizar con las pilas son las siguientes: Poner un elemento (push) Quitar un elemento (pop) Considerando que se tiene una pila que puede almacenar un máximo numero de elementos y el últimos de ellos esta indicado por TOPE. 37 Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Pilas y sus operaciones básicas No. 3 Observa el siguiente ejemplo e identifica las operaciones de una pila Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Analiza, reflexiona y comprende las operaciones existentes en una pila de datos. 38 Nombre Instrucciones para el Alumno Pilas y operaciones básicas No. 3 Interpreta el siguiente pseudocódigo de insertar y eliminar un dato dentro de una pila Competencias Genéricas a Desarrollar Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Manera Didáctica de Lograrlas Analiza, reflexiona y aplica los conocimientos adquiridos para la solución del problema planteado. 1.Si TOPE<MAX // verifica que haya espacio libre entonces hacer TOPE TOPE+1 //Actualiza TOPE PILA[TOPE] DATO //Pone un nuevo elemento en la pila si no 2. escribir espacio lleno 39 1. Si TOPE>0 //verifica que la pila no este vacía Entonces hacer DATO PILA[TOPE] y TOPE TOPE‐1 //Actualiza tope Si no escribir espacio esta vacio 2. Fin de la condicional 1 40 Nombre Competencia a Desarrollar Atributos de la competencia Pilas y sus operaciones básicas No. 2 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. Realiza un programa que contenga las operaciones básicas en una pila como Instrucciones para el Alumno insertar, eliminar y mostrar. Instrucciones para el Docente Proporcionar la información necesaria para que los alumnos elaboren la practica solicitada. Recursos materiales de apoyo Computadora, dispositivo de almacenamiento y el IDE para la elaboración del código. Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Analiza, reflexiona y aplica los conocimientos adquiridos para la solución del problema planteado. 41 Nombre Instrucciones para el Alumno Saberes a adquirir Colas y operaciones básicas No. 4 Analiza e interpreta el concepto de una cola así como sus operaciones. Manipulación de Arreglos. Manera Didáctica de Lograrlos Interpreta la información que se presenta y conoce la definición de una cola así como sus operaciones básicas. Una cola es una colección de elementos homogéneos (almacenados en dicha estructura), en la misma se pueden insertar elementos por uno de los extremos, llamado frente, y retirar los mismos por el otro extremo, denominado final. Es importante aclarar que, tanto el frente como el final de la cola, son los únicos indicados para retirar e insertar elementos, respectivamente. Esto nos indica que no podemos acceder directamente a cualquier elemento de la cola, sino solo al primero, o sea el que está o se encuentra en el frente, y no se pueden insertar elementos en cualquier posición sino solo por el final, así el elemento insertado queda como último. Por esta razón la cola es denominada una estructura F.I.F.O., o simplemente una lista F.I.F.O., esto representa el acrónimo de las palabras inglesas “first in, first out” (primero en entrar, primero en salir). Gráficamente podemos representarla como: La cola fue recién creada y esta vacía. (Frente y final apuntan FINAL FRENTE a nil). 42 Si ahora le ingresamos el elemento A, la misma quedará se la siguiente manera: Como A es el único A elemento, frente y final apuntan a él. FINAL nil FRENTE Si a continuación se ingresa el elemento B, el frente de la cola continuará apuntando a A, pero ahora el final apuntará al elemento recién ingresado. B A El enlace se realiza desde el frente hacia el final. FINAL nil FRENTE Al retirar un elemento, el frente apuntará al siguiente del elemento retirado y en el caso que la cola quedara vacía, frente y final apuntarán a nil. B A elemento retirado. FINAL nil FRENTE FINAL FRENTE nil nil Ahora bien, una vez conocido el comportamiento de las colas veremos como se definen las mismas y su forma de manejo, o "comportamiento" de la cola. Para trabajar con una cola, así como para cualquier tipo de estructura abstracta, tendremos que definir las operaciones que representen el comportamiento de la misma, para de esta manera poder utilizarlas. Dichas operaciones son: Insertar elemento. Eliminar elemento. Podemos definir una cola en forma dinámica implementándola como una lista simple y respetando las restricciones de inserción (sólo se puede realizar a través del final) y extracción (sólo se puede realizar por el frente). A partir de la definición dada, podremos implementar una estructura de tipo cola en una unidad de biblioteca de la siguiente manera. 43 Nombre Colas y operaciones básicas No. 4 Instrucciones para el Alumno Analiza e interpreta las siguientes imágenes de colas de datos Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. A continuación se muestran diferentes imágenes tipos de colas en diferentes situaciones. 44 45 Nombre Instrucciones para el Alumno Colas y operaciones básicas No. 4 Elabora un mapa mental identificando las diferencias entre una pila y una cola así como donde se puede aplicar una cola de datos. Competencias Genéricas a Desarrollar Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Manera Didáctica de Lograrlas Analiza e interpreta la información anterior y comprende la forma de realizar las operaciones básicas de una cola. Las colas pueden representarse mediante el uso de: Arreglos Listas enlazadas 46 Nombre Competencia a Desarrollar Atributos de la competencia Instrucciones para el Alumno Colas y operaciones básicas. No. 4 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. 1. Instrucciones para el Docente Proporcionar la información necesaria para que los alumnos elaboren la practica solicitada. Recursos materiales de apoyo Computadora, dispositivo de almacenamiento y el IDE para la elaboración del código. Competencias Genéricas a Desarrollar Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Manera Didáctica de Lograrlas Nota: recuerda que en una cola el primero en entrar es el primero en salir. 47 Nombre Instrucciones para el Alumno Saberes a adquirir Métodos de ordenamiento No. 3 Analiza y aplica los métodos de ordenamiento. Manipulación de Arreglos. Manera Didáctica de Lograrlos Analiza e investiga los diferentes métodos de ordenamientos. ¿Qué es ordenamiento? Es la operación de arreglar los registros de una tabla en algún orden secuencial de acuerdo a un criterio de ordenamiento. El ordenamiento se efectúa con base en el valor de algún campo en un registro. El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado. Ej. De ordenamientos: Dir. telefónico, tablas de contenido, bibliotecas y diccionarios, etc. El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente. ¿Cuándo conviene usar un método de ordenamiento? Cuando se requiere hacer una cantidad considerable de búsquedas y es importante el factor tiempo. Tipos de ordenamientos: Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos. Los internos: 48 Son aquellos en los que los valores a ordenar están en memoria principal, por lo que se asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1], a[500], etc). Los externos: Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro magnético, etc.), por lo que se asume que el tiempo que se requiere para acceder a cualquier elemento depende de la última posición accesada (posición 1, posición 500, etc.). Ordenamiento Burbuja (Bubblesort) Descripción. Este es el algoritmo más sencillo probablemente. Ideal para empezar. Consiste en ciclar repetidamente a través de la lista, comparando elementos adyacentes de dos en dos. Si un elemento es mayor que el que está en la siguiente posición se intercambian. ¿Sencillo no? Ventajas: Fácil implementación. No requiere memoria adicional. Desventajas: Muy lento. Realiza numerosas comparaciones. Realiza numerosos intercambios. Ordenamiento por Selección. Descripción. Este algoritmo también es sencillo. Consiste en lo siguiente: Buscas el elemento más pequeño de la lista. Lo intercambias con el elemento ubicado en la primera posición de la lista. Buscas el segundo elemento más pequeño de la lista. Lo intercambias con el elemento que ocupa la segunda posición en la lista. Repites este proceso hasta que hayas ordenado toda la lista. 49 Ventajas: Fácil implementación. No requiere memoria adicional. Realiza pocos intercambios. Rendimiento constante: poca diferencia entre el peor y el mejor caso. Desventajas: Lento. Realiza numerosas comparaciones. Ordenamiento por Inserción Este algoritmo también es bastante sencillo. ¿Has jugado cartas?. ¿Cómo las vas ordenando cuando las recibes? Yo lo hago de esta manera: tomo la primera y la coloco en mi mano. Luego tomo la segunda y la comparo con la que tengo: si es mayor, la pongo a la derecha, y si es menor a la izquierda (también me fijo en el color, pero omitiré esa parte para concentrarme en la idea principal). Después tomo la tercera y la comparo con las que tengo en la mano, desplazándola hasta que quede en su posición final. Continúo haciendo esto, insertando cada carta en la posición que le corresponde, hasta que las tengo todas en orden. ¿Lo haces así tú también? Bueno, pues si es así entonces comprenderás fácilmente este algoritmo, porque es el mismo concepto. Para simular esto en un programa necesitamos tener en cuenta algo: no podemos desplazar los elementos así como así o se perderá un elemento. Lo que hacemos es guardar una copia del elemento actual (que sería como la carta que tomamos) y desplazar todos los elementos mayores hacia la derecha. Luego copiamos el elemento guardado en la posición del último elemento que se desplazó. Ventajas: Fácil implementación. Requerimientos mínimos de memoria. Desventajas: Lento. Realiza numerosas comparaciones. 50 El método de ordenamiento Quick Sort es actualmente el más eficiente y veloz de los métodos de ordenación interna. Es también conocido con el nombre del método rápido y de ordenamiento por partición, en el mundo de habla hispana. Este método es una mejora sustancial del método de intercambio directo y recibe el nombre de Quick Sort por la velocidad con que ordena los elementos del arreglo. Su autor C.A. Hoare lo bautizó así. La idea central de este algoritmo consiste en los siguiente: Se toma un elemento x de una posición cualquiera del arreglo. Se trata de ubicar a x en la posición correcta del arreglo, de tal forma que todos los elementos que se encuentran a su izquierda sean menores o iguales a x y todos los elementos que se encuentren a su derecha sean mayores o iguales a x. Se repiten los pasos anteriores pero ahora para los conjuntos de datos que se encuentran a la izquierda y a la derecha de la posición correcta de x en el arreglo. Ejemplo: A: 15,67,08,16,44,27,12,35 Se selecciona A[i] x=15 Primera pasada (DER-IZQ) A[8] >= x 35 >= 15 No hay intercambio A[7] >= x 12 >= 15 Si hay intercambio A: 12,67,08,16,44,27,15,35 (IZQ-DER) A[2] < = X 67 < = 15 Si hay intercambio A:12,15,08,16,44,27,67,35 2da. Pasada (DER-IZQ) A[6] >= x 27 >= 15 No hay intercambio A[5] >= x 44 >= 15 No hay intercambio A[4] >= x 16 >= 15 No hay intercambio A[3] >= x 08 >= 15 Si hay intercambio A: 12,08,15,16,44,27,67,35 Como el recorrido de izquierda a derecha debería iniciarse en la misma posición donde se encuentra el elemento x, el proceso se termina ya que el elemento x, se encuentra en la posición correcta. A: 12, 08, 15, 16, 44, 27, 67, 35 1er 2do Conjunto Conjunto 16, 44, 27, 67, 35 51 x16 (DER-IZQ) A[8]>=x No hay intercambio A[7]>=x No hay intercambio A[6]>=x No hay intercambio A[5]>=x No hay intercambio A: 12, 08, 15, 16, 44, 27, 67, 35 xß44 (DER-IZQ) A[8]>= x Si hay intercambio A: 12, 08, 15, 16, 35, 27, 67, 44 (IZQ-DER) A[6] < = x No hay intercambio A[7] < = x Si hay intercambio 12, 08, 15, 16, 35, 27, 44, 67 12, 08, 15, 16, 35, 27, 44, 67 35, 27, 44, 67 xß35 (DER-IZQ) A[8] >= x No hay intercambio A[7] >= x No hay intercambio A[6] >= x Si hay intercambio 12, 08, 15, 16, 27, 35, 44, 67 12,08 xß12 (DER-IZQ) A[2]>=x Si hay intercambio EL VECTOR ORDENADO: 08,12,15,16,27,35,44,67 52 Nombre Ejemplo del método de la burbuja y quicksort. No. 2 Analiza el método de la burbuja e implementa en donde se puede utilizar este Instrucciones método. para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Analiza el siguiente método de ordenamiento. . Un ejemplo Vamos a ver un ejemplo. Esta es nuestra lista: 4-3-5-2-1 Tenemos 5 elementos. Es decir, TAM toma el valor 5. Comenzamos comparando el primero con el segundo elemento. 4 es mayor que 3, así que intercambiamos. Ahora tenemos: 3-4-5-2-1 Ahora comparamos el segundo con el tercero: 4 es menor que 5, así que no hacemos nada. Continuamos con el tercero y el cuarto: 5 es mayor que 2. Intercambiamos y obtenemos: 3-4-2-5-1 Comparamos el cuarto y el quinto: 5 es mayor que 1. Intercambiamos nuevamente: 3-4-2-1-5 Repitiendo este proceso vamos obteniendo los siguientes resultados: 3-2-1-4-5 2-1-3-4-5 1-2-3-4-5 53 El procedimiento de la burbuja es el siguiente: Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor, si este es realmente el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él. Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector. Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario. A continuación se ilustra otro Ejemplo para una mejor comprensión del método: Vector Variables pos a[j+1] inicio 0 1 2 3 4 5 6 7 44 55 12 42 94 18 6 67 i j a[j] 0 1 55 12 cambio 44 12 55 42 94 18 6 67 0 2 55 42 cambio 44 12 42 55 94 18 6 67 0 4 94 18 cambio 44 12 42 55 18 94 6 67 0 5 94 6 cambio 44 12 42 55 18 6 94 67 0 6 94 67 cambio 44 12 42 55 18 6 67 94 1 0 44 12 cambio 12 44 42 55 18 6 67 94 1 1 44 42 cambio 12 42 44 55 18 6 67 94 1 3 55 18 cambio 2 42 44 18 55 6 67 94 1 4 55 6 cambio 12 42 44 18 6 55 67 94 2 2 44 18 cambio 12 42 18 44 6 55 67 94 2 3 44 6 cambio 12 42 18 6 44 55 67 94 3 1 42 18 cambio 12 18 42 6 44 55 67 94 3 2 42 6 cambio 12 18 6 42 44 55 67 94 4 1 18 6 cambio 12 6 18 42 44 55 67 94 5 0 12 6 ordenado 6 12 18 42 44 55 67 94 54 55 Nombre Investiga los diferentes tipos de métodos de ordenamiento. Instrucciones para el Alumno Investiga y analiza los diferentes métodos de ordenamiento. Competencias Genéricas a Desarrollar Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Manera Didáctica de Lograrlas Investiga los distintos tipos de de los métodos de ordenamiento e idéntica el más recomendable para la aplicación de un programa. No. 2 Nota: recuerda encontrar el método de ordenamiento que para ti es el más indicado utilizar en un programa. 56 Nombre Competencia a Desarrollar Aplicación de estructuras de datos en problemas diversos. No. 1 Manipular las estructuras de datos mediante la implementación de programas. Aplicar las estructuras de control para resolver problemas de cómputo. Manejar un IDE para desarrollo de código. Analizar las necesidades de estructura de datos en problemas particulares. competencia Estructurar arreglos para la manipulación de información. Elabora un programa donde se pueda utilizar los distintos tipos de datos en un Instrucciones arreglo, pila o cola, donde se pueda aplicar como herramienta administrativa en la para el Alumno vida real. Atributos de la Instrucciones para el Docente Proporcionar la información necesaria para que los alumnos elaboren la practica solicitada. Recursos materiales de apoyo Computadora, dispositivo de almacenamiento y el IDE para la elaboración del código. Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Aprende por iniciativa en interés propio a lo largo de la vida. Elaborando programas con aplicación de una herramienta administrativa o tecnológica. 57 Como te habrás dado cuenta hasta el momento solo hemos estudiado el funcionamiento las estructuras de datos estáticas implementar sistemas dentro del submodulo con la aplicación de los diferentes tipos de estructuras de datos. Llevándote por el interesante mundo del programador, así como se te facilito esta primera competencia esperamos sigas preparándote día a día por el mundo de la informática. Te felicitamos porque si tú llegaste hasta aquí significa que sigues avanzando, y esperamos que nada ni nadie te detenga. Te invitamos a que continúes, pregunta a tu maestro todas las dudas que tengas y verás que el futuro dentro de la carrera de técnico programador de software será mucho mejor para ti. Date cuenta ahora, tú sabes utilizar y diferenciar las características entre los arreglos, pilas y colas así como desarrollar y realizar operaciones entre los diferentes estructuras de control. FELICIDADES!!!! Y TE INVITAMOS A QUE AHORA APRENDAS A UTILIZAR LAS LISTAS ENLAZADAS DE DATOS ASI COMO LOS ARBOLES….. 58 Analizar estructuras de datos enlazadas. 2 1. Listas enlazadas 2. Árbol 1. Listas enlazadas 2. Árbol 1. Listas enlazadas 2. Árbol 1. Práctica 59 Analizar estructuras de datos enlazadas. Las estructuras de datos presentadas hasta el momento (Arreglos y Registros) y se le denominan estáticas, reciben ese nombre debido a que durante la compilación se le asigna un espacio de memoria y este permanece inalterable a lo largo de la ejecución del programa. Es decir las variables no pueden crearse o destruirse durante la ejecución del programa. ¿Cuál será la diferencia entre las estructura de datos dinámicas contra las estáticas? A continuación se muestra una grafica de los tipos de estructuras de datos lineales y las no lineales. Estructuras lineales Estructuras no lineales 60 Listas ATRIBUTOS DE LA COMPETENCIA Operaciones con listas. Tipos de listas Arboles Características, longitud. RESULTADO DE APRENDIZAJE Tipos de arboles. A lo largo de esta competencia el instructor diseñara actividades para que puedas conceptualizar e identificar los diferentes tipos de estructuras de datos enlazadas. . Como primera actividad es muy importante realizar un encuadre grupal para que el alumno comprenda las posibles aplicaciones de las estructura de datos enlazadas. El docente muestra las operaciones con que cuentan las estructuras de datos enlazadas así como las características y propiedades de los árboles y el funcionamiento de cada uno de los tipos de listas enlazadas dando conceptos básicos y realizando actividades para poder identificar los tres tipos de listas que conocerás así como las operaciones que podrás realizar cono cada una de ellas. 61 Nombre Instrucciones para el Alumno Listas enlazadas 1 Analiza y comprende el concepto de una lista enlazada así como sus operaciones Listas Saberes a adquirir No. Operaciones con listas. Manera Didáctica de Lograrlos Identifica el concepto, operaciones y los tipos de listas enlazadas. Tipos de listas Ahora se introduce un nuevo concepto, el de estructuras dinámicas de datos. Este tipo de estructura es generado a partir de un tipo de dato conocido con el nombre de puntero o referencia. Concepto de una lista. Una lista es una colección de elementos generalmente llamados nodos. El orden entre los nodos se establece por medio de punteros, es decir, por direcciones o referencias a otros nodos. En la siguiente figura se presenta la estructura de un nodo. En general un nodo consta de dos partes: 1. Un campo información que será el tipo de datos se quiera almacenar en la lista. 2. Un campo liga de tipo puntero, que se utiliza para establecer la liga o el enlace con otro nodo de la lista. Recuerda: Que si el nodo fuera el último de la lista, este campo tendrá como valor Nil (vacío). 62 Crear Insertar Eliminar Consultar (Búsqueda) Modificar (actualizar) Tipos de listas enlazadas Lista Circular Listas Listas Doblemente Ligadas Una lista doblemente ligada es una colección de nodos en la cual cada nodo tiene dos punteros uno de ellos apuntando a su predecesor y otro a su sucesor. 63 Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Listas enlazadas. No. 1 Identifica las listas enlazadas Utiliza las tecnológicas de la información y comunicación para procesar e interpretar información. Identifica los diferentes tipos de listas enlazadas en las estructuras de datos. p Nil El primer nodo de la lista esta apuntado por una variable P de tipo puntero (P almacena la dirección del primer nodo). El campo liga del último nodo de la lista, tiene un valor Nil que indica que dicho nodo no apunta a ningún otro. 64 Listas Circulares Las listas circulares tienen la característica de que el último elemento de la misma apunta al primero. Ejemplo grafico de una lista circular con nodo de cabecera Ejemplo de una lista doblemente ligada 65 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 de actualizar Lista, después nos resultaría imposible liberar la memoria que ocupa. Si liberamos la memoria antes de actualizar perderemos el puntero al segundo nodo. antes Lista, 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. 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. 66 Nombre Instrucciones para el Alumno Listas enlazadas No. 2 Investiga los conceptos que te indicara tu maestro para la comprensión del tema de listas enlazadas. Competencias Genéricas a Desarrollar Utiliza las tecnológicas de la información y comunicación para procesar e interpretar información. Manera Didáctica de Lograrlas Realiza investigación para la comprensión de las estructuras dinámicas de datos. Investiga los siguientes conceptos: Estructuras dinámicas de datos Puntero Referencia Recuerda que debes entregar tu investigación en la fecha que te indique tu maestro. 67 Nombre Instrucciones para el Alumno Árbol 2 Conoce y aplica el concepto de árbol así como sus características. Arboles Saberes a adquirir No. Características, longitud. Tipos de arboles. Manera Didáctica de Lograrlos Comprende el concepto de un árbol así como los diferentes tipos, características con que cuenta un árbol. Los arboles representan estructuras no-lineales y dinámicas de datos más importantes en computación. Dinámicas, porque la estructura árbol puede cambiar durante la ejecución de un programa. No-lineales, porque cada elemento del árbol puedan seguirle varios elementos. Representación de las estructuras de datos más importantes clasificadas de acuerdo a su estaticidad y dinamismo. Estructuras Estáticas Estructuras Dinámicas Arreglos Listas Registros Conjuntos Arboles Es de observar que las pilas y las colas no fueron consideradas en esta clasificación, puesto que dependen de la estructura que utilice para implementarlas. 68 Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Representación grafica de las estructuras árbol. No. 1 Identifica los tipos de representación grafica de las estructuras dinámicas. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Identifica los distintos tipos de arboles. árbol binario Árboles Binarios Completos Árbol binario en memoria Al analizar la estructura árbol se introduce al concepto de estructuras de ramificación entre nodos. 69 Inserción A la hora de insertar un nuevo dato en un árbol 2-3 se hace de forma que se mantenga el equilibrio en el árbol. La capacidad de tener uno o dos elementos en cada nodo ayuda a conseguirlo. Pseudo código de inserción en un árbol 2-3 Si el árbol esta vació Entonces crea un nuevo nodo y colocar el en el lado izquierdo del nodo. Si ya hay un elemento y existe espacio en el nodo hacer Si r1 es menos que el elemento Entonces el elemento 0 se coloca a la derecha. Sino Si r1 es mayor que el elemento Entonces el elemento se coloca del lado izquierdo y r1 del lado derecho. Sino Si el nodo esta lleno se parte en dos nodos del mismo nivel, se crea un nuevo nodo y se reparten los tres elementos (dos elementos del nodo y el nuevo elemento) Ejemplos A continuación se ofrecen ejemplos concretos para ilustrar el mecanismo de inserción: 70 Codigo para Insertar un nodo en C tipo_elmto = registro clave:tipo_clave; {los demás campos necesarios} freg; tipos_nodo = (hoja, interior); nodo_dos_tres = registro clase:tipos_nodo; selección clase=hoja:(elmto:tipo_elmto); clase=interior:(primer_hijo,segundo_hijo, tercer_hijo: diccionario; menor_de_segundo, menor_de_tercero:tipo_clave) fsel freg diccionario = ↑nodo_dos_tres Pseudocodigo de Inserción algoritmo inserta1(e/s nodo:diccionario; ent x:tipo_elmto; {x se insertará en el subárbol de nodo} sal pt_nuevo:diccionario; {puntero al nodo recién creado a la derecha de nodo} sal menor:tipo_clave) {elmto más pequeño del subárbol al que apunta pt_nuevo} Pseudocodigo del programa principal: principal pt_nuevo:=nil; si nodo es una hoja entonces si x no es el elemento que está en nodo entonces crea un nodo nuevo apuntado por pt_nuevo; pone x en el nodo nuevo; menor:=x.clave fsi sino {nodo es un nodo interno} sea w el hijo de nodo a cuyo subárbol pertenece x; inserta1(w, x,pt_atrás,menor_atrás); si pt_atrás≠nil entonces inserta el puntero pt_atrás entre los hijos de nodo justo a la derecha de w; si nodo tiene cuatro hijos entonces crea un nodo nuevo apuntado por pt_nuevo; da al nuevo nodo los hijos 3º y 4º de nodo; ajusta menor_de_segundo y menor_de_tercero en nodo y el nodo nuevo; coloca menor como la menor clave entre los hijos del nodo nuevo fsi fsi fsi fin // WC.java import java.io.*; 71 class TreeNode { String word; int count = 1; TreeNode left; TreeNode right; // Word being stored. // Count of words seen in text. // Left subtree reference. // Right subtree reference. public TreeNode (String word) { this.word = word; left = right = null; } public void insert (String word) { int status = this.word.compareTo (word); if (status > 0) { // word argument precedes current word // If left-most leaf node reached, then insert new node as // its left-most leaf node. Otherwise, keep searching left. if (left == null) left = new TreeNode (word); else left.insert (word); } else if (status < 0) { // word argument follows current word // If right-most leaf node reached, then insert new node as // its right-most leaf node. Otherwise, keep searching right. if (right == null) right = new TreeNode (word); else right.insert (word); } else this.count++; } } class WC { public static void main (String [] args) throws IOException { int ch; TreeNode root = null; // Read each character from standard input until a letter // is read. This letter indicates the start of a word. while ((ch = System.in.read ()) != -1) { // If character is a letter then start of word detected. if (Character.isLetter ((char) ch)) { // Create StringBuffer object to hold word letters. StringBuffer sb = new StringBuffer (); 72 // Place first letter character into StringBuffer object. sb.append ((char) ch); // Place all subsequent letter characters into StringBuffer // object. do { ch = System.in.read (); if(Character.isLetter ((char) ch)) sb.append((char) ch); else break; } while (true); // Insert word into tree. if (root == null) root = new TreeNode (sb.toString ()); else root.insert (sb.toString ()); } } display (root); } static void display (TreeNode root) { // If either the root node or the current node is null, // signifying that a leaf node has been reached, return. if (root == null) return; // Display all left-most nodes (i.e., nodes whose words // precede words in the current node). display (root.left); // Display current node's word and count. System.out.println ("Word = " + root.word + ", Count = " + root.count); // Display all right-most nodes (i.e., nodes whose words // follow words in the current node). display (root.right); } } 73 Nombre Instrucciones para el Alumno Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Arboles No. 2 Investiga el concepto y la representación de cada una de las formas de representar las estructuras de un árbol. Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Investiga las diferentes formas de representar un árbol Diagrama de Venn Anidación de Paréntesis Notación Decimal de Dewey Notación Identada Grafo 74 Escribe sobre la línea el tipo de árbol a que se hace referencia según su representación grafica. 75 Nombre Competencia a Desarrollar Arboles con estructuras No. 1 Analizar las necesidades de estructura de datos en problemas particulares. Atributos de la competencia Identifica la utilización de estructuras de datos enlazadas. y Comprende de las estructuras de datos enlazadas en el Instrucciones Desarrolla para el Alumno planteamiento de un problema dando solución con ellas Instrucciones para el Docente Recursos materiales de apoyo Competencias Genéricas a Desarrollar Manera Didáctica de Lograrlas Proporciona las herramientas necesarias para desarrollar y dar solución a una problemática con las estructuras enlazadas. Computadora y su dispositivo de almacenamiento Desarrolla innovaciones y propone soluciones a problemas a partir de métodos establecidos. Investiga y desarrolla innovaciones dando solución administrativa a alguna problemática. Los árboles binarios tienen múltiples aplicaciones ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos de un proceso, para representar un árbol genealógico (construido en forma ascendente y donde muestran los ancestros de un individuo dado), para representar la historia de un campeonato de tenis (construido en forma ascendente y en donde existe un ganador, 2 finalistas, 4 semifinalistas y así sucesivamente) para representar expresiones algebraicas construidas con operadores binarios , con esto citamos algunos ejemplos de sus múltiples usos. 76 Como te habrás dado cuenta conocer las estructuras dinámicas como las listas enlazadas y las estructuras árbol resulta interesante y por tal motivo te seguiremos llevando por el mundo del desarrollo del software. Por lo te felicitamos porque si tú llegaste hasta aquí significa que sigues avanzando, y esperamos que nada ni nadie te detengas. Te invitamos a que continúes, pregunta a tu maestro todas las dudas que tengas y verás que el futuro será mucho mejor para ti. Date cuenta ahora, tú sabes analizar, investigar y estructurar datos con un entorno de un lenguaje de programación. FELICIDADES!!!! Y TE INVITAMOS A QUE AHORA EMPRENDAS EL VIAJE AL MUNDO DE LA PROGRAMACION Y PUEDAS IMPLEMENTAR LO HASTA AQUÍ APRENDIDO… 77 Esta guía fue concebida como un medio de aprendizaje en la educación técnica de nivel medio superior, y de ninguna manera se pretende que sea un sustituto del docente, por el contrario, se busca que sirva como un medio de apoyo a la dinámica del proceso de enseñanza aprendizaje, al orientar la actividad del alumno en el aprendizaje desarrollador, a través de situaciones problemáticas y tareas que garanticen la apropiación activa, crítico - reflexiva y creadora de los contenidos, con la adecuada dirección y control de sus propios aprendizajes. La guía está integrada por dos competencias: 1. Manipular las estructuras de datos mediante la implementación de programas. 2. Analizar estructuras de datos enlazadas. El desarrollo de estas competencias permite cubrir básicamente con el Resultado de Aprendizaje del Sub módulo uno, que es implementar sistemas con la aplicación de los diferentes tipos de estructuras de datos. La forma de evaluar el presente Submódulo es en primer término considerando los instrumentos de evaluación, los cuales determinan el producto y el desempeño, derivados de cada una de las prácticas plasmadas en la guía. 78 Estructura de datos, Osvaldo Cairo, Editorial Mc Graw Hill. Metodología de la programación tomo II, Osvaldo Cairo, Editorial Computec Metodología de la programación orientada a objetos, Leobardo López Román, Editorial Alfaomega. Programación en C, Byron Gottfried, Editorial McGraw Hill. Links: http://www.iuma.ulpgc.es/users/jmiranda/docencia/programacion/Tema4_ne.pdf http://2.bp.blogspot.com/_XpBh0uz0ZPw/SPvlg5V548I/AAAAAAAAAKA/w8F9ZQNHAUg/s400/arreglo.png http://imagenes.mailxmail.com/cursos/imagenes/8/5/arrays‐unidimensionales‐los‐vectores_9958_23_1.jpg http://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Array1.svg/328px‐Array1.svg.png http://ifxperu.com/wp‐content/uploads/2011/03/ArraysUniMulti.gif http://www.mailxmail.com/curso‐aprende‐programar/metodos‐ordenamiento‐busqueda Imágenes http://logica‐digital.blogspot.com/2007/11/suplemento‐3‐cmo‐trabaja‐el.html http://www.emezeta.com/articulos/dibujar‐grafos‐o‐estructuras‐de‐datos#axzz1Nay42PSR http://tesciedd.blogspot.com/2011/01/unidad‐4‐arboles‐y‐grafos.html http://www.zator.com/Cpp/E4_5_8.htm http://designweb‐coepa.blogspot.com/2010/06/133‐estructuras‐de‐navagacion.html http://lml.ls.fi.upm.es/~mcollado/xml/xml‐code.html 79 DATOS SIMPLES: Son aquellos que ocupan sólo una localidad de memoria. DATOS ESTRUCTURADOS: Son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador único. BASE DE DATOS: Está formado por una colección de registros, los cuales están conectados entre sí por medio de enlaces. Registro.- Es una colección de campos (atributos). Campos.- Contiene almacenado solamente un valor. Enlace.- Asociación entre dos registros, así que podemos verla como una relación estrictamente binaria. ESTRUCTURA DE DATOS: En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental es la mínima información que se tiene en el sistema) con el objetivo de facilitar la manipulación de estos datos como un todo o individualmente. PILA: (stack) es una colección ordenada de elementos en la cual se pueden insertar nuevos elementos por un extremo y se pueden retirar otros por el mismo extremo; ese extremos se llama ``la parte superior'' de la pila. ARREGLOS: Es un conjunto de datos o una estructura de datos homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal). Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos: • De una dimensión. • De dos dimensiones. • De tres o más dimensiones ARREGLOS UNIDIMENSIONALES: Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior. COLAS: Es una estructura lineal de datos. Una cola es un grupo ordenado de elementos homogéneos en el que los nuevos elementos se añaden por un extremo (el final) y se quitan por el otro extremo (el frente). ÁRBOL: Es una estructura de datos ampliamente usada que emula la forma de un árbol (un conjunto de nodos conectados). 80 Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. 81 GUIA DE OBSERVACION: TPS-04/M2S1/ Nombre del alumno: Campos de aplicación Carrera: Técnico en programador de software. Lugares donde se pueden aplicar las estructuras de datos: Modulo II:. Estructura los datos orientados a objetos. Submódulo I: Implementar sistemas con la aplicación de los diferentes tipos de estructura de datos. 1. tiendas, 2. comercios 3. y/o consultorios. Evidencia por desempeño: carpeta de evidencia con los programas y prácticas donde está aplicando su proyecto. Evidencia de actitud asociada: orden, disciplina y honestidad Instrucciones para el alumno: implementa las estructuras de datos con su respectivo ABC y el medio de aplicación así como su manual. CRITERIOS CUMPLIO SI NO OBSERVACIONES 1 ¿Entrego el proyecto en tiempo y forma y con el uso adecuado de ortografía? 2 ¿Aplicó los criterios para la entrega del manual como portada, índice, desarrollo conclusión y fuentes de información, etc.? 3 ¿Aplicó el proyecto con la utilización de las estructuras de datos vistas en clase? 4 ¿Aplicó la utilización adecuada del IDE propuesto en clase? 5 ¿Aplicó sintaxis extra clase de algún tema dentro del proyecto? 6 ¿Participó de manera activa en las estrategias de construcción del aprendizaje recomendadas? 82 Observaciones generales Evaluó (Nombre y Firma) Lugar y fecha de la aplicación 83 CUESTIONARIO PARA VISITAS GUIADAS 1.- ¿Escribe el nombre del sistema de aplicación que viste? 2.- ¿Escribe una lista de los lenguajes de programación que utilizan? 3.- Describe para quienes o que empresas elaboran programas y/o sistemas la que visitaste. 4.- Describe en qué parte del proceso de la programación te gustaría desarrollarte. 5.- Cuantas computadoras pudiste localizar que son las dedicadas exclusivamente para la creación de programas y sistemas de aplicación. 6.- Describe que fue lo que más te intereso en la visita guiada. 84 Nombre del Estudiante: Materia: Lista de Cotejo Carpeta de Evidencia a Estudiantes Cumplió Aplica No Aplica Portada Misión y Visión Índice Desarrollo de temas Incluyo temas extras desarrolladas Contiene Exámenes Calificados Ejercicios en clase Contiene Prácticas y/o Reportes de los laboratorios Incluye tareas y trabajos investigación Incluye su Proyecto Incluye Conclusión Observaciones: Firma del estudiante Docente 85