Frage: Gibt es Dinge die wir nur in anderen Sprachen berechnen können? Was kann man wirklich mit dem λ-kalkül ausdrücken?
|
|
- Adam Otto
- vor 7 Jahren
- Abrufe
Transkript
1 3 Der λ-kalkül Ausdruckskraft des λ-kalküls Ausdruckskraft des λ-kalküls Frage: Gibt es Dinge die wir nur in anderen Sprachen berechnen können? Was kann man wirklich mit dem λ-kalkül ausdrücken? Antwort: Alles was man überhaupt mit irgendeiner Programmiersprache ausdrücken kann, kann man auch im λ-kalkül ausdrücken. Solche formalen Systeme (und damit den λ-kalkül) nennt man Turing-vollständig. cf. Seite 190, Exkurs zum Thema Berechenbarkeit. Stefan Klinger DBIS Informatik 2 Sommer
2 3 Der λ-kalkül Ausdruckskraft des λ-kalküls 3.7 Datenstrukturen vs. Operationen Wir haben schon betont, dass der (reine) λ-kalkül keine primitiven Datentypen (z.b. Integer, Boolean) kennt und auch keine eingebauten Operationen darauf. Dennoch kann man diese mit dem λ-kalkül nachbilden. Ebenso wie man konstruierte Datentypen mit Funktionen nachbauen kann. Beispiel Darstellung von Paaren im λ-kalkül: Wir beschreiben zunächst die Schnittstelle des abstrakten Typs Pair. pair :: α β Pair α β fst :: Pair α β α snd :: Pair α β β und seine Eigenschaften (Konstruktor) (Accessor) (Accessor) fst (pair a b) a snd (pair a b) b Stefan Klinger DBIS Informatik 2 Sommer
3 3 Der λ-kalkül Ausdruckskraft des λ-kalküls 3.7 (nochmal die Eigenschaften) fst (pair a b) a snd (pair a b) b... bis hierhin sieht das aus wie eine algebraische Spezifikation eines abstrakten Datentyps. Jetzt realisieren wir das im λ-kalkül: pair = λx y s. s x y fst = λp. p (λx y. x) snd = λp. p (λx y. y)...bleibt nur noch zu beweisen, dass die geforderten Eigenschaften erfüllt sind. Beweis für fst (pair a b) a: fst (pair a b) = (λp. p (λx y. x)) (pair a b) β pair a b (λx y. x) = (λx y s. s x y) a b (λx y. x) β (λy s. s a y) b (λx y. x) β (λs. s a b) (λx y. x) β β β (λx y. x) a b (λy. a) b a Stefan Klinger DBIS Informatik 2 Sommer
4 3 Der λ-kalkül Ausdruckskraft des λ-kalküls 3.7 Ähnlich kann man das auch mit primitiven (z.b. Boolean und Integer) oder anderen konstruierten Datentypen (z.b. Listen) machen. Diese Technik der Repräsentation von Daten und Operatoren im λ-kalkül nennt man Church Codierung (siehe dazu auch später: Algebraische Datentypen sowie einige Übungsaufgaben). Dualität von Daten und Operationen... ein Beispiel dafür, dass die Unterscheidung zwischen Daten und Operationen keine scharfe, zwingende ist. Man kann auch umgekehrt ein Programm (z.b. einen λ-ausdruck) als Datenobjekt betrachten und mit einem (anderen oder gar dem gleichen) Programm bearbeiten... Stefan Klinger DBIS Informatik 2 Sommer
5 4 Haskell Typen, Werte und einfache Definitionen
6 4 Haskell Typen, Werte und einfache Definitionen Typen Typen Intuitiv unterteilt man die Objekte, die man mit einer Programmiersprache manipulieren will, in disjunkte Mengen, etwa: Zeichen, ganze Zahlen, Listen, Bäume und Funktionen: Objekte verschiedener Mengen haben unterschiedliche Eigenschaften, (Zeichen und auch ganze Zahlen sind bspw. anzuordnen, Funktionen nicht) für die Objekte verschiedener Mengen sind unterschiedliche Operationen sinnvoll. (eine Funktion kann angewandt werden, eine ganze Zahl kann mit 0 verglichen werden, aber auf einen Wahrheitswert kann man nicht addieren, etc.) Viele Programmiersprachen (wie auch Haskell) formalisieren diese Intuition mittels eines Typsystems. Typen im λ-kalkül? Weder der einfache, noch der erweiterte λ-kalkül haben ein Typsystem. Später werden wir Typsystem für den λ-kalkül betrachten. Stefan Klinger DBIS Informatik 2 Sommer
7 4 Haskell Typen, Werte und einfache Definitionen Typen 4.1 Ein Typ definiert 1. eine Menge von gleichartigen Objekten (Wertevorrat, Domain ) und 2. Operationen, die auf diese Objekte anwendbar sind (Interface). Einige Basis-Typen: Objektmenge Typname Operationen (Auswahl) Ganze Zahlen Integer +, max, <, >, == Zeichen Char max, <, >, == Wahrheitswerte Bool &&, ==, not Fließkommazahlen Double *, /, round Typkonstruktoren konstruieren aus beliebigen Typen α, β neue Typen: Objektmenge Typkonstruktor Operationen (Auswahl) Funktionen von α nach β α β $, map Listen von α-objekten [α] head, reverse, length Paare von α, β-objekten (α,β) fst, snd Stefan Klinger DBIS Informatik 2 Sommer
8 4 Haskell Typen, Werte und einfache Definitionen Typen 4.1 Die Notation x :: α (x hat den Typ α) wird vom Haskell-Compiler eingesetzt, um anzuzeigen, dass das Objekt x den Typ α besitzt. Umgekehrt können wir so dem Compiler anzeigen, dass x eine Instanz des Typs α sein soll. Beispiel 2 :: Integer X :: Char 0.05 :: Double round :: Double -> Integer [2,3] :: [Integer] head :: [α] -> α ( a,(2,true)) :: (Char,(Integer,Bool)) snd :: (α,β) -> β Manche Typen (z.b. von snd) enthalten Typvariablen α, β,... Das entspricht der Beobachtung, dass snd das zweite Element eines Paares bestimmen kann, ohne Details der gepaarten Objekte zu kennen oder Operationen auf diese anzuwenden. Stefan Klinger DBIS Informatik 2 Sommer
9 4 Haskell Typen, Werte und einfache Definitionen Interpretation komplexer Typen Interpretation komplexer Typen Beispiel Typ der Prelude-Funktion unzip :: [(α, β)] ([α], [β]) unzip :: unzip ist eine Funktion... unzip :: [...]......die eine Liste... unzip :: [(α,β)]......von Paaren als Argument hat,... unzip :: [(α, β)] (...,...)...und ein Paar... unzip :: [(α, β)] ([α], [β])...von Listen als Ergebnis liefert,......und dabei ist der Elementtyp α der ersten Liste der gleiche wie der Typ der ersten Komponente der Argumentlistenpaare und derjenige der zweiten Liste (also β) der gleiche wie der der zweiten Komponente der Argumentlistenpaare. unzip [(x 1, y 1 ),..., (x n, y n )] ([x 1,..., x n ], [y 1,..., y n ]) Stefan Klinger DBIS Informatik 2 Sommer
10 4 Haskell Typen, Werte und einfache Definitionen Currying und der Typkonstruktor Currying und der Typkonstruktor Erinnerung Mittels Currying kann eine Funktion mehrerer Argumente sukzessive auf ihre Argumente angewandt werden (cf. Seite 87). Auch haskell verwendet Currying, und damit spielt Currying auch bei der Typisierung von Funktionen eine Rolle. Beispiel Typ der Funktion (des Operators) +, bei Anwendung auf zwei Argumente vom Typ Integer, also x :: Integer, y :: Integer: x + y ((+ x) y) 1. Der Teilausdruck (+ x) besitzt den Typ Integer Integer, 2. damit hat + also den Typ Integer (Integer Integer). Vereinbarung: ist rechts-assoziativ. Schreibe daher kürzer (+) :: Integer Integer Integer Stefan Klinger DBIS Informatik 2 Sommer
11 4 Haskell Typen, Werte und einfache Definitionen Currying und der Typkonstruktor 4.3 Haskell besitzt einen Mechanismus zur Typinferenz, der für (fast) jedes Objekt x den zugehörigen Typ α automatisch bestimmt. Haskell ist streng typisiert, d.h. eine Operation kann niemals auf Objekte angewandt werden, für die sie nicht definiert wurde. statisch typisiert, d.h. schon zur Übersetzungszeit und nicht erst während des Programmlaufs wird sichergestellt, dass Programme keine Typfehler enthalten. Der Interpreter oder Compiler weist inkorrekt typisierte Ausdrücke sofort zurück. Beispiel Typische Typfehlermeldung: 1 Prelude> fst [2,3] 2 <interactive>:2:5: 3 Couldn t match expected type (α, β) with actual type [Integer] 4... Stefan Klinger DBIS Informatik 2 Sommer
12 4 Haskell Typen, Werte und einfache Definitionen Deklaration & Definition Deklaration & Definition Haskell-Programm (Skript) = Deklarationen + Definitionen Beispiel Fakultätsfunktion fact 1 fact :: Integer -> Integer 2 fact n = if n == 0 3 then 1 4 else n * fact (n-1) Deklaration fact :: Integer -> Integer fact ist eine Funktion, die einen Wert des Typs Integer (ganze Zahl) auf einen Wert des Typs Integer abbildet. Definition fact n =... (Rekursive) Regeln für die Berechnung der Fakultätsfunktion. Stefan Klinger DBIS Informatik 2 Sommer
13 4 Haskell Typen, Werte und einfache Definitionen Basis-Typen Basis-Typen Haskell stellt diverse Basis-Typen zur Verfügung. Die Notation für Konstanten dieser Typen ähnelt anderen Programmiersprachen. Ganze Zahlen: Integer Der Typ Integer enthält die ganzen Zahlen, der Wertebereich ist unbeschränkt. Haskell kennt auch den Typ Int, fixed precision integers, mit Wertebereich [ 2 29, ] Eine nichtleere Sequenz von Ziffern stellt ein Integer-Literal dar. (kann aber auch als anderer numerischer Typ aufgefasst werden, cf. PK2, oder später) Allgemein werden negative Zahlen durch die Anwendung der Funktion negate oder des Prefix-Operators - gebildet. Achtung: Operator - wird auch zur Subtraktion benutzt, wie etwa in f -123 f (-123) Beispiele: 0, 42, Stefan Klinger DBIS Informatik 2 Sommer
14 4 Haskell Typen, Werte und einfache Definitionen Basis-Typen 4.5 Konstanten des Typs Char (Zeichen) Zeichenkonstanten werden durch Apostrophe (ASCII 39) eingefasst. Nichtdruckbare und Sonderzeichen werden mit Hilfe des bspw. auch in C verwendeten \ (escape, backslash) eingegeben. Nach \ kann ein ASCII-Mnemonic (etwa NUL, BEL, FF,...) oder ein dezimaler (oder hexadezimaler nach \x bzw. oktaler nach \o) Wert stehen, der den ASCII-Code des Zeichens festlegt. Zusätzlich werden die folgenden Abkürzungen erkannt: \a (alarm) \b (backspace) \f (formfeed) \n (newline) \r (carriage return) \t (Tab) \v (vertical feed) \\ (backslash) \" (dbl quote) \ (apostroph) \& (NULL) Beispiele: P, s, \n, \BEL, \x7f, \, \\ Stefan Klinger DBIS Informatik 2 Sommer
15 4 Haskell Typen, Werte und einfache Definitionen Basis-Typen 4.5 Konstanten des Typs Float (Fließkommazahlen) Fließkommakonstanten enthalten stets einen Dezimalpunkt. Vor und hinter diesem steht mindestens eine Ziffer Die Konstante kann optional von e bzw. E und einem ganzzahligen Exponenten (zur Basis 10) gefolgt werden. Beispiele: , 10.0e-4, 0.001, E6 Konstanten des Typs Bool (Wahrheitswerte) Bool ist ein Summentyp (Aufzählungstyp, enumerated type) und besitzt lediglich die beiden Konstanten 21 True und False. 21Später: Konstruktoren. Stefan Klinger DBIS Informatik 2 Sommer
16 4 Haskell Typen, Werte und einfache Definitionen Funktionen Funktionen Funktionen in funktionalen Programmiersprachen sind tatsächlich im mathematischen Sinne zu verstehen. Ein Wert f mit f :: α -> β bildet bei Anwendung Objekte des Typs α auf Objekte des Typs β ab und es gilt 22 x = y f x = f y Diese einfache aber fundamentale mathematische Eigenschaft von Funktionen zu bewahren, ist die Charakteristik funktionaler Programmiersprachen. 22Referenzielle Transparenz, cf. später Stefan Klinger DBIS Informatik 2 Sommer
17 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Variablennamen, und damit auch die Namen von Funktionen 23 beginnen mit Kleinbuchstaben a...z gefolgt von a...z, A...Z, 0...9, _ und. Als RegEx: [a z][a z A Z 0 9 _ ] Beispiele: foo, c_3_p_o, f Haskell ist case-sensitive, i.e., foobar foobar. Die Funktionsapplikation ist der einzige Weg in Haskell komplexere Ausdrücke zu bilden. Applikation wird syntaktisch durch Juxtaposition (Nebeneinanderschreiben) ausgedrückt: Beispiel: Anwendung von Funktion f auf die Argumente x und y: f x y Die Juxtaposition hat höhere Priorität als Infix-Operatoren: f x + y (f x) + y Klammern ( ) können zur Gruppierung eingesetzt werden. 23bis auf Operatoren, cf. Seite 133 Stefan Klinger DBIS Informatik 2 Sommer
18 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Operatoren Operatoren sind nichts anderes als Funktionen mit besonderen syntaktischen Eigenschaften (andere Zeichen, meist infix notiert). Haskell erlaubt die Einführung neuer Infix-Operatoren. Operatoren erfüllen den RegEx ~:. ] + Übliche Infix-Operatoren (+, *, ==, <,...) sind bereits vordefiniert. Operatoren, die mit : beginnen, spielen eine Sonderrolle (cf. Seite 267, Algebraische Datentypen). Die Token.., :, ::, =, \,, <-, ~, =>, -- sind reserviert, ebenso der einzige unäre Präfix-Operator - (Minus). Beispiel Definition von ~~ als fast gleich : 1 epsilon :: Float 2 epsilon = 1.0e (~~) :: Float -> Float -> Bool 5 x ~~ y = abs (x-y) < epsilon 1 > pi ~~ False 3 > pi ~~ True 5 > Stefan Klinger DBIS Informatik 2 Sommer
19 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Operatoren sind Funktionen Infix-Operator Prefix-Applikation. Jeder Infix-Operator kann in der Notation ( ) auch als Prefix-Operator geschrieben werden (cf. Seite 139): (+) 1 3 True && False (&&) True False Funktion Infix-Applikation. Umgekehrt kann man jede binäre Funktion f (Funktion zweier Argumente) mittels der Schreibweise f (ASCII 96) als Infix-Operator verwenden: max max 5 Die so notierten Infix-Operatoren werden durch die Sprache als links-assoziativ und mit höchster Operatorpriorität (Level 9) interpretiert: 5 max Stefan Klinger DBIS Informatik 2 Sommer
20 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Bemerkung: Information über die Assoziativität und Priorität eines Operators durch den Interpreter: 1 > :i + 2 class (Eq a, Show a) => Num a where 3 (+) :: a -> a -> a Defined in GHC.Num 6 infixl 6 + Die letzte Zeile verrät uns: + ist linksassoziativ, und hat priorität 6. Stefan Klinger DBIS Informatik 2 Sommer
21 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Currying Prinzipiell hat jede in Haskell definierte Funktion nur einen Parameter. Funktionen mehrerer Parameter werden durch Currying realisiert (cf. oben). Der Typ einer Funktion mehrerer Parameter, etwa max : N N N wird dargestellt als max :: Integer -> Integer -> Integer Damit max eine Funktion eines Integer-Parameters, die bei Anwendung einen Wert (hier: wieder eine Funktion) des Typs Integer -> Integer liefert. Dieser kann dann auf ein weiteres Integer-Argument angewandt werden, um letzlich das Ergebnis des Typs Integer zu bestimmen. Stefan Klinger DBIS Informatik 2 Sommer
22 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Currying im λ-kalkül: Haskell-Funktionsdefinitionen sind tatsächlich lediglich syntaktischer Zucker für die schon bekannten λ-abstraktionen: f x = e f = λx. e g x y = e g = λx y. e Damit lässt sich Currying durch mehrfache β-reduktion erklären. Beispiel Maximumsfunktion: 1 max :: Integer -> Integer -> Integer 2 max x y = if x<y then y else x max = λx y. if (x < y) y x max 2 5 Definition von max (λx y. if (x < y) y x) 2 5 β (λy. if (2 < y) y 2) 5 β if (2 < 5) 5 2 δ 5 Stefan Klinger DBIS Informatik 2 Sommer
23 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Partielle Anwendung Currying erlaubt die partielle Anwendung von Funktionen. Der Wert des Ausdrucks (+) 1 hat den Typ Integer -> Integer und ist die Funktion, die 1 zu ihrem Argument addiert. Beispiel Nachfolgerfunktion inc: 1 inc :: Integer -> Integer 2 inc = (+) 1 Stefan Klinger DBIS Informatik 2 Sommer
24 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 Sections Currying ist auch auf binäre Operatoren anwendbar, da Operatoren ja lediglich binäre Funktionen in Infix-Schreibweise (mit festgelegter Assoziativität) sind. Man erhält dann die sogenannten Sections. Für jeden Infix-Operator gilt (die Klammern ( ) gehören zur Syntax!): (x ) λy. x y ( y) λx. x y ( ) λx y. x y Beispiel 1 inc = (1+) 2 halve = (/2) 3 add = (+) 4 positive = ( max 0) Sections erlauben viele elegante Notationen: Stefan Klinger DBIS Informatik 2 Sommer
25 4 Haskell Typen, Werte und einfache Definitionen Funktionen 4.6 λ-abstraktionen (anonyme Funktionen) Haskell erlaubt λ-abstraktionen als Ausdrücke und somit anonyme Funktionen, i.e., Funktionen ohne Namen. Die Notation ähnelt dem λ-kalkül: λx. e \x -> e λx. λy. e \x -> \y -> e λx y. e \x y -> e Damit wird der Ausdruck (\x -> 2*x) 3 zu 6 ausgewertet und die vorige Definition von max kann alternativ wie folgt geschrieben werden: 1 max :: Integer -> Integer -> Integer 2 max = \x y -> if x<y then y else x Auch hier erstreckt sich der Wirkungsbereich des λ bis zum Ende des längsten gültigen Terms (cf. Seite 94), d.h., \x -> (f x) \x -> f x (\x -> f) x Stefan Klinger DBIS Informatik 2 Sommer
26 4 Haskell Typen, Werte und einfache Definitionen Listen Listen Listen sind die primäre Datenstruktur in funktionalen Programmiersprachen. Haskell unterstützt die Konstruktion und Verarbeitung homogener Listen beliebigen Typs: Listen von Integer, Listen von Listen, Listen von Funktionen,... Der Typ von Listen, die Elemente des Typs α enthalten, wird mit [α] bezeichnet (gesprochen list of α). Listen sind also immer homogen, d.h. alle Elemente sind vom gleichen Typ. Die Struktur von Listen ist rekursiv: Eine Liste ist entweder leer, notiert als [], genannt nil, oder ein konstruierter Wert aus Listenkopf x (head) und Restliste xs (tail), notiert als x:xs. Der Operator (:) heißt cons 24 24Für list construction. Stefan Klinger DBIS Informatik 2 Sommer
27 4 Haskell Typen, Werte und einfache Definitionen Listen 4.7 Listen-Konstruktion [] und (:) sind Beispiele für data constructors, Funktionen, die Werte eines bestimmten Typs konstruieren. Wir werden dafür noch zahlreiche Beispiele kennenlernen. Jede Liste kann mittels [] und (:) konstruiert werden: Liste, die 1 bis 3 enthält: 1:(2:(3:[])) Der cons-operator ist rechts-assoziativ, also äquivalent: 1:2:3:[] Syntaktische Abkürzung: [e 1,e 2,...,e n ] e 1 :e 2 :...:e n :[] Beispiele [] :: [α] z :[] :: [Char] [[1],[2,3],[]] :: [[Integer]] (False:[]):[] :: [[Bool]] [(<),(<=),(>),(>=)] :: [α -> α -> Bool] [[]] :: [[α]] Natürlich hat auch cons einen Typ: (:) :: α [α] [α]. Stefan Klinger DBIS Informatik 2 Sommer
28 4 Haskell Typen, Werte und einfache Definitionen Listen 4.7 Arithmetische Sequenzen [x..y] wenn x<=y dann [x,x+1,x+2,...,y] sonst [] [x 1,x 2..y] Liste der Werte x 1 bis y mit Schrittweite x 2 -x 1 Für Sequenzen vom Typ [Float] und [Double] ist die Abbruchbedingung y + x 2 x 1 2. Beispiel Der Ausdruck [2.. 6] wird zu [2, 3, 4, 5, 6] ausgewertet, [9, 7.. 2] ergibt [9, 7, 5, 3]. Aber: [0.1, ] [0.1, 0.3, 0.5, 0.7], weil Die Abbruchbedingung kann weggelassen werden, um unendliche Listen zu erzeugen: [1, 5..] [1,5,9,13,17,21,... Stefan Klinger DBIS Informatik 2 Sommer
29 4 Haskell Typen, Werte und einfache Definitionen Listen 4.7 Listen-Dekomposition Mittels der vordef. Funktionen head und tail kann eine nicht-leere Liste x:xs wieder in ihren Kopf und Restliste zerlegt werden: head (x:xs) x tail (x:xs) xs head [] *** Exception: Prelude.head: empty list tail [] *** Exception: Prelude.tail: empty list Die Funktion null :: [α] -> Bool bestimmt ob eine Liste leer ist. null [] True null [1,2,3] False Stefan Klinger DBIS Informatik 2 Sommer
30 4 Haskell Typen, Werte und einfache Definitionen Listen 4.7 Konstanten des Typs String (Zeichenketten) Zeichenketten werden in Haskell durch den Typ [Char] repräsentiert, eine Zeichenkette ist also eine Liste von Zeichen. Funktionen auf Listen können damit auch auf Strings operieren. Haskell kennt String als Synonym für den Typ [Char] (realisiert durch die Deklaration type String = [Char] ( später)). Strings werden in doppelten Anführungszeichen " " notiert. Beispiel "" "AbC" z :[] "z" [ C, u, r, r, y ] "Curry" head "Curry" C tail "Curry" "urry" tail (tail "OK\n") "\n" Stefan Klinger DBIS Informatik 2 Sommer
Grundlegende Datentypen
Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................
MehrFunktionale 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........................................
MehrGrundlegende Datentypen
Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung
MehrGrundlegende Datentypen
Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrHASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül
HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,
MehrFunktionale Programmierung ALP I. Funktionen höherer Ordnung SS Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I SS 2011 Funktionstypen Funktionen haben einen Datentyp, der folgende allgemeine Form hat: functionname :: T 1 -> T 2, wobei T 1, T 2 wiederum beliebige Datentypen sind Beispiel: T 1 T 2 Der Datentyp
MehrHaskell, 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
MehrTag 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2016 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
MehrEinstieg in die Informatik mit Java
1 / 20 Einstieg in die Informatik mit Java Literalkonstanten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Ganzzahlige Konstanten 2 Gleitkommakonstanten 3 Zeichenkonstanten
MehrTag 3. Funktionen. Num erfüllen, haben wir... ja, was nun eigentlich? Bei
Tag 3 Funktionen Heute werden wir den wichtigsten Typ (oder die wichtigste Klasse von Typen) in Haskell überhaupt genau unter die Lupe nehmen: Funktionen, die wir ansatzweise schon am letzten Tag kennengelernt
MehrTheoretische Informatik II
Theoretische Informatik II Dr. Eva Richter / Holger Arnold Universität Potsdam, Theoretische Informatik, Sommersemester 2008 Übungsblatt 3 (Version 4) Abgabetermin: 13.5.2008, 12.00 Uhr Der λ-kalkül Da
MehrEinstieg in die Informatik mit Java
1 / 30 Einstieg in die Informatik mit Java Datentypen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 30 1 Überblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char
MehrVariablen, Konstanten und Datentypen
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Variablen, Konstanten und Datentypen Überblick
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Zusammengesetzte Datentypen in Haskell WS 2012/2013 Zusammengesetzte Datentypen Tupel List String Zusammengesetzte Datentypen Tupel-Datentyp Ein Tupel ist eine Ansammlung
MehrGrundlagen 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
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable
1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem
MehrDie Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
MehrHaskell, 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
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Literalkonstanten Übersicht 1 Ganzzahlige Konstanten 2 Gleitkommakonstanten 3 Zeichenkonstanten 4 Zeichenketten 5 Boolsche Konstanten 6 null Referenz Literalkonstanten Literalkonstanten
MehrKapitel 3. Grunddatentypen, Ausdrücke und Variable
Kapitel 3 Grunddatentypen, Ausdrücke und Variable Grunddatentypen, Ausdrücke und Variable 1 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Typ-Klassen und SS 2011 Überladung von Datentypen Funktionen sollen oft auf verschiedene Datentypen anwendbar sein, aber nicht auf beliebige Datentypen. Beispiel: Die (+)
MehrPraktische 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrJava I Vorlesung Imperatives Programmieren
Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.
MehrInformatik I - Programmierung Globalübung Hugs98 Currying. Hugs98 Currying
Informatik I - Programmierung Globalübung 13.01.2003 Hugs98 Currying Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Hugs98 Currying Bedienung Typen Fehlermeldungen Inhalt
MehrHaskell, Typen, und Objektorientierung
Haskell, Typen, und Objektorientierung ZIELE dieses Kapitels Haskells Typisierung Milners Polymorpher Typcheck Haskells Typklassen P raktische Informatik 2, SS 2005, F olien Kap.3, (27. Mai2005) Seite
MehrTeil I. Konzepte imperativer Programmierung
Teil I Konzepte imperativer Programmierung 34 Abschnitt 2: Imperative Programmierung 2. Imperative Programmierung 2.1 Einleitung 2.2 Grunddatentypen und Ausdrücke 2.3 Imperative Variablenbehandlung 2.4
MehrWas 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
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
MehrKapitel 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
MehrBasiskonstrukte 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
MehrPraktische 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
MehrKapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1
Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2016/2017 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2
MehrAbschnitt 2: Daten und Algorithmen
Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)
MehrALP I Einführung in Haskell
ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?
MehrEinheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik
MehrKapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1
Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2
Mehr3. Java - Sprachkonstrukte I
Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner
Mehr2.1 Fundamentale Typen
2. Elementare Typen 2.1 Fundamentale Typen C++ stellt die wichtigsten Datentypen mit passender Form der Abspeicherung und zugehörigen Rechenoperationen zur Verfügung : Boolscher Datentyp (bool) für logische
MehrPraktische 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
Mehr3 Exkurs: Der λ-kalkül
3 Exkurs: Der λ-kalkül Alonso Churchs λ-kalkül (ca. 1940) ist der formale Kern jeder funktionalen Programmiersprache. Der λ-kalkül ist eine einfache Sprache, mit nur wenigen syntaktischen Konstrukten und
MehrWS 2011/2012. Robert Giegerich. October 30, 2013
WS 2011/2012 Robert AG Praktische Informatik October 30, 2013 Algebraische Datentypen Neue Datentypen werden als algebraische Datentypen eingeführt. Werte des Datentyps sind Formeln, die aus Konstruktoren
MehrFunktionale Programmierung und Typtheorie
Funktionale Programmierung und Typtheorie 5. Fortgeschrittene Konzepte 5.1 Komprehensionen 5.2 Partielle Applikationen 5.3 Strikte und nichtstrikte Funktionen 5.4 Unendliche Datenstrukturen und verzögerte
Mehr3. Java - Sprachkonstrukte I
Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine
MehrKapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 05 Datentypen Inhalt des 5. Kapitels Datentypen 5.1 Einleitung 5.2 Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Operatoren Konversion / Type-Cast Datentyp
MehrJava-Applikationen (Java-Programme)
Java-Applikationen (Java-Programme) Eine erste Applikation: 1 2 3 4 5 6 7 8 9 10 // Quelltext HalloWelt.java // Programm gibt den Text Hallo Welt aus public class HalloWelt public static void main(string[]
MehrEinleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders
Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1
Mehr2.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
MehrEinstieg in die Informatik mit Java
1 / 29 Einstieg in die Informatik mit Java Weitere Ausdrücke Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 29 1 Überblick 2 Kombinierte Zuweisungsoperatoren 3 Vergleichsoperatoren
MehrEinführung in die Funktionale Programmierung mit Haskell
GHC Typen Funktionen Einführung in die Funktionale Programmierung mit Haskell Erste Schritte, Typen und Funktionen LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität,
MehrEinführung in Haskell
Einführung in Haskell Axel Stronzik 21. April 2008 1 / 43 Inhaltsverzeichnis 1 Allgemeines 2 / 43 Inhaltsverzeichnis 1 Allgemeines 2 Funktions- und Typdefinitionen 2 / 43 Inhaltsverzeichnis 1 Allgemeines
Mehr3. Java - Sprachkonstrukte I
84 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 85 Ein Programm (also Klasse)
Mehr2. Datentypen und Deklarationen
2. Datentypen und Deklarationen Programm = Datenstrukturen+Kontrollstruktur Programme verarbeiten Daten. Daten werden in C durch Datenstrukturen aus verschiedenen Datentypen beschrieben. Es gibt (wie in
MehrProgrammieren 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
MehrWorkshop 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
MehrParadigmen der Programmierung
SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]
MehrAbstrakte Syntax von Prolog (1)
3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die
MehrPROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
MehrPraktische 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?
MehrProgrammieren in Haskell Das Haskell Typsystem
Programmieren in Haskell Das Haskell Typsystem Peter Steffen Robert Giegerich Universität Bielefeld Technische Fakultät 22.01.2010 1 Programmieren in Haskell Belauscht... Lisa Lista: Ohne Typen keine korrekten
MehrListen und Listenfunktionen. Grundlagen der Programmierung 2 A (Listen) Listen und Listenfunktionen. Listen? Haskell: Listen
Listen und Listenfunktionen Grundlagen der Programmierung 2 A (Listen) Haskell: Listen Prof. Dr. Manfred Schmidt-Schauß Listen modellieren Folgen von gleichartigen, gleichgetypten Objekten. Ausdruck im
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
MehrVorsemesterkurs Informatik
Stand der Folien: 31. März 2011 Vorsemesterkurs Informatik Sommersemester 2011 Grundlagen der Programmierung in Haskell SoSe 2011 Übersicht 1 Ausdrücke und Typen 2 Funktionen 3 Rekursion 4 Listen 5 Paare
Mehr11 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
MehrGrundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 18. April 2007 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte
MehrGrundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
MehrVorsemesterkurs Informatik
Vorsemesterkurs Informatik Sommersemester 2011 Grundlagen der Programmierung in Haskell SoSe 2011 Stand der Folien: 30. März 2011 Übersicht 1 Ausdrücke und Typen 2 Funktionen 3 Rekursion Vorkurs Informatik
MehrVorsicht 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
MehrVerarbeitung 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 =
MehrJava ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.
5 Mehr Java Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird. Java unterscheidet zwei Arten von Typen:
MehrAlgorithmen und Datenstrukturen I
Algorithmen und Datenstrukturen I Einführung in Haskell (I) D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Winter 2009/10, 12. Oktober
MehrGrundlagen der Programmierung 2 (1.C)
Grundlagen der Programmierung 2 (1.C) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 8. Mai 2007 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen,
MehrWiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe
Informatik Vorlesung 03b Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik
MehrGrundlagen der Programmierung 2 (2.A)
Grundlagen der Programmierung 2 (2.A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 5. Mai 2011 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen,
MehrOperatoren in C/C++ und Java:
Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)
MehrUniversität Konstanz FB Informatik und Informationswissenschaft. Deklarative Programmierung (Declarative Programming)
Universität Konstanz FB Informatik und Informationswissenschaft Deklarative Programmierung (Declarative Programming) http://www.inf.uni-konstanz.de/dbis Prof. Dr. Marc H. Scholl Sommersemester 2006 Folien
MehrTeil I. Konzepte imperativer Programmierung
Teil I Konzepte imperativer Programmierung 175 Abschnitt 4: Imperative Programmierung 4. Imperative Programmierung 4.1 Grunddatentypen und Ausdrücke 4.2 Imperative Variablenbehandlung 4.3 Anweisungen,
Mehr2.2 Einfache Datenstrukturen
2.2 Einfache Datenstrukturen Konstante und Variable Die Begriffe "Konstante" und "Variable" haben zunächst auch in der Informatik dieselbe grundsätzliche Bedeutung wie in der übrigen Mathematik. Variablen
Mehrfloat: Fließkommazahl nach IEEE 754 Standard mit 32 bit
Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen
MehrWS 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.
MehrWo sind wir? Übersicht lexikale Struktur von Java
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
MehrGrundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke
Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke 1 Links Stellenwertsysteme mit Links zu Zahlensysteme: http://de.wikipedia.org/wiki/stellenwertsystem ASCII-Code: http://de.wikipedia.org/wiki/ascii
MehrÜ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
MehrHaskell for Hackers... or why functional programming matters
... or why functional programming matters Franz Pletz CCC München 27-06-2009 @ GPN8 Fahrplan Ablauf Motivation 1 Ablauf Motivation 2 3 4 Ablauf Ablauf Motivation bei Fragen/Unklarheiten:
MehrWS 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
MehrProinformatik Marco Block Dienstag, den 21. Juli 2009
2. Skript vom Dienstag, den 21. Juli 2009 zur Vorlesung Proinformatik Marco Block Dienstag, den 21. Juli 2009 1 Verschiedenes 1.1 let und where Am Anfang der Vorlesung haben wir uns ein paar einfache neue
Mehr2.5 Primitive Datentypen
2.5 Primitive Datentypen Wir unterscheiden 5 primitive Datentypen: ganze Zahlen -2, -1, -0, -1, -2,... reelle Zahlen 0.3, 0.3333..., π, 2.7 10 4 Zeichen a, b, c,... Zeichenreihen "Hello World", "TIFI",
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
MehrFunktionale 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
MehrWS 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.
MehrFunktionale 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