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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Universidad de Costa Rica

 

Facultad de Ingeniería

 

ECCI

 

Programación II

 

Documentación de tarea 5

 

Prof. Alfonso Di Mare

 

Grupo 02

 

Andrey Fco. Pérez Hidalgo

 

A23782

 

Mayo 2005

 

Tabla de contenidos

 

1.      Introducción................................................................................................ 3

2.      Descripción del problema a resolver.......................................................... 4

·        Planteo ..................................................................................................... 4

·        Objetivos .................................................................................................. 4

·        Requerimientos ........................................................................................ 4

3.      Abstracción................ ................................................................................ 5

·        Especificación de la clase......................................................................... 5

·        Operaciones y métodos............................................................................. 5

·        Eficiencia.................................................................................................. 6

4.      Implementación.......................................................................................... 7

·        Modelo de la clase.................................................................................... 7

·        Invariante de la clase................................................................................ 7

·        Compilación y uso del programa...............................................................8

5.      Casos y datos de prueba.............................................................................. 8

6.      Bibliografía..................................................................................................9

 

 

 

 

 

 

 

 

 

Introducción

 

         El problema principal de las hileras C++ es que es necesario controlar que tienen al final el caracter 0 (cero), también llamado “EOS”. Una forma de remediar este problema es utilizar una lista en lugar de una hilera.

 

Esta tarea # 5 consiste en la creación de la clase String_list la cual está implementada como una lista. Para ello se utiliza la clase ADH_list, la cual esta especificada e implementada en tareas anteriores.

 

            Este trabajo se puede encontrar en la siguiente dirección de Internet:

 

www.angelfire.lycos.com/tv2/andreyfperez/Tarea5

 

 

 

 

 

 

 

 

 

 

 

 

 

Descripción del problema a resolver

 

Planteo:

         El principal problema a resolver en este trabajo fue el lograr que la clase String_list se “relacionara”, de una manera correcta (sin meterse en el rep de la lista) con la clase ADH_list, por medio de los métodos públicos y operadores de concatenación, asignación y otros; tanto de la clase ADH_list, como de la propia clase String_list.

 

Objetivos:

El objetivo principal de este trabajo es lograr obtener una estructura de datos que en apariencia funcione como una hilera, pero que internamente sea una lista. Utilizando para lograrlo la sobrecarga de operadores.

 

Requerimientos:

            Entre requerimientos principales para la utilización de este programa se tienen:

·        Una computadora con sus dispositivos, sistema operativo y programas debida mente instalados.

·        Un ambiente de programación para el lenguaje C++; preferiblemente Microsoft Visual Studio.Net o Visual C++ versión 6.0

 

 

 

 

 

Abstracción

Especificación del programa:

 

            Este programa simula el comportamiento básico de una hilera del lenguaje C++ (char *), la cual se utiliza para guardar y procesar conjuntos de caracteres. Todo esto tomando como base la lista.

            Dicho comportamiento básico se basa en poder crear, comparar, concatenar y acceder a la hilera y cualquiera de sus componentes.

            En resumen, este programa está diseñado para manipular hileras, que en el fondo son listas de caracteres.

           

Operaciones y  métodos:

 

Convertidor_lista (char *): Este método recibe como parámetro una hilera y la convierte en una lista, colocando un caracter en cada nodo de la lista.

 

Convertidor_hilera (String_list& SL): Este método recibe como parámetro un objeto de tipo String_list y convierte la lista que tiene en el rep en una hilera, colocando un caracter en cada nodo de la lista. Colocando el elemento que posee cada nodo de la lista en hilera [i], donde i es un número.

 

operator[] (size_t): Este operador está sobrecargado para poder acceder a los elementos almacenados en la lista, de una manera similar a como se hace en una hilera común.

operator= (String_list& SL): Este operador está sobrecargado para que, recibiendo un objeto de de tipo String_list como parámetro, asigne a la lista los elementos almacenados en la lista de SL (parámetro).

 

operator= (char *): Este operador está sobrecargado para que, recibiendo una hilera como parámetro, asigne a los nodos de la lista los caracteres de dicha hilera.

 

operator+ (String_list& _SL): Este es el operador de concatenación, el cual coloca los elementos de la lista de SL(parámetro), inmediatamente después de los elementos de la lista, haciendo que esta última incremente su número de elementos.

 

Imprimir_hilera (): Imprime la lista con un formato similar al de una hilera. Ejemplo: “hilera”.

 

Eficiencia:

 

            En este tipo de programas, que son de carácter didáctico, hablar de eficiencia no tiene mucho sentido; ya que es lógico que una estructura de datos como String_list no va a superar la eficiencia que tienen las hileras comunes.

            A pesar que String_list tiene operaciones y métodos muy útiles como los operadores de asignación y concatenación, la forma en que está implementada (basándose en la implementación de la lista) provoca que a la hora de su ejecución sea más ineficiente, lerda y costosa que una simple asignación de una char o un char *.

 

 

Implementación

 

Hilera “ABCDE”

 
Modelo de la clase:

String_list: en apariencia es una hilera, internamente es una lista

 

Invariante de la clase:

 

            La invariante de la clase de este programa está basada en la implementación de la clase ADH_list, ya que es en esta implementación en la se basa String_list.

 

            El puntero al primer nodo (_prm) de cualquier lista debe apuntar a un nodo válido(p), o en su defecto debe ser cero (lista vacía), y para cada nodo, el puntero al siguiente nodo debe apuntar a un nodo válido o a cero.  

 

 

Compilación y uso del programa:

 

El compilador utilizado para realizar este programa fue el Microsoft Visual Studio, por lo que se recomienda utilizar este mismo compilador para correr el programa, ya que si se utiliza otro software, se pueden producir errores.

 

Para el uso de este programa se debe compilar y ejecutar en el ambiente de programación, para ello se debe:

§         Abrir el proyecto con el Visual Studio: para esto la forma más fácil es dar doble clic sobre el archivo llamado “Tarea5.vcproj”, que se encuentra en la carpeta del proyecto.

§         Compilar el programa: para esto, simplemente se debe apretar la tecla F5.

§         Ejecutar el programa: esto se logra tecleando F9, con ello el programa correrá.

 

Casos y datos de prueba

 

Casos de prueba

Datos de prueba

Hilera nula

“”

Hilera de un caracter

“A”

Hilera de dos caracteres

“AB”

Hilera de tres caracteres

“ABC”

Hilera de cuatro caracteres

“ABCD”

 

 

Bibliografía

 

·                                                              Guía para la documentación, Prof. Alfonso Di Mare

·                                                              www.di-mare.com

·                                                              http://www.doxygen.com/

·                                                              Examen parcial I

·                                                              Tareas anteriores

·                                                              Materia vista en clase