Prolog-ohjelmointia



            Prolog on logiikkaohjelmointikieli, joka etsii ratkaisuja ohjelmassa esittyjen tosiasioiden (faktojen) ja sääntölauseiden perusteella.

            Tee seuraava työ Java-pohjaisella JLogilla. Tallenna jokaisesta tehtävästä vähintään yksi ohjelmaversio verkkokansioosi (kopioi toimiva ohjelma ensin Muistioon).

            1. Kopioi alla oleva Prolog-ohjelma JLogin Source- ikkunaan (Consult-välilehti). Ohjelmassa esitetaan faktoja sukulaisuussuhteista.

            Rivi isa('Pekka', 'Isä') tarkoittaa, että Pekan isä on Isä. Pekan äiti on Äiti jne. Faktojen alapuolella on lause, joka kertoo, mitä sisaruus (tässä ohjelmassa)  tarkoittaa: Henk ja Sisarus ovat sisaruksia, jos molemmilla on sama äiti ja sama isä. Viimeisenä määritellään käsite isoisä.

            isa('Pekka', 'Isä').
            isa('Liisa', 'Isä').
            aiti('Pekka', 'Äiti').
            aiti('Liisa', 'Äiti').
            isa('Isä', 'Jaakko').

            sisarus(Henk, Sisarus) :- aiti(Henk, A), aiti(Sisarus, A),
                          isa(Henk, B), isa(Sisarus, B).
            isoisa(Henk,Isoisa) :- isa(Henk, A), isa(A, Isoisa).

            Paina Consult-nappia. JLog lukee ohjelman ja muodostaa tiedoista tietokannan (Status-ikkunassa pitäisi lukea "consulting. completed.").

            Kirjoita Query-välilehden Query-riville: sisarus(X,Y). ja paina Query-nappia. Huomaa,että komennon lopussa on piste! Ohjelma etsii arvot muuttujille X ja Y, jotka sopivat ehtoihin. Output-ikkunassa pitäisi lukea:

                sisarus(X,Y)
                X = Pekka
                Y = Pekka
                yes

            Ohjelman mukaan Pekka on siis itsensä sisarus! Viimeisen rivin "yes" tarkoittaa, että tuloksia on lisää. Paina Retry-nappia kunnes ohjelma ilmoittaa "no".

            3, Kirjoita ylempään ruutuun isoisa(X,Y). Huomaa, että ohjelma löytää kaikki mahdolliset vaihtoehdot.

            4.  Muuta ohjelmaa niin, että käytät omia (sukulaisten) nimiä. Lisää faktoja.