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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Universität Bielefeld AG Praktische Informatik October 29, 2014

2 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 Namen, genannt, für bereits existieeremde Typen; hier im Beispiel für existierende Tupel-Typen und Listen. Dient ausschliesslich der Dokumentation. 1 newtype MyList a = [ a] führt ebenfalls einen NEUEN Typnamen analog zu [a] ein, der aber nicht als typgleich betrachtet wird. Verhindert gegenseitige Verwechslung von [a] und MyList a.

3 Neue werden als algebraische eingeführt. Werte des Datentyps sind Formeln, die aus Konstruktoren zusammengesetzt sind Konstruktoren sind Funktionen, die man deklarieren, aber nicht definieren muss. Konstruktornamen fangen mit Großbuchstaben an. können polymorph sein und Typ-Parameter haben. Meistens sind sie rekursiv - ein Wert kann einen Teil-Wert des gleichen Typs enthalten.

4 Beispiel 1 data Bool = True 2 False

5 Beispiel 1 data Bool = True 2 False keine Typ-Parameter, nicht rekursiv, nur zwei Werte Konstruktoren sind True und False

6 Beispiel 1 data Bool = True 2 False keine Typ-Parameter, nicht rekursiv, nur zwei Werte Konstruktoren sind True und False beide null-stellig (nullary (data) constructor) Funktionen nutzen pattern matching auf den Konstruktoren, z.b. der Operator &&: 1 False && y = False 2 True && y = y

7 Apropos Konstruktor Konstruktor meint immer (Daten-)Konstruktor.

8 Apropos Konstruktor Konstruktor meint immer (Daten-)Konstruktor. Einen Typnamen mit Parametern nennt man gelegentlich Typ-Konstruktor 1 data T a b =... Typ-Konstruktor T konstruiert aus Typen a und b den Typ T a b Wir vermeiden die Bezeichnung Typ-Konstruktor.

9 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten.

10 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten. 1 data Temperatur = Temp Float Einheit

11 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten. 1 data Temperatur = Temp Float Einheit (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden.

12 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten. 1 data Temperatur = Temp Float Einheit (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden. 1 data Temp = Temp Float Einheit -- erlaubt und 2 -- ueblich!

13 Beispiel 1 data Einheit = Celsius 2 Fahrenheit 3 Kelvin Neuer Typ mit genau drei Werten. 1 data Temperatur = Temp Float Einheit (Einziger) Konstruktor Temp hat zwei Argumente, deren Typen deklariert werden. 1 data Temp = Temp Float Einheit -- erlaubt und 2 -- ueblich! Typkonstruktoren und (Daten-)Konstruktoren haben getrennte Namensräume

14 Beispiel 1 Temp 506 Kelvin :: Temperatur

15 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 Das Beispiel ist inkonsequent, weil das Argument selbst nicht vom Typ Temperatur ist.

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

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

18 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

19 Beispiel: Listen Wenn man Listen noch einführen müßte... 1 data List a = Cons a ( List a) 2 Nil

20 Beispiel: Listen Wenn man Listen noch einführen müßte... 1 data List a = Cons a ( List a) 2 Nil polymorhper Typ (Typ-Parameter a) r Datentyp List ist rekursiv definiert

21 Beispiel: Listen Wenn man Listen noch einführen müßte... 1 data List a = Cons a ( List a) 2 Nil polymorhper Typ (Typ-Parameter a) r Datentyp List ist rekursiv definiert eingebaute Listentyp erlaubt syntaktischen Zucker: : Cons als Infix-Operator [] Nil [] Typ-Konstruktor, etwa in [Int] Spezielle Listen-Notationen Auf selbstgemachten bekommen wir keine so schöne Notation.

22 Daten als Bäume dergestellt Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[]

23 Daten als Bäume dergestellt Example [1..5] = [1,2,3,4,5] = 1:2:3:4:5:[] Cons 1 Cons 2 Cons 3 Cons 4 Cons 5 Nil

24 Daten als Bäume dergestellt 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 []

25 Typ Maybe hilft aus einer Verlegenheit 1 data Maybe a = Just a 2 Nothing

26 Typ Maybe hilft aus einer Verlegenheit 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Parameter

27 Typ Maybe hilft aus einer Verlegenheit 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Parameter Eine Form der Fehlerbehandlung bzw. Vorbeugung, wenn eine Funktion ein Ergebnis liefert, das nicht in jedem Fall existiert

28 Typ Maybe hilft aus einer Verlegenheit 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Parameter Eine Form der Fehlerbehandlung bzw. Vorbeugung, wenn eine Funktion ein Ergebnis liefert, das nicht in jedem Fall existiert 1 > divide a b = 2 > if b == 0 then error " divide by zero " 3 > else div a b

29 Typ Maybe hilft aus einer Verlegenheit 1 data Maybe a = Just a 2 Nothing Konstruktor Just ist ein-stellig Typvariable a als Parameter Eine Form der Fehlerbehandlung bzw. Vorbeugung, wenn eine Funktion ein Ergebnis liefert, das nicht in jedem Fall existiert 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 Typ von divide: 1 divide :: ( Num a) => a -> a -> Maybe a

31 Beispiel: Maybe Typ von divide: 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 Was ist der Typ von extract?

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

33 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 das heißt, alle Operationen der Klassen werden auf dem neuen Typ T automatisch implementiert.

34 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 das heißt, alle Operationen der Klassen werden auf dem neuen Typ T automatisch implementiert. einfacher als explizite Definition, die auch möglich ist

35 ... deriving... Example 1 data Maybe a = Nothing 2 Just a 3 deriving ( Eq, Ord, Read, Show ) Damit sind Operationen wie == oder < auf dem Typ Maybe implementiert.

36 Und jetzt mal selber eine interessanten algebraischen Datentyp definieren!!

37 Konstruktoren mit benannten Feldern Nachtrag (der Vollständigkeit halber): Konstruktoren können mit Namen (field names) für ihre Argumente deklariert werden.. das kennt man aus anderen Sprachen als records Beispiel: Punkte im Koordinatensystem Neben der bisherigen Typ Definition wie z.b. 1 > data Point = Pt Float Float 2 Pol Float Float String deriving ( Show gibt es auch die Form 1 > data Point = Pt { pointx, pointy :: Float } 2 > Pol { angle, stretch :: Float, 3 > color :: String } deriving ( Show, Eq)

38 Verwendung der Konstruktoren Mit oder ohne Verwendung der Feldnamen 1 > p1 = Pt { pointx =1, pointy =2} 2 > p2 = Pt { pointy =2, pointx =1} 3 > p3 = Pol > p30 = Pol { angle =45, stretch =1} 5 6 > p4 = Pt { pointx =0, pointy =1} 7 > p5 = Pol { angle =90, stretch =1, color =" yellow "} Bei verwendung der Namen: Die Klammern sind notwendig die Reihenfolge ist beliebig

39 Nutzen der Feldnamen Feldnamen vorwiegend gebraucht bei Konstruktoren mit sehr vielen Argumenten Anordnung ist egal: Pt 1 2 = Pt{pointy=2, pointx=1} Feldnamen dienen als vordefinierte Selektoren mirror p = Pt {pointx= pointy p, pointy = pointx p} gleichnamige Feldnamen unter verschiedenen Konstruktoren sind erlaubt... mit gleichem Typ Nicht alle Felder müssen definiert werden: p30 = Pol{angle=45, stretch=1} lässt Feld color undefiniert im Unterschied zu p3 = Pol 45 1

40 Main> p30 "red" ERROR - Type error in application *** Expression : p30 "red" *** Term : p30 *** Type : Point *** Does not match : a -> b Subtiler Unterschied was geht hier vor? Main> p30 Pol {angle = 45.0, stretch = 1.0, color = " Program error: undefined field: Pol Main> p3 ERROR - Cannot find "show" function for: *** Expression : p3 *** Of type : String -> Point Main> p3 "red" Pol {angle = 45.0, stretch = 1.0, color = "red"}

41 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

42 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

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

44 Modellierung von Sieben Ganztöne: c d e f g a h Halbtöne über den Tönen: cis dis eis (= f) fis gis ais his (=c) Halbtöne unter den Tönen: ces (=h) des es fes (=e) 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

45 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

46 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

47 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

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

49 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

50 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

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

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

53 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 +7) (1/1)

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

55 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

56 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

57 Bruder Jakob: Bauelemente 00 > p h r a s e 1 = c (1/4) : : d (1/4) : : e (1/4) : : c (1/4) 01 > p h r a s e 2 = e (1/4) : : f (1/4) : : g (1/2) 02 > p h r a s e 3 = g (1/8) : : a (1/8) : : g (1/8) : : f (1/8) 03 > : : e (1/4) : : c (1/4) 04 > p h r a s e 4 = c (1/4) : : ( t r a n s p o n i e r e ( 12) ( g ( 1 / 4 ) ) ) : : c 05 > s t r o p h e = wdh p h r a s e 1 : : wdh p h r a s e 2 : : wdh p h r a s e 3 : : wdh

58 Bruder Jakob: Der ganze Kanon 07 e n d l o s = a d _ i n f i n i t u m s t r o p h e h i e r bekommen w i r S c h w i e r i g k 08 wenn w i r das i n MIDI umwande > e n d l o s = s t r o p h e : : s t r o p h e > b r u d e r Jakob = Tempo andante ( I n s t r ChoirAahs 13 > ( e i n s a t z (0/1) e n d l o s :+: 14 > ( e i n s a t z (2/1) ( t r a n s p o n i e r e 12 e n d l o s ) ) :+: 15 > ( e i n s a t z (4/1) e n d l o s ) :+: 16 > ( e i n s a t z (6/1) e n d l o s ) ) )

59 Bruder Jakob: Variante 18 Eine V a r i a n t e > bruderjakob2 = Tempo a l l e g r o ( I n s t r A c o u s t i c G r a n d P i a n o 21 > ( e i n s a t z (0/1) e n d l o s :+: 22 > ( e i n s a t z (2/1) ( t r a n s p o n i e r e 12 e n d l o s ) ) :+: 23 > ( e i n s a t z (4/1) e n d l o s ) :+: 24 > ( e i n s a t z (6/1) e n d l o s ) ) )

60 > t r i t o n u s _ f _ 1 = Note e f (1/1) :+: Note ha (1/1) 31 > t r i t o n u s t d = Note t d :+: Note ( t +6) d > t r i t o n u s _ f _ 1 : : 34 > t r i t o n u s : : Ton > Dauer > das ist hier der Übergang von einer Formel, die einen stück beschreibt, zu einer Funktion, die abhängig von ihren Parametern ein stück konstruiert. Sie erlaubt es uns, in unserer Formelsprache für auch harmonische Gesetze zu definieren. In der klassischen Notenschrift geht das nicht.

61 Wir verwenden bisher das Haskore-System. Der Nachfolger von Haskore ist Euterpea: Paul Hudak. The Haskell School of Music. 2.0 edition, http: //

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

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

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

Mehr

WS 2011/2012. 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

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

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

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

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

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

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

Generische Record-Kombinatoren mit statischer Typprüfung

Generische Record-Kombinatoren mit statischer Typprüfung System Generische mit statischer Typprüfung Brandenburgische Technische Universität Cottbus Lehrstuhl Programmiersprachen und Compilerbau Lehrstuhlkolloquium am 13. Januar 2010 Überblick System System

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

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

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 mit Haskell. Jan Hermanns

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

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Grundprinzipien der funktionalen Programmierung

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

Mehr

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

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

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

Mehr

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

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

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

[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

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

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...)

Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...) Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...) Spezialitäten (newtype State =...) Funktionale Programmierung (WS 2007/2008) / 4.

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Programmierung und Modellierung

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

Mehr

Haskell zur Constraint-Programmierung HaL8

Haskell zur Constraint-Programmierung HaL8 Haskell zur Constraint-Programmierung HaL8 Alexander Bau 2. Mai 2013 Wir benutzen eine Teilmenge von Haskell zur Spezifikation von Constraint- Systemen über Haskell-Datentypen. Ein Constraint-Compiler

Mehr

3.4 Strukturierte Datentypen

3.4 Strukturierte Datentypen 3.4 Strukturierte Datentypen Strukturen: Die Daten sind häufig nicht ein einzelner atomarer Wert (Zahl, Boolean, Symbol), sondern eine höhere Einheit mit vielen Eigenschaften. Jeder Eintrag einer Datenbank

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

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten O Reillys Taschenbibliothek 3. Auflage C# 5.0 kurz & gut O REILLY Joseph Albahari & Ben Albahari Aktualisierung von Lars Schulten Inhalt C# 5.0 kurz & gut... 1 Ein erstes C#-Programm... 2 Syntax... 5 Typgrundlagen...

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

Haskell. A Wild Ride. Sven M. Hallberg. sm@khjk.org. 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 1/36

Haskell. A Wild Ride. Sven M. Hallberg. sm@khjk.org. 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 1/36 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 1/36 Haskell A Wild Ride Sven M. Hallberg sm@khjk.org 21C3 Berlin / Bildungswerk Hamburg 20.6.2007 p. 2/36 Überblick Vorsichtsmaßnahmen Einführung und Sprachgrundlagen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Tutoraufgabe 1 (Datenstrukturen in Haskell):

Tutoraufgabe 1 (Datenstrukturen in Haskell): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

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

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

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

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

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

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

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

Verträge für die funktionale Programmierung Design und Implementierung

Verträge für die funktionale Programmierung Design und Implementierung 1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Bielefeld Vorlesungsskript Algorithmen und Datenstrukturen Robert Giegerich und Ralf Hinze 12. Juni 2012 Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung-Weitergabe

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

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

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Mitschrift von www.kuertz.name Hinweis: Dies ist kein offizielles Script, sondern nur eine private Mitschrift. Die Mitschriften sind teweilse unvollständig, falsch oder inaktuell,

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

CGI Programmierung mit Ha. Markus Schwarz

CGI Programmierung mit Ha. Markus Schwarz CGI Programmierung mit Ha Markus Schwarz Überblick Was ist funktionale Programmierung Einführung in Haskell CGI-Programmierung mit Haskell Ein etwas größeres Beispiel Was ist funktionale Programm Ein Programm

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Proseminar: Perlen der Informatik II Haskell List comprehensions & Typklassen

Proseminar: Perlen der Informatik II Haskell List comprehensions & Typklassen Proseminar: Perlen der Informatik II Haskell List comprehensions & Typklassen Dmitriy Traytel 8. Juli 2008 Diese Ausarbeitung im Rahmen des Proseminars Perlen der Informatik II beschäftigt sich mit einigen

Mehr

Funktionale Programmierung. der direkte Weg vom Modell zum Programm

Funktionale Programmierung. der direkte Weg vom Modell zum Programm 1 Funktionale Programmierung der direkte Weg vom Modell zum Programm Peter Padawitz, TU Dortmund 19. Juni 2010 2 Inhalt Modelle Bestandteile eines Modells Konstruktor- versus destruktorbasierte Modelle

Mehr

Tag 6. Module, benannte Funktionen und Rekursion

Tag 6. Module, benannte Funktionen und Rekursion Tag 6 Module, benannte Funktionen und Rekursion Wir verlassen nun die abgeschlossene kleine Welt des interaktiven Interpreters und lernen, wie man richtige Haskell-Programme schreibt. Im Interpreter haben

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Thomas Behr. 17. November 2011

Thomas Behr. 17. November 2011 in in Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 17. November 2011 c 2011 FernUniversität in Hagen Outline in 1 2 3 4 5 6 - Was ist das? in über

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes

Softwaretechnik. Funktionale Programmierung. Christian Lindig. 23. Januar 2006. Lehrstuhl für Softwaretechnik Universität des Saarlandes Softwaretechnik Funktionale Programmierung Christian Lindig Lehrstuhl für Softwaretechnik Universität des Saarlandes 23. Januar 2006 Quicksort in Java static void sort(int a[], int lo0, int hi0) { int

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

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

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

Notation von Musik die Notenschrift I. Die Tonhöhe

Notation von Musik die Notenschrift I. Die Tonhöhe Notation von Musik die Notenschrift I. Die Tonhöhe 1) Aufbau der Notenzeile: 5 Linien 4 Zwischenräume (von unten nach oben gezählt) 5 4 3 2 1 Note liegt auf der Linie Note liegt im Zwischenraum Noten mit

Mehr

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata: Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber

Mehr

Grundlagen der Programmierung 2 (1.C)

Grundlagen der Programmierung 2 (1.C) Grundlagen der Programmierung 2 (1.C) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 3. Mai 2006 Funktionen auf Listen: map map :: (a -> b) -> [a] -> [b] map f [] = []

Mehr

Kapitel 7: Benutzerdefinierte Datentypen

Kapitel 7: Benutzerdefinierte Datentypen Kapitel 7: Benutzerdefinierte Datentypen Andreas Abel LFE Theoretische Informatik Institut für Informatik Ludwig-Maximilians-Universität München 10. Juni 2011 Quelle: Martin Wirsing, Benutzerdefinierte

Mehr

Übungsbuch Musiktheorie und Gehörbildung. Junior 2. Ausgabe im Bratschenschlüssel

Übungsbuch Musiktheorie und Gehörbildung. Junior 2. Ausgabe im Bratschenschlüssel Junior 2 Übungsbuch Musiktheorie und Gehörbildung Ausgabe im Bratschenschlüssel Junior 2 - Übungsbuch Musiktheorie und Gehörbildung - Ausgabe im Bratschenschlüssel - 1 Allgemeine Musiklehre 1. Die Noten

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Excel VBA Arrays, Enumeration und benutzerdefinierte Typen

Excel VBA Arrays, Enumeration und benutzerdefinierte Typen Excel VBA Arrays, Enumeration und benutzerdefinierte Typen Array (Feld)... ist aus vielen Variablen, die den gleichen Datentyp besitzen, zusammengesetzt.... fasst Elemente vom gleichen Datentyp zusammen....

Mehr

Das Bandtagebuch mit EINSHOCH6 Folge 13: BASTIS KLAVIERWERKSTATT

Das Bandtagebuch mit EINSHOCH6 Folge 13: BASTIS KLAVIERWERKSTATT HINTERGRUNDINFOS FÜR LEHRER Der Weg zum Klavierbauer Ein Klavierbauer baut neue Klaviere oder Flügel, repariert und stimmt alte oder gebrauchte Instrumente. Er arbeitet meist in Werkstätten oder in Operhäusern

Mehr

Enum Aufzählungstypen in Java

Enum Aufzählungstypen in Java Enum Aufzählungstypen in Java Dr Steffen Jost Institut für Informatik der LMU München Endliche Aufzählungen 2 Endliche Aufzählungen (engl. Enumeration) bieten sich immer dann an, wenn Menge der Optionen

Mehr

Datentypdeklarationen in Haskell. Heutiges Thema... Zum Einstieg und Vergleich... (1) Grundlegende Typmuster

Datentypdeklarationen in Haskell. Heutiges Thema... Zum Einstieg und Vergleich... (1) Grundlegende Typmuster Datentypdeklarationen in Haskell Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...) Spezialitäten (newtype State =...)...selbstdefinierte

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

Hochschule Darmstadt Fachbereich Informatik

Hochschule Darmstadt Fachbereich Informatik Hochschule Darmstadt Fachbereich Informatik Entwicklung webbasierter Anwendungen 1 Hochschule Darmstadt Fachbereich Informatik PHP 7 2 Releasekalender http://php.net/supported-versions.php 3 Historie Urpsrünglicher

Mehr

Die # ( Kreuz )-Dur-Tonarten und die Reihenfolge ihrer Tonstufen

Die # ( Kreuz )-Dur-Tonarten und die Reihenfolge ihrer Tonstufen Seite 1 von 14 Die # ( Kreuz )-Dur-Tonarten und die Reihenfolge ihrer Tonstufen Die Fingersätze für die rechte Hand sind über den Noten, die Fingersätze für die linke Hand sind unter den Noten notiert.

Mehr

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

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 20. November 2006 Monaden und I/O Monade ist ein Datentyp für (sequentielle)

Mehr

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Funktionale Programmierung

Funktionale Programmierung Schleifen 1 Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 3 Teil I Jedem Anfang wohnt ein Zauber inne 4 Über mich Diplom in Informatik in Saarbrücken

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

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

Primitive Datentypen und Felder (Arrays)

Primitive Datentypen und Felder (Arrays) Primitive Datentypen und Felder (rrays) Primitive Datentypen Java stellt (genau wie Haskell) primitive Datentypen für Boolesche Werte, Zeichen, ganze Zahlen und Gleitkommazahlen zur Verfügung. Der wichtigste

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Abstrakte Klassen und Induktive Datenbereiche

Abstrakte Klassen und Induktive Datenbereiche Abstrakte Klassen und Induktive Datenbereiche Abstrakte Klassen, Induktive Datenbereiche, Bäume, Binärbäume, Bäume mit Blättern, Listen, Konstruktoren, Prädikate, Selektoren, Mutatoren, Operationen. Abstrakte

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

19. Funktional-reaktive Programmierung

19. Funktional-reaktive Programmierung 19. Funktional-reaktive Programmierung Graphische Figuren type Dimension = Int data Figure = Rect Dimension Dimension Triangle Dimension Angle Dimension Polygon [Point] Circle Dimension Translate Point

Mehr