WS 2011/2012. Georg Sauthoff 1. October 26, 2011

Größe: px
Ab Seite anzeigen:

Download "WS 2011/2012. Georg Sauthoff 1. October 26, 2011"

Transkript

1 WS 2011/2012 Georg 1 AG Praktische Informatik October 26, gsauthof@techfak.uni-bielefeld.de

2 pea*nuts pea*nuts steht für probieren, erfahren, anwenden - Naturwissenschaften und Technik für Schülerinnen und ist das Motto für die Herbsthochschule. Jedes Jahr in den Herbstferien öffnet die Uni Bielefeld eine Woche lang ihre Türen für Schülerinnen der Jahrgangstufen und bietet ihnen vielseitige Einblicke in den Studienalltag an den Fakultäten für Mathematik, Physik und der Technischen Fakultät. SchuelerInnen/Buero/peanuts.html

3 Feiertag ist ein Feiertag Abgabe per Mail oder am in der Haskell-Vorlesung Neue Aufgabenblätter am in der Haskell-Vorlesung

4 Array Random-Access mehrere Dimensionen Modul Array stellt Funktionen bereit array liefert ein Array zurück! ist der Zugriffsoperator

5 Array Random-Access mehrere Dimensionen Modul Array stellt Funktionen bereit array liefert ein Array zurück! ist der Zugriffsoperator 1 a r r a y : : ( I x a ) => ( a, a ) > [ ( a, b ) ] > Array a b 2 3 a r r a y ( m i n _ i n d i c e s, max_indices ) l i s t _ o f _ e n t r i e s =...

6 Array Random-Access mehrere Dimensionen Modul Array stellt Funktionen bereit array liefert ein Array zurück! ist der Zugriffsoperator 1 a r r a y : : ( I x a ) => ( a, a ) > [ ( a, b ) ] > Array a b 2 3 a r r a y ( m i n _ i n d i c e s, max_indices ) l i s t _ o f _ e n t r i e s =... 1 (!) :: (Ix a) => Array a b -> a -> b

7 Beispiel 1 > module Arr 2 > where 3 4 > import Array 5 6 > t a b l e = a r r a y ( ( 0, 0 ), ( 2, 2) ) 7 > [ 8 > ( ( 0, 0 ), 0 ), 9 > ( ( 0, 1 ), 1 ), 10 > ( ( 0, 2 ), 2 ), 11 > ( ( 1, 0 ), 3 ), 12 > ( ( 1, 1 ), 4 ), 13 > ( ( 1, 2 ), 5 ), 14 > ( ( 2, 0 ), 6 ), 15 > ( ( 2, 1 ), 7 ), 16 > ( ( 2, 2 ), 8 ) 17 > ] > a c c e s s a b = t a b l e! ( a, b )

8 Alternative Pattern Matching als Alternative für read-only Felder vs. Feldgröße

9 Alternative Example Pattern Matching als Alternative für read-only Felder vs. Feldgröße 1 access 0 0 = 0 2 access 0 1 = 1 3 access 0 2 = 2 4 access 1 1 =

10 Algebraische Datentypen Eigenschaften eines Algebraischen Datentyp: Werte sind Konstruktoren Konstruktoren haben Argumente Stelligkeit (arity) Konstruktoren werden großgeschrieben Algebraische Datentypen können parametrisiert sein

11 Algebraische Datentypen Allgemeine Form der Deklaration: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr

12 Algebraische Datentypen Allgemeine Form der Deklaration: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr T Typkonstruktor C i a i t ij (Daten-)Konstruktoren Typvariablen Typen oder Typvariablen

13 Beispiel 1 data Bool = True 2 False

14 Beispiel 1 data Bool = True 2 False keine Parameter Konstruktoren sind True und False

15 Beispiel 1 data Bool = True 2 False keine Parameter Konstruktoren sind True und False beide null-stellig (nullary (data) constructor) Pattern matching auf den Konstruktoren

16 Beispiel 1 data Bool = True 2 False keine Parameter Konstruktoren sind True und False beide null-stellig (nullary (data) constructor) Pattern matching auf den Konstruktoren Konstruktor meint immer (Daten-)Konstruktor

17 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin

18 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin 1 data Temperatur = Temp Float Einheit

19 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin 1 data Temperatur = Temp Float Einheit Konstruktor Temp hat zwei Datentypen als Argumente

20 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin 1 data Temperatur = Temp Float Einheit Konstruktor Temp hat zwei Datentypen als Argumente 1 data Temp = Temp Float Einheit

21 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin 1 data Temperatur = Temp Float Einheit Konstruktor Temp hat zwei Datentypen als Argumente 1 data Temp = Temp Float Einheit Typkonstruktoren und (Daten-)Konstruktoren haben eigene Namensräume

22 Beispiel 1 Temp 506 Kelvin :: Temperatur

23 Beispiel 1 Temp 506 Kelvin :: Temperatur 1 celsius2kelvin :: Float - > Temperatur 2 celsius2kelvin t = Temp ( t ) Kelvin 3 4 kel vin2fa hrenhe it :: Float - > Temperatur 5 kel vin2fa hrenhe it t = 6 Temp (t *9/ ) Fahrenheit

24 Beispiel 1 conv :: Temperatur - > Einheit - > Temperatur 2 conv ( Temp t Celsius ) Kelvin = 3 Temp ( t ) Kelvin 4 conv ( Temp t Kelvin ) Fahrenheit = 5 Temp (t *9/ ) Fahrenheit 6...

25 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing

26 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Argument

27 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Argument Weitere Form der Fehlerbehandlung

28 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Argument Weitere Form der Fehlerbehandlung 1 > divide a b = 2 > if b == 0 then error " divide by zero " 3 > else div a b

29 Beispiel: Maybe 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Argument Weitere Form der Fehlerbehandlung 1 > divide a b = 2 > if b == 0 then error " divide by zero " 3 > else div a b Mit Maybe: 1 > divide a b 2 > b == 0 = Nothing 3 > otherwise = Just ( div a b)

30 Beispiel: Maybe Signatur: 1 divide :: ( Num a) => a -> a -> Maybe a

31 Beispiel: Maybe Signatur: 1 divide :: ( Num a) => a -> a -> Maybe a Pattern matching: 1 f a b = extract ( divide a b) where 3 extract ( Just x) = x 4 extract Nothing = 0

32 Beispiel: Listen 1 data List a = Cons a ( List a) 2 Nil

33 Beispiel: Listen 1 data List a = Cons a ( List a) 2 Nil parametrisiert Algebraischer Datentyp ist rekursiv definiert

34 Beispiel: Listen 1 data List a = Cons a ( List a) 2 Nil parametrisiert Algebraischer Datentyp ist rekursiv definiert eingebauter Version enthällt syntaktischen Zucker: : cons [] nil [] Typname Listen-Notationen

35 Beispiel: Listen Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[]

36 Beispiel: Listen Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[] Cons 1 Cons 2 Cons 3 Cons 4 Cons 5 Nil

37 Beispiel: Listen Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[] Cons : 1 Cons 1 : 2 Cons 2 : 3 Cons 3 : 4 Cons 4 : 5 Nil 5 []

38 Beispiel: Tupel Siehe Tafel

39 Derived instance declarations Optionale deriving Form: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr deriving (k 1,..., k u )

40 Derived instance declarations Optionale deriving Form: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr deriving (k 1,..., k u ) k x Typklassen für bestimmte Klassen können Instanzen automatisch erzeugt werden

41 Derived instance declarations Optionale deriving Form: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr deriving (k 1,..., k u ) k x Typklassen für bestimmte Klassen können Instanzen automatisch erzeugt werden vs. explizite Definition

42 Derived instance declarations Optionale deriving Form: data T a 1... a m = C 1 t t 1n1... C r t r1... t rnr deriving (k 1,..., k u ) k x Typklassen für bestimmte Klassen können Instanzen automatisch erzeugt werden vs. explizite Definition Example 1 data Maybe a = Just a 2 Nothing 3 deriving ( Eq, Ord, Read, Show )

43 Modellierung von cis des dis es fis gis ais ges as b cis des dis es fis gis ais ges as b c d e f g a h c d e f g a h Quelle: Public Domain

44 Modellierung von 1 > module where 2 > import Ratio 3 4 > i n f i x r 7 : : 5 > i n f i x r 6 :+: 6 7 > type GanzeZahl = I n t 8 > type Bruch = Ratio I n t 9 10 > type Ton = GanzeZahl 11 > type Dauer = Bruch > data = 14 > Note Ton Dauer 15 > Pause Dauer 16 > : : h i n t e r e i n a n d e r 17 > :+: g l e i c h z e i t i g 18 > I n s t r I n s t r u m e n t 19 > Tempo GanzeZahl S c h l a e g e pro Minute 20 > d e r i v i n g Show

45 Modellierung von 22 > data Instrument = 23 > AcousticGrandPiano 24 > BrightAcousticPiano > TelephoneRing 48 > Helicopter 49 > Applause 50 > Gunshot 51 > deriving ( Show, Enum )

46 Modellierung von Sieben Ganztöne: c d e f g a h Halbtöne über den Tönen: cis dis eis fis gis ais his Halbtöne unter den Tönen: ces des es fes ges as b cis des dis es fis gis ais ges as b cis des dis es fis gis ais ges as b c d e f g a h c d e f g a h

47 Modellierung von 19 > module Helper where > import > ce, c i s, des, de, d i s, es, eh, e i s, f e s : : Ton 25 > ef, f i s, ges, ge, g i s, as, ah, a i s, be, ha, h i s : : Ton cis des dis es fis gis ais ges as b cis des dis es fis gis ais ges as b c d e f g a h c d e f g a h

48 Modellierung von 19 > module Helper where > import > ce, c i s, des, de, d i s, es, eh, e i s, f e s : : Ton 25 > ef, f i s, ges, ge, g i s, as, ah, a i s, be, ha, h i s : : Ton > ce = 0 ; c i s = 1 ; des = 1 28 > de = 2 ; d i s = 3 ; e s = 3 29 > eh = 4 ; e i s = 5 ; f e s = 4 30 > e f = 5 ; f i s = 6 ; ges = 6 31 > ge = 7 ; g i s = 8 ; as = 8 32 > ah = 9 ; a i s = 10 ; be = > ha = 11 ; h i s = 12

49 Formeln, die bedeuten 1 Note 0 ( 1/ 4) -- Viertelnote tiefes C 2 Note 24 (1/1) -- ganze Note c 3 Pause ( 1/ 16) -- Sechzehntelpause 4 5 Note 24 (1/4) :*: Note 26 (1/4) :*: Note 28 (1/4) 6 -- Anfang der C- Dur Tonleiter ( c 7 8 Note 24 ( 1/ 4) :+: Note 28 ( 1/ 4) :+: Note 31 ( 1/ 4) 9 -- C-Dur Akkord (c,e,g) Tempo 70 m -- m als Adagio 12 Tempo 180 m -- m als Presto 13 Instr Oboe m -- m von Oboe gespielt 14 Instr VoiceAahs m -- m gesummt

50 Abkürzungen 35 > gp, hp, vp, ap, sp :: > gp = Pause ( 1/ 1) 38 > hp = Pause ( 1/ 2) 39 > vp = Pause ( 1/ 4) 40 > ap = Pause ( 1/ 8) 41 > sp = Pause ( 1/ 16)

51 Abkürzungen 35 > gp, hp, vp, ap, sp :: > gp = Pause ( 1/ 1) 38 > hp = Pause ( 1/ 2) 39 > vp = Pause ( 1/ 4) 40 > ap = Pause ( 1/ 8) 41 > sp = Pause ( 1/ 16) 43 > adagio, andante, allegro, presto :: GanzeZahl > adagio = > andante = > allegro = > presto = 180

52 Abkürzungen 50 > c, d, e, f, g, a, h, c : : Dauer > > c u = Note ( ce +24) u 53 > d u = Note ( de +24) u 54 > e u = Note ( eh +24) u 55 > f u = Note ( e f +24) u 56 > g u = Note ( ge +24) u 57 > a u = Note ( ah +24) u 58 > h u = Note ( ha +24) u 59 > c u = Note ( ce +36) u

53 Zusammengesetzte Klänge 61 > cdurtonika : : > cdurtonika = c (1/1) :+: e (1/1) :+: g (1/1)

54 Zusammengesetzte Klänge 61 > cdurtonika : : > cdurtonika = c (1/1) :+: e (1/1) :+: g (1/1) > cdurskala = Tempo a l l e g r o ( 66 > c (3/8) : : d (1/8) : : e (3/8) : : f (4/8) 67 > : : g (1/8) : : a (1/4) : : h (1/8) 68 > : : c ( 1 / 2 ) )

55 Zusammengesetzte Klänge 61 > cdurtonika : : > cdurtonika = c (1/1) :+: e (1/1) :+: g (1/1) > cdurskala = Tempo a l l e g r o ( 66 > c (3/8) : : d (1/8) : : e (3/8) : : f (4/8) 67 > : : g (1/8) : : a (1/4) : : h (1/8) 68 > : : c ( 1 / 2 ) ) 70 > d u r D r e i k l a n g t = Note t (1/1) :+: Note ( t +4) (1/1) 71 > :+: Note ( t +7) (1/1) > m o l l D r e i k l a n g t = Note t (1/1) :+: Note ( t +3) (1/1) 74 > :+: Note ( t +4) (1/1)

56 Transponierung 79 > t r a n s p o n i e r e : : Ton > > > t r a n s p o n i e r e i ( Pause d ) = Pause d 82 > t r a n s p o n i e r e i ( Note t d ) = Note ( t+i ) d 83 > t r a n s p o n i e r e i (m1 : : m2) = ( t r a n s p o n i e r e i m1) 84 > : : ( t r a n s p o n i e r e i m2) 85 > t r a n s p o n i e r e i (m1 :+: m2) = ( t r a n s p o n i e r e i m1) 86 > :+: ( t r a n s p o n i e r e i m2)

57 Verschiedenes 92 > wdh : : > 93 > wdh m = m : : m > a d _ i n f i n i t u m : : > 96 > a d _ i n f i n i t u m m = m : : a d _ i n f i n i t u m m > e i n s a t z d m = ( Pause d ) : : m

58 Bruder Jakob: Text Bruder Jakob, Bruder Jakob Schläfst du noch? Schläfst du noch? : Hörst du nicht die Glocken? : Ding dang dong, ding dang dong. Quelle: FrereJacques1pt.png&filetimestamp= , Public Domain

October 29, Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Typ-Synonyme. Algebraische Datentypen

October 29, Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Typ-Synonyme. Algebraische Datentypen Universität Bielefeld AG Praktische Informatik October 29, 2014 Typsynonyme Neue Typnamen durch Typsynonyme: 1 type Pair a b = (a,b) 2 type Triple a b c = (a,b,c) 3 type OrdList a = [ a] definiert neue

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WS 2011/2012. Georg Sauthoff 1. October 18, 2011

WS 2011/2012. Georg Sauthoff 1. October 18, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 gsauthof@techfak.uni-bielefeld.de Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)

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

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

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

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

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

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

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

Programmieren in Haskell

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

Mehr

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

Zahlen in Haskell Kapitel 3

Zahlen in Haskell Kapitel 3 Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel

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

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

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

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

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

9 Algebraische Datentypen

9 Algebraische Datentypen 9 Algebraische Datentypen Dieses Kapitel erweitert Haskells Typsystem, das neben Basistypen (Integer, Float, Char, Bool,... ) und Typkonstruktoren ([ ] und ( )) auch algebraische Datentypen kennt. Ganz

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

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

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

Mehr

Ü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

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

Grundlagen der Programmierung 3 A

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

Mehr

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

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

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

Mehr

Arbeitsblätter: Noten schreiben

Arbeitsblätter: Noten schreiben Arbeitsblätter: Noten schreiben Diese Seiten enthalten umfangreiche und systematisch angelegte Arbeitsblätter zum Thema Noten lernen. Diese können als Lernzielkontrolle oder einfach nur zur Übung eingesetzt

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

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

Monaden. 14. Januar 2015

Monaden. 14. Januar 2015 Universität Bielefeld AG Praktische Informatik 14. Januar 2015 Imperativ nennt man Progamiersprachen, die mit Anweisungen operieren. Jede Anweisung hat Wirkungen auf einen globalen Zustand, der wiederum

Mehr

Typklassen und Überladung in Haskell

Typklassen und Überladung in Haskell Typklassen und Überladung in Haskell Überladung: Es gibt mehrere Funktionen mit gleichem Namen. der Typ der Argumente bestimmt, welche gemeint ist. (1; i) + (3; 2i) statt (1, i) complexadd (3; 2i). Haskell-Typklassen:

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

Visuelle Kryptographie. Anwendung von Zufallszahlen

Visuelle Kryptographie. Anwendung von Zufallszahlen Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,

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

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

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

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

Algorithmen und Datenstrukturen. und. Programmieren in Haskell

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

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 3 vom : Algebraische Datentypen

Praktische Informatik 3: Funktionale Programmierung Vorlesung 3 vom : Algebraische Datentypen 16:01:59 2017-01-17 1 [35] Praktische Informatik 3: Funktionale Programmierung Vorlesung 3 vom 01.11.2016: Algebraische Datentypen Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS 16/17

Mehr

11 Fallstudie: Reguläre Ausdrücke

11 Fallstudie: Reguläre Ausdrücke 11 Fallstudie: Reguläre Ausdrücke Mit den bisher eingeführten Sprachelementen von Haskell lassen sich bereits substantielle Projekte realisieren. Dieses Kapitel 1 beschreibt einen algebraischen Datentyp

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

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

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

Funktionen höherer Ordnung. 3. Dezember 2014

Funktionen höherer Ordnung. 3. Dezember 2014 höherer Ordnung Universität Bielefeld AG Praktische Informatik 3. Dezember 2014 höherer Ordnung Worum geht es heute? In Haskell gibt es, die als Argument haben oder als Ergebnis liefern. Diese nennt man

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

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

[05] Aufgabenblatt 3 [doch nicht :-]

[05] Aufgabenblatt 3 [doch nicht :-] Haskell Live [05] Aufgabenblatt 3 [doch nicht :-] Bong Min Kim e0327177@student.tuwien.ac.at Christoph Spörk christoph.spoerk@inode.at Bernhard Urban lewurm@gmail.com 5. November 2010 Florian Hassanen

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

Programmierung und Modellierung

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

Mehr

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

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

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

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

Mehr

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

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

[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

Haskell Style Guide. Björn Peemöller. 15. April 2013

Haskell Style Guide. Björn Peemöller. 15. April 2013 Haskell Style Guide Björn Peemöller 15. April 2013 Dieses Dokument enthält eine Anleitung für den bevorzugten Haskell-Programmierstil im Rahmen der Vorlesung Fortgeschrittene Programmierung. Der Stil ist

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom : Funktionen und Datentypen

Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom : Funktionen und Datentypen Rev. 1843 1 [35] Praktische Informatik 3: Funktionale Programmierung Vorlesung 2 vom 23.10.2012: Funktionen und Datentypen Christoph Lüth Universität Bremen Wintersemester 2012/13 2 [35] Fahrplan Teil

Mehr

N O T E N N A M E N D I E V O R Z E I C H E N

N O T E N N A M E N D I E V O R Z E I C H E N D I E N O T E N N A M E N Die Töne der C-dur Tonleiter entsprechen den weißen Tasten auf dem Klavier. D I E V O R Z E I C H E N Jeder dieser Töne kann durch Vorzeichen (# oder b) um einen Halbton erhöht

Mehr

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil IVb WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung. ALP I Lambda-Kalkül. Teil IVb WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I Lambda-Kalkül Teil IVb WS 2012/2013 λ-kalkül-parser Hilfsfunktionen: Die break-funktion ist eine Funktion höherer Ordnung, die eine Liste beim ersten Vorkommen einer Bedingung in zwei Listen spaltet.

Mehr

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725 Haskell Seminar Abstrakte Datentypen Nils Bardenhagen ms2725 Gliederung Konzept Queue Module Sets Bags Flexible Arrays Fazit Abstrakte Datentypen (ADT) Definition: Eine Zusammenfassung von Operationen,

Mehr

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur

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

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Vorsicht bei redundanten und unvollständigen Matches!

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

Mehr

Algebraische Datentypen

Algebraische Datentypen 5 Algebraische Datentypen Wir haben in früheren Kapiteln schon gesehen, dass in einer funktionalen Sprache alle zusammengesetzten Datentypen wie Tupel, Listen und Bäume algebraische Datentypen sind. In

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

ROGER GILLIAR / MCS GMBH HASKELL FÜR JAVA PROGRAMMIERER

ROGER GILLIAR / MCS GMBH HASKELL FÜR JAVA PROGRAMMIERER ROGER GILLIAR / MCS GMBH HASKELL FÜR JAVA PROGRAMMIERER interface ImportantService { Double getmoney(); } ... sollte stets ein so genannter Kontrakt definiert werden, über den die Bedeutung der verschiedenen

Mehr

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079)

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079) XML Verarbeitung mit einer in Haskell eingebetteten DSL Manuel Ohlendorf (xi2079) 2.0.200 Manuel Ohlendorf Übersicht 1 2 Einführung Datenstruktur Verarbeitung Vergleich mit anderen Verfahren Fazit 2 Übersicht

Mehr

Von Mozart zur Informatik

Von Mozart zur Informatik CAU Kiel, 17.5.2006 MUSIK UND INFORMATIK Vielfältige Berührungspunkte: Computer-generierte Musik Informatikmethoden zur Speicherung von Musik (MP3) Von Mozart zur Informatik Wie programmiert man Musik?

Mehr

FAKULTÄT FÜR INFORMATIK

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

Mehr

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016 to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you

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

V. Tonleitern. 1. Dur, 2. Moll 3. Pentatonische Tonleiter, 4. Chromatische Tonleiter 5. Kirchentonleitern. Tonleitern. 1. Dur

V. Tonleitern. 1. Dur, 2. Moll 3. Pentatonische Tonleiter, 4. Chromatische Tonleiter 5. Kirchentonleitern. Tonleitern. 1. Dur V. Tonleitern 1. Dur, 2. Moll 3. Pentatonische Tonleiter, 4. Chromatische Tonleiter 5. Kirchentonleitern Tonleitern Aus einer Vielzahl von Tonleitermodellen haben sich zwei Tongeschlechter durchgesetzt:

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

Reelle Zahlen. Einzelzeichen. Bereiche. Aufzählungen. direkt zusammengesetzte Datentypen. einfache Datentypen: Zusammenfassung. kartesisches Produkt

Reelle Zahlen. Einzelzeichen. Bereiche. Aufzählungen. direkt zusammengesetzte Datentypen. einfache Datentypen: Zusammenfassung. kartesisches Produkt Werte Studiengang Informatik Universität Bremen Sommersemester 2006 (Vorlesung am 8. Mai 2006) Werte / Daten einfach direkt zusammengesetzt rekursiv zusammengesetzt Einfache Datentypen eingabaut Wahrheitswerte

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Kapitel 6: Typprüfung

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

Mehr

Dynamische Datentypen

Dynamische Datentypen Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel

Mehr

Einführung in die Funktionale Programmierung mit Haskell

Einführung in die Funktionale Programmierung mit Haskell Wiederholung Listen II Funktionsdefinition Einführung in die Funktionale Programmierung mit Haskell List-Comprehension, Patterns, Guards LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians

Mehr

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler)

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler) Fachbereich Informatik und Mathematik Institut für Informatik Vorsemesterkurs Informatik Sommersemester 2017 Aufgabenblatt Nr. 5A zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler) Laden Sie von der

Mehr

Grundlagen der Programmierung 2 (1.A)

Grundlagen der Programmierung 2 (1.A) Grundlagen der Programmierung 2 (1.A) Einführung Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2015 Grundlagen der Programmierung 2 Geplanter Inhalt der ersten Hälfte: Programmieren in Haskell Definitionen;

Mehr