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 7: Zeile 7:




=== Softwareentwicklung III - Logik Programmierung, Klausur 1 WS08/09 ===
=== Softwareentwicklung III - Funktionale Programmierung, Klausur 1 WS08/09 ===


Bearbeitungszeit: 120 Minuten
Bearbeitungszeit: 120 Minuten


Insgesamt 60 Punkte.
Insgesamt 70 Punkte, für jede Aufgabe insgesamt 10




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).
1.
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


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


==== Aufgabe 2 ====
... eine mit abs


== Aufgabe 2 ==


1.Was bewirkt ein cut?
1.
Was bewirkt ein cut?


2.Erläutern Sie an einem Beispiel die Wirkungsweise eines Cuts.
2.
Geben Sie ein Beispiel mit cut an.


==== Aufgabe 3 ====


Es wurde eine Datenbank für eine kleine Videothek gegeben.
... noch eine frage zu cut


%kunde(Name, Vorname, Kundennummer, Straße, Stadt)


%film(Filmnummer, Name, Kategorie)
==== Aufgabe 3 ====


%datentraeger(Datentraegernummer, Medium(vhs oder dvd), Filmnummer)
Es wurde eine Datenbank für eine kleine Videothek gegeben.
 
%ausleihe(Vorgangsnummer, Kundennummer, Datentraegernummer, Gefordertes_rueckgabedatum)
 
%rueckgabe(Datentraegernummer, Gefordertes_rueckgabedatum, Eventuelle_schaeden)
 
 
Zunächst sollte man Anfragen stellen.
 
1. Hat Susi Sorglos schoneinmal einen Film ausgeliehen?


2. Welche Filme gibt es nur auf vc und nicht auf dvd?
%kunde(name, vorname, kundennummer, straße, stadt)


3. Von welchem Film gibt es nur ein Exemplar?
%film(nummer, name, kategorie)


4. Von welchem Film sind alle Exemplare ausgeliehen?
%datentraeger(datentraegernummer, medium(vhs oder dvd), filmnummer)


%ausleihe(vorgangsnummer, kundennummer, datentraegernummer, gefordertes_rueckgabedatum)


==== Aufgabe 4 ====
%rueckgabe(datentraegernummer, gefordertes_rueckgabedatum, eventuelle_schaeden)
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.


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
Erstellen Sie ein Prädikat:  


Hinweis: Sortieren ist mit dem Prädikat sort/2 möglich, die Ausgabereihenfolge ist aber aufsteigend.
... das mit einem Kinden, ob und welche Filme ausgeliehen wurden.


==== Aufgabe 5 ====
... das prüft, ob ein Film noch verfügbar ist.


Es sollten wieder Prädikate geschrieben werden.
... das zurückgibt, ob ein Film nur einmal in der Datenbank vorhanden ist.


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.
... das die Anzahl der Ausleihen in einer Kategorie angibt


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.
... das die Anzahl der Ausleihen in einer Kategorie in einem Monat ausgibt


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.
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.


==== Aufgabe 6 ====
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.


1.
== Aufgabe 5 ==
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>
Hier gab es eine schicke Formel mit der der Videotheks-chef nun seine Kundenprofile auswerten wollte.


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.
== Scheme-Teil ==


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 kleine 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.
Das erste Programm in Prolog programmieren.


4.
... noch irgendwas :)
Was berechnet folgende Scheme Funktion?
x ist Liste von Atomen, y ist ein Atom


( 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)