Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725

Größe: px
Ab Seite anzeigen:

Download "Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725"

Transkript

1 Haskell Seminar Abstrakte Datentypen Nils Bardenhagen ms2725

2 Gliederung Konzept Queue Module Sets Bags Flexible Arrays Fazit

3 Abstrakte Datentypen (ADT) Definition: Eine Zusammenfassung von Operationen, die auf einer Menge von Objekten durchgeführt werden, wird als abstrakter Datentyp bezeichnet. Alternative Bezeichnung: Klasse, Modul

4 ADT: Eigenschaften Universalität: Verwendung in verschiedenen Programmen Präzise Beschreibung: Interface muss eindeutig und vollständig sein Kapselung: Der Anwender soll wissen was der ADT tut, aber nicht wie Schutz: Der Anwender kann nicht in die interne Datenstruktur eingreifen. Modularität: Einfacher Austausch, Fehlersuche, Verbesserung => Objektorientierung

5 ADT: Beispiele Float Tree List Queue Stack

6 Queue Operationen: empty :: Queue a join :: aöqueue aöqueue a front :: Queue aöa back :: Queue aöqueue a isempty :: Queue aöbool

7 Queue: Axiome isempty empty isempty (join x xq) front (join x empty) front (join x (join y xq)) back (join x empty) back (join x (join y xq)) = True = False = x = front (join y xq) = empty = join x (back (join y xq)) isempty (join x bottom) = isempty =

8 Queue: Implementierung 1 joinc joinc x xs :: aö[a] ö [a] = xs ++ [x] emptyc :: [a] emptyc = [] isemptyc isemptyc xs frontc frontc (x:xs) backc backc (x:xs) :: [a] ö Bool = null xs :: [a] öa = x :: [a] ö [a] = xs abstr :: [a] ö Queue a abstr = foldr join empty. Reverse reprn :: Queue aö[a] reprn empty = [] reprn (join x xq) = reprn xq ++ [x]

9 Queue: Implementierung 2 valid valid (xs,ys) :: ([a],[a]) ö Bool = not (null xs) v null ys abstr abstr :: ([a],[a]) ö Queue a (xs,ys) = (foldr join empty. reverse) (xs ++ reverse ys)

10 Queue: Implementierung 2 emptyc = ([],[]) isemptyc (xs,ys) = null xs joinc x (xs,ys) frontc (x:xs, ys) backc (x:xs,ys) = mkvalid (ys, x:zs) = x = mkvalid (xs,ys) mkvalid :: ([a],[a]) ö ([a],[a]) mkvalid (xs, ys) = if null xs then (reverse ys,[]) else (xs,ys)

11 Module module Queue (Queue, empty, isempty, join, front, back) where newtype Queue a = MkQ ([a],[a]) isempty isempty (MkQ (xs:ys)) empty empty join join x (MkQ (ys,xs)) front front (MkQ (x:xs, ys)) back back (MkQ(x:xs, ys)) mkvalid mkvalid (xs, ys) :: Queue aöbool = null xs :: Queue a = MkQ([],[]) :: aöqueue aöqueue a = mkvalid(ys,x:xs) :: Queue aöa = x :: [a] ö [a] = mkvalid(xs,ys) :: ([a],[a]) ö Queue a = if null xs then MkQ (reverse ys, []) else mkq (xs, ys)

12 Module (2) import Queue toq toq :: [a] ö Queue a = foldr join empty. Reverse fromq :: Queue a ö [a] fromq q = if isempty q then [] front q:fromq (back q)? join 1 (join 2 empty) ([2],[1])? join 1 (join 2 empty) == join 2 (join 1 empty) False

13 Sets Ausgewählte Operationen: empty isempty member insert delete union meet minus :: Set a :: Set aöbool :: Set aöaöbool :: aöset aöset a :: aöset aöset a :: Set aöset aöset a :: Set aöset aöset a :: Set aöset aöset a

14 Sets: Axiome insert x (insert x xs) insert x (insert y xs) isempty empty isempty (insert x xs) = insert x xs = insert y (insert x xs) = True = False member empty y = False member (insert x xs) y = (x=y) v member xs y delete x empty delete x (insert y xs) union xs empty union xs (insert y ys) meet xs empty meet xs (insert y ys) minus xs empty minus xs (insert y ys) = empty = if x = y then delete x xs else insert y (delete x xs) = xs = insert y (union xs ys) = empty = if member xs y then insert y (meet xs ys) else meet xs ys = xs = minus (delete y xs) ys

15 Sets: Implementierung als Liste abstr abstr valid xs valid xs member xs x insert x xs delete x xs union xs ys minus xs ys some some p :: [a] ö Set a = foldr insert empty = True = nonduplicated xs = some (==x) = x:xs = filter ( x) xs = xs ++ ys = filter (not. member ys) xs :: (a öbool) ö [a] ö Bool = or. map p

16 Sets: Implementierung als Liste insert x xs union xs ys = x:filter ( x) xs = xs ++ filter (not. Member xs) ys member xs x = if null ys then False else (x == head ys) where ys = dropwhile (<x) xs union [] ys = ys union (x:xs) [] = x:xs union (x:xs)(y:ys) (x < y) = x:union xs (y:ys) (x==y) = x:union xs ys (x > y) = y:union (x:xs) ys

17 Sets: Implementierung als Baum Data Stree a = Null Fork (Stree a) a (Stree a) empty empty isempty isempty Null isempty (Fork xt y yt) :: Set a = Null :: Set aöbool = True = False member :: (Ord a) => Stree aöaöbool member Null x = False member (Fork xt y yt) x (x < y) = member xt x (x == y) = True (x > y) = member zt x insert :: (Ord a) => aöstree aöstree a insert x Null = Fork Null x Null insert x (Fork xt y zt) (x < y) = Fork (insert x xt) y zt (x == y) = Fork xt y zt (x > y) = Fork xt y (insert x zt)

18 Sets: Implementierung als Baum delete ::(Ord a) => aöstree aöstree a delete x Null = Null delete x (Fork xt y zt) (x < y) = Fork (delete x xt) y zt (x == y) = join xt zt (x > y) = Fork xt y (delete x zt) join join xt yt :: Stree aöstree aöstree a = if isempty yt then xt else Fork xt y zt where (y,zt) = splittree xt splittree :: Stree aö(a, Stree a) splittree (Fork xt y zt) = if isempty xt then (y,zt) else (u, Fork vt y zt) where (u,vt) = splittree xt

19 Bags / Multisets {[1,2,2,3]} ={[3,2,1,2]} aber {[1,2,2]}!= {[1,2]} Operationen mkbag :: [a] ö Bag a isempty :: Bag aöbool union :: Bag aöbag aöbag a minbag :: Bag aöa delmin :: Bag aöbag a

20 Bags: Axiome isempty (mkbag xs) union(mkbagxs) (mkbagys) minbag (mkbag xs) delmin (mkbag xs) = null xs = mkbag(xs++ys) = minlist xs = mkbag (deletemin xs)

21 Bags: Implementierung (Heap) data Htree a = Null Fork Int a (Htree a) (Htree a) fork fork x yt zt :: aöhtree aöhtree a = if m < n then Fork p x zt yt else Fork p x yt zt where m = size yt n = size zt p = m + n + 1 size :: Htree aöint size Null = 0 size (Fork n x yt zt) = n isempty :: Htree aöbool isempty Null = True isempty (Fork n x yt zt) = False minbag :: Htree aöa minbag (Fork n x yt zt) = x delmin :: Htree aöhtree a delmin (Fork n x yt zt) = union yt zt

22 Bags: Implementierung (Heap) union union Null yt union (Fork m u vt wt) Null :: Htree aöhtree aöhtree a = yt = Fork m u vt wt union (Fork m u vt wt) (Fork n x yt zt) (u x) = fork u vt (union wt (Fork n x yt zt)) (x < u) = fork x yt (union (Fork m u vt wt) zt) mkbag mkbag xs :: [a] ö Htree a = fst (mktwo (length xs) xs) mktwo :: Int ö [a] ö (Htree a, [a]) mktwo n xs (n == 0) = (Null, xs) (n == 1) = (fork (head xs) Null Null, tail xs) otherwise = (union xt yt, zs) where (xt, ys) = mktwo m xs (yt,zs) = mktwo (n-m) ys m = n div 2

23 Flexible Arrays Operationen empty isempty access update hiext hirem loext lorem :: Flex a :: Flex aöbool :: Flex aöint öa :: Flex aöint öaöflex a :: aöflex aöflex a :: Flex aöflex a :: aöflex aöflex a :: Flex aöflex a

24 Flexible arrays: Axiome hiext x. loext y hirem empty hirem (hiext x xf) hirem (loext x empty) hirem (loext x (hiext y xf)) hirem (loext x (loext y xf)) access ampty k access (loext x xf) 0 access (hiext x xf) (k + 1) = loext y hiext x = error = xf = empty = loext x xf = loext x (hirem(loext y xf)) = error out of range = x = access xf k access (hiext x xf) k (k < n) = access xf k (k == n) = x (k > n) = error where n = length xf

25 Flexible Arrays: Implementierung data Flex a = Null Leaf a Fork Int (Flex a) (Flex a) access access (Leaf x) 0 access (Fork n xt yt) k :: Flex aöint a = x = if k < m then access xt k else access yt (k m) where m = size xt size :: Flex aöint size Null = 0 size (Leaf x) = 1 size (Fork n xt yt) = n

26 Fazit

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

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

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

2.3 Spezifikation von Abstrakten Datentypen

2.3 Spezifikation von Abstrakten Datentypen Abstrakte Datentypen (ADT) 2.3 Spezifikation von Abstrakten Datentypen Sichtbare Schnittstelle: Typbezeichner Signaturen der Operationen Spezifikation der Operationen Abstraktionsbarriere Implementierung

Mehr

Informatik-Seminar Thema 6: Bäume

Informatik-Seminar Thema 6: Bäume Informatik-Seminar 2003 - Thema 6: Bäume Robin Brandt 14. November 2003 1 Robin Brandt Informatik-Seminar 2003 - Thema 6: Bäume Übersicht Definition Eigenschaften Operationen Idee Beispiel Datendefinition

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

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

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 Ein

Mehr

5. Januar Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Abstrakte Datentypen.

5. Januar Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Abstrakte Datentypen. Universität Bielefeld AG Praktische Informatik 5. Januar 2015 Themen-Vorschau Module In der Software-Entwicklung unterscheidet zwei Arten von : konkrete beziehen sich auf eine konkrete Repräsentation in

Mehr

Abstrakte Datentypen I

Abstrakte Datentypen I 6 Abstrakte Datentypen I Ein Datentyp heißt abstrakt, wenn seine Eigenschaften allein durch die für ihn definierten Operationen festgelegt sind, während die Repräsentation seiner Werte dem Benutzer verborgen

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

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

WS 2011/2012. Robert Giegerich Dezember 2013

WS 2011/2012. Robert Giegerich Dezember 2013 WS 2011/2012 Robert 1 AG Praktische Informatik 11. Dezember 2013 1 robert@techfak.uni-bielefeld.de Vorschau Themen heute: Funktionen höherer Ordnung (Fortsetzung) künstliche Striktheit mehr zu fold für

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

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

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

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

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

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

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

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

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

Programmieren in Haskell Programmieren in Haskell Programmiermethodik Programmieren in Haskell 1 Was wir heute machen Spezifikation Strukturelle Rekursion Strukturelle Induktion Programmieren in Haskell 2 Spezifikation sort [8,

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

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

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 8 Abstrakte Datentypen A&P (WS 14/15): 08 Abstrakte Datentypen 1 Überblick Abstrakte Datentypen Signaturen und Algebren Spezifikation von ADTs Umsetzung von ADTs

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

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

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

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

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

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

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

Programmieren in Haskell Programmieren mit Listen

Programmieren in Haskell Programmieren mit Listen Programmieren in Haskell Programmieren mit Listen Peter Steffen Universität Bielefeld Technische Fakultät 14.11.2008 1 Programmieren in Haskell Ein eigener Listen-Datentyp data List a = Nil Cons a (List

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Programmieren mit Listen Programmieren in Haskell 1 Was wir heute machen Eigener Listen-Datentyp Eine Sortierfunktion Nützliche Listenfunktionen Programmieren in Haskell 2 Ein

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Programmieren mit Listen Programmieren in Haskell 1 Was wir heute machen Eigener Listen-Datentyp Eine Sortierfunktion Nützliche Listenfunktionen Programmieren in Haskell 2 Ein

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

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

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float).

Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). Haskell Funktionen Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). circlearea :: Float -> Float circlearea radius = 2 * pi * radius^2 Definieren

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

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen 2.4 Datenabstraktion und Objektorientierung 2.4.1 Datenabstraktion in Programmiersprachen Datenabstraktion: zur Beherrschung von Komplexität unerlässlich. In jeder Programmiersprache kann man gemäß den

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

Abstract Data Type and the Development of Data Structures

Abstract Data Type and the Development of Data Structures Abstract Data Type and the Development of Data Structures John Guttag, 1976 2. Mai 2006 Inhalt 1 Motivation 2 3 4 Motivation - Komplexe Probleme lösen Dekomposition Problem Abstraktion Komplexität reduzieren

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

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 10. Übung Abstrakte Datentypen, Freies Programmieren: Quilt Clemens Lang Übungen zu AuD 14. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14.

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Funktionale Programmierung mit Haskell. Jan Hermanns

Funktionale Programmierung mit Haskell. Jan Hermanns Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann

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

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 KAPITEL 8. Bäume

HASKELL KAPITEL 8. Bäume HASKELL KAPITEL 8 Bäume Baum rekursiv definierte Datenstruktur nicht linear vielerlei Varianten: Struktur der Verzweigung, Ort der gespeicherten Information (Knoten, Kanten, Blätter ) 2 Binärbaum Jeder

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

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

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

Abstrakte Datentypen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2009 21. April 2009 1 Praktikum zu DAP 2 Beginn: Mittwoch

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als Kapitel 4 Bäume 4.1 Bäume, Datenstrukturen und Algorithmen Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als eine Menge von Knoten und eine Menge von zugehörigen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 11. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-4 Zur Erinnerung Datenstruktur:

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

WS 2013/2014. Robert Giegerich. 11. Dezember 2013

WS 2013/2014. Robert Giegerich. 11. Dezember 2013 WS 2013/2014 Robert AG Praktische Informatik 11. Dezember 2013 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man höherer Ordnung.

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

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

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

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

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

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist

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

Teil III. Funktionale Programmierung in Haskell

Teil III. Funktionale Programmierung in Haskell Teil III Funktionale Programmierung in Haskell 178 1. Einführung: Funktionale Programmierung hier: informelle Einführung ignoriert: monadische Ein-/Ausgabe, Typklassen,... zum Ausprobieren von Beispielprogrammen:

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 13. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2. Test Termin: (voraussichtlich)

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

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

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

Listen. 3.1 Vordefinierte Listenfunktionen

Listen. 3.1 Vordefinierte Listenfunktionen 3 Listen In diesem Kapitel geht es um Listen, den zusammengesetzten Datentyp funktionaler Sprachen schlechthin. Schon in Kapitel 1 hatten wir gelernt, dass Listen ein vordefinierter Typ sind. In diesem

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

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

1 Induktiver Aufbau von Graphen

1 Induktiver Aufbau von Graphen Ï˾¼½¼»½½ ÙÒ Ø ÓÒ Ð ÅÓ ÐÐ ÖÙÒ ĐÙÖ Ó Ò ÓÖÑ Ø ÓÒ Ý Ø Ñ Ö Ô Ò Ð ÓØ Ä ºÅĐÓÐÐ Ö ºÅĐÓÐÐ Ö»ËºÌ ÑÔ ß ß FuGoe Ù Ó¼ Ö Ô Ò Å ÖØ Ò ÖÛ µ Ä ÙÒ Ø ÓÒ Ð Ð ÓØ ÞÙÖ Ò ÐÙÒ Ö ÐÐ Ñ Ò Ö Î Ö Ö Ò ØÞ FuGoe ÙØÓÑ Ø Ò Ö ÑÑ ß¾ß ºÅĐÓÐÐ

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 6 (6.5.2016) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

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

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))

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

WS 2011/2012. Robert Giegerich. October 17, 2012

WS 2011/2012. Robert Giegerich. October 17, 2012 in in WS 2011/2012 Robert AG Praktische Informatik October 17, 2012 Sprechstunden in GZI-Arbeitsraum (V2-240) Tutoren-Sprechstunden (V2-228) http://www.techfak.uni-bielefeld.de/ags/pi/ lehre/audiws12/#ueb

Mehr

ALP I Induktion und Rekursion

ALP I Induktion und Rekursion ALP I Induktion und Rekursion WS 2012/2013 Vollständige Induktion (Mafi I) Die Vollständige Induktion ist eine mathematische Beweistechnik, die auf die Menge der natürlichen Zahlen spezialisiert ist. Vorgehensweise:

Mehr

Einführung in die Funktionale Programmierung mit Haskell

Einführung in die Funktionale Programmierung mit Haskell Einführung in die Funktionale Programmierung mit Haskell Typklassen und Polymorphie LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 23. Mai 2013 Planung Freitag:

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort Bemerkung: Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern mit logarithmischem Aufwand durch Verwendung einer besonderen

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli

Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli Tutorium - Haskell in der Schule Wer sind wir? Otto-Nagel-Gymnasium in Berlin-Biesdorf Hochbegabtenförderung und MacBook-Schule Leistungskurse seit 2005 Einführung Was ist funktionale Programmierung? Einführung

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz

Funktionale Programmierung. Das Funktionale Quiz. Das Funktionale Quiz. Das Funktionale Quiz Funktionale Programmierung Das Funktionale Quiz 31.5.2005 Nenne eine Gemeinsamkeit zwischen Typklassen und OO-Klassen Das Funktionale Quiz Das Funktionale Quiz Nenne einen Unterschied zwischen Typklassen

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

1 of :17:14

1 of :17:14 7 public class Main 10 /** 11 * @param args the command line arguments 1 */ 13 public static void main(string[] args) 14 { 15 // Aufgabe 1 16 System.out.println("##### AUFGABE 1 #####"); 17 // Stack initialisieren

Mehr