HSG

Aktuelle Seite: HSG/Fächer/Informatik/Prolog

Erste Schritte

  • Starte den SWi-Prolog-Editor.
  • Öffne eine neue Datei und speichere sie z.B. unter dem Namen p1.pl ab.
  • Schreibe in die Datei den Fakt
    es_regnet.
  • Consultiere das Programm mit F9 (im Programm steckt Wissen, das das System erfragt). Das System, die Wissensbasis kennt jetzt den Fakt.
  • Gib im Anfrage-Fenster (am Prompt ?- )
    ?- es_regnet.
    
    ein. Das System antwortet mit Yes. Das System hält den Fakt es_regnet für wahr.
  • Fragt man das Sytem, ob die Straße nass ist
    ?- strasse_nass.
    
    , so lautet die Antwort 'ERROR: Undefined procedure: strasse_nass/0'. Dh. das System kennt den Bezeichner 'strasse_nass' nicht.
  • Erweitere das Prolog-Programm um die Regel
    strasse_nass :- es_regnet.
    
    und consultiere neu. Das Symbol :- steht eigentlich für den Folgepfeil <=.
  • Frage nun das System erneut, ob die Straße nass ist
    ?- strasse_nass.
    
    Yes
    
    Jetzt lautet die Antwort 'ja'. Das System hat aus einem Fakt mit Hilfe einer Regel einen weiteren Fakt hergeleitet.
  • Das System soll einige Farben lernen. Gib also ein
    farbe(rot).
    farbe(orange).
    farbe(gelb).
    farbe(gruen).
    farbe(blau).
    farbe(violett).
    
    ein und consultiere. farbe/1 ist ein einstelliges Prädikat. rot, orange,... sind Konstanten.
  • Stelle die Frage '?- farbe(lila).' .
  • Auf die Frage '?- farbe(X).' gibt das System die Antwort
    ?- farbe(X).
    
    X = rot ;
    
    X = orange ;
    
    X = gelb ;
    
    X = gruen ;
    
    X = blau ;
    
    X = violett ;
    
    No
    
    , dh. es werden nacheinander alle Belegungen der (großgeschriebenen) Variablen X ausgegeben, die die Anfrage wahr machen. Erst als keine weitere Belegung zur Verfügung steht, erfolgt die Antwort No.
  • Will man ausdrücken, dass Wolfgang Christines Vater ist, so könnte man dem System mitteilen:
    vater(wolfgang,christine).
    
    vater/2 ist dann ein zweistelliges Prädikat. Beachte, dass die Konstanten 'wolfgang' und 'christine' kleingeschrieben werden müssen, damit sie nicht mit Variablen verwechselt werden.

Provisor

Provisor