Sentencias de control en PROLOG
En prácticamente todos los lenguajes de programación, existen diferentes sentencias de control que nos ayudar a realizar la lógica de programación del código realizado, sin embargo, estas sentencias de control, base en otros lenguajes, no existen de forma “natural” en PROLOG. Esto debido a las características del paradigma de programación lógico en si mismo.
Algunas de estas sentencias fueron posteriormente agregadas al lenguaje, a “petición” de los usuarios, y otras es necesario implementarlas a través del mismo lenguaje. A continuación se presentan tales sentencias.
If Then
En PROLOG podemos realizar la siguiente estructura, para programar sentencias de control If – then.
En este caso, podemos observar que condition, es la condición que se debe cumplir, seguido de -> que sería la primera resultante de esa condición, y seguido de ; que indica la acción else.
1 |
( condition -> then_clause ; else_clause ) |
Podemos ver el siguiente ejemplo
1 2 3 |
( X < 0 -> write('X es negativo'), fail; X =:= 0 -> write('X is zero.'); write('X is positive.')) |
While
La sentencia while, no existe explícitamente dentro del lenguaje de programación PROLOG, por lo que es necesario simularla. Una forma de simularla es la mostrada a continuación.
1 2 |
prolog_while(0) : !. prolog_while(N, A) :- N1 is N -1, A1 is A + 1, prolog_while(N1, A1). |
Repeat
En este caso la función repeat, funciona para realizar una repetición de una función una cantidad N de veces
1 2 3 |
repeat, read(Term), (Term == end_of_file -> ! ; process(Term), fail). |