Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 5 (Kapitel 5)

Größe: px
Ab Seite anzeigen:

Download "Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 5 (Kapitel 5)"

Transkript

1 Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wtersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 5 (Kapitel 5) Hweis: Dieses Übungsblatt enthält von den Tutoren für die Übungsgruppe erstellte Aufgaben. Die Aufgaben und die damit abgedeckten Themenbereiche sd für die Klausur weder relevant noch irrelevant. 1 Vergleichsprozeduren Aufgabe 5.1 (Vergleichsprozeduren) (a) Warum brauchen wir Vergleichsprozeduren? Erklären Sie! (b) Dieter Schlau behauptet: Ee jede Vergleichsprozedur muss vom Typ α α order se! Stimmt das? Lösung 5.1: (a) Wir benötigen Vergleichsprozeduren, um polymorphe Sortieralgorithmen implementieren zu können. Ee Vergleichsprozedur ist ee Prozedur, die zwei Elemente ees Typs nimmt und - gemäß unserer Vorstellung von Größe - zurückgibt, ob das erste Elemente kleer / gleich / größer dem zweiten Element se soll. (b) Ne, wir benötigen keen Typ mit Gleichheit. E denkbares Gegenbeispiel wäre die gültige Vergleichsprozedur fun comp (x : α, y : α) = EQUAL, die alle Elemente als gleich ansieht und selbstverständlich keen Typ mit Gleichheit erfordert. Aufgabe 5.2 Schreiben Sie ee Vergleichsprozedur co, welche alle Elemente als gleich ansieht. Zu was wertet ssort co xs aus, wenn ssort ee Implementierung ees beliebigen strikten Sortieralgorithmus und xs ee beliebige Liste ist? Lösung 5.2: fun co (x,y) = EQUAL Wenn xs die leere Liste ist, wertet es zu nil aus. Ansonsten zu eer eelementigen Liste, die irge Element von xs enthält. Aufgabe 5.3 Schreiben Sie ee Vergleichsprozedur vstrg: strg * strg order, welche die lexikalische Ordnung auf strg herumdreht. So wäre z.b. ["Zebra", "Zahltag", "Banane", "Affe"] ee korrekt sortierte Liste, nach dieser Vergleichsprozedur. Lösung 5.3: fun vstrg (x,y) = Strg. compare (y,x) Aufgabe 5.4 (a) Implementieren Sie ee Prozedur triplecompare, welche die lexikalische Ordnung auf Tripeln des Typs t * strg * real angibt. (b) Schreiben Sie nun ee Sortierprozedur tripsort, welche ee Liste von Tripeln obigen Typs nach der lexikalischen Ordnung sortiert. Sie können Ihr Lieblgssortierverfahren benutzen. 1

2 Lösung 5.4: (a) fun triplecompare ((i,s,r),(a,b,c)) = if i=a then ( case Strg. compare (s,b) of EQUAL Real. compare (r,c) x x) else Int. compare (i,a) (b) fun split xs = foldl (fn (x,(l,s)) (s, x::l)) (nil, nil ) xs fun merge c xs nil = xs merge c nil ys = ys merge c (x:: xr) (y:: yr) = ( case c (x,y) of GREATER y ::( merge c (x:: xr) yr) _ x ::( merge c xr (y:: yr ))) fun msort c [] = [] msort c [x] = [x] msort c xs = let val ( ls, rs) = split xs merge c ( msort c ls) ( msort c rs) val tripsort = msort triplecompare Aufgabe 5.5 Gegeben sei ee Prozedur below: α * α bool, die für zwei Elemente, x und y, entscheidet, ob x < y gilt. Reicht das aus, um alle Vergleiche richtig entscheiden zu können? Schreiben Sie ee Prozedur compare: α * α order, die zwei Elemente entsprech vergleicht. Lösung 5.5: Ja, da edeutig festgelegt ist, wann zwei Elemente kleer bzw. größer sd. Trifft kes von Beidem zu, sd die Elemente gleich. fun compare (x,y) = if below (x,y) then LESS else if below ( y, x) then GREATER else EQUAL Aufgabe 5.6 (a) Schreiben Sie ee Prozedur pair: (t * bool) * (t * bool) (t * bool), die zwei Paare miteander vergleicht und das größere ausgibt. Hierfür soll zunächst die erste Komponente der beiden Paare miteander verglichen werden. Unterscheiden sich die beiden Paare dieser Komponente nicht, so soll das Paar, dessen zweite Komponente true ist, ausgegeben werden. Sd beide Paare äquivalent, soll die Ausnahme Samepair geworfen werden. (b) Schreiben Sie ee Prozedur listcomp: (bool list) * (bool list) order, die zwei Listen miteander vergleicht. Dabei soll true > false gelten. Beispielsweise soll listcomp ([true, false], [false, true, true]) zu GREATER auswerten. Lösung 5.6: (a) exception Samepair fun pair ((a,b),(x,y)) = case Int. compare (a,x) of LESS (x,y) GREATER (a,b) EQUAL ( case (b,y) of (true, false ) (a,b) ( false, true ) (x,y) (_,_) raise Samepair ) (b) fun listcomp ( nil, nil ) = EQUAL listcomp ( nil,_) = LESS 2

3 listcomp (_, nil ) = GREATER listcomp (x::xs,y:: ys) = ( case (x,y) of (true, false ) GREATER ( false, true ) LESS _ listcomp (xs,ys )) 2 Sortieren Aufgabe 5.7 Geben Sie den Rekursionsbaum von Merge-Sort für die Liste [3,1,4,7,4,5,2] an. Lösung 5.7: Hweis: Wenn die Liste ungerade Länge hat, steht das erste Element hten der rechten Teilliste, bei gerader Länge der lken. [3,1,4,7,4,5,2] [5,7,1] [2,4,4,3] [7] [1,5] [4,2] [3,4] [1] [5] [4] [2] [3] [4] Aufgabe 5.8 Schreiben Sie ee Prozedur sort: t list t list, die ee Liste aufsteig sortiert, und zwar derart, dass gerade Zahlen vor ungeraden Zahlen auftauchen. So soll z. B. sort [4, 3, 9, 0, 2, 7] die Liste [0, 2, 4, 3, 7, 9] zurückgeben. Lösung 5.8: fun sort xs = let val even = List. filter ( fn x x mod 2 = 0) xs val odd = List. filter ( fn x x mod 2 = 1) xs ( List. sort ( Int. compare ) even ( List. sort ( Int. compare ) odd ) Aufgabe 5.9 Schreiben Sie ee Prozedur almost: t t list bool, die für ee Liste prüft, ob dieser alle Zahlen, die strikt größer als ee übergebene Zahl sd, aufsteig sortiert sd. Beispielsweise soll almost 3 [4,1,8,3,2,11] zu true auswerten. Lösung 5.9: fun almost _ nil = true almost _ [_] = true almost n (x::y:: xr) = if x <= n then almost n (y:: xr) else if y <= n then almost n ( x:: xr) else if x < y then almost n ( y:: xr) else false 3

4 Aufgabe 5.10 Gegeben sei ee Prozedur sorted: α list bool, die genau dann true liefert, wenn die übergebene Liste aufsteig sortiert ist. (a) Geben Sie den Typ eer Prozedur fallg an, die mithilfe von sorted testet, ob ee Liste absteig sortiert ist. (b) Schreiben Sie die Prozedur fallg. Benutzen Sie dabei kee weiteren Hilfsprozeduren oder Listenprozeduren außer sorted. Lösung 5.10: (a) α list bool (b) fun fallg nil = true fallg [_] = true fallg (x::y:: xr) = if sorted [x,y] then false else fallg (y:: xr) Aufgabe 5.11 (a) Lösen Sie die Aufgaben 5.11 und 5.12 auf Seite 105 im Buch, um den Sortieralgorithmus Quicksort kennenzulernen. (b) Schreiben Sie ee Prozedur quicksort3: t list t list, die ee Liste wie Quicksort sortiert, aber die Liste nicht zwei, sondern drei Teillisten zerlegt. Nehmen Sie statt nur dem ersten, die ersten beiden Elemente als Trennelemente (Pivotelemente). (c) Passen Sie quicksort3 so an, dass es polymorph wird ((α * α order) α list α list) und ee Prozedur vergleich: α * α order zum Vergleichen nimmt. Lösung 5.11: (a) fun partition m max xs = let fun zuordnen (n, (a,b,c)) = if n <= m then (n::a,b,c) else if n <= max then (a,n::b,c) else (a,b,n::c) foldl zuordnen ( nil, nil, nil ) xs fun quicksort3 nil = nil quicksort3 [x] = [x] quicksort3 (x::y:: xr) = let val (m, max ) = if x <= y then (x,y) else (y,x) val ( bs, cs, ds) = partition m max xr ( quicksort3 bs)@[ m ]@( quicksort3 cs)@[ max ]@( quicksort3 ds) (b) fun partition vergleich m max xs = let fun zuordnen (n, (a,b,c)) = ( case vergleich (n,m ) of LESS (n::a,b,c) _ ( case vergleich ( n, max ) of LESS (a,n::b,c) _ (a,b,n::c))) foldl zuordnen ( nil, nil, nil ) xs fun quicksort3 _ nil = nil quicksort3 _ [x] = [x] quicksort3 vergleich ( x:: y:: xr) = let val (m, max ) = ( case vergleich (x,y) of 4

5 Abbildung 1: Bead Sort GREATER (y,x) _ (x,y)) val ( bs, cs, ds) = partition vergleich m max xr ( quicksort3 vergleich bs)@[ m ]@ ( quicksort3 vergleich cs)@[ max ]@ ( quicksort3 vergleich ds) Aufgabe 5.12 In dieser Aufgabe lernen Sie een neuen Sortieralgorithmus kennen. Ziel wird es se, ee Prozedur smallsort: (α * α order) α list α list zu schreiben, die ee Liste sortiert, dem sie immer das kleste Element der unsortierten Liste sucht, dieses aus der ursprünglichen Liste löscht und rechts an die schon sortierte Liste anhängt. Gerne dürfen Sie eigene Lösungsansätze verfolgen oder folgen Sie den Schritten. (a) Diskutieren Sie die Funktionsweise mit Ihren Kommilitonen oder fragen Sie Ihren Tutor bei Problemen. (b) Schreiben Sie zunächst ee Prozedur drop: (α * β order) α β list β list, die das erste Vorkommen ees übergebenen Wertes anhand eer Vergleichsprozedur aus eer Liste löscht. Wenn die Liste leer ist, soll die Ausnahme Subscript geworfen werden. (c) Schreiben Sie nun smallsort. Lösung 5.12: (b) fun drop compare x nil = raise Subscript drop compare x (y:: ys) = ( case compare (x,y) of EQUAL ys _ y ::( drop compare x ys )) (c) fun smallsort _ nil = nil smallsort compare xs = let val smallest = foldl (fn (x,y) case compare (x,y) of LESS x _ y) (hd xs) xs ( smallest ::( smallsort compare ( drop compare smallest xs ))) Aufgabe 5.13 (BeadSort) In dieser Übungsaufgabe wird der Sortieralgorithmus BeadSort vorgestellt, der ee t list absteig sortiert. 5

6 (a) Gegeben sei die t list : [3, 3, 1, 4, 2]. Stellen Sie sich parallele Stangen vor, auf denen Bälle aufgespießt sd. Dabei gibt es genauso viele Stangen wie der Wert des größten Elements. In unserem Fall vier. Reihen gibt es genauso viele wie es Elemente gibt. Siehe Abbildung 1 lks. Nun erlaubt man den Bällen herunterzuf allen. Zählt man nun die Bälle den Reihen ergibt sich die passe absteige Sortierung, siehe Abbildung rechts. Man erhält die tlist : [4, 3, 3, 2, 1]. Machen Sie sich klar, warum dadurch sortiert wird. (b) Schreiben Sie ee Prozedur notnull : α list bool, die testet, ob ee Liste e Element enthält. Nutzen Sie dafür null. (c) Schreiben Sie ee Prozedur replicate : t α α list, die gegeben eer natürlichen Zahl n und ees beliebigen x ee Liste ausgibt, die x genau n mal enthält. Z.B. soll replicate 3 ([1, 2]) die Liste [[1, 2], [1, 2], [1, 2]] ausgeben. (d) Schreiben Sie ee Prozedur columns : α list list α list list, die die α Elemente aus den Listen ihrer Position entsprech den anderen zuordnet. Nutzen Sie dafür List.f ilter, notnull (siehe oben), map und sowohl hd, als auch tl, oder gerne auch een eigenen Lösungsansatz! Z.B. soll columns[[1, 2, 3], [4, 5, 6], [7, 8]] die Liste [[1, 4, 7], [2, 5, 8], [3, 6]] ausgeben. Machen Sie sich die Funktionsweise von columns genau klar, fragen Sie nach, testen Sie unterschiedlichste Beispiele durch oder besprechen Sie Probleme mit Kommilitonen. (e) Schreiben Sie mithilfe von replicate ee Prozedur nureser : t list t list list, die aus eer Liste von teger ee Liste ausgibt, welche Listen nur mit dem Element 1 enthält, wobei die Länge der Liste die Größe des teger repräsentiert. z.b. soll nureser[3, 3, 1, 4, 2] die Liste [[1, 1, 1], [1, 1, 1], [1], [1, 1, 1, 1], [1, 1]] ausgeben. Betrachten Sie das Beispiel Verbdung mit Abbildung 2 lks. (f) Sie dürfen nun lich die Prozedur beadsort : t list t list schreiben, hierzu muss zunächst auf die Argument-Liste die Prozedur nureser angewet werden. Wie (Tipp: und wie oft?) müssen Sie nun die Prozeduren columns und length s Spiel brgen um das gewünschte Ergebnis zu erzielen? (g) Zusatz zur Entspannung. Ihre Liste wird nun absteig sortiert. Fügen Sie Ihre Implementierung von beadsort ee schnellereversion hzu, sodass die Liste danach auf steig sortiert ist. Lösung 5.13: (a) (b) fun notnull xs = if null xs then false else true (c) fun replicate n x = List. tabulate ( n, fn _ x) (d) fun columns xs = case List. filter notnull xs of [] [] xs ( map hd xs) :: ( columns ( map tl xs )) (e) fun nureser xs = map ( fn x replicate x 1) xs (f) fun beadsort xs = map length ( columns ( columns ( nureser xs ))) Warum muss columns zweimal angewet werden? Betrachten Sie folgen Output von Alice und testen Sie selbst herum. nureser [3,3,1,4,2]; val it : t list list = [[1,1,1], [1,1,1], [1], [1,1,1,1], [1,1]] > columns it; val it : t list list = [[1,1,1,1,1], [1,1,1,1], [1,1,1], [1]] > map length it; val it : t list = [5,4,3,1] Alternativ kann columns auch nur emal angewet werden. Die Länge der Liste ist dann der größte Wert. In unserem Fall 4. Dann entfernt man rekursiv das erste Element der t-listen und erhält so den nächstkleeren Wert als Länge der neu entstandenen Liste. Allerdgs müssen Sie darauf achten, leere Listen zu löschen. 6

7 fun beadsort xs = let fun deletenils xs = List. filter notnull xs fun anwen nil = nil anwen xs = length xs :: anwen ( foldl (fn(x,s) (tl x ):: s) nil ( deletenils xs )) anwen ( columns ( nureser xs )) 3 Mengen Aufgabe 5.14 Seien Mengen als Listen dargestellt. Sei cut als Operation defiert, die zu eem gegebenen Element x aus eer Menge M alle Elemente y entfernt, für die gilt: y > x. (a) Geben Sie den Typ eer Prozedur greatest an, die cut für liche Mengen implementiert. (b) Schreiben Sie greatest. Lösung 5.14: (a) (α * α order) α α list α list (b) fun greatest nil = nil greatest compare x ( y:: yr) = ( case compare (x,y) of LESS greatest compare x yr _ y:: greatest compare x yr) Aufgabe 5.15 Seien liche Mengen durch Listen dargestellt. Schreiben Sie ee Prozedur cross: (α * α order) α list α list (α * α) list, die das Kreuzprodukt zweier Mengen liefert: A B. Dabei soll die Rückgabe gemäß der durch die übergebene Vergleichsprozedur implizierten lexikalischen Ordnung sortiert se. Es gilt: A =. Sei ee Prozedur sort: ((α * β) * (α * β)) order) (α * β) list (α * β) list, die sortiert, gegeben. Lösung 5.15: fun cross nil = nil cross _ nil _ = nil cross vergleich ( x:: xr) ys =let fun crossvergleich ((a,b),(c,d)) = ( case vergleich (a,c) of EQUAL vergleich (b,d) s s) sort crossvergleich ( map ( fn y ( x, y)) cross vergleich xr ys) Aufgabe 5.16 Schreiben Sie ee Prozedur isset: α list bool, die entscheidet, ob ee übergebene Liste ee Menge vom Typ α darstellt. Listen stellen genau dann ee Menge dar, wenn sie kee Mehrfachauftreten enthalten. 7

8 Lösung 5.16: fun member _ nil = false member a ( x:: xr) = a = x orelse member a xr fun isset nil = true isset ( x:: xr) = not ( member x xr) andalso isset xr Aufgabe 5.17 Sei M ee beliebige Menge. Zwei Prädikate p und q auf M heißen äquivalent genau dann, wenn x M.p x q x. (a) Wie können wir zwei Prädikate p: α bool und q: α bool SML auf Äquivalenz prüfen? Für A M bezeichnen wir p und q als äquivalent auf A genau dann, wenn x A.p x q x. (b) Schreiben Sie ee Prozedur equi: (α bool) (α bool) α list bool, die für ee Menge A M mit n N. A = n entscheidet, ob p und q lokal äquivalent auf A sd. Lösung 5.17: (a) Gar nicht, da wir dafür im Allgemeen bis zu unlich viele Vergleiche durchführen müssten (Divergenz). (b) fun equi nil = true equi p q ( x:: xr) = p x = q x andalso equi p q xr Aufgabe 5.18 Ähnlich zu Intervallen auf den ganzen Zahlen (z.b. [ 14, 8]), können zwei beliebige Elemente des gleichen Typs, a und b, e Intervall aufspannen: [a, b]. (a) Gibt es Voraussetzungen, um testen zu können, ob e Element x im Intervall [a, b] liegt? (b) Geben Sie den Typ eer Prozedur tervall an, die testet, ob e Element x [a, b] liegt. (c) Deklarieren Sie die Prozedur tervall. Beachten Sie, dass beispielsweise das Intervall [5, 3] leer ist. (d) Geben Sie den Typ eer Prozedur countervall an, die zählt, wie viele Elemente eer Liste nerhalb ees Intervalls liegen. (e) Schreiben Sie die Prozedur countervall mithilfe von Musterabgleichen. (f) Schreiben Sie die Prozedur countervall mithilfe von Faltung. Lösung 5.18: (a) Ja, wir benötigen ee Vergleichsprozedur α * α order. Damit können wir prüfen, ob a x und x b. (b) α α (α * α order) α bool (c) fun tervall m max vergleich x = case ( vergleich (m, max ), vergleich (m, x), vergleich (x, max )) of ( GREATER,_,_) false (* leeres Intervall *) (_,GREATER,_) false (* x < m *) (_,_, GREATER ) false (* x > max *) _ true (d) α α (α * α order) α list t (e) fun countervall _ nil = 0 countervall m max comp ( x:: xr) = ( if tervall m max comp x then 1 else 0) + countervall m max comp xr (f) fun countervall m max comp xs = foldl ( fn ( x, a) a + ( if tervall m max comp x then 1 else 0)) 0 xs 8

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen,

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 5 (Kapitel 6)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 5 (Kapitel 6) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 5 (Kapitel 6) Hinweis: Dieses Zusatzübungsblatt

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 4 (Sortieren und Konstruktoren)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 4 (Sortieren und Konstruktoren) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 4 (Sortieren und Konstruktoren)

Mehr

1. Probeklausur (Lösung) zu Programmierung 1 (WS 07/08)

1. Probeklausur (Lösung) zu Programmierung 1 (WS 07/08) Fachschaft Informatikstudiengänge Fachrichtung 6.2 Informatik Das Team der Bremser 1. Probeklausur (Lösung) zu Programmierung 1 (WS 07/08) http://fsinfo.cs.uni-sb.de Name Matrikelnummer Bitte öffnen Sie

Mehr

Klausur Programmierung WS 2002/03

Klausur Programmierung WS 2002/03 Klausur Programmierung WS 2002/03 Prof. Dr. Gert Smolka, Dipl. Inf. Thorsten Brunklaus 14. Dezember 2002 Leo Schlau 45 Vor- und Nachname Sitz-Nr. 4711 007 Matrikelnummer Code Bitte öffnen Sie das Klausurheft

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7) Hinweis: Dieses Übungsblatt enthält

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 1 (Kapitel 1)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 1 (Kapitel 1) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 1 (Kapitel 1) Hinweis: Dieses Übungsblatt enthält

Mehr

1. Probeklausur Programmierung 1 (WS 2010/2011)

1. Probeklausur Programmierung 1 (WS 2010/2011) 1. Probeklausur Programmierung 1 (WS 2010/2011) Team der Tutoren 11. Dezember 2010 Name Sitzplatz Matrikelnummer Bitte öffnen Sie das Klausurheft erst dann, wenn Sie dazu aufgefordert werden. Sie können

Mehr

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9)

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9) Fachrichtung 6. Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung Programmierung (Wintersemester 5/6) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9) Hinweis: Dieses

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11) Hinweis: Dieses Übungsblatt enthält

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 7 (Kapitel 7) Hinweis: Dieses Übungsblatt enthält

Mehr

Programmierung 1 Probeklausur zur Vorklausur

Programmierung 1 Probeklausur zur Vorklausur Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 05.12.2015 Programmierung 1 Probeklausur zur Vorklausur Matrikelnummer: Bitte öffnen Sie das Klausurheft

Mehr

1. Probeklausur zur Vorlesung Programmierung 1 im Wintersemester 2011/2012

1. Probeklausur zur Vorlesung Programmierung 1 im Wintersemester 2011/2012 1. Probeklausur zur Vorlesung Programmierung 1 im Wintersemester 2011/2012 Das Team der Tutoren 03. Dezember 2011 Name Matrikelnummer Bitte öffnen Sie das Klausurheft erst dann, wenn Sie dazu aufgefordert

Mehr

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: take 1 0 ( f i l t e r ( fn x => x mod 2=0) nat ) ; val it =

Mehr

Algorithmen und Datenstrukturen I

Algorithmen und Datenstrukturen I Algorithmen und Datenstrukturen I Sortierverfahren D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Winter 2009/10, 18. Januar 2010,

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 17 (Best of)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 17 (Best of) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 17 (Best of) Hinweis: Dieses

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Hinweis: Dieses

Mehr

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13)

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 12 (Kapitel 13)

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK WS 11/12 Einführung in die Informatik 2 Klausur Prof. Dr. Andrey Rybalchenko, M.Sc. Ruslán Ledesma Garza 11.02.2011 Name Vorname Studiengang Matrikelnummer

Mehr

1. Probeklausur zu Programmierung 1 (WS 07/08)

1. Probeklausur zu Programmierung 1 (WS 07/08) Fachschaft Informatikstudiengänge Fachrichtung 6.2 Informatik Das Team der Bremser 1. Probeklausur zu Programmierung 1 (WS 07/08) http://fsinfo.cs.uni-sb.de Name Matrikelnummer Bitte öffnen Sie das Klausurheft

Mehr

Theorembeweiserpraktikum SS 2016

Theorembeweiserpraktikum SS 2016 Institut für Programmstrukturen und Datenorganisation Lehrstuhl Programmierparadigmen Am Fasanengarten 5 76131 Karlsruhe http://pp.ipd.kit.edu/ Theorembeweiserpraktikum SS 2016 http://pp.ipd.kit.edu/lehre/ss2016/tba

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung

Mehr

Programmierung 1 (Wintersemester 2012/13) Zusatzübungsblatt 7 (Kapitel 7)

Programmierung 1 (Wintersemester 2012/13) Zusatzübungsblatt 7 (Kapitel 7) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Zusatzübungsblatt 7 (Kapitel 7) Hinweis: Dieses Übungsblatt enthält

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung)

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abgabe: (vor der Vorlesung) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Übungsblatt 6 Prof. Dr. Helmut Seidl, T. M. Gawlitza,

Mehr

HASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül

HASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,

Mehr

Programmierung 1 (Wintersemester 2012/13) Erklärung 5 (Prä- und Postordnung)

Programmierung 1 (Wintersemester 2012/13) Erklärung 5 (Prä- und Postordnung) Fachrichtung 6. Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 01/13) Erklärung (Prä- und Postordnung) Hinweis: Dieses Blatt enthält eine

Mehr

Die Korrektheit von Mergesort

Die Korrektheit von Mergesort Die Korrektheit von Mergesort Christoph Lüth 11. November 2002 Definition von Mergesort Die Funktion Mergesort ist wie folgt definiert: msort :: [Int]-> [Int] msort xs length xs

Mehr

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert

Berechnungsschemata: Funktion als Parameter abstrahiert Operation im Schema, wird bei Aufruf des Schemas konkretisiert 6. Funktionen als Daten, Übersicht Orthogonales Typsystem: Funktionen sind beliebig mit anderen Typen kombinierbar Notation für Funktionswerte (Lambda-Ausdruck): fn (z,k) => z*k Datenstrukturen mit Funktionen

Mehr

Lösungen zum Übungsblatt 3: Softwareentwicklung I (WS 2006/07)

Lösungen zum Übungsblatt 3: Softwareentwicklung I (WS 2006/07) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J.O. Blech Dipl.-Inform. M.J. Gawkowski Dipl.-Inform. N. Rauch Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungen zum Übungsblatt

Mehr

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert. 2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int

Mehr

Grundlagen der Programmierung 2 B

Grundlagen der Programmierung 2 B Grundlagen der Programmierung 2 B Haskell: Listen-Komprehensionen Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Listenausdrücke, Listen-Komprehensionen Analog zu Mengenausdrücken, aber Reihenfolge

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

Die Schnittstelle Comparable

Die Schnittstelle Comparable Die Schnittstelle Comparable Wir wollen Such- und Sortieroperationen für beliebige Objekte definieren. Dazu verwenden wir die vordefinierte Schnittstelle Comparable: public interface Comparable { int compareto(object

Mehr

Programmierung Eine Einführung in die Informatik mit Standard ML Musterlösungen für ausgewählte Aufgaben. 1 Schnellkurs. Gert Smolka.

Programmierung Eine Einführung in die Informatik mit Standard ML Musterlösungen für ausgewählte Aufgaben. 1 Schnellkurs. Gert Smolka. Programmierung Eine Einführung in die Informatik mit Standard ML Musterlösungen für ausgewählte Aufgaben Gert Smolka Vorbemerkungen a) Ich danke den Assistenten der Vorlesungen in Saarbrücken für ihre

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

Mehr

Programmieren in Haskell

Programmieren in Haskell beschreibungen Universität Bielefeld AG Praktische Informatik October 21, 2014 der funktionalen Programmierung gibt es allen Programmiersprachen, aber der funktionalen Programmierung werden sie besonders

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 11 (Kapitel 12) Hinweis: Dieses Übungsblatt enthält

Mehr

Lösungvorschlag zum Übungsblatt 6: Software-Entwicklung I (WS 2007/08)

Lösungvorschlag zum Übungsblatt 6: Software-Entwicklung I (WS 2007/08) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J. O. Blech Dipl.-Inform. M. J. Gawkowski Dipl.-Inform. N. Rauch TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungvorschlag zum Übungsblatt

Mehr

Vorsicht bei redundanten und unvollständigen Matches!

Vorsicht bei redundanten und unvollständigen Matches! Vorsicht bei redundanten und unvollständigen Matches! # let n = 7;; val n : int = 7 # match n with 0 -> "null";; Warning: this pattern-matching is not exhaustive. Here is an example of a value that is

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

Strukturelle Rekursion und Induktion

Strukturelle Rekursion und Induktion Kapitel 2 Strukturelle Rekursion und Induktion Rekursion ist eine konstruktive Technik für die Beschreibung unendlicher Mengen (und damit insbesondere für die Beschreibung unendliche Funktionen). Induktion

Mehr

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle

Mehr

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe Anfragen für Listen Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe 1 MapReduce-Verfahren Google u.a. verwenden Map-Reduce-Verfahren zur Verarbeitung riesiger

Mehr

Prüfung Informatik D-MATH/D-PHYS :00 17:00

Prüfung Informatik D-MATH/D-PHYS :00 17:00 Prüfung Informatik D-MATH/D-PHYS 9. 8. 0 5:00 7:00 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen ablegen

Mehr

Kapitel 3: Eine einfache Programmiersprache. Programmieren in Haskell 1

Kapitel 3: Eine einfache Programmiersprache. Programmieren in Haskell 1 Kapitel 3: Eine einfache Programmiersprache Programmieren in Haskell 1 Datentypen, Datentypdefinitionen data Instrument = Oboe HonkyTonkPiano Cello VoiceAahs data Musik = Note Ton Dauer Pause Dauer Musik

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK FÜR BIOLOGEN Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

Mehr

EPROG 2.Teilprüfung. Aufgabe 1:

EPROG 2.Teilprüfung. Aufgabe 1: EPROG 2.Teilprüfung Dauer 50min. Keine Unterlagen erlaubt. Loginname ist q (also x.b. q0697801). Passwort ist Ihre Matrikelnummer. Speichern Sie Ihre Lösungen in den dafür vorgesehenen

Mehr

Programmieren in Haskell Das Haskell Typsystem

Programmieren in Haskell Das Haskell Typsystem Programmieren in Haskell Das Haskell Typsystem Peter Steffen Robert Giegerich Universität Bielefeld Technische Fakultät 22.01.2010 1 Programmieren in Haskell Belauscht... Lisa Lista: Ohne Typen keine korrekten

Mehr

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK WS 11/12 Einführung in die Informatik II Übungsblatt 2 Univ.-Prof. Dr. Andrey Rybalchenko, M.Sc. Ruslán Ledesma Garza 8.11.2011 Dieses Blatt behandelt

Mehr

Kapitel 6: Typprüfung

Kapitel 6: Typprüfung Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme Skript zur Vorlesung Informatik I Wintersemester 2006 Vorlesung: Prof. Dr. Christian Böhm

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie Rev. 2749 1 [28] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 04.11.2014: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2014/15 2 [28] Fahrplan Teil

Mehr

Übungen zu Softwareentwicklung III, Funktionale Programmierung

Übungen zu Softwareentwicklung III, Funktionale Programmierung Übungen zu Softwareentwicklung III, Funktionale Programmierung Blatt 8, Woche 9 Funktionen höherer Ordnung Leonie Dreschler-Fischer WS 2013/2014 Ausgabe: Freitag, 15.12.2013, Abgabe der Lösungen: bis Montag,

Mehr

Musterlösung zur 2. Aufgabe der 4. Übung

Musterlösung zur 2. Aufgabe der 4. Übung Musterlösung zur 2. Aufgabe der 4. Übung Da viele von Euch anscheinend noch Probleme mit dem Entfalten haben, gibt es für diese Aufgabe eine Beispiellösung von uns. Als erstes wollen wir uns noch einmal

Mehr

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,

Mehr

Unendliche Listen und Bäume

Unendliche Listen und Bäume Funktionale Programmierung Unendliche Listen und Bäume Helga Karafiat, Steffen Rüther Übersicht Grundlage: Lazy Evaluation Konstruktion von unendlichen Strukturen Verwendung von unendlichen Listen Unendliche

Mehr

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung. Vortrag: Bäume in Haskell Bäume in Haskell Vortrag Christoph Forster Thomas Kresalek Fachhochschule Wedel University of Applied Sciences 27. November 2009 Christoph Forster, Thomas Kresalek 1/53 Vortrag

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Lösung: InfA - Übungsblatt 07

Lösung: InfA - Übungsblatt 07 Lösung: InfA - Übungsblatt 07 Michele Ritschel & Marcel Schilling 23. Dezember 2008 Verwendete Abkürzungen: Beweis, vollständige Induktion, IA: Induktionsanfang/Induktionsanker, IS: Induktionsschritt/Induktionssprung,

Mehr

Induktion nach der Länge n von x

Induktion nach der Länge n von x Allgemeiner: app (rev x) y = rev1 x y füralle Listenx, y. Beweis: n = 0 : Induktion nach der Länge n von x Dann gilt: x = []. Wirschließen: app (rev x) y = app (rev []) y = app (match [] with [] -> []...)

Mehr

Vorlesung Objektorientierte Programmierung Klausur

Vorlesung Objektorientierte Programmierung Klausur Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe

Mehr

Programmieren in Haskell

Programmieren in Haskell Universität Bielefeld AG Praktische Informatik October 12, 2014 Wir begnen mit eem Überblick über die Syntax von Namen versus Schlüsselwörter Namen bezeichnen Werte (aller Art) und sd frei wählbar Schlüsselwörter

Mehr

Ströme als unendliche Listen in Haskell

Ströme als unendliche Listen in Haskell Kapitel 3 Ströme als unendliche Listen in Haskell Ein Strom ist eine Folge oder Liste von Daten, die man in Haskell als Liste bzw. auch als potentiell unendliche Liste darstellen kann. Die Modellvorstellung

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen der Programmierung 2. Sortierverfahren Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Programmierkurs II. Typsynonyme & algebraische Datentypen

Programmierkurs II. Typsynonyme & algebraische Datentypen Programmierkurs II Typsynonyme & algebraische Datentypen Um Dinge der realen Welt abzubilden, ist es nur in den seltensten Fällen komfortabel alles als Zahlen, Strings oder Listen zu kodieren. Wir benötigen

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Benutzerdefinierte Datentypen Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 1. Aufzählungstypen 2. Typen mit zusammengesetzten

Mehr

Programmierung 1 (Wintersemester 2012/13) Weihnachtsübungsblatt

Programmierung 1 (Wintersemester 2012/13) Weihnachtsübungsblatt Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Weihnachtsübungsblatt Hinweis: Dieses Zusatzübungsblatt wird

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische Semantik)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische Semantik) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 9 (Dynamische und Statische

Mehr

WS 2011/2012. Georg Sauthoff 1. November 1, 2011

WS 2011/2012. Georg Sauthoff 1. November 1, 2011 WS 2011/2012 Georg 1 AG Praktische Informatik November 1, 2011 1 gsauthof@techfak.uni-bielefeld.de Übungen Abgaben und Aufgabenblätter am Ende der Vorlesung Skript gibt es demnächst in den Übungen Der

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Algorithmen und Datenstrukturen. und. Programmieren in Haskell

Algorithmen und Datenstrukturen. und. Programmieren in Haskell Datenstrukturen WS 2013/2014 Datenstrukturen Robert, Stefan Janssen, Alexander Sczyrba Technische Fakultät AG Praktische Informatik October 30, 2013 Kontakt & Kontext Prof. Dr. Robert Email: robert@techfak.uni-bielefeld.de

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für diese Woche Programmieren

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 1 (Sortieralgorithmus): Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Einführung in die Informatik 2 6. Übung

Einführung in die Informatik 2 6. Übung Technische Universität München WS 2012/13 Institut für Informatik 20.11.2012 Prof. Tobias Nipkow, Ph.D. Abgabe: 27.11.2012, 15:30 Lars Noschinski, Dr. Jasmin Blanchette, Dmitriy Traytel Einführung in die

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Institut für Informatik und Angewandte Kognitionswissenschaften

Institut für Informatik und Angewandte Kognitionswissenschaften Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");

Mehr

VL06: Haskell (Funktionen höherer Ordnung, Currying)

VL06: Haskell (Funktionen höherer Ordnung, Currying) VL06: Haskell (Funktionen höherer Ordnung, Currying) IFM 5.3 Spezielle Methoden der Programmierung Carsten Gips, FH Bielefeld 18.05.2015 Wiederholung Wiederholung Wie können Sie die ersten n Elemente einer

Mehr

Tutoraufgabe 1 (Auswertungsstrategie):

Tutoraufgabe 1 (Auswertungsstrategie): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Auswertungsstrategie): Gegeben sei das folgende Haskell-Programm: absteigend :: Int - > [ Int

Mehr

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin Crashkurs Haskell Mentoring WiSe 2016/17 Anja Wolffgramm Freie Universität Berlin 02/11/2016 , Inhalt Kommandozeile Haskell installieren & starten Ein 1. Haskell-Programm Funktionsdefinition Primitive

Mehr

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.

Mehr

Probeklausur Director s Cut

Probeklausur Director s Cut Probeklausur Director s Cut Lösungsvorschlag Informatik II SS2005 Aufgabe 1: Graphentheorie (2 + 1 + 2 Punkte) Gegeben ist der folgende ungerichtete Graph G n = (V, E) mit V = n 1 i=0 V i wobei V i = {v

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln

Mehr

Inhalt Kapitel 2: Rekursion

Inhalt Kapitel 2: Rekursion Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29 Beispiele und Definition Rekursion 30 Man kann eine Funktion

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr