next up previous contents
Next: Tratamiento de la negación Up: Estrategias de evaluación Previous: Elección de invocaciones.   Contents

Elección de procedimientos.

Se utiliza el orden en que el usuario escribió las definiciones de procedimientos. En este sentido se sigue la tradición de los lenguajes imperativos. Bajo esta estrategia la evaluación del programa CONSEC, visto anteriormente, recorrería el árbol de izquierda a derecha, y las soluciones se las daría al usuario en el orden Z := 3 y Z := 4. Si en cambio se intercambiaran las definiciones de los procedimientos, la misma invocación produciría un recorrido del mismo árbol de derecha a izquierda, encontrando primero la culminación insatisfactoria para luego dar las soluciones en el orden Z := 4 y Z := 3.

Con el objeto de ofrecer al usuario la posibilidad de alterar el árbol del espacio de computación, y así obtener mayor eficiencia en la ejecución de sus programas, el lenguaje PROLOG dispone de un operador de control explícito. Normalmente se le escribee con el símbolo «/» y se le denomina cut. Sintácticamente cumple la función de un predicado sin parámetros que sólo puede aparecer en el cuerpo de un predicado. Su función es podar el árbol de computación, eliminando todas las alternativas pendientes desde que el procedimiento que contiene al «/» fue invocado. Si la primera regla del programa CONSEC se escribiera:

        CONSEC ( X, Y, [X.[Y.Z]] ) <- / .

la ejecución terminaría luego de encontrar la solución Z := 3.

El operador «/» no tiene interpretación lógica y su explicación algorítmica no es simple. Es por ello que a su utilización en programación lógica se la compara con el uso del GO TO en la programación tradicional. Es indudable que permite construir programas más eficientes (como el GO TO), pero oscurece la comprensión de los programas y es fuente de errores durante la modificación de los mismos.


next up previous contents
Next: Tratamiento de la negación Up: Estrategias de evaluación Previous: Elección de invocaciones.   Contents
Cesar Ballardini
2003-10-14
Hosted by www.Geocities.ws

1