Page 38 - Revista FIUDE 2014
P. 38
elemento más. Que conceptualice que la razón del éxito es la terminación, lo que depende no de las
propiedades de la lista, sino de las acciones realizadas sobre ella durante la ejecución.
Formalización del problema.
Tras lograr la conceptualización del algoritmo, se procederá entonces a su formalización (situación
didáctica). La formalización consiste en la escritura de la solución del problema en un lenguaje formal
que sea adecuado. En el caso de los algoritmos, un lenguaje formal adecuado para su escritura es algún
lenguaje de programación que pueda luego ejecutarse en una computadora. En el curso de Programación
II se utiliza el lenguaje de programación C, por lo que será éste el lenguaje utilizado para la formalización
del problema.
Dado que el lenguaje empleado para la formalización es un lenguaje totalmente conocido para el
estudiante (el lenguaje C que ya ha utilizado anteriormente en el curso), el pasaje de la conceptualización
a la formalización del algoritmo prácticamente no reviste dificultad ni construcción de conocimiento
adicional para él. Por lo tanto, dado que el estudiante ya ha conceptualizado el algoritmo, generalmente
lo escribe correctamente en el primer intento. Usualmente, su escritura es similar a lo siguiente:
int CantidadElementosLista (Lista L)
{
if (L == NULL)
return 0;
else
return 1 + CantidadElementosLista (L -> sig);
}
Nota: En el lenguaje de programación C, NULL representa a la lista vacía, mientras que L -> sig representa
a la lista sin su primer elemento (es decir, el resto de la lista, sin el valor actual).
Formalización de un esquema de recursividad primitivo para listas.
Tras haber construido la formalización para el problema, el docente la utilizará como punto de partida
para el esbozo de un esquema de recursividad genérico para el caso de las listas. No se pretende en este
trabajo formalizar el concepto de recursividad a un nivel más genérico, sino simplemente llegar a una
formalización simple aplicable a las listas.
Partiendo de la formalización realizada para el algoritmo que cuenta la cantidad de elementos de la
lista, el docente realizará las siguientes preguntas al alumno: ¿Sobre qué lista se aplicó el paso base de
la función? y ¿Sobre qué lista se aplicó el paso recursivo de la función? Las preguntas son para que el
estudiante vuelva a responder (pues se supone que ya debería haberlo conceptualizado) que se aplica
sobre la lista vacía en el primer caso y sobre la lista siguiente para el segundo caso. Esto es a efectos de
que el estudiante los tenga presentes para la generalización de la formalización para cualquier algoritmo
sobre listas.
Posteriormente a la realización de las preguntas, y tomando la formalización ya escrita para el algoritmo, el
docente le pedirá al alumno que generalice su solución tomando en cuenta las siguientes indicaciones:
• Cambiar el nombre concreto del algoritmo por un nombre genérico.
• Remplazar la salida del algoritmo por un codominio genérico.
• Modificar el resultado del paso base por puntos suspensivos.
• Modificar la operación de sumar 1 por puntos suspensivos que representen cualquier posible
operación.
Reflexiones sobre Ingeniería