Hausaufgaben Logische Programmierung



Ähnliche Dokumente
Hausaufgaben Logische Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Informationsblatt Induktionsbeweis

Erstellen von x-y-diagrammen in OpenOffice.calc

AutoCAD Dienstprogramm zur Lizenzübertragung

Professionelle Seminare im Bereich MS-Office

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Gruppenrichtlinien und Softwareverteilung

Zahlen auf einen Blick

1 topologisches Sortieren

Wie halte ich Ordnung auf meiner Festplatte?

Anleitung zum Öffnen meiner Fotoalben bei web.de

Leichte-Sprache-Bilder

Abwesenheitsnotiz im Exchange Server 2010

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Erstellen einer digitalen Signatur für Adobe-Formulare

TYPO3 Tipps und Tricks

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Datenbanken Kapitel 2

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Repetitionsaufgaben Wurzelgleichungen

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Was meinen die Leute eigentlich mit: Grexit?

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Nina. 2. Ninas Mutter lebt nicht mit Nina und der Familie zusammen. Warum könnte das so sein? Vermute. Vielleicht ist sie. Möglicherweise.

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Anleitung über den Umgang mit Schildern

1.Unterschied: Die Übungen sind nicht von deinem Mathe-Lehrer...

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

4. BEZIEHUNGEN ZWISCHEN TABELLEN

1. TEIL (3 5 Fragen) Freizeit, Unterhaltung 2,5 Min.

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Lehrer: Einschreibemethoden

Mediator 9 - Lernprogramm

MaklerManager Ergänzung zum Handbuch 2.0

Modellbildungssysteme: Pädagogische und didaktische Ziele

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Geld Verdienen im Internet leicht gemacht

Hinweise zum Übungsblatt Formatierung von Text:

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

MINDMAP. HANDREICHUNG (Stand: August 2013)

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

BEDIENUNGSANLEITUNG FÜR LIEFERANTEN AUSSCHREIBUNG

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation

Daten sammeln, darstellen, auswerten

Prüfung Computation, Programming

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Kreativ visualisieren

Primzahlen und RSA-Verschlüsselung

Anzeige von eingescannten Rechnungen

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Handbuch für Redakteure

Animationen erstellen

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Zwischenablage (Bilder, Texte,...)

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Arbeiten mit UMLed und Delphi

Anleitung Postfachsystem Inhalt

Word. Serienbrief erstellen

Der Gabelstapler: Wie? Was? Wer? Wo?

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Was ist Sozial-Raum-Orientierung?

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Lineare Gleichungssysteme

Statuten in leichter Sprache

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Handbuch für Redakteure

Bedienungsanleitung Anrufbeantworter für digitale Telefone Alcatel 4039

Warum Sie jetzt kein Onlinemarketing brauchen! Ab wann ist Onlinemarketing. So finden Sie heraus, wann Ihre Website bereit ist optimiert zu werden

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

So geht s Schritt-für-Schritt-Anleitung

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

BEDIENUNG ABADISCOVER

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Stufenprüfung A2/B1 HV Aufgaben

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Gutes Leben was ist das?

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Jetzt neu: Online Reporting Schritt für Schritt durch das Online Reporting (OLR) Online Liedmeldung

Der neue persönliche Bereich/die CommSy-Leiste

Grundlagen der Theoretischen Informatik, SoSe 2008

PowerMover. Ein halbautomatischer Sortierer für Outlook-PowerUser. Ein Add-In für die Versionen 2007 und 2010

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Vorgehensweise bei Lastschriftverfahren

So funktioniert das online-bestellsystem GIMA-direkt

ONLINE-Mensa auf

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Transkript:

Hausaufgaben Logische Programmierung Elmar Eder 22. März 2016 Die ufgaben sind auf dem bgabesystem von Dominik Kaaser unter der Internetadresse https://prolog.cosy.sbg.ac.at/ bis zu dem dort angegebenen Termin abzugeben. itte alle Programme/Texte mit Return- oder Entertaste beenden! lle ufgaben, bei denen nichts gegenteiliges vermerkt ist, sind selbständig in Teams von zwei Studenten zu lösen. m nfang der von Ihnen fertiggestellten Lösung der ufgabe müssen die Namen aller beteiligter Studenten angeführt sein, im Fall eines Prolog- Programms als Kommentar (mit Prozentzeichen am nfang der Zeile). Jede im Team gelöste ufgabe soll von jedem der beiden beteiligten Studenten auf dem bgabesystem als identisch gleiche Datei abgegeben werden. Wenn bei einer ufgabe ein Prolog-Programm und dazu ein oder mehr nfragen an Prolog zu erstellen sind, dann schreiben Sie bitte die nfragen in einem Kommentar ans Ende der Datei, etwa so: %?- vater(x,hans). %?- tochter(x,anna), tochter(y,anna), aelter(x,y). lle Programme sind vorher zu testen. Sie müssen unter Prolog lauffähig sein. ls Dateinamen für Prolog-Programme wählen Sie soweit nicht anders angegeben hnn.pl, wobei NN die zweistellige Nummer der ufgabe ist (z.. h07.pl bei ufgabe 7); entsprechend hn N.txt für reine Text-Dateien! Zeichnungen erstellen Sie bitte als pdf-datei hn N.pdf oder (in einem Editor mit Monospace/fixed-width Font) als SCII- Grafik! ls lternative akzeptiere ich auch JPEG-Dateien (hn N.jpg). Pdf-Dateien, die Grafiken enthalten, können Sie z.. mit (pdf)l TEX und dem Paket pgf/tikz oder pstricks erstellen. uch die gängigen Zeichenprogramme können nach pdf exportieren. Wenn Sie eine klare Handschrift haben, können Sie anstattdessen Ihre Lösung händisch auf Papier erstellen und dann einscannen oder bei guten Lichtverhältnissen fotografieren. Stellen Sie in diesem Fall aber sicher, dass das Resultat gut lesbar ist und z.. deutlich erkennbar ist, ob ein uchstabe ein Groß- oder Kleinbuchstabe ist (z.. x oder X)! Hier ein fiktives eispiel (Diese ufgabe nicht abgeben!): Sie lösen die folgende fiktive ufgabe null: 1

ufgabe 0 Übersetzen Sie die ussagen Max mag Hans. Hans mag Max. Hans mag Eva. in ein Prolog-Programm und fragen Sie Prolog danach, wen Hans mag! Zeichnen Sie einen Graphen, der die Relation des Mögens darstellt! Sie können dann ein Programm h00.pl schreiben, das als Kommentare die nfrage und eine SCII-Grafik enthält: % Erika Mustermann, Max Mustermann % mag(x,y) Person X mag Person Y mag(max,hans). % Max mag Hans. mag(hans,max). % Hans mag Max. mag(hans,eva). % Hans mag Eva. %?- mag(hans,person). % +-------+ % % v % Max --> Hans --> Eva Oder Sie erstellen h00.pl nur mit Programm und nfrage: % Erika Mustermann, Max Mustermann % mag(x,y) Person X mag Person Y mag(max,hans). % Max mag Hans. mag(hans,max). % Hans mag Max. mag(hans,eva). % Hans mag Eva. %?- mag(hans,person). und dazu eine pdf-grafik-datei h00.pdf Max Hans Eva und laden beide Dateien auf das bgabesystem hoch. uch wenn Sie von einer ufgabe nur Teile gelöst haben, geben Sie bitte Ihre Lösung ab! Einige ufgaben bestehen aus mehreren Teilen, die aufeinander aufbauen. uch teilweise Lösungen können positiv in Ihre ewertung einfließen. 2

Vorab etwas Terminologie und Syntax zu Prolog: Unter einer Klausel eines Programms versteht man ein Fakt oder eine Regel dieses Programms. Jede Klausel muss mit einem Punkt. enden. Eine Regel hat die Form Kopf :-Rumpf., wobei der Rumpf die Form Ziel 1,...,Ziel n hat. Eine Regel hat also die Form Kopf :-Ziel 1,...,Ziel n.. nstatt vom 2-stelligen Prädikat kind zu sprechen, sagt man im Prolog-Jargon kurz kind/2, d.h. man hängt an den Namen des Prädikats einen Schrägstrich und dann die Stelligkeit an. ufgabe 1 Ich hoffe, Sie haben alle einen Partner für Ihr Zweierteam gefunden. Damit ich weiß, wer mit wem ein Zweierteam bildet, erstellen Sie bitte in einer Datei mit dem Dateinamen h01.pl ein Prolog-Programm mit einer Zeile partner(ihr_name, Name_Ihres_Partners ). und, falls für Sie wichtig ist, in welcher Gruppe Sie sind, einer Leerzeile gefolgt von einer weiteren Zeile gruppenwunsch(ihr_name, Gruppennummer, Grund ). und testen Sie Ihr Programm (siehe unten) und geben Sie diese Datei auf dem bgabesystem ab! Dabei schließen Sie bitte Ihren Namen, den Ihres Partners und den Grund in einfache nführungsstriche ein! Der Grund kann auch das leere Prologatom (zwei einfache nführungszeichen) sein. Schreiben Sie bitte Ihren Namen, indem Sie erst den Familiennamen, dann einen Zwischenraum und dann Ihren Vornamen schreiben. Legen Sie dabei die Schreibung zugrunde, mit der Sie auf PLUS Online gemeldet sind, wobei Sie aber bitte :a statt ä, :o statt ö, :u statt ü und :s statt ß schreiben! Es gibt nämlich verschiedene Kodierungssysteme und der Text ist nachher nicht lesbar, wenn jeder seine eigene Kodierung verwendet. eispiel: Nehmen wir an, Sie heißen Hans-Jürgen Peter Höß und Ihre Teampartnerin heißt ärbel Kräßig. Sie wollen von 13 bis 15 Uhr die Vorlesung über Kryptographie besuchen und wollen daher in Gruppe 2 zugeordnet sein. Dann geben Sie bitte eine Datei h01.pl mit folgendem Inhalt auf dem bgabesystem ab! partner( H:o:s Hans-J:urgen Peter, Kr:a:sig :arbel ). gruppenwunsch( H:o:s Hans-J:urgen Peter, 2, 13-15h VO Kryptographie ). Wenn für Sie sowohl der Termin der ersten als auch der zweiten Gruppe möglich ist, geben Sie nur eine Zeile, die mit partner( beginnt, ab! Zum Testen des Programms laden Sie es bitte in Prolog und stellen die nfragen?- partner(ich, Mein_Partner).?- gruppenwunsch(ich, Gruppe, Grund). 3

Den Test des Programms nicht abgeben! ei dieser ufgabe wird sich Ihre Datei natürlich von der Ihres Partners unterscheiden. lso bitte jeder für sich bearbeiten! bzugeben: Programm h01.pl ufgabe 2 Laden Sie die Datei verwandtschaft.pl und fragen Sie Prolog: (a) Wessen Kind ist Max? (b) Wer ist Kind von nna? (c) Wer ist Kind von wem? (d) Wer ist Kind von sich selbst? (e) Welche zwei Personen sind die Eltern (Vater bzw. Mutter) von welcher dritten Person? (f) Wer ist Grußmutter von Eva? bzugeben: Datei h02.txt mit 6 nfragen (darüber Ihre Namen!) ufgabe 3 Drücken Sie die folgenden ussagen über verschiedene Tiergruppen und ihre bevorzugten Fortbewegungsmethoden in Form eines Prologprogramms aus: (a) Löwe, Rind, Wal und Fledermaus sind Säugetiere. (b) Star, Strauß und Wasseramsel sind Vögel. (c) Löwe, Rind und Strauß gehen gerne. (d) Forelle, Wasseramsel und Wal schwimmen gerne. (e) Fledermaus, Star und Wasseramsel fliegen gerne. Fragen Sie Prolog (a) nach einem Säugetier, das gerne schwimmt (b) nach einem Vogel, der gerne fliegt (c) nach einem Vogel, der gerne fliegt und gerne schwimmt Schreiben Sie diese nfragen als Kommentare in das Programm hinein! bzugeben: Programm mit nfragen als Kommentare ufgabe 4 Definieren Sie drei Prädikate planet/1, rund/1 und eckig/1 durch Fakten, die die folgenden ussagen in Prolog-Syntax ausdrücken! Die Erde ist ein Planet. Der Mars ist ein Planet. Die Erde ist rund. Der Mars ist rund. Der Würfel ist eckig. Definieren Sie weiter zwei nullstellige Prädikate es_gibt_einen_eckigen_planeten/0 und es_gibt_einen_runden_planeten/0 jeweils durch eine Regel unter ezugnahme auf die oben definierten Prädikate! Damit sollte Prolog auf folgende nfragen mit folgenden ntworten reagieren:?- es_gibt_einen_runden_planeten. true.?- es_gibt_einen_eckigen_planeten. false. 4

In Prolog lässt man bei nullstelligen Prädikaten die Klammern weg. bzugeben: Programm ufgabe 5 Überlegen Sie sich zunächst ohne Verwendung des Computers, welche der folgenden Zeichenfolgen Prolog-tome, welche Prolog-Variablen sind! (a) abc (b) ac (c) 1abc (d) -1234 (e) bc (f) 123.7 (g) -12.34e-23 (h) a c (i) 1 (j) ab-cd (k) a1 (l) 2+3 (m) f(g(x,a),h(3,y,b)) (n) Heinz Schmidt (o) Heinz Schmidt Starten Sie nun am Computer Ihr Prolog-System! Für einen Term T liefert eine nfrage?- atom(t). die ntwort yes oder true, wenn T ein Prolog-tom ist. Wenn T kein gültiger Prolog-Term ist, sollte eine Fehlermeldung produziert werden. Probieren Sie das mit ufrufen wie?- atom(abc). Entsprechend wie atom/1 gibt es in Prolog noch andere Typ-Test-Prädikate, z.. var/1, number/1, integer/1, float/1, compound/1 (testet, ob ein Term zusammengesetzt ist). Testen Sie damit für jede der obigen Zeichenfolgen, ob es sich um einen Prolog-Term handelt, und was jeweils der Typ dieses Terms ist! bzugeben: Datei mit ngabe zu Term-Typen ufgabe 6 Im Programm verwandtschaft.pl ist unter anderem ein zweistelliges Prädikat kind/2 definiert. Dieses Prädikat lässt sich durch einen Graphen darstellen, z.. die ersten beiden Fakten des Prädikats durch Franz Max Christine (a) Vervollständigen Sie diesen Graphen! (b) Laden Sie das Programm verwandtschaft.pl in Prolog und fragen Sie Prolog, wer Nachkomme von wem ist! ei wiederholter Eingabe eines Strichpunkts sollten Sie insgesamt 11 ntworten bekommen. 5

(c) Fragen Sie Prolog, wer Nachkomme von Franz ist! Prolog sollte 4 ntworten liefern. (d) Verlassen Sie nun Prolog, kopieren Sie die Datei verwandtschaft.pl, ändern Sie die letzte Klausel der Kopie ab zu nachkomme(n,x) :- nachkomme(n,k), kind(k,x). und laden Sie diese Datei in Prolog und fragen Sie Prolog wieder, wer Nachkomme von Franz ist! Erklären Sie, was dabei passiert! (e) Was passiert, wenn Sie die letzten fünf Zeilen abändern zu nachkomme(n,x) :- nachkomme(n,k), kind(k,x). nachkomme(n,x) :- kind(n,x). und wieder dieselbe nfrage stellen? Wenn Prolog einen Fehler signalisiert und nicht das Prompt?-, sondern z.. nur ein Fragezeichen ohne Minuszeichen ausgibt, versuchen Sie mit a (= abort) abzubrechen! (f) lle diese drei Programme unterscheiden sich nur in der Reihenfolge der Klauseln oder in der Reihenfolge der Teilziele innerhalb des Rumpfes einer Klausel. Logisch sind sie zueinander äquvialent, aber im Verhalten beim ufruf einer nfrage unterscheiden sie sich voneinander. Schauen Sie sich das Verhalten bei (c) und bei (d) noch einmal an und formulieren Sie eine Faustregel, wie man die Reihenfolge der Teilziele bei einer rekursiven Klausel wählen sollte! bzugeben: (a) Graphik; (b),(c) nfragen; (d),(e),(f) Text ufgabe 7 Ein Gatter (englisch: gate) ist eine einfache elektronische Schaltung mit ein oder mehr Eingängen und einem usgang. n jedem der Eingänge kann ein Signal angelegt werden und das Gatter verarbeitet die Eingangssignale zu einem Signal am usgang. Für jedes Signal gibt es zwei mögliche Werte, die als Wahrheitswerte w (für wahr ) und f (für falsch ) interpretiert werden. Ein eispiel für ein Gatter ist das oder- Gatter. ezeichnen wir die Eingangssignale mit und und das usgangssignal mit C. Dann ist C=w genau dann, wenn =w oder =w ist. Hier ist eine graphische Darstellung des oder-gatters als Kasten mit zwei Eingängen und oben und einem usgang C unten, daneben die Wahrheits(wert)tabelle (englisch truth table), in der jede Zeile eine Möglichkeit für die Wahrheitswerte von und und den dazugehörigen Wahrheitswert von C angibt. Daneben ist eine Darstellung der Wahrheitstabelle als Prolog-Programm: C oder C w w w w f w f w w f f f % oder(,,c) C = ( oder ) oder(w,w,w). oder(w,f,w). oder(f,w,w). oder(f,f,f). Schreiben Sie das Programm in eine Datei h07.pl und stellen Sie die nfrage 6

?- oder(,,c). und lassen Sie sich durch wiederholte Eingabe eines Strichpunkts nacheinander alle ntworten von Prolog ausgeben! Es sollten nacheinander die folgenden ntworten kommen: =w, =w, C=w ; =w, =f, C=w ; =f, =w, C=w ; =f, =f, C=f Die genaue Form, in der Prolog diese ntworten präsentiert, unterscheiden sich von Prolog-System zu Prolog-System. Überzeugen Sie sich, dass die ntworten, die Ihr Prolog-System liefert, äquivalent sind zu den oben angeführten ntworten! Weitere eispiele für Gatter sind das und-gatter und das nicht-gatter, hier graphisch als Kästen dargestellt und rechts daneben jeweils die Wahrheitstabelle: und C C w w w w f f f w f f f f nicht w f f w Ergänzen Sie Ihr Programm h07.pl um Prädikate und/3 und nicht/2 gemäß dieser beiden Wahrheitstabellen! Gatter können zu komplexeren Schaltungen kombiniert werden. Hier ist ein Halbaddierer graphisch als Kasten dargestellt und im Detailaufbau aus Gattern gezeigt, daneben die Definition der Relation zwischen Ein- und usgaben als Prolog-Prädikat halbaddierer/4. und oder Halbaddierer C S C nicht D und S E halbaddierer(,,c,s) :- und(,,c), nicht(c,d), oder(,,e), und(d,e,s). Fügen Sie diese Definition Ihrem Programm hinzu und lassen Sie es mit der nfrage?- halbaddierer(,,c,s). laufen! Erstellen Sie aus den ntworten, die Ihnen Prolog liefert, die Wahrheitstabelle für den Halbaddierer! Hier sind zwei Schaltungen mit Rückkoppelungen: 7

oder oder E F nicht nicht nicht C D Die linke Schaltung ist instabil. Stellen Sie an Prolog die nfrage?- nicht(,). Dann sehen Sie, dass es keine stabile Lösung gibt. Die rechte Schaltung ist ein Flipflop und ist bistabil. Wenn die Eingangssignale =f und =f sind, gibt es zwei verschiedene Lösungen für die usgangssignale C und D. Um das mit Prolog zu testen, definieren Sie ein Prolog-Prädikat flipflop/4 durch eine Definition flipflop(,,c,d) :-... für die stabilen Zustände des Flipflop und stellen Sie dann die nfrage?- flipflop(,,c,d). Prolog gibt Ihnen alle ntworten für stabile Zustände des Flipflop. Erstellen Sie daraus eine Wahrheitstabelle! Zu den Einbagesignalen =f und =f wird Ihre Tabelle zwei Zeilen haben. bzugeben: Programm; Wahrheitstabellen für Halbaddierer und für stabile Zustände des Flipflop ufgabe 8 In der vorigen ufgabe haben wir uns mit Logikschaltungen beschäftigt. ber die Signale, mit denen wir es dort zu tun hatten, kann man auch als Zahlen 1 für w (wahr) und 0 für f (falsch) deuten. Meist wählt man dann die Reihenfolge der ufschreibung so, dass zuerst 0, dann 1 drankommt. Kopieren Sie das Programm h07.pl nach h08.pl und schreiben Sie h08.pl wie oben angedeutet um, wobei Sie 0 statt f und 1 statt w schreiben! Der Halbaddierer kann jetzt verwendet werden, um zwei einstellige Zahlen im Zweiersystem (=Dualsystem=inärsystem) zu addieren. Dabei kann es einen Übertrag (englisch carry C) geben. Die Summe + kann also zweistellig werden: 0 2 + 0 2 = 00 2 0 2 + 1 2 = 01 2 1 2 + 0 2 = 01 2 1 2 + 1 2 = 10 2 8

Die erste Stelle der Summe (Zweierstelle) ist der Übertrag C und die zweite Stelle (Einerstelle) das S (für Summe). Probieren Sie das mit dem Programm h08.pl aus! eim ddieren mehrstelliger Zahlen, z.. 1001 2 + 1011 2 = 10100 2 addiert man zunächst die rechten Stellen (Einerstellen) der Summanden. Das ergibt hier Summe 0 (als Einerstelle des Ergebnisses) und Übertrag 1. Dann addiert man die zweitletzten Stellen der Summanden (Zweierstellen) und muss noch den Übertrag, hier 1 dazuaddieren: 0 2 +1 2 +1 2 ergibt hier 2, also 10 2, d.h. wieder Summe 0 (als Zweierstelle des Ergebnisses) und Übertrag 1 auf die drittletzte Stelle (Viererstelle), u.s.w. Es müssen also für die erechnung einer jeden Stelle des Ergebnisses im Zweiersystem bis zu drei einstellige Zahlen addiert werden. Dies tut der Volladdierer Halbaddierer C1 S1 Halbaddierer Cin Cout Volladdierer Cin C2 oder S Cout S Ergänzen Sie das Programm h08.pl um die Definition des Prädikats volladdierer/5: volladdierer(,,cin,cout,s) :-... Verwenden Sie dabei das Prädikat halbaddierer/4! Stellen Sie nun die nfrage?- volladdierer(,,cin,cout,s). und lassen Sie sich von Prolog mit Strichpunkt alle ntworten ausgeben! Überzeugen Sie sich, dass tatsächlich die Summe ++Cin im Zweiersystem ausgerechnet wird, wobei das Ergebnis aus den zwei Ziffern Cout und S besteht. us vier Volladdierern kann man nun einen Vier-it-ddierer bauen: 3 3 2 2 1 1 0 0 C4 Volladdierer C3 Volladdierer C2 Volladdierer C1 Volladdierer C0 S3 S2 S1 S0 9

Ergänzen Sie Ihr Programm h08.pl dementsprechend um ein Prädikat vierbitaddierer/14: vierbitaddierer(3,3,2,2,1,1,0,0,c0,c4,s3,s2,s1,s0) :-... Normalerweise wird man C0=0 wählen. Um die Verwendung des Prädikats etwas übersichtlicher zu machen, kann man die its jedes Summanden und der Summe jeweils in eine Liste zusammenfassen: vierbitaddierer1([3,2,1,0],[3,2,1,0],[c4,s3,s2,s1,s0]) :- vierbitaddierer(3,3,2,2,1,1,0,0,0,c4,s3,s2,s1,s0). Stellen Sie für obiges eispiel 1001 2 + 1011 2 = 10100 2 die nfragen?- vierbitaddierer1([1,0,0,1],[1,0,1,1],summe).?- vierbitaddierer1(summand1,summand2,[1,0,1,0,0]). und vergewissern Sie sich, dass Prolog die richtigen ntworten liefert! bzugeben: Programm ufgabe 9 ei dieser ufgabe geht es um die Situation einer Familie und die Frage, wer mit wem sein Hobby gemeinsam ausüben kann. Viele Hobbies kann man außerhalb der Urlaubs- oder Ferienzeit, etwa am bend oder Wochenende ausüben, und zwei Personen, die nahe beieinander wohnen, können dies gemeinsam tun. ndere Hobbies, z.. segeln auf hoher See erfordern eine mehrwöchige Urlaubs- oder Ferienzeit. Zwei Menschen können ein solches Hobby gemeinsam ausüben, wenn sie zur gleichen Zeit frei haben, unabhängig davon, wie weit entfernt voneinander sie wohnen. Die Verwandtschaftsbeziehungen der Familie seien durch den folgenden Graphen gegeben: Hans nna Karl Max Dora Franz Eva ert Karl ist z.. ein Kind von nna. Jede der Personen hat mindestens ein Hobby: Hans spielt Schach und segelt. nna spielt Schach und geht gerne einkaufen. Karl geht gerne auf Parties. Max angelt und segelt. Dora spielt Tennis, segelt und geht gerne einkaufen. Franz geht wandern, segelt und spielt Schach. Eva reitet. 10

ert angelt, spielt Tennis, segelt und geht gerne einkaufen. Die Familie ist über zwei Städte verstreut: Hans, nna, Karl, Max und Dora wohnen in St. Pölten. Franz, Eva und ert wohnen in Los ngeles. Die Mitglieder der Familie haben in unterschiedlichen Monaten frei: Hans, nna und Karl haben immer frei. Max und Dora haben im ugust frei. Franz, Eva und ert haben im Juli frei. Zur Lösung der ufgabe noch die folgenden Informationen: Wenn zwei Personen in der gleichen Stadt wohnen, dann wohnen sie nahe beieinander. Wenn zwei Personen nahe beieinander wohnen und eines der Hobbies Schach spielen, einkaufen, auf Parties gehen, angeln, Tennis spielen, wandern und reiten gemeinsam haben, können sie dieses Hobby gemeinsam ausüben. Wenn zwei Personen dasselbe Hobby haben, können sie es gemeinsam ausüben, wenn sie im gleichen Monat frei haben. Frage: Wer kann sein Hobby gemeinsam mit seinem Enkelkind ausüben? Gesucht sind alle möglichen ntworten. Jede ntwort soll jeweils die Person, das Enkelkind und das Hobby nennen. Übersetzen Sie die hier angegebene Kind-Eltern-eziehung und alle mit gekennzeichneten ussagen in ein Prolog-Programm, übersetzen Sie die ebenfalls mit gekennzeichnete Frage am Ende der Problemstellung in eine Prolog-nfrage und fügen Sie diese nfrage am Ende der Datei als Kommentar dem Programm hinzu! bzugeben: Programm mit nfrage 11