Você está na página 1de 8

Introduccin.

En la siguiente prctica se presentar informacin acerca de la aritmtica que


se maneja en prolog esto con el fin de comprender cmo se utiliza para lograr
aplicarla en nuestras siguientes prcticas de manera correcta.

1.Aritmtica en PROLOG
Prolog, como otros lenguajes de programacin, es capaz de realizar
operaciones aritmticas. Aqu nos interesan solo las operaciones ms bsicas
que podemos realizar con nmeros enteros. Veamos cmo se expresan con el
operador is:

Suma

?- 8 is 6+2.
true.
?- 5 is 3+3.
false.

Resta

?- 12 is 15-3.
true.

?- -3 is 5-8.
true.

Multiplicacin

?- 63 is 9*7.
true.
?736 is 8*96.
false.

Divisin

?- 4 is 36/12.
false.

?- 25 is 125/5.
true.

(Prolog-Aritmetica, n.d.)

1.1 Asignacin vs comparacin


La asignacin del resultado de una funcin a una variable se realiza con el
operador is.
( <variable> | <constante>) is <funcin aritmtica>
Si en la parte izquierda aparece una variable, is realiza una asignacin.
(Se explicar ms adelante).
Si aparece una constante, se realiza una comparacin.

Ejemplos:

Por otro lado, Prolog ofrece una serie de operadores que comparan dos
nmeros. Estos incluyen "mayor que", "menor que", "mayor o igual que" y
"menor o igual que. ' Se comportan de manera ms lgica, y tienen xito o
fracasan en funcin de si la comparacin es verdadera o falsa. Observe el
orden de los smbolos de los operadores mayor o igual que y menor o igual. Se
construyen especficamente para no verse como una flecha, por lo que puede
utilizar los smbolos de flecha en sus programas sin confusin.

X>Y
X<Y
X >= Y
X =< Y

Aqu hay algunos ejemplos de su uso.

?- 4 > 3.
Yes

?- 4 < 3.
no

?- X is 2 + 2, X > 3.
X=4
?- X is 2 + 2, 3 >= X.
no

?- 3+4 > 3*2.


Yes

(AdventureInProlog, n.d.)

1.1.1 Operadores lgicos

, AND
; OR
\= Distinto en Prolog
is Igualdad en Prolog
<> Distinto en TurboProlog
= Vlido en TurboProlog con las siguientes reglas:
X=4 Si X est instanciado se realiza una comparacin.
Si X no est instanciado entonces se realiza la instancia.

Ejemplo de aplicacin:

Como cualquier otro lenguaje de programacin, PROLOG posee la capacidad


de evaluar expresiones lgicas, como ejemplo, tomaremos el caso del
programa que est en la imagen, en donde hemos representado las
condiciones para la autorizacin de un crdito.

La aplicacin de las expresiones lgicas la hemos realizado en las reglas de


historial y permanencia, en donde la regla:

historial(X):-ingresos(X,Y),Y>2000.
Nos define que la consecuencia de que una persona X tenga un buen o mal
historial esta dada, primero porque esta persona tenga un ingreso por una
cantidad Y ( ingreso(X,Y)) y que esa cantidad Y sea mayor de 2000.
De la misma forma aplicamos la regla para la permanencia, en donde
evaluamos la antigedad de la persona en su trabajo y la combinacin de las
dos reglas mencionadas nos dar la autorizacin o no del crdito.
Ahora veamos la ejecucin de este ejemplo:

(Expresiones Lgicas en Prolog, n.d.)


1.1.2 Diferencia entre = y ==
X = Y.
Unificacin: intenta hacer X e Y iguales mediante unificacin.
El predicado igual (=) compara dos trminos, y es verdadero solamente cuando
ambos son idnticos o cuando alguna sustitucin de variables los hace
idnticos (es ms correcto decir cuando unifican).
Las siguientes consultas nos dan un ejemplo:
?- 1 = 1. Yes
?- 1 = 2. no
?- 2 = 1+1. no
?- a=A.
A= a;
No

Puede parecer extrao que la consulta 2 = 1+1 nos arroje un no como


respuesta; en realidad, la constante 2 no unifica con el predicado + con dos
argumentos 1 y 1. Para estas comparaciones, y para conseguir
asignaciones, se usa el predicado is.
(Amzi, n.d.)

X == Y.
Identidad ms restrictiva que X = Y.

Se satisface si X = Y, pero no necesariamente a la inversa.


Ejemplos:
?- X = Y.
?- X == X.
?- X = Y, X == Y.
?- append([A|B], C) == append(X, Y). ?- append([A|B], C) == append([A|
B], C).
(Operadores Prolog, n.d.).

1.2 La asignacin nmerica


Prolog debe ser capaz de manejar la aritmtica con el fin de ser un lenguaje de
programacin de propsito general til. Sin embargo, la aritmtica no encaja
muy bien en el esquema lgico de las cosas.

1.2.1 Asignacin nmerica en PROLOG por medio del is


El concepto de la evaluacin de una expresin aritmtica est en contraste con
la coincidencia de patrones recta que hemos visto hasta ahora. Por esta razn,
Prolog ofrece el predicado incorporado "is" que evala las expresiones
aritmticas.
Su sintaxis exige el uso de los operadores.
X is <arithmetic expression>
La variable X se establece en el valor de la expresin aritmtica. El retroceso
es sin asignar.
La expresin aritmtica se ve como una expresin aritmtica en cualquier otro
lenguaje de programacin.

Aqu es cmo utilizar Prolog como una calculadora.


?- X is 2 + 2.
X=4

?- X is 3 * 4 + 2.
X = 14

Los parntesis aclaran precedencia.


?- X is 3 * (4 + 2).
X = 18

?- X is (8 / 4) / 2.
X=1

1.2.2 Operadores aritmticos en PROLOG

Todas las versiones de Prolog soportan los siguientes operadores aritmticos,


listados en el orden de prioridad de ejecucin.

+ --> SUMA

- --> RESTA

* --> MULTIPLICACIN

/ --> DIVISIN

// --> DIVISION ENTERA

MOD --> RESIDUO

^ --> POTENCIA

Los parntesis se pueden utilizar para dar preferencia de ejecucin en una


expresin compuesta. Prolog utiliza la precedencia de operadores con la regla
de la mano izquierda.

A continuacin, se muestran algunas operaciones ms complejas que


PROLOG provee:

OPERACIN DESCRIPCIN

Sqrt(X) Calcula la raz cuadrada de la variable

log(X) Calcula el logaritmo de X

ln(X) Calcula el logaritmo natural de X

abs(B) Regresa el valor absoluto de B


sin(T) Seno de T

cos(A) Coseno de A

tan(C) Tangente de C

Operadores relacionales

Prolog soporta los siguientes operadores relacionales:

= --> IGUAL QUE

> --> MAYOR QUE

>= --> MAYOR O IGUAL QUE

>= --> MENOR O IGUAL QUE

<> --> DESIGUAL QUE

=/= --> DIFERENTE QUE

is --> EVALUADOR DE EXPRESIN

seed --> GENERADOR DE NMEROS ALEATORIOS

Cuando dos objetos que son smbolos o cadenas de caracteres son


comparados, los caracteres son convertidos a su equivalente ASCII. El valor de
cada carcter es examinado a partir del operador relacional, de izquierda a
derecha.
(Expresiones Lgicas en Prolog, n.d.)

Referencias

AdventureInProlog [en lnea], (n. d.). AdventureInProlog. [fecha de consulta: 25


de septiembre de 2016]. Disponible en:<
http://www.amzi.com/AdventureInProlog/a6arith.php>

Amzi [en lnea], (n. d.). Amzi. [fecha de consulta: 25 de septiembre de 2016].
Disponible en http://www.amzi.com/articles/code07_whitepaper.pdf>

Expresiones Lgicas en Prolog [en lnea], (n. d.). Expresiones Lgicas en


Prolog. [fecha de consulta: 25 de septiembre de 2016]. Disponible en:<
https://sistemasumma.com/2012/11/03/expresiones-logicas-en-prolog/>

Operadores Prolog [en lnea], (n. d.). Operadores Prolog. [fecha de consulta: 25
de septiembre de 2016]. Disponible en:<
http://www.infor.uva.es/~calonso/IAI/PracticasProlog/Tema6/Tema
%206.%20Operadores%20en%20PROLOG.pdf>

Prolog-Aritmetica [en lnea], (n. d.). Prolog-Aritmetica. [fecha de consulta: 25 de


septiembre de 2016]. Disponible en:<
http://www.uhu.es/nieves.pavon/pprogramacion/temario/tema1/tema1.html>

Conclusin
A travs de esta prctica se logr manipular un poco ms el entorno prolog,
conociendo nuevas estructuras y haciendo uso de ellas para crear un programa
un tanto ms complejo.

Você também pode gostar