Está en la página 1de 9

Contenido

Programas Fuente .................................................................................................................. 2


Pantallas Corridas ................................................................................................................... 4
Pantallas de corrida de la división ...................................................................................... 4
Pantallas de corrida del empleado ..................................................................................... 5
Pantalla de Corrida de Factorial ......................................................................................... 6
Pantalla de corrida de Promedio ........................................................................................ 6
Problemas encontrados de la división.................................................................................... 7
Problemas encontrados del Factorial ..................................................................................... 7
Investigación ........................................................................................................................... 8
Conclusión .............................................................................................................................. 9
Bibliografia .............................................................................................................................. 9
Programas Fuente

Programa Factorial

factorial(0,1).
factorial(N,_):- N<0,!,fail.
factorial(N,F):-mayor(N,0), diferencia(N,1,N1),
factorial(N1,F1), producto(N,F1,F).
mayor(X,Y):- X>Y.
diferencia(X,Y,Z):- Z is X-Y.
producto(X,Y,Z):- Z is X*Y.

Programa División

division(_,0,_,_):-write('Error al dividir por cero'),!.


division(A,B,X,Y):-X is A/B, Y is A mod B.

Programa Promedio

producto(X,Y,Z):- Z is (X+Y)/2.

Programa Progenitor

/* Relacion Progenitor */
progenitor(secreto,neartic).
progenitor(nijinsky,neartic).
progenitor(neartic,nearco).
progenitor(nearco,nasrullan).

caballo(secreto).
caballo(neartic).
caballo(nijinsky).

2|Página
caballo(nearco).
caballo(nasrullan).

/*Reglas recursivas*/
ancestro(X,Y):-progenitor(X,Y). /* "X" será antepasado de "Y", si "X" es progenitor de "Y"
*/
ancestro(X,Y):-progenitor(X,Z),ancestro(Z,Y). /* "X" será antepasado de "Y", si "X" es
progenitor de "Z" y "Z" es antepasado de "Y" */

Programa Empleado

empleado(ortiz).
empleado(zaragoza).
mecanografia(ramos).
gerente(jimenez).
gerente(mejia).

supervisa(X,Y):-gerente(X),empleado(Y).
supervisa(X,Y):-empleado(X),mecanografia(Y).
supervisa(X,Y):-gerente(X),mecanografia(Y).

3|Página
Pantallas Corridas
Pantallas de corrida de la división

4|Página
Pantallas de corrida del empleado

5|Página
Pantalla de Corrida de Factorial

Pantalla de corrida de Promedio

6|Página
Problemas encontrados de la división

Problema Solución

Se insertó el cero de la restricción en el Se colocó en la segunda posición que


lugar del residuo pertenece a B (el denominador)

Problemas encontrados del Factorial


Problema Solución
La restricción de un número ingresado Se colocó el “<” para indicar que
mayor a cero era errónea todo aquel número menor a cero
era erróneo

7|Página
Investigación
OPERADORES
En Prolog están predefinidos los operadores aritméticos y relacionales típicos, con la
precedencia habitual entre ellos:

Atributos:
 POSICIÓN:
 Prefijo: el operador va delante de sus argumentos.
 Infijo: el operador se escribe entre los argumentos.
 Postfijo: el operador se escribe detrás de sus argumentos.
 PRECEDENCIA: Nos indica el orden en que se realizan las operaciones. El operador
más prioritario tendrá una precedencia 1 y el menos, 1201 (depende de la
implementación).
 ASOCIATIVIDAD: Sirve para quitar la ambigüedad en las expresiones en las que
hay dos operadores, uno a cada lado del argumento, que tienen la misma
precedencia.

Propiedades de los operadores


 Precedencia es un entero indicando la clase de precedencia,
 Especificador es un átomo indicando la posición y la asociatividad, y
 Nombre es un átomo indicando el nombre que queremos que tenga el operador.

8|Página
Conclusión
Parar el ingreso de todas las operaciones aritméticas, era necesario indagar sobre
operaciones básicas elementales, a través de los operadores lógicos para así llegar al
resultado requerido. La interpretación de las fórmulas investigadas eran relativamente
sencillas hasta que se aplica la recursividad como en el ejemplo del número factorial
donde se tiene que multiplicar el número dado por uno anterior.

Bibliografia
https://www.infor.uva.es/~teodoro/PrologAlicante.pdf

9|Página

También podría gustarte