Sadržaj se učitava...
mdi-home Početna mdi-account-multiple Djelatnici mdi-script Studiji mdi-layers Katedre mdi-calendar-clock Raspored sati FOI Nastava search apps mdi-login
Logičko programiranje
Logical Programming
2019/2020
6 ECTSa
Baze podataka i baze znanja 1.2 (BPBZ)
Organizacija poslovnih sustava 1.2 (OPS)
Informatika u obrazovanju 1.2 (IUO)
Informacijsko i programsko inženjerstvo 1.2 (IPI)
Katedra za teorijske i primijenjene osnove informacijskih znanosti
RI
1. semestar
Osnovne informacijemdi-information-variant Izvođači nastavemdi-account-group Nastavni plan i programmdi-clipboard-text-outline Model praćenjamdi-human-male-board Ispitni rokovimdi-clipboard-check-outline Rasporedmdi-calendar-clock Konzultacijemdi-account-voice
Izvođenje kolegija
Cilj kolegija
Cilj kolegija Logičko programiranje je upoznavanje studenata s idejom logičkog (i općenito deklarativnog) programiranja, njegovim teorijskim osnovama, logičkim programskim jezicima (na prvom mjestu s jezikom Prolog) i specifičnim alatima. Logičko programiranje zauzima sve važnije mjesto u cjelokupnom korpusu programiranja (bioinformatika - dešifriranje genetskog koda; sustavi planiranja – problem rasporeda i slični problemi, semantički Web – razvoj ontologija, sustavi poslovnih pravila, reverzno programsko inženjerstvo, itd.).
Preduvjeti
Kolegij nema definirane preduvjete
Norma kolegija
Predavanja
30 sati
Vježbe u praktikumu
30 sati
Nastavnik Uloga na kolegiju Oblik nastave Tjedana Sati Grupa
Schatten Markus Nositelj Vježbe u praktikumu 8 2 1
Čubrilo Mirko Nositelj Predavanja 10 3 1
Lovrenčić Sandra Izvođač Seminar 7 2 1
Sadržaj predavanja
  • Osnovne paradigme programiranja i njihov međuodnos
    Paradigme proceduralnog, objektno-orijentiranog i logičkog programiranja i njihov međuodnos. Područja primjene logičkog programiranja.
  • Pregled svojstava jezika Prolog
    Primjer programa u jeziku Prolog (definiranje obiteljskih veza). Proširenje primjera pravilima. Definicija rekurzivnih pravila. Procedura računanja odgovora na upite (rukovanje varijablama i unifikacija, vraćanje unatrag i rez). Uloga slijeda pravila iz definicije istog predikata.
  • %22Naredbe%22 jezika Prolog
    Ugrađeni predikati kao %22naredbe%22 Prologa. Osnovne klase ugrađenih predikata. Korisnički definirani predikati.
  • Liste i predikati za rad s listama
    Definicija liste i njezinih strukturnih dijelova. Predikati za rad s listama.
  • Operatori i predikati za rad s operatorima
    Ugrađeni aritmetički predikati. Tipovi operatora (infiksni, prefiksni i postfiksni). Prioritet argumenata i shema deklariranja korisnički definiranih operatora.
  • Detaljna %22mehanika%22 rekurzije i reza
    Potreba za generiranjem višestrukih odgovora na upite. Predikat %22rez%22 i načini njegove upotrebe (indikacija izbora valjanog pravila, iznuđivanje (u sprezi s predikatom %22neuspjeh%22) višestrukih odgovora na upit (ciljni predikat) programa i iznuđivanje samo jednog odgovora. Korištenje kombinacije predikata %22rez%22-%22neuspjeh%22. Potencijalni problemi s predikatom %22rez%22.
  • Rukovanje ulazom i izlazom podataka
    Predikati za čitanje i pisanje terma Prologa. Predikati za rad s vanjskim datotekama..
  • Interne baze podataka
    Organizacija internih baza podataka. Ugrađeni predikati za rad s internim bazama podataka (assert, asserta, assertz, retract, retractall).
  • Vanjske baze podataka
    Organizacija vanjskih baza podataka kao B+ stabala. Terminologija (lanci, selektori, referentni indeksi terma, ključevi). Ugrađeni predikati za rad s vanjskom bazom podataka kao cjelinom. Predikati za rad s lancima. Predikati za manipuliranje terminima.
  • Rukovanje greškama i trasiranje programa
    Konceptualno razlikovanje grešaka, iznimaka i iznuđenog prekida rada programa. Predikati za upravljanje programiranim izlazom iz programa. Predikati za trasiranje pojedinačnih predikata. Predikati za izlaz iz programa u nuždi.
  • Specifičnosti jezika XSB Prolog
    Pokretanje programa i izlaz iz programa. Sustav programskih direktorija. Tipovi i ekstenzije internih (programom generiranih) datoteka. Sustav modula i globalna struktura programa. Standardni predikati jezika. Mehanizmi redefiniranja predikata. Direktiva za pozivanje HiLoga.
  • Tabeliranje predikata
    Problemi sa standardnom rezolucijom. SLG rezolucija. Direktive za tabeliranje predikata. Primjena tabeliranja predikata.
  • Programski paket Flora-2
    Programski paket Flora-2 kao implementacija F-logike. Osnove sintakse (objekti, klase, metode, upiti). Direktive za rad s paketom Flora-2 u kontekstu XSB prologa. Nasljeđivanje. Primjeri primjene paketa Flora-2.
  • CHR
    CHR (Constraint Handling Rules). CHR kao sustav pravila (podjezik jezika XSB Prolog) za rukovanje ograničenjima. Sintaksa i semantika CHR-a. CHR u programima u XSB Prologu. Primjeri primjene.
Sadržaj seminara/vježbi
  • Vježbe
    Kako su programski jezici u stalnim mijenama, izbor adekvatnog logičkog programskog jezika za potrebe vježbi prilično je otežan. Izbor je pao na jezik XSB Prolog, za koji se može reći da predstavlja novu paradigmu logičkog programiranja i ima dobre izglede za daljnji razvoj. Jezgra jezika XSB Prolog poštuje trenutačni ISO standard jezika, a pored toga ima mehanizam tabeliranja parcijalnih odgovora na upit postavljen ciljem programa, u sebi sadrži i programski jezik HiLog, koji ima sintaksu drugog reda (omogućuje kvantificiranje bilo kojih terma, uključujući i predikate, te time omogućuje izravno metaprogramiranje) i semantiku prvog reda, koji sadrži implementaciju F-logike (paket Flora-2), kao i ugrađeni podjezik CHR za rukovanje ograničenjima. Nadalje, programski jezik XSB nije opterećen preobuhvatnim razvojnim okruženjem (alatima za razvoj grafičkih sučelja, itd.), ali se s njima (i drugim programskim jezicima) može vrlo kvalitetno povezati. Tijekom vježbi studenti će ovladati jezgrom jezika XSB Prolog, kao i pripadajućim proširenjima (Flora-2 i CHR), i osposobiti se za samostalno kvalitetno programiranje.
  • Seminari
    U sklopu seminara studenti će napraviti i prezentirati vlastiti projekt primjene logičkog programiranja na rješavanje određenog problema.
Ishodi učenja kolegija
  • Razumjeti i znati primijeniti principe kreiranja baza znanja i pravila za zaključivanje nad njima korištenjem logičkog programiranja
  • Razumjeti teorijske osnove logičkog programiranja
  • Usvojiti vještine brzog modeliranja i prototipiranja sustava deklarativnim programskim jezicima i alatima
  • Znati osnove jezika HiLog, F-logike i Constraint Handling Rules (CHR) sustava pravila za rukovanje ograničanjima
  • Znati primijeniti logičko programiranje prilikom rješavanja različitih klasa problema (rad s listama, rekurzije, inteligentni agenti, gramatike, integracija heterogenih izvora podataka itd.)
  • Znati razviti bazu znanja i pravila u jezgrenom jeziku logičkog programiranja (Prolog)
Ishodi učenja programa
  • Modeliranje problema iz područja informacijskih i poslovnih sustava korištenjem matematičkih metoda, metoda razvoja informacijskih sustava i koncepata planiranja, upravljanja i poslovanja
  • Unaprijediti metode komuniciranja i komunikaciju s klijentima, korisnicima i kolegama na verbalan i pisani način uz primjenu odgovarajuće terminologije uključujući i sposobnost komunikacije o struci na stranom jeziku
  • Analizirati i valorizirati atribucije (atribute) objekata poslovnog sustava te postaviti formalni model objektnog sustava kao temelj izgradnje informacijskog sustava
  • Modelirati poslovna pravila, poslovne podatke kao i pravila za izvođenje transakcijskih podataka koji nisu eksplicitno zadani
  • Izgraditi računalni sustav za pohranu podataka i znanja korištenjem suvremenih alata za izradu baza podataka, baza znanja i semantici podataka
  • Modelirati i izgraditi sustave temeljene na znanju, kao što su višeagentni sustavi, deduktivni sustavi (uključujući i ekspertne sustave), semantički Web sustavi, neuralne mreže itd.
Osnovna literatura
  • Merrit, D. Adventure in Prolog: Logic Programming Tutorial. Amzi! Inc., 1996.
  • Sagonas, K. et al. The XSB System Version 3.2. Volume I: Programmer's Manual. 2009.
Dopunska literatura
  • Sagonas, K. et al. The XSB System Version 2.7, Volume II: Libraries, Interfaces and Packages. 2004.
  • Canfora, G.; Cimitile, A.; de Carlini, U. A Logic-Based Approach to Reverse Engineering Tools Production, IEEE Tranasctions on Software Engineering. Vol. 18, No. 12, pp. 1053 – 1064., 1992.
  • PDC Prolog version 3.20: User's Guide, Prolog Development Center, Copenhagen, 1990.
  • Hazlewood, C.: http://www.math.swt.edu/~carol/teaching/courses/5318/lectures/comp-para.pdf
  • Nastavna cjelina 1. Hazlewood, C.: http://www.math.swt.edu/~carol/teaching/courses/5318/lectures/comp-para.pdf
  • Nastavna cjelina 2-7. Clocksin, W. F., Mellish, C. S.: Programming in Prolog: Using the ISO Standard (fifth edition), Springer-Verlag, 2003.
  • Nastavna cjelina 8-10. Merrit, D. Adventure in Prolog: Logic Programming Tutorial, Amzi! Inc., 1996. Clocksin, W. F.; Mellish, C. S. Programming in Prolog: Using the ISO Standard (fifth edition). Springer-Verlag, 2003.
  • Nastavna cjelina 11-14. Sagonas, K. and all: The XSB System Version 2.7, Volume I: Programmer's Manual, 2004. Sagonas, K. and all: The XSB System Version 2.7, Volume II: Libraries, Interfaces and Packages, 2004. Warren, D. S.: Programming in Tabled Prolog: (very) Draft, SUNY at Stony Brook, 1999. Fruhwirth, T.: Theory and practice of constraint handling rules. Special Issue on Constraint Logic Programming (P. Stuckey and K. Marriot, Eds.), Journal of Logic Programming, 37(1-3):95-- 138, 1998.
Slični kolegiji
  • University of Sussex (Department of Informatics) http://www.sussex.ac.uk/informatics/G5008.html
  • City University of London (School of Informatics) http://www.city.ac.uk/pgrad/00000894.htm
  • University of Kentucky (College of Engineering) http://cs.engr.uky.edu/CS_Assessment/Course_Descriptions/HTML/CS%20555.htm
  • University of Piraeus (Department of Informatics) http://www.unipi.gr/eng_site/akad_tmhm/plhorf/plhorf_ps_math7.html
  • Imperial College London http://www.doc.ic.ac.uk/teaching/coursedetails/V141
  • The University of Birmingham http://www.cs.bham.ac.uk/~pjh/prolog_course/sem223_se.html
  • Carnegie Mellon University http://www-2.cs.cmu.edu/~fp/courses/95-lp.html
  • University of Leicester (Department of Computer Science) http://www.cs.le.ac.uk/Modules/CO-03-04/CO2014.html
Redoviti studenti Izvanredni studenti
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.
2025 © Fakultet organizacije i informatike, Centar za razvoj programskih proizvoda