logo

„Prolog“ programos

Naudojant integruotus predikatus, tikslų seka arba tikslo nurodymas sistemos raginime būtų mažai vertingas. Norėdami parašyti „Prolog“ programą, pirmiausia vartotojas turi parašyti programą, parašytą „Prolog“ kalba, įkelti tą programą ir tada iš karto nurodyti vieno ar kelių tikslų seką.

Norėdami sukurti programą „Prolog“, paprastas būdas yra įvesti ją į teksto rengyklę ir išsaugoti kaip tekstinį failą, pvz. prolog1.pl .

Šiame pavyzdyje parodyta paprasta „Prolog“ programa. Programą sudaro trys komponentai, žinomi kaip sąlygos. Kiekviena sąlyga baigiama tašku.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Naudojant integruotą predikatą ' konsultuotis' , minėtą programą galima įkelti į Prolog sistemą.

?-consult('prolog1.pl').

Tai rodo, kad failas prolog1.pl egzistuoja, o prolog programa yra sistemiškai teisinga, o tai reiškia, kad ji turi galiojančias sąlygas, tikslas bus sėkmingas, o norint patvirtinti, kad programa buvo teisingai perskaityta, ji sukuria vieną ar daugiau išvesties eilučių. pvz.,

?-
# 0,00 sekundžių pasikonsultuoti su prolog1.pl
?-

labas pasaulis su java

„Konsultavimo“ alternatyva yra „Įkelti“, kuri bus meniu parinktyje, jei „Prolog“ sistemoje yra grafinė vartotojo sąsaja.

Kai programa įkeliama, sąlyga bus patalpinta į saugyklos sritį ir ta saugojimo sritis vadinama Prolog duomenų baze. Atsakydami į sistemos raginimą, nurodykite tikslų seką ir „Prolog“ ieškos ir naudos tikslams įvertinti reikalingus punktus.

Terminija

Toliau pateiktoje programoje trys eilutės rodo sakinius.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Naudojant tašką, kiekviena sąlyga bus nutraukta. Prolog programos turi sakinių seką. Šiose sąlygose aprašomi faktai arba taisyklės.

Pavyzdys faktus yra šuo (rotveileris) ir katė (manchkin) . Jie reiškia, kad' rotveileris yra šuo' ir ' Mazylis, maziukas yra katė'.

Šuo vadinamas predikatu. Šuo turi vieną argumentą. žodis' rotveileris skliausteliuose ( ). Rotveileris vadinamas atomu.

Taisyklės pavyzdys yra paskutinė programos eilutė.

 animal(A) :- dog(A). 

Dvitaškis (:-) bus skaitomas kaip „jei“. Čia A yra kintamasis ir jis reiškia bet kokią reikšmę. Natūraliai taisyklę galima suprasti taip: „Jei A yra gyvūnas, tai A yra šuo“.

Aukščiau pateikta sąlyga rodo, kad rotveileris yra gyvūnas. Tokį išskaičiavimą taip pat gali atlikti Prolog:

?- gyvūnas (rotveileris).
taip

Kad tai reikštų Mazylis, maziukas yra gyvūnas, to įrodymų nėra.

?- gyvūnas (munchkin).
Nr

Daugiau terminų

Vertinant tikslo terminą, nustatoma, ar jis tenkinamas, ar ne. Tai taip pat reiškia, kad tikslas yra teisingas arba klaidingas.

Atminkite, kad kai vartotojas įveda tikslą, kartais jis gali būti interpretuojamas kaip komanda. Pavyzdžiui,

? - sustoju. 'Jis naudojamas išeiti iš Prolog sistemos.'

Kartais tai gali būti vertinama kaip klausimas, pavyzdžiui,

?- gyvūnas (rotveileris). & 'Ar rotveileris yra gyvūnas?'

Šioje programoje parodytas kitas pavyzdys apie gyvūnus. Jį sudaro aštuoni punktai. Komentaras rodomas visu tekstu tarp /* ir */.

 /* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/ 

Predikatinis šuo ir predikatinis katinas turi keturis sakinius. Tarkime, kad tekstiniame faile „animal.pl“ programa buvo išsaugota, o išvestis sugeneruojama įkeliant programą ir sistemos raginimu įvedame tikslų seką taip:

?- pasikonsultuokite ('gyvūnai1.pl'). Sistemos raginimas
# 0,01 sekundės, kad galėtumėte pasikonsultuoti su animal.pl animals.pl, įkeltas naudojant konsultaciją

?- šuo (rotveileris).
taip

?- šuo (boksininkas).
Nr

?- šuo (A).
A = rotveileris pristabdo – vartotojas paspaudžia grįžimo klavišą

?- šuo (B).
B = rotveileris; pauzes? vartotojo presai ;
B = pudelis; pauzes? vartotojo presai ;
B = buldogas; pauzes? vartotojo presai ;
B = dobermanas Nėra pauzės? Jis pereis į kitą eilutę

?- katė (A). A = sfinksas; Pauzė ? vartotojo presai;
A = Bengalijos pauzės? vartotojas paspaudžia grįžti

?- klauso(šuo). Jame bus išvardytos visos sąlygos, apibrėžiančios predikatinį šunį

/* šuo/1 */

šuo (rotveileris).
šuo (pudelis).
šuo (buldogas).
šuo (dobermanas).
taip
?-

Šiame pavyzdyje pristatomos įvairios naujos Prolog funkcijos. Užklausa yra tokia:

?- šuo (A).

Tai reiškia, kad suraskite A reikšmę ir tai bus šuns vardas. Prolog atsakymas yra toks:

A = rotveileris

Kiti galimi A atsakymai yra tokie: pudelis, buldogas, dobermanas. Tai sukels „Prolog“ pauzę, todėl turėsime palaukti, kol vartotojas paspaus „grįžimo“ klavišą, kol jis išves sistemos raginimą ?-.

Kitą užklausą galime įvesti taip:

?- šuo (B).

Ši užklausa yra tokia pati kaip ir anksčiau. Aukščiau pateikta užklausa reiškia, kad „raskite B reikšmę ir tai bus šuns vardas“. Prolog atsakymas yra toks:

B = rotveileris

Vicky kaushal amžius

„Prolog“ vėl pristabdys. Šį kartą vartotojas paspaudžia kabliataškio (;) klavišą. Dabar Prolog suras alternatyvią B reikšmę, atitinkančią tikslo šunį (B). Ji atsakys taip:

B = pudelis

„Prolog“ vėl pristabdys. Naudotojas dar kartą paspaudžia kabliataškį (;). „Prolog“ pateikia kitą sprendimą:

B = buldogas

„Prolog“ vėl pristabdys. Naudotojas dar kartą paspaudžia kabliataškį (;). „Prolog“ pateikia kitą sprendimą:

B = dobermanas

„Prolog“ atpažįsta, kad nebėra galimo sprendimo, nes nepristabdo, bet sistema ragina ?– iš karto pereinant prie išvesties.

Šiame pavyzdyje pateikiamas naujas integruotas predikatas. Tikslo patikslinimas

?- sąrašas (šuo)

Aukščiau pateiktame tikslais Prolog išvardins visus keturis sakinius, apibrėžiančius predikatinį šunį. Jie bus apibrėžti ta pačia tvarka, kaip ir įkelti į duomenų bazę.

Kintamųjų naudojimas užklausoje parodytas toliau pateiktame pavyzdyje. Tikslo seka yra tokia:

?-katė (A), šuo (B).

python nauja eilutė

Tai suteiks mums visus įmanomus katės ir šuns derinius.

?-katė (A), šuo (B).
A = sfinksas,
B = rotveileris;

A = sfinksas,
B = pudelis;

A = sfinksas,
B = buldogas;

A = sfinksas,
B = dobermanas;

ir tt

Priešingai, tikslo seka yra tokia:

?-katė (A), šuo (A).

Tai suteiks visiems gyvūnams, kurie yra ir katė, ir šuo (duomenų bazėje tokio gyvūno nėra). Čia A yra „bet kokia vertė“ ir katėje (A), ir šunyje (A), tačiau abiejų vertė turi būti tokia pati.

?-katė (A), šuo (A).
Nr