Bearbeiten von „Gedächtnisprotokoll SE-3LP09-1

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 17: Zeile 17:
Geben Sie die Ausgabe am Systempromt an.
Geben Sie die Ausgabe am Systempromt an.


1.?- add(3,5,Summe) = add(Summand1,Summand2,7).
add(3,5,Summe) = add(Summand1,Summand2,7).


2.?- member(X,[1,2,3,4]), X is floor(X/2)*2.
... eine unifikationsaufgabe mit einer liste
 
... eine mit floor
 
... eine mit abs


3.?- X is member(X,[1,2,3,4]).


==== Aufgabe 2 ====
==== Aufgabe 2 ====




1.Was bewirkt ein cut?
Was bewirkt ein cut?
 
 
Geben Sie ein Beispiel mit cut an.
 
 
... noch eine frage zu cut


2.Erläutern Sie an einem Beispiel die Wirkungsweise eines Cuts.


==== Aufgabe 3 ====
==== Aufgabe 3 ====  


Es wurde eine Datenbank für eine kleine Videothek gegeben.
Es wurde eine Datenbank für eine kleine Videothek gegeben.
Zeile 45: Zeile 53:




Zunächst sollte man Anfragen stellen.
Erstellen Sie ein Prädikat:


1. Hat Susi Sorglos schoneinmal einen Film ausgeliehen?
... das bei einem Kunden zurückgibt, ob und welche Filme ausgeliehen wurden.


2. Welche Filme gibt es nur auf vc und nicht auf dvd?
... das prüft, ob ein Film noch verfügbar ist.


3. Von welchem Film gibt es nur ein Exemplar?
... das zurückgibt, ob ein Film nur einmal in der Datenbank vorhanden ist.


4. Von welchem Film sind alle Exemplare ausgeliehen?
... das die Anzahl der Ausleihen in einer Kategorie angibt


... das die Anzahl der Ausleihen in einer Kategorie in einem Monat ausgibt


==== Aufgabe 4 ====
Es mussten zu obiger Datenbasis nun selber Prädikate geschrieben werden. Die Überschrift der Aufgabe lautete Resultatsaggregation, was ein Hinweis darauf ist, dass man findall/3 benutzen sollte.


1. Schreiben sie ein Prädikat, was zu einer gegebenen Kategorie, die Anzahl der bisher ausgeliehenen Filme ausgibt.
Die Videothek möchte Benutzerprofile erstellen, aus diesem Grund sollten wir für einen Kunden die Häufigkeiten ermitteln, (eine Liste machen) wie oft er Filme in einer Kategorie ausgeliehen hat.
Zum Beispiel [0,0,0,1,4] in den Kategorien also 0 Abenteuer, 0 Erotik, 0 Horror, 1 Kinder, 4 Krimi.


2. Schreiben sie ein Prädikat, was zu einem gegebenem Monat die Kategorie ausgibt, von der die meisten Filme ausgeliehen wurden. Es gibt die Kategorien: action, erotik, horror, kinder, krimi
Die nächste Aufgabe war die absoluten Häufigkeiten zu berechnen wie oft ein Kunde in einem Monat in einer Kategorie Filme ausgeliehen hat.
 
Dazu gab es dann noch Teilaufgaben, eine rekursive und eine endrekursive Variante zu machen, und sie danach auf Effizienz vergleichen.
Hinweis: Sortieren ist mit dem Prädikat sort/2 möglich, die Ausgabereihenfolge ist aber aufsteigend.


==== Aufgabe 5 ====
==== Aufgabe 5 ====


Es sollten wieder Prädikate geschrieben werden.
1. Schreiben sie ein Prädikat, was zu gegebenem Kunden eine Liste absoluter Häufigkeiten der Ausleihung pro Kategorie zurückgibt. Z.B. bedeutet [0,0,0,1,4] dass ein Kunde 1 Kinderfilm und 4 Krimis bereits ausgeliehen hat.
2. Wandeln sie eine solche Liste absoluter Häufigkeiten in eine Liste relativer Häufigkeiten um, indem sie ein '''rekursives''' Prädikat verwenden. Zu der vorherigen Liste wäre z.B. [0,0,0,0.2,0.8] eine solche relative Liste.
3. Wie 2., nur verwenden sie nun ein Prädikat höherer Ordnung.
4. Vergleichen sie dass in 2. und 3. geschriebene Prädikat auf Effizienz und Verständlichkeit.
==== Aufgabe 6 ====
1.
Hier gab es eine schicke Formel mit der der Videotheks-chef nun seine Kundenprofile auswerten wollte. Formel dürfte in etwa folgende sein:
Hier gab es eine schicke Formel mit der der Videotheks-chef nun seine Kundenprofile auswerten wollte. Formel dürfte in etwa folgende sein:


<math> z = {{1}\over{\sqrt{\sum^n_{i=1} (x_i-y_i)^2}}}</math>
<math> z = {{1}\over{\sqrt{\sum^n_{i=1} (x_i-y_i)^2}}}</math>
Mit den aus der Aufgabe 5 berechneten Nutzerprofilen(die Listen relativer Häufigkeiten) sollte nun dieser Wert da berechnet werden. Dabei sollte einmal eine '''endrekursive''' und einmal eine '''nicht-endrekursive''' Variante verwendet werden.
2. Kann man auch dies mit einem Prädikat höherer Ordnung berechnen(analog wie bei Aufgabe 5 Teilaufgabe 3.)? Begründen sie!


==== Aufgabe 6 ====
==== Aufgabe 6 ====


1.
1.
Diese Aufgabe bestand daraus, auszuwerten was ein kleines Scheme Programm macht:
Diese Aufgabe bestand daraus, auszuwerten was ein kleines Scheme Programm macht.
 
Zu was evaluiert
 
(list (+ (* 2 2)
          (+ 1 2)
          (- (/8 4) 2)
      )
  )


2.
2.
Drei andere kleine Scheme Programme, aus denen wir herausfinden sollten, welches bedeutungsgleich zu dem aus der vorherigen Teilaufgabe ist.
Drei andere kleine Scheme Programme, aus denen wir herausfinden sollten, welches bedeutungsgleich zu dem ersten ist.


3.
3.
Was ist der Unterschied zwischen specialform expressions und Funktionen? Erläutern sie an einem Beispiel.
Herausfinden, was ein anderes Scheme-Programm macht


4.
4.
Was berechnet folgende Scheme Funktion?
Das Scheme-Programm aus 3. in Prolog programmieren.
x ist Liste von Atomen, y ist ein Atom
 
... noch irgendwas?


( define (blub x y)
    ( if
          (null? x)
            quote ()
            (if (eq? (car x) y)
                    (blub (cdr x) y)
                    (cons (car x) (blub (cdr x) y) )
              )
    )
)




5.
Das Scheme-Programm aus 4. in Prolog programmieren.


[[Kategorie:Gedaechtnisprotokoll|SE3]]
[[Kategorie: Gedaechtnisprotokoll|SE3]]

Bitte beachte, dass alle Beiträge zu Fachschaft_Informatik von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Fachschaft Informatik:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Bitte beantworte die folgende Frage, um diese Seite bearbeiten zu können (<a href="/Fachschaft/wiki/index.php?title=Special:Captcha/help" class="internal">weitere Informationen</a>):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)