Kapitel 3: Programmierung mit Kombinatoren

Größe: px
Ab Seite anzeigen:

Download "Kapitel 3: Programmierung mit Kombinatoren"

Transkript

1 Funktionale Programmierung (WS2005/2006) 3/1 Kapitel 3: Programmierung mit Kombinatoren Lernziele dieses Kapitels 1. Denken in unktionalen Komponenten, Vermeidung von Kontrolllussdenken (Rekursion) Details der Datenstruktur (Pattern Matching in induktiven Deinitionen) 2. Selbstverständlicher Umgang mit vielen in den Typsignaturen 3. Kenntnis der wichtigsten Kombinatoren Bildliche Vorstellung ihrer Struktur Anwendung von Kombinatoren 4. Bäume: Durchläue und Suche 5. Functor als Typklasse ür Abstraktion von Datenstrukturen 6. Skelette, Beispiel Divide-and-Conquer

2 Funktionale Programmierung (WS2005/2006) 3/2 Programmierung mit Kombinatoren Kombinator: Funktion ohne reie Variablen Bedeutung unabhängig von der Umgebung klare Funktionalität hohe Wiederverwendbarkeit geeignet ür spezielle eiziente Implementierung Skelett: Kombinator mit umangreicher Funktionalität

3 Funktionale Programmierung (WS2005/2006) 3/3 Kombinatoren statt expliziter Rekursion Beispielaugabe: revertieren einer Liste schlechte Lösung mit expliziter Rekursion revertiere l = i null l then [] else let rest = revertiere (tail l) ansende l1 = i null l1 then [head l] else head l1 : ansende (tail l1) in ansende rest gute Lösung mit Kombinatoren revertiere = oldl (lip (:)) []

4 Funktionale Programmierung (WS2005/2006) 3/4 Aspekt Programmierstil einige der wünschenswerten Eigenschaten Vermeidung impliziter Deinitionen (Rekursion) 2. Vermeidung von Fallunterscheidungen (i-then-else) 3. Bezug au Datenstrukturen so gering wie möglich halten 4. Wenn Datenstrukturen, dann Pattern Matching statt Selektoren 5. Funktionsgleichungen ohne Bezug au Argumente ( pointree style)... und warum diese wünschenswert sind: (1),(2),(4),(5): Vereinachung von Beweisen und Programmtransormationen (1),(2),(3),(4): Verkürzung des Quelltextumangs bessere Lesbarkeit (3): Austauschbarkeit von Teilen der Implementierung

5 Funktionale Programmierung (WS2005/2006) 3/5 Der Nutzen von Kombinatoren Bereitstellung häuig vorkommender Programmschemata (map, oldl,... ) Kapselung von Rekursion und Fallunterscheidungen Anpassung von Repräsentationen (lip, concat,... ) Skelette: Faktorisierung einer Problemlösung in algorithmischen Anteil (Depth-First-Suche, Divide-and-Conquer,... ) Anwendungs-speziische Operationen Einache Regeln ür Programmtransormationen z.b. map g. map = map (g. )

6 Funktionale Programmierung (WS2005/2006) 3/6 Eiziente Implementierung ür Kombinatoren Der Compiler kann Wissen über den Kombinator ausnutzen. Bsp. map [x 0,..., x n ] [y 0,..., y n ]: x 0 y 0 x 1 y 1 Denken in unktionalen Blöcken, nicht in Rekursion x n y n Fazit: alle Anwendungen von sind unabhängig und könnten, z.b. von einem Parallelrechner gleichzeitig ausgeührt werden.

7 Funktionale Programmierung (WS2005/2006) 3/7 Programmtransormationen Bsp.: map g. map == map (g. ) sequenziell: Vermeidung von Iterationen und temporären Datenstrukturen (y) parallel: Vermeidung von Kommunikationen map g map map (g ) z 0 g y 0 y 0 x 0 z 0 g x 0 z 1 g y 1 y 1 x 1 = z 1 g x 1 z n g y n y n x n z n g x n

8 Funktionale Programmierung (WS2005/2006) 3/8 Vektoroperationen: zipwith zipwith :: (a->b->c) -> [a] -> [b] -> [c] zipwith (x:xs) (y:ys) = x y : zipwith xs ys zipwith _ = [] x 0 y 0 z 0 x 1 y 1 z 1 x n y n z n innerprod :: Num a => [a] -> [a] -> a innerprod xs ys = sum (zipwith (*) xs ys)

9 Funktionale Programmierung (WS2005/2006) 3/9 Der oldl-kombinator oldl :: (a->b->a) -> a -> [b] -> a oldl e [] = e oldl e (x:xs) = oldl ( e x) xs x xs e Beispiele: sum [1,2,3,4] = oldl (+) 0 [1,2,3,4] = (((0+1)+2)+3)+4 prod [1,2,3,4] = oldl (*) 1 [1,2,3,4] = (((1*1)*2)*3)*4

10 Funktionale Programmierung (WS2005/2006) 3/10 Wiederverwendbarkeit von Kombinatoren naive Deinition elegante Deinition sum [] = 0 sum = oldl (+) 0 sum (x:xs) = x + sum xs product [] = 1 product = oldl (*) 1 product (x:xs) = x * product xs reverse xs = rev xs [] reverse where = oldl (lip (:)) [] rev [] acc = acc rev (x:xs) acc = rev xs (x:acc)

11 Funktionale Programmierung (WS2005/2006) 3/11 Listenrevertierung mittels oldl reverse = oldl (lip (:)) [] reverse [1,2,3,4] = oldl (lip (:)) [] [1,2,3,4] = oldl (lip (:)) [1] [2,3,4] = oldl (lip (:)) [2,1] [3,4] = oldl (lip (:)) [3,2,1] [4] = oldl (lip (:)) [4,3,2,1] [] = [4,3,2,1] lip lip lip lip [] [1] [2,1] [3,2,1] [4,3,2,1] (:) (:) (:) (:)

12 Funktionale Programmierung (WS2005/2006) 3/12 Varianten des old-kombinators oldl :: (a->b->a)->a->[b]->a oldl e [] = e oldl e (x:xs) = oldl ( e x) xs oldr :: (a->b->b)->b->[a]->b oldr e [] = e oldr e (x:xs) = x (oldr e xs) e x 0 e x 1 x n x 0 x 1 x n e e oldl1 (x:xs) = oldl x xs x 0 x 1 x 2 x n e oldr1 [x] = x oldr1 (x:xs) = x (oldr1 xs) x 0 x 1 x n 1 x n e

13 Funktionale Programmierung (WS2005/2006) 3/13 Anwendung von oldl, Bsp. sum x 0 e x 1 x n e oldl :: (a->b->a) -> a -> [b] -> a oldl e [] = e oldl e (x:xs) = oldl ( e x) xs sum = oldl (+) 0 sum [a,b,c,d,e] ((((0+a)+b)+c)+d)+e Da + assoziativ ist, wäre auch oldr möglich. Für strikte Operatoren wie + bevorzugt man oldl, weil 1. die Zahlen in der Liste nicht extra gespeichert werden müssen und 2. sowieso die ganze Liste durchgegangen werden muss.

14 Funktionale Programmierung (WS2005/2006) 3/14 Anwendung von oldr, Bsp. and x 0 x 1 x n e e oldr :: (a->b->b) -> b -> [a] -> b oldr e [] = [] oldr e (x:xs) = x (oldr e xs) and = oldr (&&) True and [a,b,c] a && (b && (c && True)) Da && assoziativ ist, wäre auch oldl möglich. Für im zweiten Argument nicht-strikte Operatoren wie && bevorzugt man oldr weil 1. oldl die ganze Liste durchlauen würde, aber 2. das Ergebnis bereits rüher eststehen kann.

15 Funktionale Programmierung (WS2005/2006) 3/15 Anwendung von oldl1, Bsp. maximum x 0 x 1 x 2 x n e oldl1 :: (a->a->a) -> [a] -> a oldl1 (x:xs) = oldl x xs maximum = oldl1 max maximum [3,5,7,4] max (max (max 3 5) 7) 4 oldl1, weil ot kein neutrales Element vorhanden ist. Nur noch eine Variable im Typ. Da max assoziativ ist, wäre auch oldr1 möglich. Analog zu sum: oldl1, weil max strikt.

16 Funktionale Programmierung (WS2005/2006) 3/16 Zwischenergebnisse: scanl und mapaccuml oldl :: (a->b->a) -> a -> [b] -> a e x 0 e x 1 x n scanl :: (a->b->a) -> a -> [b] -> [a] e 0 x 0 x 1 x n e 0 e 1 e 2 e n e n+1 mapaccuml :: (a->x->(a,y)) -> a -> [x] -> (a,[y]) e x 0 y 0 x 1 y 1 x n y n e analog: scanr, scanl1, scanr1 und mapaccumr

17 Funktionale Programmierung (WS2005/2006) 3/17 Berechnung von Zielpositionen ür eine Teilolge Anwendung: paralleles Partitionieren (paralleler Quicksort) gegeben: Prädikat (>4) und Liste [2,7,6,4,8,2] gesucht: Positionen in der Teilolge der Zahlen, die das Prädikat erüllen Eingabe: [2,7,6,4,8,2] Maske: [0,1,1,0,1,0] 1 gdw. Prädikat erüllt Osets: [0,0,1,2,2,3,3] Präixsumme von Maske (scanl (+) 0) Ergebnis: [0,0,1,2,2,3] Ergebnis ist elementweise Verknüpung (zipwith) aus Maske (Farbe) und Osets (Wert), kleinere Liste bestimmt Länge Verwende statt Farbe Nothing und Just im Ergebnis: [Nothing,Just 0,Just 1,Nothing,Just 2,Nothing]

18 Funktionale Programmierung (WS2005/2006) 3/18 Anwendung von scanl, Bsp.: positions x 0 x 1 x n e 0 e 0 e 1 e 2 e n e n+1 scanl :: (a -> b -> a) -> a -> [b] -> [a] positions :: (a->bool) -> [a] -> [Maybe Int] positions pred xs = let mask = [ i pred x then 1 else 0 x<-xs ] [0,1,1,0,1,0] osets = scanl (+) 0 mask [0,0,1,2,2,3,3] m o = i m==0 then Nothing else Just o in zipwith mask osets

19 Funktionale Programmierung (WS2005/2006) 3/19 Anwendung von mapaccuml, nochmal: positions Vorteil: nur ein Listendurchlau, keine temporären Datenstrukturen x 0 x 1 x n e e y 0 y 1 y n mapaccuml :: (a->x->(a,y)) -> a -> [x] -> (a,[y]) positions :: (a->bool) -> [a] -> [Maybe Int] positions pred xs = let acc x = i pred x then (acc+1,just acc) else (acc,nothing) in snd (mapaccuml 0 xs)

20 Funktionale Programmierung (WS2005/2006) 3/20 Kombinatoren au Bäumen Baumtyp (eine Art): data Tree element = Node element [Tree element] Beispiel: tree1 :: Tree String tree1 = Node "" [Node "a" [Node "aa" [], Node "ab" [Node "aba" [], Node "abb" [Node "abba" [], Node "abbb" [], Node "abbc" []], Node "abc" []] ], Node "b" [Node "ba" [], Node "bb" [Node "bba" []]], Node "c" [Node "ca" [Node "caa" []]]]

21 Funktionale Programmierung (WS2005/2006) 3/21 Deinition Anwendung einer Funktion au alle Knoten maptree :: (a->b) -> Tree a -> Tree b maptree (Node x subtrees) = Node ( x) (map (maptree ) subtrees) Beispiel *Tree> maptree length tree1 Node 0 [Node 1 [Node 2 [], Node 2 [Node 3 [], Node 3 [Node 4 [], Node 4 [], Node 4 []], Node 3 []]], Node 1 [Node 2 [], Node 2 [Node 3 []]], Node 1 [Node 2 [Node 3 []]]]

22 Funktionale Programmierung (WS2005/2006) 3/22 Deinition Reduktion (old) au Bäumen oldtree :: (a->[b]->b) -> Tree a -> b oldtree (Node x subtrees) = x (map (oldtree ) subtrees) Bsp.: Summierung aller Zahlen in einem Baum sumelems :: Num a => Tree a -> a sumelems = let nodeval subtreesums = nodeval + sum subtreesums in oldtree *Tree> let tree2 = maptree length tree1 *Tree> sumelems tree2 40

23 Funktionale Programmierung (WS2005/2006) 3/23 Tieendurchlau von Bäumen preorder, inorder, postorder :: Tree a -> [a] preorder = let pre x xss = x : concat xss in oldtree pre postorder = let post x xss = concat xss ++ [x] in oldtree post inorder = let second x [] = [x] second x (xs:xss) = xs ++ (x : concat xss) in oldtree second

24 Funktionale Programmierung (WS2005/2006) 3/24 Breitendurchlau von Bäumen Hilsmittel: algorithmisches Skelett workqueue workqueue :: (a->([b],[a])) -> [a] -> [b] workqueue xs = wq xs [] where wq [] acc = acc wq (x:xs) acc = let (out,app) = x in wq (xs++app) (acc++out) Implementierung des Breitendurchlaus breadthorder hänge aktuellen Knotenwert an Ergebnisliste acc an hänge Unterbäume an die Warteschlange xs an breadthorder :: Tree a -> [a] breadthorder t = workqueue [t] where (Node x subtrees) = ([x],subtrees)

25 Funktionale Programmierung (WS2005/2006) 3/25 Suche in Bäumen 1. erzeuge eine Liste mit den Elementen in der gewünschten Ordnung 2. suche das erste Element in der Liste, welches das Prädikat pred erüllt depthfirstsearch, breadthfirstsearch :: (a->bool) -> Tree a -> Maybe a depthfirstsearch pred = maybehead. ilter pred. preorder breadthfirstsearch pred = maybehead. ilter pred. breadthorder Wegen der Laziness von Haskell wird die Datenstruktur nur soweit durchlauen, bis das entsprechende Element geunden wurde. maybehead :: [a] -> Maybe a maybehead [] = Nothing maybehead (x:_) = Just x

26 Funktionale Programmierung (WS2005/2006) 3/26 *Tree> preorder tree1 ["","a","aa","ab","aba","abb","abba","abbb","abbc","abc", "b","ba","bb","bba","c","ca","caa"] *Tree> postorder tree1 ["aa","aba","abba","abbb","abbc","abb","abc","ab","a","ba", "bba","bb","b","caa","ca","c",""] *Tree> inorder tree1 ["aa","a","aba","ab","abba","abb","abbb","abbc","abc","", "ba","b","bba","bb","caa","ca","c"] *Tree> breadthorder tree1 ["","a","b","c","aa","ab","ba","bb","ca","aba","abb","abc", "bba","caa","abba","abbb","abbc"] *Tree> let pred x = length x > 0 && last x == b *Tree> depthfirstsearch pred tree1 Just "ab" *Tree> breadthfirstsearch pred tree1 Just "b"

27 Funktionale Programmierung (WS2005/2006) 3/27 Verallgemeinerung von map: map map und maptree unterscheiden sich nur in der Datenstruktur (Liste/Baum). Typkonstruktoren ür Listen ([]), Bäume (Tree) und andere Datenstrukturen sind sogenannte Funktoren ( Kategorientheorie). in Haskell gibt es eine Typklasse ür Funktoren: class Functor where map :: (a -> b) -> ( a -> b) Instanzen von Functor sollten olgende Bedingungen erüllen: (1) map id = id (2) map (. g) = map. map g

28 Funktionale Programmierung (WS2005/2006) 3/28 Listen instance Functor [] where map = map Prelude> map (^2) [2,3,4] [4,9,16] Bäume Instanzen von Functor instance Functor Tree where map = maptree *Tree> map (^2) (Node 3 [Node 4 [], Node 5 []]) Node 9 [Node 16 [],Node 25 []]

29 Funktionale Programmierung (WS2005/2006) 3/29 Maybe instance Functor Maybe where map Nothing = Nothing map (Just x) = Just ( x) Prelude> map (^2) (Just 3) Just 9 Arrays instance (Ix a) => Functor (Array a) where (a:indexmenge) map n (MkArray b ) = MkArray b (n. ) Prelude Array> map (^2) (array ((0,0),(1,1)) [((0,0),3),((0,1),6), ((1,0),5), ((1,1),2)]) array ((0,0),(1,1)) [((0,0),9),((0,1),36),((1,0),25),((1,1),4)]

30 Funktionale Programmierung (WS2005/2006) 3/30 Das Skelett Divide-and-Conquer (1) Paradigma Divide-and-Conquer: alls das Problem einach ist, löse es direkt sonst 1. teile das Problem in unabhängige Teile gleichen Typs 2. wende das Verahren rekursiv au jedes Teilproblem an 3. kombiniere die Lösungen der Teile zur Gesamtlösung

31 Funktionale Programmierung (WS2005/2006) 3/31 Das Skelett Divide-and-Conquer (2) Problem Problem Problem Problem Problem Problem Lösung Lösung Lösung Lösung Lösung Lösung

32 Funktionale Programmierung (WS2005/2006) 3/32 Das Skelett Divide-and-Conquer (3) dc :: (a->bool)->(a->b)->(a->[a])->(a->[b]->b)->a->b dc p b d c = dcprg where dcprg x = i p x then b x else c x (map dcprg (d x)) Instanzierung mit problemspeziischen Funktionen: 1. p::(a->bool) stellt est, ob das Problem einach ist 2. b::(a->b) löst das Problem direkt 3. d::(a->[a]) teilt das Problem in eine Liste von Teilproblemen 4. c::(a->[b]->b) verbindet die Teillösungen dcprg::(a->b) ist das resultierende Programm

33 Funktionale Programmierung (WS2005/2006) 3/33 Anwendung von dc (1): unktionales quicksort quicksort :: Ord a => [a] -> [a] quicksort = dc p b d c where p xs = length xs < 2 b xs = xs d (x:xs) = let (a,b) = partition (<x) xs in [a,b] c (x:_) [a,b] = a ++ (x : b)

34 Funktionale Programmierung (WS2005/2006) 3/34 Anwendung von dc (2): Damenproblem Eingabe: Anzahl der Zeilen/Spalten des Schach bretts Ausgabe: Liste aller Lösungen, bei jeder Lösung: Element i der Liste enthält Spaltenposition der Dame, die in Zeile i steht queens :: Int -> [[Int]] queens n = dc p b d c ([],[0..n-1]) where p (_,remain) = null remain b (placed,_) = [placed] d (placed,remain) = [ (placed++[i],ilter (/=i) remain) i <- remain, not (diagonal_attack i) ] where diagonal_attack i = or [ length placed - j == abs (i - placed!!j) j<-[0..length placed -1] ] c _ = concat

35 Funktionale Programmierung (WS2005/2006) 3/35 Skelett ramp (reduce-and-map-over-pairs) beschreibt wechselseitigen Einluß von Objekten ramp :: (a->a->b) -> (b->b->b) -> [a] -> [b] ramp g xs = map h xs where h x = oldr1 g (map ( x) xs) Anwendung: Simulation eines Systems von Planeten (nbody) nbody :: [Planet] -> [[Planet]] nbody ps = ps : nbody (map newpos (zip ps (ramp calcf sumfs ps))) newpos :: (Planet,Force) -> Planet neue Beschleunigung, Geschwindigkeit, Position calcf :: Planet -> Planet -> Force Gravitationskrat zwischen zwei Objekten sumfs :: Force -> Force -> Force Vektoraddition von Kräten

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

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

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

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Typdeklarationen. Es gibt in Haskell bereits primitive Typen: Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen:

Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen: Ein- und Ausgabe Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen: fun p r i n t T r e e printa t = c a s e t o f Leaf a => ( p r i n t Leaf ; printa a ) Node ( l, a, r ) => ( p r i n

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Eine zu Grunde liegende Typdefinition beschreibt eine Struktur, die alle erlaubten Instanzen dieses Typs gemeinsam haben.

Eine zu Grunde liegende Typdefinition beschreibt eine Struktur, die alle erlaubten Instanzen dieses Typs gemeinsam haben. Der binäre Baum Tree Die geläufigste Datenstuktur ist der binäre Baum Tree. Dieses Beispielskript zeigt im direkten Vergleich zu anderen Sprachen den Umgang mit formalen Typparametern in CHELSEA. Wir steigen

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Paradigmen der Programmierung

Paradigmen der Programmierung SS 11 Prüfungsklausur 25.07.2011 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)]

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

6.2 Scan-Konvertierung (Scan Conversion)

6.2 Scan-Konvertierung (Scan Conversion) 6.2 Scan-Konvertierung (Scan Conversion) Scan-Konvertierung ist die Rasterung von einfachen Objekten (Geraden, Kreisen, Kurven). Als Ausgabemedium dient meist der Bildschirm, der aus einem Pixelraster

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE

LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE STOTAX GEHALT UND LOHN Stollfuß Medien LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE Stand 09.12.2009 Seit dem Januar 2006 hat der Gesetzgeber die Fälligkeit der SV-Beiträge vorgezogen. So kann es vorkommen,

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

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR) Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR) Eine Firma stellt USB-Sticks her. Sie werden in der Fabrik ungeprüft in Packungen zu je 20 Stück verpackt und an Händler ausgeliefert. 1 Ein Händler

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

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

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 6: Induktives Vorgehen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Zentrale: T: 07121/69509-0 F: 07121/69509-50 Technik: T: 07121/69509-30 ecommerce: T: 07121/69509-20 Software: T: 07121/69509-10 E-Mail Web

Mehr

WS 2008/09. Diskrete Strukturen

WS 2008/09. Diskrete Strukturen WS 2008/09 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0809

Mehr

AUF LETZTER SEITE DIESER ANLEITUNG!!!

AUF LETZTER SEITE DIESER ANLEITUNG!!! BELEG DATENABGLEICH: Der Beleg-Datenabgleich wird innerhalb des geöffneten Steuerfalls über ELSTER-Belegdaten abgleichen gestartet. Es werden Ihnen alle verfügbaren Belege zum Steuerfall im ersten Bildschirm

Mehr

Wie löst man Mathematikaufgaben?

Wie löst man Mathematikaufgaben? Wie löst man Mathematikaufgaben? Manfred Dobrowolski Universität Würzburg Wie löst man Mathematikaufgaben? 1 Das Schubfachprinzip 2 Das Invarianzprinzip 3 Das Extremalprinzip Das Schubfachprinzip Verteilt

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang 16 8307 Effretikon

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang 16 8307 Effretikon WinWerk Prozess 6a Rabatt gemäss Vorjahresverbrauch 8307 Effretikon Telefon: 052-740 11 11 Telefax: 052-740 11 71 E-Mail info@kmuratgeber.ch Internet: www.winwerk.ch Inhaltsverzeichnis 1 Ablauf der Rabattverarbeitung...

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

Semantik von Formeln und Sequenzen

Semantik von Formeln und Sequenzen Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt

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

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Je nach BüroWARE Version kann sich das Menü des Datenbankassistenten von den Bildschirmausdrucken in unserem Leitfaden unterscheiden. Der

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel von Ricardo Gantschew btk Berlin Dozent / Till Nagel 01 IDEE Einige kennen vielleicht GoogleTrends. Hierbei handelt es sich um eine Anwendung, bei der man verschiedenste Begriffe auf die Häufigkeit ihrer

Mehr

Erweiterungen Webportal

Erweiterungen Webportal Erweiterungen Webportal Adress-Suche Inaktive Merkmale und gelöschte Adresse Die Suche im Webportal wurde so erweitert, dass inaktive Adresse (gelöscht) und inaktive Merkmale bei der Suche standardmässig

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9 Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9 Prof. Dr. W. Conen Version 1.0c Januar 2009 Genereller Ablauf der Suche Gegeben: Variablen X, Domains D, Constraints R (explizit

Mehr

Scala kann auch faul sein

Scala kann auch faul sein Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Abb. 1 Einstellungen Supervisor Oprionen Gebäude-/Verteilertätigkeit

Abb. 1 Einstellungen Supervisor Oprionen Gebäude-/Verteilertätigkeit PS3: Im Verteilerprotokoll fehlen die Messwerte der einzelnen Stromkreise, bzw. es ist keine Verteilertätigkeit erstellt worden (das betrifft analog auch das Protokoll für ein Gebäude). Mögliche Ursachen:

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

[10] Software Transactional Memory in Haskell, Tortenwurf und Aufgabenblatt 7

[10] Software Transactional Memory in Haskell, Tortenwurf und Aufgabenblatt 7 Haskell Live [10 Software Transactional Memory in Haskell, Tortenwurf und Aufgabenblatt 7 Bong Min Kim e0327177@student.tuwien.ac.at Christoph Spörk christoph.spoerk@inode.at Bernhard Urban lewurm@gmail.com

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang 16 8307 Effretikon

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang 16 8307 Effretikon Prozess 4 Akonto WinWerk 8307 Effretikon Telefon: 052-740 11 11 Telefax: 052 740 11 71 E-Mail info@kmuratgeber.ch Internet: www.winwerk.ch Inhaltsverzeichnis 1 Akonto... 2 1.1 Allgemein... 2 2 Akontobeträge

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte 50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien

Mehr

2015-06-11 Tagesprogramm

2015-06-11 Tagesprogramm 1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme

Mehr