fb18.de
/ Diplom Informatik
/ Unterbereich Grundstudium
/ Praktische Informatik
[P1] letze vorlesung
hi leidensgenossen,
ich wollte fragen, ob jemand die klausurrelevanten punkte von der tafel abgeschrieben hat und sie bitte hier posten könnte. wäre sehr nett ;)
ich saß leider vorne rechts und konnte nix lesen O_o
wir sehen uns mittwoch (wo eigentlich)
Prolog:
Relationen
Unifikation
Suche , Backtraking
Funktionale Auswertungsumgebung
Richtungsunabhängigkeit
Scheme:
Auswertung von Ausdrücken
Rekursionen
Funktionen höherer Ordnung
Imperative Sprachelemente
Bezugstransparenz
so das war alles
meike
tjaja so bin ich *fg*
büdde büdde
meike
Hi Leute,
was ist denn mit Imperative Sprachelemente gemeint??
Die allgemeinen Standardfunktionen von Scheme, oder???
LG BIA
Schleifenkonstrukte und Bedingungskonstrukte würd ich mal sagen, denn die zeichnen imperative Sprachen aus.
Ich dachte, damit seien alle Elemente gemeint, die void als Rückgabewert haben, also auch sowas wie (set! var wert) oder vielleicht sogar (define var wert)… lang ist's her..
Tot und Teufel! Naja, Zaphod hat fast recht. "set!" und "append!" eventuell auch schleifenkonstrukte koennten gemeint sein (vielleicht auch sowas wie "begin").
Bedingungen mit Sicherheit nicht, die sind in Scheme funktional ausgelegt.
Aber Zaphod. Es gibt keinen Typ 'void' in Scheme. die Ausrufezeichenfunktionen haben durchweg einen unspezifizierten Rueckgabewert, das "scheme" (nicht dr-scheme) zeigt als Rueckgabe, glaube ich, sogar # an.
Und Bedingungskonstrukte zeichnen bestimmt keine imperativen Sprachen aus. In der Tat habe ich noch keine Sprache kennengelernt, in der es keine Bedingungskonstrukte gaebe. Waer auch ziemlich schwierig, ohne… ,)
MoKrates
Moin!
Ich kann behaupten, dass Scheme "void" zurückgibt, wenn es auf den unspezifizierten Rückgabewert trifft. Da muss ich Zaphod in Schutz nehmen..
"set!" macht das auf jeden Fall. Mo, erinnerst du dich an gestern, Dienstag, "(let ((d (set! n (+ n 1)))))"?
SK
Ich hab DRSCHEME grade mal hochgefahren, und folgendes eingegeben:
definitions:
(define x 0)
(define y 0)
interactions:
(set! x (set! y 5))
(display x)
dabei wurde mir dann #<void>
angezeigt.
Prinzipiell bedeutet das, dass es keinen Typ void gibt (in C und anderen Sprachen darf void auch nicht zugewiesen werden! Das gibt nen Compiler-fehler!).
Es ist ein Datenelement, dass keinen Typ besitzt, *aber* eine eigene Representation! Ein Element, das #<void>
heisst. Die Ausgabe dessen wird von drscheme standardmaessig unterdrueckt, daher die Zuweisung und das Display fuer die Sichbarmachung.
MoKrates
Und Bedingungskonstrukte zeichnen bestimmt keine imperativen Sprachen aus. In der Tat habe ich noch keine Sprache kennengelernt, in der es keine Bedingungskonstrukte gaebe. Waer auch ziemlich schwierig, ohne… ,)
Kann mich beim besten Willen an keine Bedingungen bei Prolog erinnern [img]
http://www.fb18.de/gfx/3.gif[/img]
Und Bedingungskonstrukte zeichnen bestimmt keine imperativen Sprachen aus. In der Tat habe ich noch keine Sprache kennengelernt, in der es keine Bedingungskonstrukte gaebe. Waer auch ziemlich schwierig, ohne… ,)
Kann mich beim besten Willen an keine Bedingungen bei Prolog erinnern [img]http://www.fb18.de/gfx/3.gif[/img]
Naja, die tatsache dass in einem a :- b. statement sich passende unifikationen ergeben, so dass man die Zeile auswerten kann, ist doch auch ne bedingung.
Der R5RS sieht für Konstrukte wie set! etc. einen "nicht spezifizierten Rückgabewert" vor, d.h. man darf sich nicht darauf verlassen, was denn da zurück kommt. Bei viele Schemes heißt das dann entsprechend #<unspecified>, aber es ist irrelevant wie es denn heißt - wenn die Implementation plötzlich 1723 zurückgibt darf uns das nicht kümmern, denn der Rückgabewert ist "unspezifiziert". Dass DrScheme das dann "void" nennt ist schön für DrScheme, hat aber weder etwas (direkt) mit dem typ void aus C zu tun, noch mit Scheme als Sprache.
Und in Prolog ist *jede* Anweisung eine Bedingung. Nur wenn sie Wahr ist wird die nächste ausgeführt. A :- B, C. entspricht grob (if (and B C) A) plus Variablenbindungen.
Zu imperativen Sprachkonstrukten zählen alle Funktionen (set-car!, set-cdr!, append!) und special forms (set!), die ihre Argumente verändern, also "Seiteneffekte" haben. Dadurch geht referenzielle Transparenz flöten, was das ganze extrem unübersichtlich macht ;)
Wenn man sehr korrekt ist, kann man auch noch Ausgabefunktionen (display, write) als imperativ bezeichnen, da diese ebenso einen Seiteneffekt haben (die Ausgabe eben).
Hey Leute,
kann mir jemand ma erklären, was Richtungsunabhängigkeit GENAU bedeutet?!
greetings chris
p.s: in Prolog gibt es Bedingungen, habe ich z.B bei Bubble-Sort verwendet, hier der Ausschnitt:
bubbleAID1([E1|[E2|Rest]],R) :- E1 @> E2 ->
bubbleAID1([E1|Rest],R1),
R = [E2|R1];
bubbleAID1([E2|Rest],R1),
R = [E1|R1].
Hey Leute,
kann mir jemand ma erklären, was Richtungsunabhängigkeit GENAU bedeutet?!
greetings chris
p.s: in Prolog gibt es Bedingungen, habe ich z.B bei Bubble-Sort verwendet, hier der Ausschnitt:
bubbleAID1([E1|[E2|Rest]],R) :- E1 @> E2 ->
bubbleAID1([E1|Rest],R1),
R = [E2|R1];
bubbleAID1([E2|Rest],R1),
R = [E1|R1].
Ein Prädikat ist genau dann richtungsunabhängig, wenn es
- in allen Instantiierungsvarianten terminiert
- in allen Instantiierungsvarianten das richtige Ergebnis liefert.
so einfach is das…hab vielen dank,
greetings chris