Professional Documents
Culture Documents
Operadoresaritmticos
+,,*,/
//:cocientedeladivisin(divisinentera)
mod:restodeladivisin(mdulo)
^:potencia(primeroperandoelevadoasegundooperando)
Operadoresrelacionales
>,<,>=,<=
Operadoresdeigualdad
=:unificacin.Esverdaderosiambosoperandosunifican,en
cuyocasoserealizalaunificacin.
Dados2trminoscualesquiera,T1yT2,
paraqueseunifiquenenPROLOGunode
ellosdebeserunavariablenoinstanciada
1 de 31
yalfinalacabaratomandoelvalordel
otro.
Prolog
Operadoresdeigualdad
\=:nounificacin.EsverdaderosiambosoperandosNO
unifican,encuyocasoNOserealizalaunificacin.
is:evaluador.Seutilizaparaevaluarlasexpresiones
aritmticasyfunciones.Evalalapartedeladerechayunifica
alaparteizquierda.Sinoseusaelis,lasexpresionesse
mantienenensuformaoriginal(X=3+3enlugardeX=6).
==:significaesexactamenteigualque.Comparatrminossin
evaluarexpresiones.(nounifica).Ambostrminostienenque
estarinstanciados.
2 de 31
Prolog
Operadoresdeigualdad
\==:esfalsocuandodostrminossonexactamenteiguales.(no
unifica).
=:=:mismovalor.Evalalosdosoperandos,aderechaya
izquierda,yesverdaderosilosvaloresobtenidossoniguales.
(nounifica).
3 de 31
Prolog
?Xis3+4. ?Xis8,Xis3+5.
X=7 X=8
Yes Yes
?X+Y=3+5. 3==1+2.
X=3,Y=5 No
Yes
?X=3+5. 3*3=:=9.
X=3+5 Yes.
Yes
?Xis8,X=3+5. ?X*Y=9*a.
No X=9,Y=a
Yes
4 de 31
Prolog
precio(boligrafo,0.5).
precio(folios,2.5).
precio(portatil,700).
precio(carro,5000).
precio(tomate,2).
%%Qupuedocomprarcon100pesos?
?precio(X,Y),Y<100.
X=boligrafo,Y=0,5;
X=folios,Y=2,5;
X=tomates,Y=1;
No.
5 de 31
Prolog
ganados(juan,7). ?porcentaje(X,Y).
ganados(susana,6). X=juan,
ganados(pedro,2). Y=53.84615384615385;
ganados(rosa,5). X=susana,
jugados(rosa,10). Y=85.71428571428571;
jugados(juan,13). X=pedro,
jugados(pedro,3). Y=66.66666666666666;
jugados(susana,7). X=rosa,
Y=50.0.
porcentaje(X,Y):ganados(X,Z),jugados(X,Q),Yis(Z/Q)*100.
6 de 31
Prolog
Instanciacindevariablesconoperadores:
UnavariableestinstanciadacuandoPrologleha
asignadounvalor.
Losoperadoresaritmticosyrelacionalesnecesitanque
todaslasvariablesimplicadasenlaexpresin
correspondienteestninstanciadasenelmomentoenque
serealizalaevaluacin.Enotrocaso,Prolognosavisarde
quelasvariablesnoestndebidamenteinstanciadas.El
operador=:=seincluyeenestegrupo.
7 de 31
Prolog
?5=:=X+4Error!Xnoestinstanciadaynosepuede
realizarlasuma.
Eloperadorisrequierequeestninstanciadaslas
variablesdeloperandoaladerecha.
?5isX+4Error!Xnoestinstanciadaynosepuede
realizarlasuma
?Yis1+4Correcto:Y=5
8 de 31
Prolog
Losoperadoresdeunificacin(=,\=)norequierenquelas
variablesestninstanciadas
?X=YCorrecto:X=_G210,Y=_G210(Lasvariablesse
unificanaunamisma)
Aunqueenlgicanoesimportanteelorden,squeloesen
Prolog:
?5=X+4,X=1.Error!Xnoestaninstanciadayno
sepuederealizarlasuma
?X=1,5=X+4.Correcto:X=1
9 de 31
Prolog
Elpredicadobetween/3dePrologsirveparainstanciar
variablesdentrodeintervalosdeenteros:
?5isXError!Xnoestinstanciada
?between(1,10,X),5isX.Correcto:X=5.(seinstanciaX
convaloresde1a10)
Conestoseevitaelproblemadebuscardentrodeun
espacioinfinito,yaqueXpuedetomarenprincipio
cualquiervalor.
10 de 31
Prolog
calcularlarazcuadradade16usandolaoperacindepotencia
de2(inversadefunciones)
?between(1,10,X),16isX^2.Correcto:X=4.
11 de 31
Prolog
Funciones:
Prologimplementaalgunasfuncionesmatemticas:
abs/1:valorabsoluto
cos/1:coseno
sin/1:seno
tan/1:tangente
exp/1:exponencial(ex)
log/1:logaritmoenbasee
sqrt/1:razcuadrada
round/1:redondeo
random/1:nmeroaleatorio
12 de 31
Prolog
Lasvariablesqueaparecenenelargumentodelasfunciones
debenestaradecuadamenteinstanciadas.
?Xissqrt(6).Correcto:X=2.449
13 de 31
Prolog
Tiposdedatos
Prolognoesunlenguajeconasignacindetiposfuerte.
Lalgicasepreocupamsdelasrelacionesentreobjetos
quedeltipodestos,dandoatodosellosuntratamiento
similar.
14 de 31
Prolog
Tiposdedatos
Prologincluyepredicadosquepermitenclasificartrminos:
var/1:verdaderosieltrminoesunavariableno
instanciada.
nonvar/1:verdaderosieltrminonoesunavariable
instanciada.
atom/1:verdaderosieltrminoesuntomodeProlog.
atomic/1:verdaderosieltrminoestomoonmero.
integer/1:verdaderosieltrminoesunentero.
float/1:verdaderosieltrminoesunreal.
number/1:verdaderosieltrminoesunnmero
15 de 31
Prolog
Estructuras
LaformadeintroducirdatosestructuradosenProloges
sencilla.Porejemplo:
Persona: Persona 1: Persona 2:
Nombre Pedro Ana
Apellido Lpez Macas
CC 123456789 987654321
persona(nombre(Pedro),apellido(Lpez),cc(123456789)).
persona(nombre(Ana),apellido(Macas),cc(987654321)).
%%Recuperarnombresyapellidos:
?persona(nombre(X),apellido(Y),_).
X=Pedro,Y=Lpez;
X=Ana,Y=Macas;
No. 16 de 31
Prolog
Estructuras
Deigualmodo,podemosconstruirregistroscompuestos.Por
ejemplo:
partido(local(nombre(America),ciudad(Cali)),
visitante(nombre(Tolima),ciudad(Tolima)),glocal(10),gvisit(0)).
partido(local(nombre(Nacional),ciudad(Medellin)),
visitante(nombre(Equidad),ciudad(Bogot)),glocal(1),gvisit(2)).
17 de 31
Prolog
Estructuras
Predicadoquenosdicesiunequipoganaensucasayeltanteo:
ganacasa(X,Y,Z,V):partido(local(nombre(X),ciudad(Y)),_,tlocal(Z),tvisit(V)),
Z>V.
18 de 31
Prolog
Estructuras
ConsultartodoslosequiposdeCaliquegananencasaylos
tanteos
?ganacasa(X,Cali,Y,Z).
X=America,Y=10,Z=0;No
19 de 31
Prolog
Estructuras
ConsultartodoslosequiposdeCaliquegananencasaporms
de5tantos:
?ganacasa(X,Cali,Y,Z),Y>Z+5.
X=America,Y=10,Z=0;No
20 de 31
rboles
Prolog
EnProlog,lospredicadospuedeninterpretarsecomorboles:
oracion(sujeto(Pedro),predicado(verbo(come),
objetodirecto(bocadillo)))
Y,delmismomodo,puedenrepresentarserbolesenformade
predicados:
arbol(a,arbol(c,arbol(1,2,3)),b)
21 de 31
rboles
Prolog
Ejemplo:escribirelrecorridoeninordendeunrboldeexpresin
aritmtica
%Utilizaremoselpredicado
%a(operador,hijo_izquierda,hijo_derecha)
%elrboldelafiguraes:
%a(+,a(*,3,9),a(/,a(,1,a(*,4,8)),a(^,7,2)))
%Ydeseamosobtenerelrecorridoeninorden:
%((3*9)+((1(4*8))/(7^2)))
%SolucinenProlog
inord(a(OP,HI,HD)):
write((),inord(HI),write(OP),inord(HD),write()).
inord(X):write(X).
22 de 31
Prolog
Listas
Prologimplementauntipodedatoespecial:lalista.Unalistaes
unaseriedetrminosseparadosporcomasentrecorchetes:
[]
[a,b,c]
[1,p(X),b,Casa]
Laslistastambinsontrminos,luegosepermiteel
anidamiento:
[[],[1,2],a,[[1],[s,1.4,5]]]
23 de 31
Prolog
Listas
Unasecuenciadecaracteresentrecomillasesunacadenade
caracteresyProloglatratainternamentecomounalistade
enterosquesecorrespondenconlosvaloresASCIIdelos
caracteresenlacadena.
?X=Pedro.
X=[80,101,100,114,111]
24 de 31
Prolog
Listas
Unificacindelistas:
Doslistasunificansisuscomponentesunificanunaauna:
[X,Y,Z]=[a,b,c]unifica
[X,Y,Z]=[a,b,c,d]nounifica
Existeunasintaxisespecialparalautilizacindelistas:la
sintaxisdebarra.[Cabeza|Cola]
25 de 31
Prolog
Listas
Unificacindelistas:
DondeCabezapuedeserunoovariostrminosseparadospor,y
Colaesunalista(quepuedeservaca)querepresentaalos
demstrminosdelalistaconlaqueserealizalaunificacin.
Paralaunificacinconestasintaxis,lostrminosdeCabeza
debenunificarunoaunoyColaunificaconunalistaque
contienelostrminosrestantessinincluiraquellosque
unificaronconCabeza.
26 de 31
Listas
Prolog
Ejemplos:
longitud([],0).
longitud([_|T],N):-longitud(T,N0), N is N0 + 1.
?- longitud([a,b,c],L).
L=3
?- longitud([a,b,c],4).
No
27 de 31
Listas Prolog
Ejemplos:
Bsqueda de un elemento
pertenece(X,[X|_]) :- !.
pertenece(X,[_|R]):- pertenece(X,R).
?- pertenece(b,[a,b,c]).
Yes
?- pertenece(b,[a,[b,c]]).
No
?- pertenece([b,c],[a,[b,c]]).
Yes
28 de 31
Prolog
Listas
Ejemplos:
elimina(X,[X|T],T).
elimina(X,[H|T],[H|T1]):- elimina(X,T,T1).
?- elimina(1,[1,2,3,4],R).
R = [2,3,4]
29 de 31
Prolog
Listas
Ejemplos:
Concatenar listas
concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).
?- concatenar([1,2],[3,4],R).
R = [1, 2, 3, 4].
30 de 31
Prolog
Listas
Ejemplos:
inversa([],[]).
inversa([H|T],L):- inversa(T,R), concatenar(R,[H],L).
?- inversa([a,b,c,d],[d,c,b,a]).
Yes/Si
31 de 31