Está en la página 1de 18

Facultad de Ingeniera y Arquitectura 2017-I

Ingeniera de Sistemas Sistemas Expertos

Variables y constantes como


objetos de datos

Oscar Bazn Ch.


Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Tambin podemos manejar datos compuestos en


Visual Prolog (functor).

Por ejemplo: Se desea ingresar la fecha de


nacimiento: 28 de noviembre de 1988.
Entonces:

date_cmp = date(string,integer,integer)

Entonces, simplemente se escribe como sigue:


..., D = date(Noviembre",28,1988), ...
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Para el mismo ejemplo: el seor Javier Echeanda


naci el 29 de noviembre de 1988.

Vemos: hay un nombre, apellido y los 3


argumentos de fecha, luego:
Cumpleaos

persona fecha

Javier Echeanda noviembre 29 1988


Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

En Visual Prolog:

cumpleaos(persona(Javier",Echeanda"),
fecha(noviembre",29,1988))
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Ej: Llenar una BC con nombre, apellido, num


telefnico y fecha de nacimiento utilizando
variables compuestas para fecha_nacimiento y
nombre. Luego se debe ingresar un nmero que
corresponde a un mes y segn ese mes mostrar
la lista de cumpleaeros.
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

DOMAINS
name = persona(symbol,symbol)
cumpleaos =b_fecha(symbol,integer,integer)

PREDICATES
nondeterm lista_telefono(name,symbol,cumpleaos)
get_mes_cumpleaos
conversion_mes(symbol,integer)
chequeo_mes_cumpleaos(integer,cumpleaos)
escribir_persona(name)
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

CLAUSES
get_mes_cumpleaos:-
write("\n Ingresar un nmero de mes: "),
readint(Este_mes),
write("*** La lista de los Cumpleaos del Mes ***"),nl,
write(" Nombre\t\t Apellido\n"),
write("************************************************"),nl,
lista_telefono(Persona, _, Fecha),
chequeo_mes_cumpleaos(Este_mes, Fecha),
escribir_persona(Persona), fail.
get_mes_cumpleaos:-
write("\n\n Presionar cualquier tecla: "),nl, readchar(_).
escribir_persona(persona(Nombre,Apellido)):-
write(" ",Nombre,"\t\t\t ",Apellido),nl.
chequeo_mes_cumpleaos(Mon,b_fecha(Month,_,_)):-
conversion_mes(Month,Month1), Mon = Month1.
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

lista_telef(persona(juan, perez), "555-8564", b_fecha(jan, 3, 1960)).


lista_telef(persona(pedro, cieza), "938-8433", b_fecha(feb, 5, 1988)).
lista_telef(persona(juan, galn), "555-5653", b_fecha(mar, 3, 1946)).
lista_telef(persona(alfred,mendio),"767-2223",b_fecha(apr,29,1951)).
lista_telef(persona(night,scarlet),"555-1212",b_fecha(may,12,1962)).
lista_telef(persona(milusca,sabogal),"438-8400,b_fecha(jun,17, 1980)).
lista_telef(persona(juliana,barrientos),"767-463,b_fecha(jun,20,1986)).
lista_telef(persona(oscar,bazauri),"555-5653,b_fecha(jul,16, 1981)).
lista_telef(persona(chris,sbato),"767-2223,b_fecha(aug,10, 1981)).
lista_telef(persona(christina, lynn), "438-8400", b_fecha(sep, 25, 1981)).
lista_telefono(persona(kathy,perry),"438-8400", b_fecha(oct, 20, 1973)).
lista_telefono(persona(adela,lover), "555-1212", b_fecha(nov, 9, 1984)).
lista_telefono(persona(jonat,batista),"666-1324,b_fecha(nov,15,1987)).
lista_telefono(persona(carlos,carlin),"333-8000,b_fecha(dec,31,1981))..
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

conversion_mes(jan, 1).
conversion_mes(feb, 2).
conversion_mes(mar, 3).
conversion_mes(apr, 4).
conversion_mes(may, 5).
conversion_mes(jun, 6).
conversion_mes(jul, 7).
conversion_mes(aug, 8).
conversion_mes(sep, 9).
conversion_mes(oct, 10).
conversion_mes(nov, 11).
conversion_mes(dec, 12).

GOAL
get_mes_cumpleaos.
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

DECLARANDO DOMINIOS DE OBJETOS


COMPUESTOS.
Por ejemplo:

DOMAINS
articulos = libro(titulo,autor); caballo(nombre)
/* Articulos son libros o caballos */
titulo, autor, nombre = symbol
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Por lo anterior:
Ej:
DOMAINS
articulos = libro(titulo, autor) ;
caballo(nombre) ; yate ;
monto_total(balance)
titulo, autor, nombre = symbol
balance = real
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

CLAUSES
tiene_propio(juan, libro("El cielo es el lmite",
"Wayne Dyer")).
tiene_propio(juan, caballo(negro)).
tiene_propio(juan, yate).
tiene_propio(juan, monto_total(1000)).

goal
tiene_propio(juan, QuCosa).

Cul es la respuesta?
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

QuCosa=libro("El cielo es el lmite","Wayne


Dyer")
QuCosa=caballo("negro")
QuCosa=yate
QuCosa=monto_total(1000)
4 Solutions.
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Esta vez con una pequea lista.


Se utiliza * .
DOMAINS
classes = symbol*

Esto quiere decir que es una coleccin de datos de tipo


symbol.
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

DOMAINS
classes = symbol* /* declara una lista */

PREDICATES
docente (symbol, symbol, classes)

CLAUSES
docente(oscar, bazan, [sistemas_expertos, gestion_calidad,
analisis_sistemas]).
docente(raul, buendia, [historia, matematica_I]).
docente(crisostomo, valenzuela, [multimedia]).
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

Otro ejemplo:
DOMAINS
lista_enteros = integer*

PREDICATES
nondeterm test(symbol, symbol, lista_enteros)
/* (Primero, Ultimo, Lista) */

CLAUSES
test(melisa, loza, [86, 91, 75]).
test(angie, jibaja, [79, 75]).
test(karen, dejo, []).
test(fernando, roca, [100,200,300,400,500]).
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

goal
test (N,M, Resultado).

El resultado es:
N=melisa, M=loza, Resultado=[86,91,75]
N=angie, M=jibaja, Resultado=[79,75]
N=karen, M=dejo, Resultado=[]
N=fernando,M=roca, Resultado=[100,200,300,400,500]
4 Solutions
Facultad de Ingeniera y Arquitectura

Variables y Constantes como objetos de datos

FIN