cercare3
cercare elementi
/* pro77a.map */ /* dati(N,G,M,A,R) */ /* dati(N,_,12,_,R) */
nowarnings domains nome,regione = symbol giorno,mese,anno = integer predicates dati(nome,giorno,mese,anno,regione) abita(nome) eta(nome) etaregione(nome) intervallo(nome) duplice(nome) primo(nome) clauses dati(elvira,12,11,1965,lazio). dati(luigi,10,12,1987,veneto). dati(paolo,15,11,1987,veneto). dati(anna,17,11,1976,lazio). dati(carlo,12,11,1984,veneto). dati(aldo,17,10,1976,lazio). dati(alberto,12,11,1971,veneto). dati(elisa,23,4,1986,sicilia).
/* cerca chi abita nel veneto */ abita(N) if dati(N,G,M,A,R) and R=veneto.
/* cerca nati 1986 o oltre */ eta(N) if dati(N,G,M,A,R) and A>=1986.
/* cerca nati 1986 o oltre e nel veneto */ etaregione(N) if dati(N,G,M,A,R) and A>=1986 and R=veneto.
/* cerca nati oltre 1970 e sotto 1986 */ intervallo(N) if dati(N,G,M,A,R) and A>1970 and A<1986.
/* cerca nati sotto 1970 e sopra 1984 */ duplice(N) if dati(N,G,M,A,R) and A<1970. duplice(N) if dati(N,G,M,A,R) and A>1984.
/* cerca nati sotto 1970 e primo sopra 1984*/ primo(N) if dati(N,G,M,A,R) and A<1970. primo(N) if dati(N,G,M,A,R) and A>1984,!. /* effetto CUT ! */
/* rubri.pro */ domains nome,regione,qualifica=symbol eta=integer predicates dati(nome,regione,qualifica,eta) clauses dati(bassi,veneto,studente,23). dati(verdi,veneto,studente,24). dati(rossi,lazio,dottore,45). dati(rossi,lazio,studente,26). dati(basso,lazio,studente,21). dati(basso,veneto,dottore,65).
/* rubrica.pro */
nowarnings domains nome,regione,qualifica = symbol eta =integer predicates dati(nome,regione,qualifica,eta) veneti(nome) dottori(nome) studenti(nome) studveneti(nome) dotveneti(nome) anno(nome) soggetti(nome,regione,qualifica,eta) clauses dati(bassi,veneto,studente,23). dati(verdi,veneto,studente,24). dati(rossi,lazio,dottore,45). dati(rossi,lazio,studente,26). dati(basso,lazio,studente,21). dati(basso,veneto,dottore,65).
/* cerca archivio totale */ soggetti(N,R,Q,E) if dati(N,R,Q,E).
/*cerca veneti */ veneti(N) if dati(N,R,Q,E) and R=veneto.
/* cerca studenti */ studenti(N) if dati(N,R,Q,E) and Q=studente.
/* cerca dottori */ dottori(N) if dati(N,R,Q,E) and Q=dottore.
/* cerca studenti veneti */ studveneti(N) if dati(N,R,Q,E) and R=veneto and Q=studente.
/*cerca dottori veneti */ dotveneti(N) if dati(N,R,Q,E) and R=veneto and Q=dottore.
/* cerca soggetti inferiori a 40 anni */ anno(N) if dati(N,R,Q,E) and E<=40.
/* saldo1.pro */
nowarnings domains nome,regione = symbol credito,debito = integer
predicates dati(nome,regione,credito,debito) creditore(nome) debitore(nome) credito(nome,regione,credito,debito) debito(nome,regione,credito,debito) clauses dati(verdi,veneto,100,50). dati(rossi,veneto,80,100). dati(bassi,lazio,200,150). dati(neri,lazio,10,70). dati(grassi,veneto,120,100).
/* cerca creditori con saldo positivo */ creditore(N) if dati(N,R,C,D) and Saldo=C-D and Saldo>=0, write("Saldo=",Saldo),nl.
/* cerca debitori con saldo negativo */ debitore(N) if dati(N,R,C,D) and Saldo=C-D and Saldo<0, write("Saldo=",Saldo),nl.
/* cerca creditori e stampa dati */ credito(N,R,C,D) if dati(N,R,C,D) and Saldo= C-D and Saldo>=0, write("Saldo=",Saldo),nl.
/* cerca debitori e stampa dati */ debito(N,R,C,D) if dati(N,R,C,D) and Saldo=C-D and Saldo<0, write("Saldo=",Saldo),nl.
/* saldo2.pro */
nowarnings domains nome,regione = symbol credito,debito = integer
predicates dati(nome,regione,credito,debito) creditore(nome) debitore(nome) credito(nome) debito(nome) zona(nome) clauses dati(verdi,veneto,100,50). dati(rossi,veneto,80,100). dati(bassi,lazio,200,150). dati(neri,lazio,10,70). dati(grassi,veneto,120,100).
/* cerca creditori con saldo positivo */ creditore(N) if dati(N,R,C,D) and Saldo=C-D and Saldo>=0, write("Saldo=",Saldo),nl.
/* cerca debitori con saldo negativo */ debitore(N) if dati(N,R,C,D) and Saldo=C-D and Saldo<0, write("Saldo=",Saldo),nl.
/* cerca creditori e stampa dati */ credito(N) if dati(N,R,C,D) and Saldo= C-D and Saldo>=0, write("\ncredito=",C,"\ndebito=",D,"\nsaldo=",Saldo),nl.
/* cerca debitori e stampa dati */ debito(N) if dati(N,R,C,D) and Saldo=C-D and Saldo<0, write("\ncredito=",C,"\ndebito=",D,"\nSaldo=",Saldo),nl.
/* cerca creditori nel veneto */ zona(N) if dati(N,R,C,D) and Saldo=C-D and Saldo>=0 and R=veneto, write("\nsaldo=",Saldo),nl.
/* saldo.pro */ nowarnings domains nome,regione = symbol credito,debito,saldo = integer
predicates dati(nome,regione,credito,debito) creditore(nome) debitore(nome) credito(nome,regione,credito,debito) debito(nome,regione,credito,debito) clauses dati(verdi,veneto,100,50). dati(rossi,veneto,80,100). dati(bassi,lazio,200,150). dati(neri,lazio,10,70). dati(grassi,veneto,120,100).
/* cerca creditori con saldo positivo */ creditore(N) if dati(N,R,C,D) and C-D>=0.
/* cerca debitori con saldo negativo */ debitore(N) if dati(N,R,C,D) and C-D<0.
/* cerca creditori e stampa dati */ credito(N,R,C,D) if dati(N,R,C,D) and C-D>=0.
/* cerca debitori e stampa dati */ debito(N,R,C,D) if dati(N,R,C,D) and C-D<0.