Tvarkymo procedūrų pavyzdys Spausdinti
( 0 Votes )
Parašė Aurimas Šimkus   

Nepamirškite, kad tvarkyti dinaminę bazę galima ne tik interpretatoriuje, tačiau taip pat programos kodo failuose galima aprašyti procedūras, atliekančias tvarkymo operacijas. Tarkime, norime sukurti minimalistinę automobilių katalogą tvarkančia programą.

naujas_automobilis(NA) :- assert( automobilis(TA) ).
trinti_automobilius :- abolish( automobilis, 1 ).
issaugoti :- tell(automobiliai),
             listing(automobilis/1), 
             told.
atkurti :- [automobiliai].

Sukūrėme tris paprastas procedūras. Procedūra naujas_automobilis kuria naujus faktus automobilis pagal gautą automobilio pavadinimą kintamuoju TA. Procedūra trinti_automobilius iš vykdomosios žinių bazės ištrina visus faktus automobilis, turinčius vieną parametrą. Procedūra issaugoti sukurtus dinaminius faktus automobilis su vienu parametru išsaugo vykdomajame Prolog kataloge pavadinimu automobiliai. Procedūra atkurti atkuria failą automobiliai.

Vykdomo pavyzydys:

naujas_automobilis(audi80).
 - true.
automobilis(audi80).
 - true.
automobilis(peugeot406).
 - false.
issaugoti.
 - true.
trinti_automobilius.
 - true.
automobilis(audi80).
 - ERROR. Undefined procedure: automobilis/1.
atkurti.
 - true.
automobilis(audi80).
 - true.

Pirmoje eilutėje sukuriame naują faktą apie automobilį audi80. Antrojoje patikriname, ar toks faktas egzistuoja - taip. Trečiojoje tikriname, gal egzistuoja ir nesukurtas faktas - ne. Ketvirtojoje išsaugojame sukurtus faktus. Penktojoje ištriname visus sukurtus dinaminius faktus apie automobilius. Šeštojoje tikriname, ar dar egzistuoja faktas apie automobilį audi80 - ne. Septintoje eilutėje atkuriame sukurtus dinaminius faktus. Paskutiniojoje eilutėje tikriname, ar pavyko atkurti faktą apie automobilį audi80 - taip.