Paradigmen der Programmierung

Größe: px
Ab Seite anzeigen:

Download "Paradigmen der Programmierung"

Transkript

1 SS 11 Prüfungsklausur Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)] :: [ ([a] -> a, [b] -> [b]) ] [map (const True), map not] :: [ [Bool] -> [Bool] ] b) Gegeben seien die folgenden Funktionsdefinitionen. Bestimmen Sie jeweils den allgemeinsten Typ der Funktionen. Denken Sie auch an eventuelle Klasseneinschränkungen. Hinweis: Auftretende Zahlenkonstanten können Sie als Int interpretieren. f :: Ord a => Int -> [a] -> a -> Bool f x y z = head (drop x y) <= z elemindex :: Eq a => a -> [a] -> Maybe Int elemindex x xs = case [i (y,i) <- zip xs [0..], y == x] of [] -> Nothing (i:_) -> Just i g :: (Ord a, Num a) => [a] -> a -> [a] -> [a] g x y z = if sum x < y then x ++ z else tail x either :: (a -> c) -> (b -> c) -> Either a b -> c either f _ (Left x) = f x either _ g (Right y) = g y 5

2 SS 11 Prüfungsklausur Aufgabe 6 (9+11 = 20 Punkte) a) Definieren Sie eine Funktion zipwith :: (a -> b -> c) -> [a] -> [b] -> [c], welche als eine Verallgemeinerung der Funktion zip zwei Listen mittels einer übergebenen Funktion zu einer zusammenfügt. Die Ergebnisliste soll wie bei zip die Länge der kürzeren Argumentliste besitzen. zipwith (+) [1,2,3] [4,5,6,7,8] = [5,7,9] zip = zipwith (,) Geben Sie für diese Funktion drei verschiedene Implementierungen an: i) mittels expliziter Rekursion und ii) durch eine Listenkomprehension und Verwendung von zip und iii) durch eine geeignete Anwendung von map und zip Hinweis: Für diese Aufgabe können die Definitionen des Haskell Prelude-Moduls benutzt werden. Wenn Sie darüber hinaus Hilfsfunktionen verwenden, so müssen Sie diese auch definieren. i) zipwith f (x:xs) (y:ys) = f x y : zipwith f xs ys zipwith _ = [] -- auch korrekt: zipwith f [] _ = [] zipwith f _ [] = [] zipwith f (x:xs) (y:ys) = f x y : zipwith f xs ys ii) zipwith f xs ys = [f x y (x,y) <- zip xs ys] iii) zipwith f xs ys = map (\(x,y) -> f x y) (zip xs ys) 6

3 SS 11 Prüfungsklausur b) Die Prüfziffer bei einer ISBN-10 Nummer berechnet sich, indem die vorangehenden 9 Ziffern, gewichtet mit ihrer jeweiligen Position (beginnend bei 1), aufaddiert werden und der Rest der ganzzahligen Division durch 11 genommen wird (ein Rest von 10 wird üblicherweise als Ziffer X geschrieben, dies muss hier aber nicht beachtet werden): ( 9 ) z 10 = i z i i=1 mod 11 Definieren Sie eine Funktion isbn10 :: [Int] -> Int, welche eine Liste von neun Ziffern bekommt und daraus die ISBN-10 Prüfziffer berechnet. Geben Sie für diese Funktion zwei unterschiedliche Implementierungen an: i) Unter Verwendung einer rekursiven Hilfsfunktion über die Liste mit einem inkrementellen (also hochzählendem) Parameter und ii) mittels geschickter Funktionskomposition und der in a) definierten Funktion zipwith. Hinweis: Für diese Aufgabe können die Definitionen des Haskell Prelude-Moduls benutzt werden. Wenn Sie darüber hinaus Hilfsfunktionen verwenden, so müssen Sie diese auch definieren. i) isbn10 :: [Int] -> Int isbn10 xs = makesum 1 xs mod 11 where makesum _ [] = 0 makesum i (x:xs) = i*x + makesum (i+1) xs ii) isbn10 = ( mod 11). sum. zipwith (*) [1..] -- [1,2,3,4,5,6,7,8,9] 7

4 SS 11 Prüfungsklausur Aufgabe 7 ( = 19 Punkte) Gegeben sei folgender Datentyp zur Repräsentation von booleschen Ausdrücken: data BoolExpr = Value Bool And BoolExpr BoolExpr Not BoolExpr Der Ausdruck ( False True) True wird z.b. dargestellt als: And (And (Not (Value False)) (Value True)) (Value True) a) Schreiben Sie eine rekursive Funktion eval :: BoolExpr -> Bool, die einen booleschen Ausdruck auswertet. eval :: BoolExpr -> Bool eval (Value b) = b eval (And e1 e2) = (eval e1) && (eval e2) eval (Not e) = not (eval e) b) Definieren Sie eine Funktion foldboolexpr zur Faltung boolescher Ausdrücke gemäß der in der Vorlesung dargestellten Regeln zur Faltung von allgemeinen Datentypen. Geben Sie auch den Typ Ihrer Funktion an. foldboolexpr :: (Bool -> a) -> (a -> a -> a) -> (a -> a) -> BoolExpr -> a foldboolexpr val_f and_f not_f expr = f expr where f (Value b) = val_f b f (And e1 e2) = and_f (f e1) (f e2) f (Not e) = not_f (f e) c) Definieren Sie eval als Instanz von foldboolexpr. eval = foldboolexpr id (&&) not 8

5 SS 11 Prüfungsklausur Aufgabe 8 (6 Punkte) Ein Gray-Code ist eine Sequenz von binären Codewörtern mit der Eigenschaft, dass sich benachbarte Codewörter lediglich um ein einziges Bit unterscheiden. Definieren Sie eine Funktion gray :: Int -> [String], die für n 1 die n-bit Gray-Code Sequenz zurückliefert. gray 1 = ["0","1"] gray 2 = ["00","01","11","10"] gray 3 = ["000","001","011","010","110","111","101","100"] Überlegen Sie sich hierzu, wie der jeweilige n-bit Code aus dem (n 1)-Bit Code erzeugt werden kann. Hinweis: Für diese Aufgabe können die Definitionen des Haskell Prelude-Moduls benutzt werden. Wenn Sie darüber hinaus Hilfsfunktionen verwenden, so müssen Sie diese auch definieren. gray :: Int -> [String] gray 0 = [""] gray n = let xs = gray (n-1) in map ( 0 :) xs ++ map ( 1 :) (reverse xs) oder mit Listenkomprehension: gray :: Int -> [String] gray 0 = [""] gray n = [ 0 : x x <- prev ] ++ [ 1 : x x <- reverse prev ] where prev = gray (n-1) Auch korrekt: ohne 0-Bit Codewort gray 1 = ["0", "1"] gray n =... 9

6 SS 11 Prüfungsklausur Aufgabe 1 (6+9 = 15 Punkte) Haskell: Typisierung a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: map putchar [ a.. z ] :: [IO ()] (const 1, map (const "2")) :: (a -> Char, [b] -> [String]) [Left "Error", Right True] :: [Either String Bool] b) Gegeben seien die folgenden Funktionsdefinitionen. Bestimmen Sie jeweils den allgemeinsten Typ der Funktionen. Denken Sie auch an eventuelle Klasseneinschränkungen. f :: [[a]] -> [[a]] -> [a] f x y = concat (x ++ y) g :: (Ord a, Num b) => a -> a -> [b] -> [b] -> b g w x y z = if w < x then product y else sum z nub :: Eq a => [a] -> [a] nub = foldr (\x xs -> if x elem xs then xs else x:xs) [] err :: Show a => (Either a b) -> IO (Maybe b) err (Left msg) = do putstrln (show msg) return Nothing err (Right val) = do putstrln "Success!" return (Just val) 0

7 SS 11 Prüfungsklausur Aufgabe 2 (5+6+4 = 15 Punkte) Haskell: Listen und IO Für die folgenden Aufgaben dürfen Sie alle auf dem Übersichtsblatt angegebenen vordefinierten Funktionen verwenden. Alle anderen verwendeten Funktionen müssen explizit definiert werden. a) Schreiben Sie eine Funktion getnth :: [a] -> Int -> Maybe a, welche als ersten Parameter eine Liste l und als zweiten Parameter eine ganze Zahl n erhält. Diese Funktion liefert das n-te Element (bei 0 angefangen zu zählen) der übergebenen Liste. Kann dieser Wert nicht ermittelt werden (übergebener Index zu groß oder zu klein), soll Nothing zurückgeliefert werden. Prelude> getnth "Alexander" 5 Just n getnth [] _ = Nothing getnth _ n n < 0 = Nothing getnth (x:xs) 0 = Just x getnth (x:xs) n = getnth xs (n-1) b) Schreiben Sie eine Funktion getandremoventh :: [a] -> Int -> (Maybe a,[a]) welche ähnlich zu der Funktion getnth funktioniert, aber zusätzlich eine neue Liste zurückliefert, in der das n-te Element (bei 0 angefangen zu zählen) entfernt wurde. Sie dürfen dazu auch die Funktion getnth benutzen. Bei einem fehlerhaften Index (zu groß oder zu klein) soll Nothing und die ursprüngliche Liste zurückgeliefert werden. Prelude> getandremoventh "Alexander" 5 (Just n,"alexader") getandremoventh l n = let elem = getnth l n in case elem of Nothing -> (Nothing, l) Just x -> (elem, (take n l) ++ (drop (n+1) l)) 1

8 SS 11 Prüfungsklausur Aufgabe 3 ( = 30 Punkte) Haskell: Bäume und Faltung Eine Schlauchleitung bei der Feuerwehr besteht (stark vereinfacht) aus Schläuchen, Verteilern, und Strahlrohren. Die Schläuche und Strahlrohre haben zwei verschiedene Größen, welche mit B und C bezeichnet werden. Ein Verteiler hat einen B-Eingang, links und rechts C-Abgänge und in der Mitte einen B-Abgang. Von den Schlauchgrößen abgesehen, können Schläuche und Verteiler beliebig kombiniert werden. Ein Strahlrohr kann geöffnet (true) oder geschlossen (false) sein. An einem Verteiler sind immer alle Abgänge offen. Diese Zusammenhänge können zum Beispiel mit folgenden Datentypen beschrieben werden: data Groesse = B C deriving Eq data Leitung = Rohr Groesse Bool Schlauch Groesse Leitung Verteiler Leitung Leitung Leitung Die Konfiguration der im Bild skizzierten Schlauchleitung wird dann durch folgenden Ausdruck dargestellt: bsp = Schlauch B (Verteiler (Schlauch C (Schlauch C (Rohr C True))) (Schlauch B (Rohr B True)) (Rohr C False)) Mit diesen Datentypen ist es möglich, falsche Schlauch-/Anschlussgrößen zusammenzusetzen. Zum Beispiel macht Schlauch B (Schlauch C (Schlauch B)) in der Realität keinen Sinn. Es kann aber für alle folgenden Aufgaben davon ausgegangen werden, dass die jeweils übergebene Schlauchleitung korrekt zusammengesetzt ist. 3

9 SS 11 Prüfungsklausur a) Schreiben Sie eine rekursive Funktion gesamtlaenge :: Leitung -> Int, die die Gesamtlänge der eingesetzten Schläuche bestimmt. C-Schläuche haben eine normierte Länge von 15m, B-Schläuche eine Länge von 20m. Die Länge von Strahlrohren und Verteilern wird bei der Längenbestimmung nicht berücksichtigt. Prelude> gesamtlaenge bsp 70 gesamtlaenge (Schlauch x l) x == B = gesamtlaenge l + 20 x == C = gesamtlaenge l + 15 gesamtlaenge (Verteiler l1 l2 l3) = gesamtlaenge l1 + gesamtlaenge l2 + gesamtlaenge l3 gesamtlaenge _ = 0 b) Definieren Sie eine Funktion foldleitung zur Faltung des obigen Datentyps gemäß der in der Vorlesung dargestellten Regeln zur Faltung von allgemeinen Datentypen. Geben Sie auch den Typ Ihrer Funktion an. foldleitung :: (Groesse -> Bool -> a) -> (Groesse -> a -> a) -> (a -> a -> a -> a) -> Leitung -> a foldleitung rf sf vf l = f l where f (Rohr g b) = rf g b f (Schlauch g l) = sf g (f l) f (Verteiler l1 l2 l3) = vf (f l1) (f l2) (f l3) 4

10 SS 11 Prüfungsklausur c) Definieren Sie eine Funktion wassermenge :: Leitung -> Int als Instanz von foldleitung, welche die aktuell abgegebene Wassermenge einer Schlauchleitung bei einem festgelegten Druck angibt. Folgende Faustwerte werden dafür eingesetzt: C-Strahlrohre geben 100 l/min Wasser ab, B-Strahlrohre 400 l/min. Verteiler und Schläuche werden nicht berücksichtigt (obwohl sie in der Realität natürlich einen Einfluss haben). Bei der Berechnung soll allerdings schon berücksichtigt werden, ob das entsprechende Strahlrohr geöffnet oder geschlossen ist! Prelude> wassermenge bsp 500 wassermenge :: Leitung -> Int wassermenge = foldleitung (\g b -> if b then (if g==c then 100 else 400) else 0) (\g l -> l) (\l1 l2 l3 -> l1 + l2 + l3) d) Wie müssten die Datentypdefinitionen verändert werden, damit nur noch korrekte Schlauchleitungen instanziiert werden können? Es soll also nicht mehr möglich sein, dass zum Beispiel nach einem B-Schlauch eine Leitungskomponente (Schlauch oder Rohr) mit C-Größe angegeben werden kann. Geben Sie Vorschläge für die Datentypdefinitionen an! data BLeitung = BRohr Bool BSchlauch BLeitung Verteiler CLeitung BLeitung CLeitung data CLeitung = CRohr Bool CSchlauch CLeitung 5

Funktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I SS 2011 Funktionstypen Funktionen haben einen Datentyp, der folgende allgemeine Form hat: functionname :: T 1 -> T 2, wobei T 1, T 2 wiederum beliebige Datentypen sind Beispiel: T 1 T 2 Der Datentyp

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Manuel Eberl, Lars Hupel, Lars Noschinski Wintersemester 2014/15 Lösungsblatt Endklausur 13. Februar 2015 Einführung in

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

Funktionale Programmierung Mehr funktionale Muster

Funktionale Programmierung Mehr funktionale Muster Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................

Mehr

Prüfung Funktionale Programmierung

Prüfung Funktionale Programmierung Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF, IB, IC Sommersemester 2015 Prüfung Funktionale Programmierung Datum : 23.07.2015, 10:30 Uhr Bearbeitungszeit

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................

Mehr

Funktionale Programmierung Grundlegende Datentypen

Funktionale Programmierung Grundlegende Datentypen Grundlegende Datentypen Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 06.11.2017 16:45 Inhaltsverzeichnis Typen........................................

Mehr

Prüfung Funktionale Programmierung

Prüfung Funktionale Programmierung Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF, IB, IC Sommersemester 2014 Prüfung Funktionale Programmierung Datum : 16.07.2014, 12:30 Uhr Bearbeitungszeit

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Noschinski, Dr. Jasmin Blanchette, Dmitriy Traytel Wintersemester 2012/13 Lösungsblatt Endklausur 9. Februar 2013

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

Ströme als unendliche Listen in Haskell

Ströme als unendliche Listen in Haskell Ströme als unendliche Listen in Haskell Strom := Folge oder Liste von Daten, unbegrenzt viele Daten-Elemente. Ströme sind in Haskell als als (potentiell) unendliche Listen darstellbar und programmierbar

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

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur -

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Punkte: A1: 30, A2: 20, A3: 20, A4: 20, A5: 10, A6: 20 Punkte: /120 12.02.2012 Hinweis: Geben Sie bei allen

Mehr

Grundlagen der Programmierung 2. Unendliche Listen und Ströme(B)

Grundlagen der Programmierung 2. Unendliche Listen und Ströme(B) Grundlagen der Programmierung 2 Unendliche Listen und Ströme(B) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 17. Mai 2006 Beispiel: scanl, scanr scanl berechnet das foldl

Mehr

Einführung in Haskell

Einführung in Haskell Einführung in Haskell Axel Stronzik 21. April 2008 1 / 43 Inhaltsverzeichnis 1 Allgemeines 2 / 43 Inhaltsverzeichnis 1 Allgemeines 2 Funktions- und Typdefinitionen 2 / 43 Inhaltsverzeichnis 1 Allgemeines

Mehr

Proinformatik Marco Block Dienstag, den 21. Juli 2009

Proinformatik Marco Block Dienstag, den 21. Juli 2009 2. Skript vom Dienstag, den 21. Juli 2009 zur Vorlesung Proinformatik Marco Block Dienstag, den 21. Juli 2009 1 Verschiedenes 1.1 let und where Am Anfang der Vorlesung haben wir uns ein paar einfache neue

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

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen

Mehr

Motivation Von Funktoren, Komposition, Applikation Zu Monoiden Die Monade Zusammenfassung. Monaden für alle. Franz Pletz

Motivation Von Funktoren, Komposition, Applikation Zu Monoiden Die Monade Zusammenfassung. Monaden für alle. Franz Pletz Monaden für alle Franz Pletz Chaos Computer Club München 13. Juni 2010, GPN10 Wieso, weshalb, warum? einige von euch haben sich sicher schon mal Haskell angeschaut und sind an Monaden

Mehr

Typ-Polymorphismus. November 12, 2014

Typ-Polymorphismus. November 12, 2014 Typ-Polymorphismus Universität Bielefeld AG Praktische Informatik November 12, 2014 Das Haskell Typ-System Wir beginnen mit einer Wiederholung des Bekannten: In allen Programmiersprachen sind Typ-Konzepte

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

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

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr. ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall

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

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil III SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil III SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I Lambda-Kalkül Teil III SS 2011 Parser Hilfsfunktionen: Die break-funktion ist eine Funktion Höherer Ordnung, die eine Liste beim ersten Vorkommen einer Bedingung in zwei Listen spaltet. break ::

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

WS 2012/2013. Robert Giegerich. 21. November 2012

WS 2012/2013. Robert Giegerich. 21. November 2012 WS 2012/2013 Robert AG Praktische Informatik 21. November 2012 Funktionen als Bürger erster Klasse Funktionen definieren kann man in jeder Programmiersprache. Eine funktionalen Programmiersprache erlaubt

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 Einstieg in Haskell

Programmieren in Haskell Einstieg in Haskell Programmieren in Haskell Einstieg in Haskell Peter Steffen Universität Bielefeld Technische Fakultät 24.10.2008 1 Programmieren in Haskell Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen

Mehr

Informatik A WS 2007/08. Nachklausur

Informatik A WS 2007/08. Nachklausur Informatik A WS 2007/08 Nachklausur 18.04.2008 Name:.............................. Matrikelnummer:.................. Tutor:.................. Bitte Zutreffendes ankreuzen: Hauptfach Bioinformatik Hauptfach

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

Funktionale Programmierung

Funktionale Programmierung Monaden LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 30. April 2009 Monaden Eine Monade ist ein Programmier-Schema für sequentielle Berechnungen. In Haskell

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Hupel, Lars Noschinski, Dr. Jasmin Blanchette Wintersemester 2013/14 Abschlussklausur 21. Februar 2014 Einführung

Mehr

Frage, Fragen und nochmals Fragen

Frage, Fragen und nochmals Fragen Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales

Mehr

Gliederung. Algorithmen und Datenstrukturen I. Listen in Haskell: Listen in Haskell: Listen in Haskell. Datentyp Liste Strings Listenkomprehension

Gliederung. Algorithmen und Datenstrukturen I. Listen in Haskell: Listen in Haskell: Listen in Haskell. Datentyp Liste Strings Listenkomprehension Gliederung Algorithmen und Datenstrukturen I D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Winter 2009/10, 16. Oktober 2009, c

Mehr

Monoide. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :54. Monoide 1/16

Monoide. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :54. Monoide 1/16 Monoide Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 09.10.2018 06:54 Monoide 1/16 Abstraktion gleichartige Strukturen sollten abstrahiert werden Beispiel: Collections in Haskell

Mehr

Funktionen höherer Ordnung

Funktionen höherer Ordnung Eine Funktion wird als Funktion höherer Ordnung bezeichnet, wenn Funktionen als Argumente verwendet werden, oder wenn eine Funktion als Ergebnis zurück gegeben wird. Beispiel: twotimes :: ( a -> a ) ->

Mehr

Typklassen. Natascha Widder

Typklassen. Natascha Widder Typklassen Natascha Widder 19.11.2007 Motivation Typklassen fassen Typen mit ähnlichen Operatoren zusammen ermöglichen überladenen Funktionen Definition Typklassen Deklarationsschema class Name Platzhalter

Mehr

Funktionale Programmierung. Monoide. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Funktionale Programmierung. Monoide. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Funktionale Programmierung Monoide Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 03.12.2018 07:53 Inhaltsverzeichnis Abstraktion..................................... 1 Eine

Mehr

Workshop Einführung in die Sprache Haskell

Workshop Einführung in die Sprache Haskell Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig

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

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. 4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit

Mehr

Programmieren in Haskell Abstrakte Datentypen

Programmieren in Haskell Abstrakte Datentypen Programmieren in Haskell Abstrakte Datentypen Peter Steffen Universität Bielefeld Technische Fakultät 09.01.2009 1 Programmieren in Haskell Einführung Man unterscheidet zwei Arten von Datentypen: konkrete

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 s Wochenende Programmieren

Mehr

Haskell for Hackers... or why functional programming matters

Haskell for Hackers... or why functional programming matters ... or why functional programming matters Franz Pletz CCC München 27-06-2009 @ GPN8 Fahrplan Ablauf Motivation 1 Ablauf Motivation 2 3 4 Ablauf Ablauf Motivation bei Fragen/Unklarheiten:

Mehr

ProInformatik: Funktionale Programmierung. Punkte

ProInformatik: Funktionale Programmierung. Punkte ProInformatik: Funktionale Programmierung 27.7-22.8.2008, M. Knobelsdorf Probeklausur Ihre persönliche Klausurnummer: Vorname, Nachname: Aufgabe 1 2 3 4 5 6 7 8 Punkte 12 4 4 4 4 2 4 6 40 Erz. Punkte Zum

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Hashing

Mehr

Programmieren in Haskell Felder

Programmieren in Haskell Felder Programmieren in Haskell Felder Peter Steffen Universität Bielefeld Technische Fakultät 01.12.2010 1 Programmieren in Haskell Was wir heute machen Beispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung

Mehr

Basiskonstrukte von Haskell

Basiskonstrukte von Haskell Basiskonstrukte von Haskell PD Dr. David Sabel Goethe-Universität Frankfurt am Main 29. September 2015 Basistypen und Operationen Ganzzahlen: Int = Ganzzahlen beschränkter Länge Integer = Ganzzahlen beliebiger

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Typ-Klassen und SS 2011 Überladung von Datentypen Funktionen sollen oft auf verschiedene Datentypen anwendbar sein, aber nicht auf beliebige Datentypen. Beispiel: Die (+)

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

WS 2011/2012. Robert Giegerich. October 30, 2013

WS 2011/2012. Robert Giegerich. October 30, 2013 WS 2011/2012 Robert AG Praktische Informatik October 30, 2013 Algebraische Datentypen Neue Datentypen werden als algebraische Datentypen eingeführt. Werte des Datentyps sind Formeln, die aus Konstruktoren

Mehr

Teillösung zum 7.Aufgabenblatt zur Vorlesung Informatik A

Teillösung zum 7.Aufgabenblatt zur Vorlesung Informatik A 1 Teillösung zum 7.Aufgabenblatt zur Vorlesung Informatik A (Autor: Florian Brinkmeyer) 1 Pascalsches Dreieck Implementieren Sie die Rekursion zur Berechnung der Binomialkoezienten. Geben Sie die ersten

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

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster 16:02:16 2017-01-17 1 [30] Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom 10.01.2017: Monaden als Berechnungsmuster Christoph Lüth Universität Bremen Wintersemester 2016/17 Frohes

Mehr

Kapitel 6: Abstraktion. Programmieren in Haskell 1

Kapitel 6: Abstraktion. Programmieren in Haskell 1 Kapitel 6: Abstraktion Programmieren in Haskell 1 Nachtrag Listenbeschreibungen divisors :: (Integral a) => a -> [a] divisors n = [d d [a] primes = [n

Mehr

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

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie 16:02:01 2017-01-17 1 [37] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 08.11.2016: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS 16/17

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

Programmieren in Haskell Felder (Arrays)

Programmieren in Haskell Felder (Arrays) Programmieren in Haskell Felder (Arrays) Peter Steffen Universität Bielefeld Technische Fakultät 05.12.2008 1 Programmieren in Haskell Quadratzahlen 0 1 2 3 n 0 1 4 9 n 2 squareslist :: Integral a => [a]

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

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

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

Praktische Informatik 3

Praktische Informatik 3 Praktische Informatik 3 Christian Maeder WS 03/04 Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen 3 Inhalt Wo ist das Problem?

Mehr

Interpreter (Hilfsfunktionen)

Interpreter (Hilfsfunktionen) Interpreter (Hilfsfunktionen) -- Berechnet die Liste der gebundenen Variablen boundlist :: Expr -> [String] boundlist (Var x) = [] boundlist (Lambda x e) = x : (boundlist e) boundlist (App e1 e2) = (boundlist

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Zusammengesetzte Datentypen in Haskell WS 2012/2013 Zusammengesetzte Datentypen Tupel List String Zusammengesetzte Datentypen Tupel-Datentyp Ein Tupel ist eine Ansammlung

Mehr

Einführung in die Informatik 2 8. Übung

Einführung in die Informatik 2 8. Übung Technische Universität München WS 2013/14 Institut für Informatik 03.11.2012 Prof. Tobias Nipkow, Ph.D. Abgabe: 10.12.2012, 15:30 Lars Noschinski, Lars Hupel, Dr. Jasmin Blanchette Einführung in die Informatik

Mehr

Programmieren in Haskell. Abstrakte Datentypen

Programmieren in Haskell. Abstrakte Datentypen Programmieren in Haskell Abstrakte Datentypen Einführung Man unterscheidet zwei Arten von Datentypen: konkrete Datentypen: beziehen sich auf eine konkrete Repräsentation in der Sprache. Beispiele: Listen,

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Monaden Programmieren in Haskell 1 Sequenzierung mit Dollar und Euro Die Atommüll-Metapher Maybe- und Listen-Monaden Return Die do-notation Monaden als Berechnungen Listenbeschreibungen

Mehr

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

WS 2011/2012. Georg Sauthoff 1. November 11, 2011 WS 2011/2012 Georg 1 AG Praktische Informatik November 11, 2011 1 gsauthof@techfak.uni-bielefeld.de Skripte sind nun fertig und gibt es in den Tutorien Sprechstunden Zusammenfassung -Kapitel Signatur zuerst

Mehr

Grundlagen der Programmierung 2 (2.A)

Grundlagen der Programmierung 2 (2.A) Grundlagen der Programmierung 2 (2.A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 5. Mai 2011 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen,

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Lars Hupel, Lars Noschinski, Dr. Jasmin Blanchette Wintersemester 2013/14 Wiederholungsklausur 24. März 2014 Einführung

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

Funktionale Programmierung ALP I. Algebraische Datentypen und Abstrakte Datentypen. SS 2013 Prof. Dr. Margarita Esponda. Prof. Dr.

Funktionale Programmierung ALP I. Algebraische Datentypen und Abstrakte Datentypen. SS 2013 Prof. Dr. Margarita Esponda. Prof. Dr. Funktionale Programmierung AP I Algebraische Datentypen und Abstrakte Datentypen SS 2013 Abstrakt Datentypen Beispiel: Algebraischen Datentypen für Bäume data SBTree = SBTree SBTree AP I: Margarita Esponda,

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

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

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten 1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten Java-1. a), e) Java-2. --- gestrichen --- Java-3. keine Antwort ist richtig Java-4. a) Java-5. a), b)

Mehr

Inhaltsverzeichnis. 1 Polynomordungen [9 Punkte] 2. 2 System F [9 Punkte] 3. 3 Strukturelle Induktion und Folds [9 Punkte] 4

Inhaltsverzeichnis. 1 Polynomordungen [9 Punkte] 2. 2 System F [9 Punkte] 3. 3 Strukturelle Induktion und Folds [9 Punkte] 4 Inhaltsverzeichnis Polynomordungen [9 Punkte] 2 2 System F [9 Punkte] 3 3 Strukturelle Induktion und Folds [9 Punkte] 4 4 Korekursion und Koinduktion [9 Punkte] 5 5 Automatenminimierung [5 Punkte] 6 Seite:

Mehr

Grundlagen der Programmierung 2 A (Listen)

Grundlagen der Programmierung 2 A (Listen) Grundlagen der Programmierung 2 A (Listen) Haskell: Listen Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen, gleichgetypten Objekten.

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 4: Grundlagen der Programmierung (WS 2018/19)

Lösungshinweise/-vorschläge zum Übungsblatt 4: Grundlagen der Programmierung (WS 2018/19) Prof. Dr. Ralf Hinze Sebastian Schweizer, M.Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Programmiersprachen Lösungshinweise/-vorschläge zum Übungsblatt 4: Grundlagen der Programmierung

Mehr

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 9 -

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 9 - Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 9 - Dozent: Prof. Dr. G. Rote Tutoren: J. Fleischer, T. Haimberger, N. Lehmann, C. Pockrandt, A. Steen 10.01.2012 Ziele

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

Listen und Listenfunktionen. Grundlagen der Programmierung 2 A (Listen) Listen und Listenfunktionen. Listen? Haskell: Listen

Listen und Listenfunktionen. Grundlagen der Programmierung 2 A (Listen) Listen und Listenfunktionen. Listen? Haskell: Listen Listen und Listenfunktionen Grundlagen der Programmierung 2 A (Listen) Haskell: Listen Prof. Dr. Manfred Schmidt-Schauß Listen modellieren Folgen von gleichartigen, gleichgetypten Objekten. Ausdruck im

Mehr

expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6))

expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6)) 1 - Korrektur 2 - Abstrakte Datentypen für arithmetische Ausdrücke Der Datentyp Wir beginnen zunächst mit dem algebraischen Datentyp für Ausdrücke. Hierfür definieren wir einen Konstruktor Number für Zahlen,

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

ALP I Turing-Maschine

ALP I Turing-Maschine ALP I Turing-Maschine Simulator WS 2012/2013 Haskell-Implementierung eines TM-Simulators module Turing (sim, start) data Move = L R S deriving (Show, Eq) type State = Int type Input = Char type Output

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 6 vom : Funktionen Höherer Ordnung II und Effizienzaspekte

Praktische Informatik 3: Funktionale Programmierung Vorlesung 6 vom : Funktionen Höherer Ordnung II und Effizienzaspekte 16:02:08 2017-01-17 1 [34] Praktische Informatik 3: Funktionale Programmierung Vorlesung 6 vom 22.11.2016: Funktionen Höherer Ordnung II und Effizienzaspekte Christoph Lüth Universität Bremen Wintersemester

Mehr

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10. Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Wiederholung: Schema: f :: [σ] -> τ f [] = e 1 f (a : as) = e 2 where s = f as wobei e 1 und e 2 Ausdrücke vom Typ τ sind und e 2 die Variablen

Mehr

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 8 -

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 8 - Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zu Übung 8 - Dozent: Prof. Dr. G. Rote Tutoren: J. Fleischer, T. Haimberger, N. Lehmann, C. Pockrandt, A. Steen 03.01.2012 Ziele

Mehr

Tag 7. Pattern Matching und eigene Datentypen

Tag 7. Pattern Matching und eigene Datentypen Tag 7 Pattern Matching und eigene Datentypen Heute werden wir eine Technik kennenlernen, die dafür sorgt, daß wir sehr viel übersichtlichere und kürzere Programme schreiben können. Als Überleitung auf

Mehr

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

Parallele und funktionale Prog. Wintersemester 2011/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Prog. Wintersemester 2011/ Übung Abgabe bis , 10:00 Uhr 10. Übung Abgabe bis 23.01.2012, 10:00 Uhr Aufgabe 10.1: Seiteneffekte Welche der folgenden Java-Methoden hat Seiteneffekte? Welche ist seiteneffektfrei? p u b l i c c l a s s S e i t e n e f f e k t e

Mehr

Programmierparadigmen Tutorium: Lazyness, Streams

Programmierparadigmen Tutorium: Lazyness, Streams Programmierparadigmen Tutorium: Lazyness, Streams Prof. Dr.-Ing. Gregor Snelting WS 2012/2013 LEHRSTUHL PROGRAMMIERPARADIGMEN www.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Grundlagen der Programmierung 2 (1.D)

Grundlagen der Programmierung 2 (1.D) Grundlagen der Programmierung 2 (1.D) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 9. Mai 2006 Fallunterscheidung mit case Syntax: case Ausdruck of { Muster -> Ausdruck

Mehr

Programmierparadigmen

Programmierparadigmen in Haskell Programmierparadigmen in Haskell D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 4. April 2011, c 2011 D.Rösner

Mehr