Prolog
| Selles artiklis on õigekeele- või stiilivigu. Palun aita artiklit keeleliselt parandada. |
| Prolog | |
|---|---|
| Paradigma | loogiline |
| Väljalaskeaeg | 1972 |
| Looja | Alain Colmerauer |
| Implementatsioonid | BProlog, Ciao Prolog, ECLiPSe, GNU Prolog, Logic Programming Associates, Poplog Prolog, P#, Quintus, SICStus, Strawberry, SWI-Prolog, tuProlog, YAP-Prolog |
| Dialektid | ISO Prolog, Edinburgh Prolog |
| Mõjutanud keeli | Visual Prolog, Mercury, Oz, Erlang, Strand, KL0, KL1, Datalog |
Prolog on loogika programmeerimiseks mõeldud deklaratiivne programmeerimiskeel, mis põhineb predikaatloogikal.
Sisukord |
Üldine loogika[muuda]
- _(all kriips) väärtus, millest midagi ei sõltu.
- .(punkt) lõpetab lause.
- ' (apostroof)'ide vahel on Tekst.
- ,(koma) on "loogiline ja".
- ;(semikoolon) on "loogiline või".
- !(hüüumärk) on negatiivne tupik.
- Lause ehk propositsioon (en: proposition) esitab fakti.
- Fakt võib olla kas tõene(en: true) või väär(en: false).
- Subjekt on objekt, Horni lause päis (tähis:p).
- Predikaat on subjekti omadus, Horni lause keha (tähis:q).
- Muutujad algavad suure tähega.
- Failis on deklareeritud staatilised faktid ja reeglid.
- Programmi käigus lisatud faktid ja reeglid on dünaamilised.
- Dünaamilisi fakte ja reegleid saab kustutada ka programmi käigus.
- Kustutades programmi käigus reegli, võivad muutuda kõigi päringute tulemused, mis sellest sõltusid.
Horni reeglid[muuda]
Prolog'i programmid kirjeldavad relatsioone, mis on kirjeldatud eelduslausete põhjal. Prolog'is on 3 tüüpi lauseid.
Horni lausete tüübid:
- faktid
- reeglid
- päringud.
Faktid[muuda]
Horni lause, millel puudub keha ja omab vaid tõeväärtust – tõene. Kirjeldavad sidet üldisemat subjektilt vähem üldisemale. Ehk, kui on tõsi üldisem on tõsi ka vähem üldisem.
Näiteks:
sajab-> külm and märg.
Sama mis:
sajab:- külm & märg.
Ehk "Kui on külm ja on märg, siis sajab."
Näiteks:
ema(Marju, Margus).
Ehk "Marju on Marguse ema"
Reeglid[muuda]
Horni lause, mis omab keha ja päist. Kirjeldavad sidet subjekti ja predikaadi vahel. Ehk kui päises esitatud tingimused on tõesed, on tõene ka keha.
Näiteks:
ema(Marju).
Sama mis:
ema(Marju) :- true.
Ehk "Marju on ema"
Päringud[muuda]
Horni lause, millel on ainult keha. Ehk küsimus(ed), millele otsitakse järeldust. (Loogikas on järeldus=tõestus)
Näiteks:
?- ema(Marju). Yes
Ehk "Kas Marju on ema?"
?- ema(X). X = Marju
Ehk "Kes on ema(d)?"
Operaatorid ja tõeväärtustablid[muuda]
|
Eitus ehk negatsioon (en: negation)
p not p
1) false true
2) true false
*)
*)
Konjunktsioon ehk “loogiline ja” (en: conjunction)
p q p and q
1) false false false
2) false true false
3) true false false
4) true true true
|
Disjunktsioon ehk “loogiline või” (en: disjunction)
p q p or q
1) false false false
2) false true true
3) true false true
4) true true true
Implikatsioon ehk “kui ... siis” (en: implication) p q p -> q 1) false false true 2) false true true 3) true false false 4) true true true |
NB: Kui mõnes teises programmeerimiskeeles saab eitava argumendi eitamisest argumendi enda, siis ei ole nii loogikas ! Ehk nt:
(kõik) inimesed = (kõik) mitte mitte inimesed = väär
Sõnaliselt öeldud: kõik inimesed on sama, mis ei ole see, kes ei ole nagu ükski inimene – Ei ole tõsi
Liitlausete formaliseerimine[muuda]
Marju on Margus'e ema:
?- ema(Marju, Margus).
Marju on kellegi ema:
?- ema(Marju, X).
Marju on Margus'e ema ja Maie tütar:
?- ema(Marju, Margus) and ema(Maie, Marju).
Vaata ka[muuda]