You are on page 1of 21

Expresiones aritmticas

Joel Lpez del Mar

Agenda

Operadores aritmticos
Aplicaciones
Predicado fail, cut.
Funciones matematicas
Laboratorios
Ejercicios Propuestos .

Operadores aritmticos
La programacin lgica no tiene como objeto abordar
problemas de clculo numrico, pero a veces son necesarias
ciertas operaciones elementales, como contar el nmero de
elementos de una lista, multiplicar por una constante, etc. En
principio, las operaciones aritmticas pueden expresarse
mediante relaciones.
CONSTANTS
numero = 1000
expresion = 1000+1
GOAL
A=numero,
B=expresion, write(A), write(B), nl.

Realizar la suma de 2 nmeros


domains
nro=integer
predicates
sumar(nro,nro, nro).
leer(nro).
mostrar(nro).
main
clauses
sumar(A,B,S):-S=(A+B).
leer(X):-write("Ingrese numero:"),readint(X).
mostrar(S):-write("la suma es:",S),nl.
main:-write("SUMA DE DOS NUMEROS:"),nl, leer(A),leer(B),
sumar(A,B,S), mostrar(S),fail.
Goal
main.

Realizar la suma de 2 nmeros


domains
nro = integer
predicates
principal
leer(nro)
sumar(nro,nro,nro)
mostrar(nro)
clauses
%%%%%% R E G L A S %%%%%
principal:-write("Suma de Numeros"),nl,
write("============="),nl,nl,
leer(A),leer(B),
sumar(A,B,S),
mostrar(S).
leer(X):- write("Ingrese numero: "),readint(X),nl.
sumar(A,B,S):- S=A+B.
mostrar(S):- write("La Suma es: ",S),nl.
goal

principal.

Muestra en pantalla el uso de todas las funciones matemticas de prolog.


goal
Y1 = sin(90*3.141516/180), % Seno 90 = 0.9999999993
writef("Seno 90 = %f",Y1),
Y2 = cos(90*3.141516/180),nl,
writef("Cos 90 = %f",Y2),nl, % Cos 90 = 0.0000383268
Y3 = arctan(1)*180/3.141516,
writef("ArcoTangente de 1 = %f",Y3),nl, % ArcoTangente de 1 = 45.0010980086
Y4 = ln(2.718281),/*logaritmo natural de e en base e*/
writef("Ln 2.718281 = %f",Y4),/*1*/nl,
Y5 = log(10),/*logaritmo en base 10 de 10*/
writef("log 10 = %f",Y5),/*1*/nl,
Y6 = exp(1),/*e elevado a 1*/
writef("Exp 1 = %f",Y6),/*1*/nl,
Y7 = sqrt(2),
writef("Raiz cuadrado de 2 = %f",Y7),/*1.414213*/nl,
Y8 = round(16.5),
writef("Redondear al entero 16.5 = %f",Y8),/*17*/nl,

Y9 = trunc(16.5),
writef("Truncar 16.5 a la parte entera = %f",Y9),/*16*/nl,
Y10 = abs(-15),
writef("Valor absoluto de -15 = %d",Y10),/*15*/nl,
readln(_).

Operaciones varias
domains
nro = integer
predicates
principal
leer(nro)
sumar(nro,nro,nro,nro)
multiplicar(nro,nro,nro,nro)
promedio(nro,nro,nro,nro)
mostrar(nro,nro,nro)
clauses
%%%%%% R E G L A S %%%%%
principal:-write("Suma de Numeros"),nl,
write("============="),nl,nl,
leer(A),leer(B), leer(C),
sumar(A,B,C,S),
multiplicar(A,B,C,M),
promedio(A,B,C,P),
mostrar(S,M,P).

leer(X):- write("Ingrese numero: "),readint(X),nl.


sumar(A,B,C,S):- S=A+B+C.
multiplicar(A,B,C,M):-M=(A*B*C).
promedio(A,B,C,P):-P=(A+B+C)/3.
mostrar(S,M,P):- write("La Suma es: ",S),nl,
write("La MUltiplicacion es: ",M),nl,
write("El promedio es: ",P),nl.
goal
principal.

Nota:
Note que esto realiza la suma de dos nmeros, readint , permite
ingresar enteros y readln que ingresacadenas, tambin existe readreal
para nmeros reales, ntese tambin que se esta utilizando el predicado
main.
Cut 0 corte, es un objetivo que siempre cumple.
Fail, es un objetivo que siempre falla. til para provocar backtracking

Aritmtica en Prolog

Solucin de Ejercicio f(X,Y)


Caso 1:
f(X,Y) :-..
Caso 2:
f(X,Y) :-..
Caso 3:
f(X,Y) :-..

Operadores aritmticos:

Operadores relacionales

Predicado fail, cut

Prolog cuenta con dos tipos de estructuras; trminos y sentencias


Los trminos pueden ser constantes, variables o functores:
LAS CONSTANTES, representadas por una cadena de caracteres,
pueden ser nmeros o cualquier cadena que comience en minscula.
LAS VARIABLES son cadenas que comienzan con una letra
mayscula.
LOS FUNCTORES son identificadores que empiezan con minscula,
seguidos de una lista de parmetros (trminos) entre parntesis,
separados por comas.
LAS SENTENCIAS son reglas o clusulas.
Hay hechos, reglas con cabeza y cola, y consultas

Expresin aritmtica
Una expresin aritmtica es un trmino construido con nmeros,
variables y funtores que representan funciones aritmticas. Slo se
permiten ciertos funtores en estas expresiones. Algunos de ellos son los
siguientes:
E1+ E2 suma
E1 - E2 diferencia
E1* E2 producto
E1 / E2 cociente
E1 // E2 cociente entero
-E opuesto
E1 mod E2 mdulo, o resto de la divisin
^ potencia
En Prolog se utilizan una serie de operadores aritmticos y relacionales
que permiten aumentar la semntica de la base de conocimiento de un
programa determinado.

Expresin aritmtica
Ingresar 2 nmeros y calcular el mayor y menor nmero.
domains
i,j=integer
predicates
mayor(i,j)
main
clauses
mayor(X,Y):-X>Y,write(X,":es mayor que: ",Y),nl,!.
mayor(X,Y):-X<Y,write(X,":es menor que: ",Y),nl,!.
main:- write("Ingrese numero1:"), readint(X),
write("Ingrese numero2:"), readint(Y),
mayor(X,Y).
Goal
main.

Comparacin aritmtica

Los siguientes predicados evalan sus dos argumentos como


expresiones aritmticas y comparan los resultados.
E1 op E2 Se evalan las expresiones E1 y E2 y se
comparan segn los operadores siguientes:
E1 > E2 mayor
E1 >= E2 mayor o igual
E1 < E2 menor
E1 =< E2 menor o igual
E1 =:= E2 igual
E1 =\= E2 distinto

Ejercicios de operadores aritmticos y relacionales

1. Desarrollar un programa que muestre clientes con lneas


de crdito mayores a 2,000.

2. La lista siguiente son ejemplos de expresiones aritmticas:


1. resultado = x - y;
2. total = capital+ inters;
3. cuadrado = x * x;
4. celcius = (fahrenheit - 32) / 1.8

Laboratorio
main
principal
fail
fallar
cut
cortar, corte, !
backtracking retroceso

21

You might also like