trabajo colaborativo estructuras 2

6
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESTRUCTURA DE DATOS 301305 INGENIERIA DE SISTEMAS I-2012 JORGE ANDRES BROWN JAQUE 1024479636 CALI-PALMIRA

Upload: andres-jaque

Post on 02-Aug-2015

456 views

Category:

Documents


8 download

DESCRIPTION

estructuras

TRANSCRIPT

Page 1: Trabajo Colaborativo Estructuras 2

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIAUNAD

ESTRUCTURA DE DATOS301305

INGENIERIA DE SISTEMAS I-2012

JORGE ANDRES BROWN JAQUE1024479636

CALI-PALMIRA

MAYO 2012

Page 2: Trabajo Colaborativo Estructuras 2

INTRODUCCION

El siguiente desarrollo permite proporcionan mucha utilidad al programador ya que permiten accesar y manipular datos de tal manera que no es posible realizarse en otros lenguajes llamados de alto nivel. Esta actividad nos permite revisar los conocimientos obtenidos en la unidad 2, donde miramos las temáticas de: Pilas, Colas y Listas.

OBJETIVOS* Desarrollar programas que permitan fortalecer las buenas practicas de programación dando aplicabilidad a las estructuras lineales a través del desarrollo de supuestos semánticos en entornos reales.

- Dar aplicabilidad al uso y manejo de las variables apuntadores, funciones y operadores de C++ en el manejo de la memoria de forma dinámica, así integrar estos conceptos con las operaciones que se pueden realizar con las estructuras de datos lineales.

TRABAJO COLABORATIVO 2 - DESARROLLO

1. Planteamiento del problema o supuesto semántico.Se requiere implementar una aplicación que permita generar una agenda telefónica por medio de una lista enlazada. El sistema debe permitir el ingreso de contactos de los cuales se debe guardar la siguiente información: el nombre, teléfono fijo y teléfono celular. Se deberá permitir en cualquier momento las operaciones de Insertar personas a la lista, Eliminar personas de la lista, Visualizar la lista y Buscar datos en la lista.

  2. Análisis de Requerimientos y Listado de Recursos.

Requerimientos

Realizando un análisis de los requerimientos encontramos los siguientes:a. Se debe generar una agenda telefónica y para ello se debe emplear una estructura llamada lista enlazada.b. Par cada contacto o persona se debe guardar la información de nombre, teléfono fijo y teléfono celular.c. Debe realizar las operaciones de Insertar, Eliminar, Visualizar y Buscar personas en la agenda.d. También debe ofrecer la opción de portada donde se mostrará la información de lo que realizar el software y los integrantes del grupo colaborativo, etc.

Recursos

Se utilizan los siguientes recursos:* Estructura Lista (Struct lista)* Variables dentro de la estructura * int numero;

Page 3: Trabajo Colaborativo Estructuras 2

* char nom[45]* char fijo[15]* char celular[15]* Apuntadores (*sig, *entero, *recorrer, *cablista, *puntauxiliar )* Variables Tipo Int (opc, valor* Funciones (menu(), insertar(), eliminar(), visualizar(), buscar(), portada())* Funcion principal main() * Operadores para la gestión dinámica de memoria (new y delete)

3. Código del Programa implementado

Documentación aplicativa

Función main()

En la línea 32 comienza la función main o función principal, se inicia con la línea 33 con una llave { , luego en la línea 34 se limpia pantalla. En la línea 35 se llama a la función menú() y en la línea 36 se termina la función cerrando con una llave }

Función menu()En las líneas 39 y 40 se inicia la función menú con una llave {. Linea 41 se declara la variable opc y se inicializa en 0. Lineas 42 y 43 se inicializa un ciclo do-while también con una llave {. Linea 44 se limpia pantalla con la función clrscr(). Linea 45 se ubica la salida en pantalla con la función gotoxy. La línea 46 se define el color de salida en pantalla del fondo y color del texto. De las líneas 47 a la 60 se tiene la salida en pantalla de las opciones del menú y su ubicación en la pantalla con la función gotoxy. En la línea 61 y 62 se captura la opción escogida en el menú. De las las 64 a la   82 se utiliza un switch para entrar a la opción escogida según el menú entrando al case indicado donde se llama a la función respectiva. En la línea 84 se cierra el do-while y en la línea 85 se cierra la función con una llave }.

Función insertar()Se inicia en la línea 90 donde se reciben unos parámetros. En la línea 92 al tipo de dato estructura llamado lista se le apuntan 3 apuntadores. En la línea 93 se crea un nuevo nodo con asignación dinámica de memoria. De las líneas 94 a la 98 si no se pudo crear el nodo saca mensaje de error y se sale. De las líneas 99 a la 116 se capturan los datos a guardar en el nuevo nodo. En la línea 117 puntauxiliar apunta a null. En la línea 118 cablista apunta a donde está el apuntador *entero.En la línea 119 se abre un ciclo while con la condición de que cabLista sea diferente de nulo y cabLista.numero sea menor que valor. En   la línea 121 si se cumple la condición del while entonces puntAuxiliar se le asigna cabLista. En la línea 122 a cabLista se le asigna cabLista.sig. De líneas 124 a 133 hay un condicional si puntAuxiliar es igual a nulo osea si la lista esta vacía entonces el asigna a recorrer.sig donde esta el apuntador *entero en este caso *entero esta apuntando a null y a *entero lo asigna a recorrer osea lo coloca como cabecera de la lista. Sino se cumple la condición osea puntAuxiliar no es nulo (la lista no esta vacía) entonces puntAuxiliar.sig le asigna recorrer y a recorrer.sig lo apunta a cablista. Línea 134 fin de la función insertar().

Función Eliminar()En la línea 138 se inicia la función recibiendo parámetros para la función. En las líneas 140 a la 142 se toma a cablista y se apunta al apuntador *entero y a puntAuxiliar se le asigna nulo. En la lista 148 hay un condicional Si cablista es igual a nulo osea si la lista esta vacía saca un mensaje anunciando eso, como se ve en la línea 150.   Sino en la línea 155 pide el código a eliminar y en la 156 lo captura. En la

Page 4: Trabajo Colaborativo Estructuras 2

línea 157 aparece un ciclo While donde si cablista es diferente de null osea no esta vacia la lista y cablista.numero es diferente de valor. En las líneas siguientes 160 y 161 recorre la lista y   compara (línea 164) si cablista.numero es diferente de valor osea no hay coincidencias entonces saca el mensaje “el numero no existe en la lista”, como aparece en la línea 165, sino osea si hay coincidencias entre cablista.numero y valor entonces procede a la eliminación no importando si se encuentra el nodo al principio, al intermedio o al final de la lista, como se evidencia en la línea 174 donde con el operador delete se elimina el nodo. En la línea 179 se retorna al entorno grafico fondo de texto negro y color texto blanco.

Función Visualizar()Esta función comienza en la línea 183. En la línea 186 el apuntador cablista se le asigna que apunte a *entero. Luego en la línea 192 se encuentra un condicional donde se evalúa que si cablista es igual a null osea se pregunta si la lista esta vacía. Si es así en la línea 194 se envía un mensaje por pantalla avisando que la lista esta vacía. Sino se procede a visualizar por pantalla la información de la lista. Para ello en la línea 202 encontramos un ciclo repetitivo o while que tiene como condición que si cablista es diferente de null osea si la lista tiene elementos entonces los imprime por pantalla eso se hace con el código de las líneas 205 a las 209. Luego en la línea 210 se apunta cablista a cablista.sig osea al siguiente nodo hasta llegar al final. En la línea 213 se retorna al entorno grafico fondo de texto negro y color texto blanco. Línea 214 final de la función.

Función Buscar()Comienza en la línea 217. Linea 218 se abre la función con la llave {. En la línea 220 el apuntador cablista se le asigna que apunte a *entero. En la línea 226 se encuentra un condicional donde se evalúa que si cablista es igual a null osea se pregunta si la lista esta vacía. Si es así en la línea 228 se envía un mensaje por pantalla avisando esto. Sino entonces en la línea 234 se pide el código a buscar en la lista. En la línea siguiente la 235 se captura ese código. En la línea 236 aparece un ciclo while o mientras que la condición de cablista diferente de nulo y   cablista.numero menor que valor entonces pasa la siguiente nodo y verificu un condicional que aparece en la línea 239, donde se evalua la condición de que si cablista.numero es igual a valor es porque encontró el código. Envia un mensaje avisando que lo encontró como se nota en la línea 240. En la línea 242 a la 244 imprime por pantalla la información del nodo encontrado. Pero si no lo encuentra envía el mensaje de que no lo encontró, línea 246.

Función Portada()Línea 251 se encuentra el inicio de la función la cual no devuelve valores porque es vacía. Línea 253 y 254 se limpia la pantalla y se prepara el color del fondo del texto y el color del texto. De la líneas 255 a la 286 se envía por pantalla la portada del trabajo utilizando la función gotoxy para ubicar los textos en pantalla. Linea 289 final de la función.

CONCLUSION

Con el desarrollo de este trabajo de pudimos entender las aplicación de las listas enlazadas ya que estas tienen menos restricciones que las pilas o colas.

A partir de estos conceptos reconocemos la importancia de este temática en la programación estructurada.

BIBLIOGRAFIA

Page 5: Trabajo Colaborativo Estructuras 2

  * Modulo de Estructura de Datos. UNAD 2011  * Aula virtual: Curso 301305 Estructura de Datos. UNAD 2011i