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
   33   34   35   36   37   38   39   40   41   42   43