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

TAREA PROGRAMADA CUATRO

 

 

Introducción

 

El propósito de la cuarta tarea programada es implementar dos métodos dentro de la clase ADH_lst2: estos métodos son move_before y swap.

La primera función será la encargada de mover un nodo delante de otro. La segunda se encargará de intercambiar nodos, desde sus posiciones originales.

Esta tarea podría verse como una continuación de la tarea programada 3, ya que la base para la implementación de las nuevas funciones es el método move_after.

Con la implementación de tales métodos, tendremos que hacer uso de punteros y su modificación, al modificar sus campos de acceso.

Esta documentación se puede encontrar en la dirección:

https://www.angelfire.com/bug/larias

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Problema

 

Con base en el código del método move_after, implementado por el profesor, tenemos que implementar una función move_before, que permitirá colocar un nodo denotado por "from" y colocarlo delante de uno denotado por “to”.

La segunda parte del problema es implementar el método swap. En ADH_lst2 ya existe un método con ese nombre para intercambiar listas. Sin embargo, este se encargará del intercambio de nodos dentro de una lista.

 

Solución

 

Mediante la modificación del método move_after, podrá realizarse la implementación del move_before.  En cuanto al método swap, es necesario la modificación de punteros, para que cambien sus direcciones por otras nuevas.

 

Objetivos

 

v    Familiarizarse con el uso de punteros.

v    Implementar dos nuevos métodos: move_before y swap.

v     Lograr que la lista funcione de la manera pedida.

           

Requerimientos

 

v    Un compilador de C++.

v    Los *.cpp  ADH_list2.

v    Los *.h Tdef y ADH_list2.

v    El código fuente del método Move_after.

 

Abstracción

 

Especificación de la clase

 

La clase ADH_lst2 contiene los métodos necesarios para el buen funcionamiento del programa, entre ellos move_after. Es en esta clase, donde se implementarán los dos nuevos métodos.

 

Operaciones / métodos

 

La clase ADH_lst2 además de los métodos especificados en la tarea anterior contiene dos nuevas funciones:

v    Move_before: permitirá colocar un nodo delante de otro.

v    Swap: permitirá intercambiar nodos.

 

Eficiencia

 

Una vez implementados, los métodos funcionarán de forma satisfactoria, dentro de una lista dada. Sin embargo, podrían presentarse dificultades en casos de que tal lista este vacía.

 

Especificación del programa

 

El programa, además de las funciones que ya utilizaba anteriormente, podrá trasladar nodos delante de otros, incluso si es el primero de la lista. Además, podrá realizar intercambios entre ellos, incluso si se encuentran en los extremos de la lista.

 

Arquitectura del programa

 

El programa esta formado por dos archivos cpp: ADH_lst2, el cual contiene la implementación de los métodos, y USE_lst2, el cual es el punto de entrada para la utilización del programa.

También, necesitan incorporarse otros dos archivos, los cuales son ADH_lst2.h y el Tdef.h, los cuales proporcionan soporte para algunas de las funciones creadas.

 

 

Implementación

 

Modelo de la clase

Clase Lista

Creador y Destructor

 

ADH_lst2(); 

~ADH_lst2();

       

Métodos

 

Pop_front

Pop_back

Push_front(const T& v)

Push_back(const T& v)

Move_before (

    iterator from,

         iterator to   )

 Selection_sort

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Invariante de la clase

 

Para la lista:

    (this->_prm == 0) || (this->_prm == p ) apunta a un nodo

 

Para cada nodo de una lista

    (p->_val es correcto && (p->next == 0 || p->next apunta a un nodo válido )

                         && (p->prev == 0 || p->prev apunta a un nodo válido )

 

 

Arquitectura interna del programa

 

El programa esta formado por un punto de entrada, el cual es USE_lst2.cpp, el cual contiene el método main( ) y se encarga de llamar a los demás métodos. 

El main( )llama a la clase ADH_lst2.cpp, la cual contiene dos nuevos métodos implementados.

 

Compilador usado

 

El compilador utilizado fue el Borland 3.1

 

¿Cómo compilar el programa?

 

Para compilar el programa, es necesario entrar al compilador y cargar el proyecto. Luego, apretar las teclas Alt + C. Esta acción desplegará un submenú, del cual se debe escoger la primera opción “Compile”. Otra manera de compilar, es mediante las teclas abreviadas Alt + F9.

 

Guía de uso del programa

 

Para ejecutar el programa solo es necesario apretar el método abreviado Ctrl + F9 o elegir la opción “Run” en el submenú que se despliega al apretar las teclas Alt + R.

El programa ya tiene unos datos introducidos por el programador. Si se desean resultados diferentes, la modificación debe realizarse directamente en el código fuente, lo cual puede significar un problema para los usuarios inexpertos.

 

Datos de prueba del programa

 

Formato de los datos de prueba

 

Los datos de prueba del programa, serán números enteros, introducidos por el programador, en la implementación del método. 

 

Entradas vs. Salidas esperadas

 

Las entradas esperadas son los números enteros que vienen con la construcción del método. 

La salida esperada es una lista, con esos números, ordenados de la manera en que fueron introducidos, que luego irán siendo modificados conforme avance la ejecución de los métodos.