Gedächtnisprotokoll SE-3LP09-1: Unterschied zwischen den Versionen

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
 
(17 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:




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


Bearbeitungszeit: 120 Minuten
Bearbeitungszeit: 120 Minuten


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




Zeile 17: Zeile 17:
Geben Sie die Ausgabe am Systempromt an.
Geben Sie die Ausgabe am Systempromt an.


1.
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.
 
3.?- X is member(X,[1,2,3,4]).
 
==== Aufgabe 2 ====
 
 
1.Was bewirkt ein cut?
 
2.Erläutern Sie an einem Beispiel die Wirkungsweise eines Cuts.


... eine unifikationsaufgabe mit einer liste
==== Aufgabe 3 ====


... eine mit floor
Es wurde eine Datenbank für eine kleine Videothek gegeben.


... eine mit abs
%kunde(Name, Vorname, Kundennummer, Straße, Stadt)


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


1.
%datentraeger(Datentraegernummer, Medium(vhs oder dvd), Filmnummer)
Was bewirkt ein cut?


2.
%ausleihe(Vorgangsnummer, Kundennummer, Datentraegernummer, Gefordertes_rueckgabedatum)
Geben Sie ein Beispiel mit cut an.


%rueckgabe(Datentraegernummer, Gefordertes_rueckgabedatum, Eventuelle_schaeden)


... noch eine frage zu cut


Zunächst sollte man Anfragen stellen.


==== Aufgabe 3 ====
1. Hat Susi Sorglos schoneinmal einen Film ausgeliehen?


Es wurde eine Datenbank für eine kleine Videothek gegeben.
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 ====
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.


%rueckgabe(datentraegernummer, gefordertes_rueckgabedatum, eventuelle_schaeden)
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.
==== Aufgabe 6 ====
Zum Beispiel [0,0,0,1,4] in den Kategorien also 0 Abenteuer, 0 Erotik, 0 Horror, 1 Kinder, 4 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.
1.
Dazu gab es dann noch Teilaufgaben, eine rekursive und eine endrekursive Variante zu machen, und sie danach auf Effizienz vergleichen.
Hier gab es eine schicke Formel mit der der Videotheks-chef nun seine Kundenprofile auswerten wollte. Formel dürfte in etwa folgende sein:


== Aufgabe 5 ==
<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 kleine 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 ersten ist.
Drei andere kleine Scheme Programme, aus denen wir herausfinden sollten, welches bedeutungsgleich zu dem aus der vorherigen Teilaufgabe ist.


3.
3.
Das erste Programm in Prolog programmieren.
Was ist der Unterschied zwischen specialform expressions und Funktionen? Erläutern sie an einem Beispiel.


... noch irgendwas :)
4.
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]]

Aktuelle Version vom 28. Februar 2014, 19:30 Uhr

Die Logik- und die Funktionale-Klausur waren im selben Raum.

weitere Infos bitte - war es schwer?



Softwareentwicklung III - Logik Programmierung, Klausur 1 WS08/09[Bearbeiten]

Bearbeitungszeit: 120 Minuten

Insgesamt 60 Punkte.


Aufgabe 1[Bearbeiten]

Geben Sie die Ausgabe am Systempromt an.

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

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

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

Aufgabe 2[Bearbeiten]

1.Was bewirkt ein cut?

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

Aufgabe 3[Bearbeiten]

Es wurde eine Datenbank für eine kleine Videothek gegeben.

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

%film(Filmnummer, Name, Kategorie)

%datentraeger(Datentraegernummer, Medium(vhs oder dvd), Filmnummer)

%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?

3. Von welchem Film gibt es nur ein Exemplar?

4. Von welchem Film sind alle Exemplare ausgeliehen?


Aufgabe 4[Bearbeiten]

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

Hinweis: Sortieren ist mit dem Prädikat sort/2 möglich, die Ausgabereihenfolge ist aber aufsteigend.

Aufgabe 5[Bearbeiten]

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[Bearbeiten]

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

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[Bearbeiten]

1. Diese Aufgabe bestand daraus, auszuwerten was ein kleines Scheme Programm macht:

Zu was evaluiert

(list (+ (* 2 2)
         (+ 1 2)
         (- (/8 4) 2)
      )
 )

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

3. Was ist der Unterschied zwischen specialform expressions und Funktionen? Erläutern sie an einem Beispiel.

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