Site hosted by Angelfire.com: Build your free website today!

 

UNIVERSIDAD DE COSTA RICA

 

 

ESCUELA DE LAS CIENCIAS DE LA COMPUTACIÓN E INFORMÁTICA

(ECCI)

 

 

PROGRAMACIÓN II (CI-1201)

 

 

CENTRO UNIVERSITARIO:

SEDE CENTRAL RODRIGO FACIO

 

 

TAREA #4

 

LISTAS ENLAZADAS

 

 

GRUPO: 01

 

 

PROFESOR:

ADOLFO DI MARE

 

 

ESTUDIANTES:

CARLOS BADILLA MEJÍA

JORGE A. MENOCAL ROJAS

 

 

CARNÉ:

A40617

A43354

 

 

 

07/09/2005

 

Tabla de contenidos

 

Introducción.. 2

Descripción del problema a resolver. 2

Planteo:. 2

Objetivos:. 2

Requerimientos:. 2

Abstracción.. 3

Especificación de los métodos: 3

Operaciones y métodos: 3

Clase ADH_list: 3

Especificación del programa. 3

Eficiencia: 3

Arquitectura del Programa:. 4

Implementación.. 4

Compilador usado: 4

- ¿Cómo compilar el programa?. 4

Guía de uso del programa. 4

Bibliografía. 5

 

 

 

 

 

Introducción

 

El programa está diseñado para agregar números e ir guardándolos en una lista enlazada, para luego verlos o simplemente borrarlos sin perder la referencia de los demás.

Una vez dominado el tema de listas se podrá manipular otro tipo de datos como registro de empleados, estudiantes, vehículos, etc.; con sus respectivas características para a la hora de hacer una búsqueda se puedan hallar datos con mayor facilidad.

La parte del trabajo a la que se le debe dar énfasis es la implementación de los métodos, sin embargo no se debe dejar de lado la parte del análisis y la documentación, tanto interna como externa del trabajo.    Aunque no pareciera, una buena documentación facilitará mucho la reutilización de código, lo cual es muy útil y abaratará los costos de mantenimiento.

Los documentos de este trabajo, se pueden encontrar en:  www.angelfire.com/cantina/colossus  y en: www.angelfire.com/rock4/a43354

 

 

Descripción del problema a resolver

 

Planteo:

   Tomar un tiempo para comprender la forma en que funcionan las listas para poder implementar dos métodos que ayuden a insertar y eliminar nuevos datos.

   La solución para esto sería tomar en cuenta las especificaciones dadas por el programador en los comentarios.   

 

Objetivos:  

*      Comprender la forma en que trabajan las listas.

*      Comenzar a usar nodos unidos por medio de enlaces a apuntadores.

*      Trabajar de forma modularizada.

*      Practicar el uso de doxygen.

 

Requerimientos:   

El programa requiere tener una plataforma de win32 valida con cualquier sistema operativo de Microsoft Windows; además de que requiere la existencia de los sub-directorios que se deseen ordenar.

 

 

Abstracción

 

Verificar que el método de insertar un nuevo dato, el cual ha sido implementado por el profesor, esta bien hecho, en caso contrario corregir errores, además implementar por completo el método de eliminar.

 

 

Especificación de los métodos:

 

            En el método de insert:

                        Este método estaba implementado y sólo verificamos su funcionalidad.

 

            Método remove:

                        Su función es buscar el valor que el usuario desee eliminar de la lista.  Luego hace que el nodo que apunta al valor deje de hacerlo  y apunte al nodo siguiente al valor.

 

 

Operaciones y métodos:

 

Clase ADH_list:

 /// Inserta un nuevo número al final de la lista

void list :: insert (list :: iterator p, const T& v)

/// Elimina los números que se deseen, en caso de que se repitan varias veces busca uno a uno hasta eliminarlos a todos.

void list :: remove (const T& v)

 

Especificación del programa

 

El main() se encuentra dentro de el archivo USE_list.cpp,

Crea dos objetos de tipo lista, en los cuales se almacenarán los valores insertados, posteriormente hace llamado al método printList que se encarga de mostrar en pantalla el estado de la lista después de que el mismo main ejecute los push_front y push_back que se mencionan.    Al final imprime el último estado de la lista.

 

Eficiencia:

 

Este programa tiene un alto grado de eficiencia debido al uso de referencias para la manipulación de los datos.

 

Arquitectura del Programa:

 

 

                                                                             NULL

                                          +-----+---+   +-----+---+   +-----+---+

    L.m_first-->| v_1 | *-|-->| v_2 | *-|-->| v_3 | 0 |

                                          +-----+---+   +-----+---+   +-----+---+

                m_val  next                      /\

                                                                          ||

                                                                      last_node(L)    

 

 

 

 

Implementación

 

 

Compilador usado:

 

El compilador utilizado fue Microsoft Visual C++ 7.0

 

 

- ¿Cómo compilar el programa?

 

La presentación del trabajo permite que el estudiante simplemente abra el proyecto que se encuentra en el archivo .ZIP y el Visual C++ carga los archivos necesarios para la compilación y ejecución del programa.

 

 

Guía de uso del programa

 

El programa no necesita guía de uso porque no hace falta que el usuario interactúe con el software.

 

 

 

Conclusiones

 

            A partir de los conocimientos adquiridos concluimos que el uso de listas es de gran ayuda en programas de más complejidad debido a la posibilidad que dan de organizar objetos.  El uso de los punteros abre toda una nueva gama de posibilidades para los programadores en C++, aunque no cabe duda de que quienes deseen trabajarlos con naturalidad requieren de una mayor experiencia.

            La programación orientada a objetos que implementó Stroustrup en C++, lo hace más cómodo para trabajar, pero el lenguaje aún extraña el recolector de basura que JAVA posee. ¿Qué tan difícil será implementarlo? Parece que esa parte nos tocará a nosotros.

 

 

 

Bibliografía

 

-         Deitel Harvey M., Deitel Paul J. Como programar en C++. Segunda Edición. Pearson Educación, México, 2003.