2.4. Funciones Recursivas e Iterativas


Muchos de las tareas que tratamos de resolver con ordenadores implican laejecución de procedimientos en forma repetitiva. LISP suministra dosparadigmas para el control de las tareas repetitivas: la recursión y laiteración.

La definición de nuevas funciones consiste básicamente en lacombinación de llamadas a otras función que resulten adecuadas alos fines que nos proponemos. Un caso particular surge cuando la funciónse llama a sí misma. Estas funciones suelen llamarse funciones recursivas. Obsérvese que lafunción recursiva se repite invocándose a sí misma. Estolo hace desde la llamada inicial al programa. Así que para cadarepetición hay una nueva llamada a la función original.

Cualquier otro procedimiento repetitivo que no implique una recursiónes un procedimiento iterativo. VisualLISP suministra una serie de funciones específicas para laimplementación de procedimientos iterativos. Las formas mássimples de establecer una iteración serían las funciónREPEAT y FOREACH para listas y VLAX-FOR para colecciones de objetos ActiveX(VLA-object). REPEAT realiza los procedimientos especificados el númerode veces que se especifique en su primer argumento que debe ser unnúmero entero positivo. FOREACH suministra una iteración demanera directa sobre los elementos de una lista. FOREACH debe recibir comosegundo argumento una forma que evalúe como lista. Entonces ejecuta elcuerpo de instrucciones suministrado como sucesivos argumentos una vez paracada uno de los elementos de la lista. Cuando la conclusión del ciclo derepeticiones dependa de que se alcance determinado estado y no sea posiblepredeterminar el número de iteraciones que ello exigirá podemosutilizar la función WHILE que admite como primer argumento unafunción predicado cuyo no cumplimiento (evaluación como NIL)determinará la salida del bucle iterativo.

Existen también las llamadas funciones de mapeado. El Mapeado es un tipo deiteración en la cual una función se aplica sucesivamente aelementos de una o más secuencias de objetos. El resultado de laiteración es una secuencia que contiene los resultados de lasaplicaciones de la función. Visual LISP provee dos funciones de mapeado:MAPCAR, para listas y VLAX-MAP-COLLECTION para colecciones de objetos ActiveX.


Inicio |Índice |Continuar...