Laboratorio 7: Listas Ordenadas

Post date: Mar 8, 2013 12:52:20 PM

El objetivo de este laboratorio es implementar la estructura de datos OrdList para representar listas ordenadas de números. Para ello, cada estudiante deberá completar una plantilla con la implementación de algunas funciones que serán probadas con algunos casos de prueba.

El archivo 2013-1-pimo-lab7.tar.gz contiene los archivos y plantillas del laboratorio. Una vez bajado y estando en el directorio en donde se encuentra este archivo, este archivo se puede descomprimir con el siguiente comando, que generará el directorio lab7:

tar zxvf 2013-1-pimo-lab7.tar.gz

El directorio lab7 contiene los siguientes archivos:

  • OrdList.test.py: conjunto de pruebas para la implementación de listas ordenadas
  • pimo/OrdList.py: plantilla para la implementación de listas ordenadas
  • pimo/__init__.py: descriptor del paquete pimo (ver acá para más detalles)

Cada estudiante debe modificar únicamente el contenido del archivo pimo/OrdList.py con la implementación de las funciones que no han sido implementadas aún (aquellas con la instrucción pass).

El conjunto de pruebas en el archivo OrdList.test.py se suministra para validar que la implementación de las listas ordenadas es potencialmente correcta. Para ejecutar las pruebas, basta con estar en el directorio lab7 y ejecutar el siguiente comando:

python3 OrdList.test.py

Inicialmente, ejecutar el comando anterior genera los siguientes resultados, que indican que algunas pruebas son satisfactorias (True) mientras que otras no lo son (False):

Test init(01): True
Test insert(01): True
Test insert(02): False
Test empty(01): None
Test empty(02): True
Test empty(03): True
Test empty(04): None
Test count(01): False
Test count(02): False
Test count(03): False
Test count(04): False
Test count(05): False
Test remove(01): False
Test remove(02): True
Test remove(03): True
Test remove(04): True
Test remove(05): False
Test pop(01): True
Test pop(02): False
Test pop(03): False
Test pop(04): True
Test index(01): False
Test index(02): False
Test index(03): False
Test index(04): False
Test extend(01): True
Test extend(02): False
Test purge(01): True
Test purge(02): False
Test purge(03): True
Test purge(04): False

Una vez implementadas las funciones de la lista ordenada, ejectuar el comando anterior debería arrojar los siguientes resultados, indicando que todas las pruebas son satisfactorias:

Test init(01): True
Test insert(01): True
Test insert(02): True
Test empty(01): True
Test empty(02): True
Test empty(03): True
Test empty(04): True
Test count(01): True
Test count(02): True
Test count(03): True
Test count(04): True
Test count(05): True
Test remove(01): True
Test remove(02): True
Test remove(03): True
Test remove(04): True
Test remove(05): True
Test pop(01): True
Test pop(02): True
Test pop(03): True
Test pop(04): True
Test index(01): True
Test index(02): True
Test index(03): True
Test index(04): True
Test extend(01): True
Test extend(02): True
Test purge(01): True
Test purge(02): True
Test purge(03): True
Test purge(04): True

Es importante que cada estudiante se familiarice con las pruebas de las funciones, especialmente con el manejo de errores y excepciones (ver acá). Note que el manejo de errores y/o excepciones es fundamental para probar funciones, como pop y remove, que pueden arrojar errores en algunos casos.

El laboratorio es individual y cada estudiante debe entregar:

  • El código impreso del archivo pimo/OrdList.py
    • El archivo debe ser compatible con Python 3
    • El archivo debe contener una implementación de listas ordenadas para la cual las pruebas son todas satisfactorias.
    • El encabezado del archivo debe indicar, usando comentarios de Python,
      • Su nombre en la primera línea
      • Su código de estudiante en la segunda línea