Einführung in das λ-kalkül

Größe: px
Ab Seite anzeigen:

Download "Einführung in das λ-kalkül"

Transkript

1 Einführung in das λ-kalkül Max Wagner IPD Snelting Max Wagner - Einführung in das λ-kalkül IPD KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

2 Syntax Abstrakte Syntax: <term> :: = <abs> <app> <v a r > <abs> ::= λ <var >. <term> <app> :: = <term> <term> <var> ::= a b c... Klammerung ist wichtig! App implizit linksgeklammert, Abs greedy. λx. x (λy. y) λx. x λs. λz. s z λs. λz. s (s z) λs. λz. s s z Max Wagner - Einführung in das λ-kalkül IPD

3 Syntax Abstrakte Syntax: <term> :: = <abs> <app> <v a r > <abs> ::= λ <var >. <term> <app> :: = <term> <term> <var> ::= a b c... Klammerung ist wichtig! App implizit linksgeklammert, Abs greedy. λx. x (λy. y) λx. x λy. y λx. x λs. λz. s z λs. λz. s (s z) λs. λz. s s z Max Wagner - Einführung in das λ-kalkül IPD

4 Syntax Abstrakte Syntax: <term> :: = <abs> <app> <v a r > <abs> ::= λ <var >. <term> <app> :: = <term> <term> <var> ::= a b c... Klammerung ist wichtig! App implizit linksgeklammert, Abs greedy. λx. x (λy. y) λx. x λy. y λx. x λs. λz. s z λs. λz. s (s z) λs. λz. s s z λx. x λs. λz. s z λs. λz. s s z λs. λz. s s z Max Wagner - Einführung in das λ-kalkül IPD

5 Variablenbindung Unterscheide freie und gebundene Variablen. λs. λz. s (s z) λx. x (λx. x) λx. x z Max Wagner - Einführung in das λ-kalkül IPD

6 β-reduktion Entspricht schrittweiser Funktionsauswertung. Nur auf sog. Reducible Expressions (Redexe) andwendbar. Definition (Redex) Redexe sind Teilausdrücke mit folgender Form: Applikationen, deren linke Seite eine Abstraktion ist (λv. T 1 ) T 2 Definition (β-reduktion) β-reduktion ersetzt einen Redex mit einer modifizierten Form von T 1, wobei alle in T 1 freien 1 Vorkommnisse von V mit T 2 ersetzt werden. (λv. T 1 ) T 2 β = T1 [T 2 /V ] 1 Achtung: frei nicht im Redex, sondern wenn T 1 alleinstehender Ausdruck wäre Max Wagner - Einführung in das λ-kalkül IPD

7 Beispiele (λv. T 1 ) T 2 β = T1 [T 2 /V ] (λx. x) z (λx. x x) (λy. y) z (λx. (λy. y) x) (λy. λx. y x) x Max Wagner - Einführung in das λ-kalkül IPD

8 Beispiele (λv. T 1 ) T 2 β = T1 [T 2 /V ] (λx. x) z = β z (λx. x x) (λy. y) = β (λy. y) (λy. y) = β λy. y z (λx. (λy. y) x) = β z (λx. x) (λy. λx. y x) x = β Max Wagner - Einführung in das λ-kalkül IPD

9 Capture Avoidance und α-konversion β-reduktion nicht korrekt anwendbar, wenn dadurch aus Versehen freie Variablen gebunden werden. Definition (α-konversion) Entspricht intuitiver Variablenumbenennung, anwendbar auf Abstraktions-Teilausdrücke. λx. T α = λy. T [y/x] Max Wagner - Einführung in das λ-kalkül IPD

10 Capture Avoidance und α-konversion β-reduktion nicht korrekt anwendbar, wenn dadurch aus Versehen freie Variablen gebunden werden. Definition (α-konversion) Entspricht intuitiver Variablenumbenennung, anwendbar auf Abstraktions-Teilausdrücke. λx. T α = λy. T [y/x] (λy. λx. y x) x α = (λy. λz. y z) x β = λz. x z Wird bei der Reduktion von (λv. T 1 ) T 2 benötigt gdw. in T 1 an einer Stelle ein (freies) v steht, an der der Name einer freien Variable aus T 2 gebunden ist Max Wagner - Einführung in das λ-kalkül IPD

11 Capture Avoidance und α-konversion β-reduktion nicht korrekt anwendbar, wenn dadurch aus Versehen freie Variablen gebunden werden. Definition (α-konversion) Entspricht intuitiver Variablenumbenennung, anwendbar auf Abstraktions-Teilausdrücke. λx. T α = λy. T [y/x] (λy. λx. y x) x α = (λy. λz. y z) x β = λz. x z Wird bei der Reduktion von (λv. T 1 ) T 2 benötigt gdw. in T 1 an einer Stelle ein (freies) v steht, an der der Name einer freien Variable aus T 2 gebunden ist. Unschön. = De-Bruijn-Indizes Max Wagner - Einführung in das λ-kalkül IPD

12 Auswertungsstrategien Manchmal gibt es mehrere Redexe. Was tun? ((λx. x) z) ((λa. a a) z) Max Wagner - Einführung in das λ-kalkül IPD

13 Auswertungsstrategien Manchmal gibt es mehrere Redexe. Was tun? ((λx. x) z) ((λa. a a) z) = z ((λa. a a) z) ((λx. x) z) (z z) = = z (z z) = Beispiele für Auswertungsstrategien: Normalreihenfolge: zuerst linkesten Redex Call-by-Name: zuerst linkesten Redex, der nicht in einer Abstraktion liegt Call-by-Value: zuerst linkesten Redex, der nicht in einer Abstraktion liegt, u. dessen Argument vollst. reduziert ist Max Wagner - Einführung in das λ-kalkül IPD

14 Termination und Divergenz Reminder: λ-kalkül ist Turingmächtig. Das bedeutet aber insbesondere, dass es auch nicht terminierende Ausdrücke geben muss. (λx. x x) (λx. x x) β = (λx. x x) (λx. x x) β =... (λx. x x x) (λx. x x x) β = (λx. x x x) (λx. x x x) (λx. x x x) β = Max Wagner - Einführung in das λ-kalkül IPD

15 Termination und Divergenz Reminder: λ-kalkül ist Turingmächtig. Das bedeutet aber insbesondere, dass es auch nicht terminierende Ausdrücke geben muss. (λx. x x) (λx. x x) β = (λx. x x) (λx. x x) β =... (λx. x x x) (λx. x x x) β = (λx. x x x) (λx. x x x) (λx. x x x) β =... Es gibt Ausdrücke, die nur mit bestimmten Auswertungsstrategien terminieren. Beispiel: (λt. λf. t) (λx. x) T Mit nicht terminierendem Ausdruck T Max Wagner - Einführung in das λ-kalkül IPD

16 How to Turingmächtigkeit Man nehme Kodierung von Daten Kodierung boolscher Werte Ein Schema für Fallunterscheidung Rekursion Max Wagner - Einführung in das λ-kalkül IPD

17 How to Turingmächtigkeit Man nehme Kodierung von Daten Möglich, z.b. Natürliche Zahlen via Church-Zahlen 0: λs. λz. z 1: λs. λz. s z 4: λs. λz. s (s (s (s z))) Kodierung boolscher Werte Ein Schema für Fallunterscheidung Rekursion Max Wagner - Einführung in das λ-kalkül IPD

18 How to Turingmächtigkeit Man nehme Kodierung von Daten Möglich, z.b. Natürliche Zahlen via Church-Zahlen 0: λs. λz. z 1: λs. λz. s z 4: λs. λz. s (s (s (s z))) Kodierung boolscher Werte True: λt. λf. t False: λt. λf. f Ein Schema für Fallunterscheidung Rekursion Max Wagner - Einführung in das λ-kalkül IPD

19 How to Turingmächtigkeit Man nehme Kodierung von Daten Möglich, z.b. Natürliche Zahlen via Church-Zahlen 0: λs. λz. z 1: λs. λz. s z 4: λs. λz. s (s (s (s z))) Kodierung boolscher Werte True: λt. λf. t False: λt. λf. f Ein Schema für Fallunterscheidung Boolsche Werte sind Fallunterscheidungs-Funktionen! if A then B else C : A B C Rekursion Max Wagner - Einführung in das λ-kalkül IPD

20 How to Turingmächtigkeit Man nehme Kodierung von Daten Möglich, z.b. Natürliche Zahlen via Church-Zahlen 0: λs. λz. z 1: λs. λz. s z 4: λs. λz. s (s (s (s z))) Kodierung boolscher Werte True: λt. λf. t False: λt. λf. f Ein Schema für Fallunterscheidung Boolsche Werte sind Fallunterscheidungs-Funktionen! if A then B else C : A B C Rekursion??? Max Wagner - Einführung in das λ-kalkül IPD

21 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. f = λn. f n Max Wagner - Einführung in das λ-kalkül IPD

22 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. λf. λn. f n Max Wagner - Einführung in das λ-kalkül IPD

23 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. λf. λn. f n (λf. λn. f n) (λf. λn. f n) β = λn. (λf. λn. f n) n Max Wagner - Einführung in das λ-kalkül IPD

24 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. λf. λn. f n (λf. λn. f n) (λf. λn. f n) = β λn. (λf. λn. f n) n (λf. λn. f n) ((λf. λn. f n) (λf. λn. f n)) = β λn. (λn. (λf. λn. f n) n) n Max Wagner - Einführung in das λ-kalkül IPD

25 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. λf. λn. f n (λf. λn. f n) (λf. λn. f n) β = λn. (λf. λn. f n) n (λf. λn. f n) ((λf. λn. f n) (λf. λn. f n)) β = λn. (λn. (λf. λn. f n) n) n Trick: Finde besonderen λ-ausdruck, der solche rekursiven Terme richtig bedient Max Wagner - Einführung in das λ-kalkül IPD

26 Rekursion Problem: brauche Namensbindung für selbstreferenziellen Aufruf. λf. λn. f n (λf. λn. f n) (λf. λn. f n) β = λn. (λf. λn. f n) n (λf. λn. f n) ((λf. λn. f n) (λf. λn. f n)) β = λn. (λn. (λf. λn. f n) n) n Trick: Finde besonderen λ-ausdruck, der solche rekursiven Terme richtig bedient. Y = λf. (λx. f (x x)) (λx. f (x x)) β Formal: Y ist Fixpunktkombinator, denn f : Y f = f (Y f) Schema: für rekursive Funktion f mit Rumpf T benutze Y (λf. T) als Funktionsdefinition Max Wagner - Einführung in das λ-kalkül IPD

27 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse def less(a, b): if a - b == 0: return not b - a == 0 return False Max Wagner - Einführung in das λ-kalkül IPD

28 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse def less(a, b): if iszero(minus(a, b)): return not iszero(minus(b, a)) return cfalse Max Wagner - Einführung in das λ-kalkül IPD

29 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse less = λa. λb. (iszero(minus(a, b))) (not iszero(minus(b, a))) (cfalse) Max Wagner - Einführung in das λ-kalkül IPD

30 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse less = λa. λb. (iszero (minus a b)) (iszero (minus b a) cfalse ctrue) cfalse Max Wagner - Einführung in das λ-kalkül IPD

31 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse def divides(a, b): if b == 0: return True if b < a: return False return divides(a, b - a) Max Wagner - Einführung in das λ-kalkül IPD

32 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse def divides(a, b): if iszero(b): return ctrue if less(b, a): return cfalse return divides(a, minus(b, a)) Max Wagner - Einführung in das λ-kalkül IPD

33 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse def divides(a, b): iszero b ctrue ( (less b a) cfalse divides(a, minus(b, a)) ) Max Wagner - Einführung in das λ-kalkül IPD

34 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse divides = λa. λb. iszero b ctrue ((less b a) cfalse (divides a (minus b a)) Max Wagner - Einführung in das λ-kalkül IPD

35 Beispiel: Teilbarkeit von Zahlen überprüfen Gegeben: natürliche Zahlen, minus, iszero boolsche Werte ctrue, cfalse divides = Y (λdivides. λa. λb. iszero b ctrue ((less b a) cfalse (divides a (minus b a))) Max Wagner - Einführung in das λ-kalkül IPD

36 10 Minuten Rechnen später Max Wagner - Einführung in das λ-kalkül IPD

3 Exkurs: Der λ-kalkül

3 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

Mehr

Funktionale Programmierung ALP I. λ Kalkül. Teil 2 WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. λ Kalkül. Teil 2 WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül Teil 2 WS 2012/2013 Lokale Variablennamen Haskell: let x = exp1 in exp2 Lambda: λ exp1. exp2 Einfache Regel: Der Geltungsbereich eines Lambda-Ausdrucks erstreckt sich soweit wie möglich

Mehr

Der untypisierte Lambda-Kalkül als Programmiersprache

Der untypisierte Lambda-Kalkül als Programmiersprache Der untypisierte Lambda-Kalkül als Programmiersprache November 29, 2006 betreut von Prof. Tobias Nipkow Einführung In den 1930er Jahren von Alonzo Church und Stephen Kleene eingeführt Der Lambda-Kalkül

Mehr

Der untypisierte Lambda-Kalkül

Der untypisierte Lambda-Kalkül Der untypisierte Lambda-Kalkül Fabian Immler 08.05.2008 1 Motivation und Einführung Der Lambda-Kalkül ist ein formales System zur Beschreibung von Funktionen, welches Funktionsdefinition sowie das Auswerten

Mehr

Der einfach getypter Lambda-Kalkül

Der einfach getypter Lambda-Kalkül Der einfach getypter Lambda-Kalkül Typprüfung und Typinferenz Tobias Nipkow und Steffen Smolka Technische Universität München 1 Einleitung 2 Explizit getypter λ-kalkül 3 Implizit getypter λ-kalkül Statische

Mehr

Funktionen und sprachliche Bedeutungen

Funktionen und sprachliche Bedeutungen Einführung in die Semantik,4. Sitzung Mehr zu Funktionen / Mengen, Relationen, Göttingen 1. November 2006 Mengen und sprachliche Bedeutungen Abstraktion und Konversion Rekursion Charakteristische Funktionen

Mehr

Funktionale Programmierung Einführung

Funktionale Programmierung Einführung Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................

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 17. Oktober 2006 Einführung in Haskell: Syntax, Reduktionen, Kernsprachen Haskell,

Mehr

Lambda-Kalkül. Philipp Meyer. 28. April 2009

Lambda-Kalkül. Philipp Meyer. 28. April 2009 Lambda-Kalkül Philipp Meyer 28. April 2009 1 Einleitung Der λ-kalkül ist eine von Alonzo Church und Stephen Kleene in den 1930er Jahren eingeführtes Modell zur Beschreibung berechenbarer Funktionen. Es

Mehr

Kapitel 5: λ-kalkül und Laziness

Kapitel 5: λ-kalkül und Laziness Funktionale Programmierung (WS2005/2006) 5/1 Kapitel 5: λ-kalkül und Laziness Lernziele dieses Kapitels 1. Syntax des einfachen, ungetypten λ-kalküls Symbolische Manipulation von λ-ausdrücken in Haskell,

Mehr

Inferenzmethoden. Einheit 18. Logik höherer Stufe

Inferenzmethoden. Einheit 18. Logik höherer Stufe Inferenzmethoden Einheit 18 Logik höherer Stufe 1. Syntax und Semantik 2. Simulation mathematischer Konstrukte 3. Beweisführung in Logik höherer Stufe Logik höherer Stufe Logik erster Stufe hat nur einfache

Mehr

Theoretische Informatik II

Theoretische Informatik II Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Wintersemester 2007/2008 B. Beckert Theoretischen Informatik II: WS 2007/08 1 / 179 Dank Diese Vorlesungsmaterialien basieren

Mehr

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik

Mehr

1. Typen 1.1 Typsicherheit 1.2 Typprüfung

1. Typen 1.1 Typsicherheit 1.2 Typprüfung 1. Typen 1.1 Typsicherheit 1.2 Typprüfung Ein Typsystem ist ein praktikables, syntaktisches Verfahren, mit dem man die Abwesenheit gewisser Laufzeit-Eigenschaften eines Programms beweisen kann, indem man

Mehr

Der λ-kalkül. Frank Huch. Sommersemester 2015

Der λ-kalkül. Frank Huch. Sommersemester 2015 Der λ-kalkül Frank Huch Sommersemester 2015 In diesem Skript werden die Grundlagen der Funktionalen Programmierung, insbesondere der λ-kalkül eingeführt. Der hier präsentierte Stoff stellt einen teil der

Mehr

Musterableitung Relativsätze als Hilfestellung zur Lösung von Aufgaben in den Übungen und der Klausur

Musterableitung Relativsätze als Hilfestellung zur Lösung von Aufgaben in den Übungen und der Klausur eminar: Formale emantik Modul 04-006-1006: Grammatikorie eminarleiter: Anke Assmann Institut für Linguistik Universität Leipzig Musterableitung Relativsätze als Hilfestellung zur Lösung von Aufgaben in

Mehr

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle

Formale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle 1 Formale Methoden der Softwaretechnik 1 Vorlesung vom 16.11.09: Grundlage von Isabelle Christoph Lüth, Lutz Schröder Universität Bremen Wintersemester 2009/10 2 Fahrplan Teil I: Grundlagen der Formalen

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 5: Applikative Programmierung Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht

Mehr

Der untypisierte Lambda-Kalkül als Programmiersprache

Der untypisierte Lambda-Kalkül als Programmiersprache Proseminar: Programmiersprachen bei Prof. Tobias Nipkow Der untypisierte Lambda-Kalkül als Programmiersprache von Benjamin Peherstorfer betreut von Prof. Tobias Nipkow 23. November 2006 Inhaltsverzeichnis

Mehr

Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Theoretische Informatik. Thema: von. Paul Krüger

Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Theoretische Informatik. Thema: von. Paul Krüger 1 Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Theoretische Informatik Thema: - Kalkül von Paul Krüger Betreuer: Prof. Dr. Heribert Vollmer Das Rahmenthema ist " Berechenbarkeit

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Funktionale Programmierung

Funktionale Programmierung Monaden LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 30. April 2009 Monaden Eine Monade ist ein Programmier-Schema für sequentielle Berechnungen. In Haskell

Mehr

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

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

Mehr

Theorembeweiserpraktikum SS 2016

Theorembeweiserpraktikum SS 2016 Institut für Programmstrukturen und Datenorganisation Lehrstuhl Programmierparadigmen Am Fasanengarten 5 76131 Karlsruhe http://pp.ipd.kit.edu/ Theorembeweiserpraktikum SS 2016 http://pp.ipd.kit.edu/lehre/ss2016/tba

Mehr

Operationale Semantik 1

Operationale Semantik 1 Operationae Semantik 1 Side 1 Zie: Geschossene Terme t ι ι sind Programme, die auf Eingabe n die Ausgabe [t] n erzeugen. Ein-/Ausgabekonvention: Eingaben und Ausgaben sind Numerae! Def. Ein Numera ist

Mehr

LR: Syntax. Semantik und Analyse von Funktionalen Programmen (SAFP): LR: Reduktions-Regeln. LR: Reduktions-Regeln

LR: Syntax. Semantik und Analyse von Funktionalen Programmen (SAFP): LR: Reduktions-Regeln. LR: Reduktions-Regeln LR: Syntax Semantik und Analyse von Funktionalen Programmen (SAFP): KFPT mit Sharing und Striktheisanalyse: LR Prof. Dr. Manfred Schmidt-Schauß SAFP; WS 2014/15 E ::= V (c E 1... E ar(c) ) (seq E 1 E 2

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

Andreas Abel Ludwig-Maximilians-Universität München. Rohfassung vom 2. Juli 2010

Andreas Abel Ludwig-Maximilians-Universität München. Rohfassung vom 2. Juli 2010 Lambda-Kalkül Andreas Abel Ludwig-Maximilians-Universität München Skript zur Vorlesung Lambda-Kalkül. Weiteres Material ist bereitgestellt unter http://www.tcs.ifi.lmu.de/lehre/ws06-07/lambda/ und http://www.tcs.ifi.lmu.de/lehre/ws08-09/lambda/

Mehr

Semantik und Analyse von Funktionalen Programmen (SAFP):

Semantik und Analyse von Funktionalen Programmen (SAFP): Semantik und Analyse von Funktionalen Programmen (SAFP): KFPT mit Sharing und Striktheisanalyse: LR Prof. Dr. Manfred Schmidt-Schauß SAFP; WS 2014/15 Stand der Folien: 5. Februar 2015 LR: Syntax E ::=

Mehr

Formale Semantik. λ Typenlogik. Tutorium WiSe 2013/ November Sitzung: Folien freundlicherweise bereitgestellt von Andreas Bischoff

Formale Semantik. λ Typenlogik. Tutorium WiSe 2013/ November Sitzung: Folien freundlicherweise bereitgestellt von Andreas Bischoff Formale Semantik Tutorium WiSe 2013/14 20. November 2013 3. Sitzung: λ Typenlogik Folien freundlicherweise bereitgestellt von Andreas Bischoff Grenzen der Typenlogik Das letzte Mal: lesen(duden*) ( Eigenschaft

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

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

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

Mehr

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9)

Programmierung 1 (Wintersemester 2015/16) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9) Fachrichtung 6. Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung Programmierung (Wintersemester 5/6) Lösungsblatt: Aufgaben für die Übungsgruppen: 8 (Kapitel 9) Hinweis: Dieses

Mehr

Semantik von Programmiersprachen SS 2017

Semantik von Programmiersprachen SS 2017 Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen

Mehr

Inhalt Kapitel 2: Rekursion

Inhalt Kapitel 2: Rekursion Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29 Beispiele und Definition Rekursion 30 Man kann eine Funktion

Mehr

Grundkurs Semantik. Sitzung 6: Prädikation, Modifikation, Referenz. Andrew Murphy

Grundkurs Semantik. Sitzung 6: Prädikation, Modifikation, Referenz. Andrew Murphy Grundkurs Semantik Sitzung 6: Prädikation, Modifikation, Referenz Andrew Murphy andrew.murphy@uni-leizpig.de Grundkurs Semantik HU Berlin, Sommersemester 2015 http://www.uni-leipzig.de/ murphy/semantik15

Mehr

Gliederung. Programmierparadigmen. Mathematische Funktionen: Mathematische Funktionen: Lambda-Kalkül

Gliederung. Programmierparadigmen. Mathematische Funktionen: Mathematische Funktionen: Lambda-Kalkül Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2013, 9. Juli 2013, c 2009 13 D.Rösner 1 Einführung

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 11 Rekursion Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Lambda-Notation. Semantik und Pragmatik. Lambda-Notation. Lambda-Notation. Lambda-Notation. Lambda-Notation

Lambda-Notation. Semantik und Pragmatik. Lambda-Notation. Lambda-Notation. Lambda-Notation. Lambda-Notation emantik und Pragmatik 22. Mai 2006 Gerard Jäger mit Angabe des Definitionsbereics Funktionen aben Definitionsbereic: { x, x 2 x N} { x, x 2 x R} Notation λx.x 2 desalb unvollständig vollständige Notation:

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Die Komplement-Funktion

Die Komplement-Funktion Die Komplement-Funktion type IntMap α = [(Int, α)] compl :: [α] (Int, IntMap α) compl s = let n = (length s) 1 t = [0..n] g = zip t s g = filter (λ(i, _) notelem i (get t)) g in (n + 1, g ) Zum Beispiel:

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

Optimierungen in einer formalen Semantik Konstantenfaltung und Konstantenpropagation

Optimierungen in einer formalen Semantik Konstantenfaltung und Konstantenpropagation Optimierungen in einer formalen Semantik Konstantenfaltung und Konstantenpropagation http://pp.info.uni-karlsruhe.de/lehre/ss2011/tba/ LEHRSTUHL PROGRAMMIERPARADIGMEN 0 KIT SS Universität 2011 desdenis

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Teil 7: Rekursion; Imperative Programme

Teil 7: Rekursion; Imperative Programme 1 Teil 7: Rekursion; Imperative Programme Terminierend rekursive Funktionen Im Tutorial: Kap. 3.5 / 9.2 Definition mit recdef, Nachweis der Terminierung Beweise über rekursive Funktionen Imperative Programme

Mehr

Lambda-Kalkül. Dr. Eva Richter. 27.April 2012

Lambda-Kalkül. Dr. Eva Richter. 27.April 2012 Lambda-Kalkül Dr. Eva Richter 27.April 2012 1 / 32 Historisches um 1200 Einführung des Zahlensystems in Europa u.a. durch Fibonacci; ist charakterisiert durch ein kleine Menge von Ziffern, deren Wert von

Mehr

Die projektive Ebene Was sind unendlich ferne Punkte?

Die projektive Ebene Was sind unendlich ferne Punkte? Die projektive Ebene Was sind unendlich ferne Punkte? Prof. Dr. Hans-Georg Rück Fachbereich Mathematik/Informatik Universität Kassel Heinrich-Plett-Str. 40 34132 Kassel Zusammenfassung: Wir konstruieren

Mehr

Vorsicht bei redundanten und unvollständigen Matches!

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

Mehr

Theorembeweiser und ihre Anwendungen

Theorembeweiser und ihre Anwendungen Theorembeweiser und ihre Anwendungen Prof. Dr.-Ing. Gregor Snelting Dipl.-Inf. Univ. Daniel Wasserrab Lehrstuhl Programmierparadigmen IPD Snelting Universität Karlsruhe (TH) IPD Snelting, Uni Karlsruhe

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Teil 1: Funktionale Programmierung Kapitel 3 Lambda Kalkül (Dieses Kapitel orientiert sich an Material von Prof. Dr.-Ing. Snelting, KIT) http://www.tu-ilmenau.de/fakia/functional.html

Mehr

Grundlagen der Programmierung (Vorlesung 15)

Grundlagen der Programmierung (Vorlesung 15) Grundlagen der Programmierung (Vorlesung 15) Ralf Möller, FH-Wedel Vorige Vorlesung Blöcke, Funktionen Auswertestrategien Inhalt dieser Vorlesung Prozeduren Rekursion Lernziele Grundlagen der systematischen

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Mathematische Rekursion

Mathematische Rekursion Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische

Mehr

GTI. Hannes Diener. 18. Juni. ENC B-0123,

GTI. Hannes Diener. 18. Juni. ENC B-0123, GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.

Mehr

Formale Systeme. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft

Formale Systeme. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft Formale Systeme Prof. Dr. Bernhard Beckert, WS 2016/2017 Aussagenlogik: Tableaukalku l KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft

Mehr

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Funktionsobjekte 306 operator

Funktionsobjekte 306 operator Funktionsobjekte 306 Funktionsobjekte sind Objekte, bei denen der operator() definiert ist. (Siehe ISO 14882-2012, Abschnitt 20.8.) Viele Algorithmen der STL akzeptieren solche Funktionsobjekte, um aus

Mehr

Funktionale Programmierung Mehr funktionale Muster

Funktionale Programmierung Mehr funktionale Muster Mehr funktionale Muster Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 07.12.2017 06:56 Inhaltsverzeichnis Pattern Matching..................................

Mehr

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

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public

Mehr

Grundlagen der Programmierung in C Funktionen

Grundlagen der Programmierung in C Funktionen Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:

Mehr

Verwende Einführungsregeln, um die Konklusion in kleinere Teile aufzubrechen, und Eliminationsregeln, um Annahmen aufzubrechen (Dekomposition).

Verwende Einführungsregeln, um die Konklusion in kleinere Teile aufzubrechen, und Eliminationsregeln, um Annahmen aufzubrechen (Dekomposition). 2.3. DER λ-kalkül 45 Wende die Hypothesenregel hypothesis und die Widerspruchsregel false e an, wann immer dies möglich ist, da sie Teilbeweise (Zweige im Beweisbaum) abschließen. Verwende Einführungsregeln,

Mehr

Linguistische Grundlagen 6. Semantik

Linguistische Grundlagen 6. Semantik Linguistische Grundlagen 6. Semantik Gereon Müller Institut für Linguistik Universität Leipzig www.uni-leipzig.de/ muellerg Gereon Müller (Institut für Linguistik) 04-006-1001: Linguistische Grundlagen

Mehr

Informatik für Schüler, Foliensatz 18 Rekursion

Informatik für Schüler, Foliensatz 18 Rekursion Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. März 2009 1/10 Informatik für Schüler, Foliensatz 18 Rekursion Prof. G. Kemnitz Institut für Informatik, Technische Universität

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Haskell und Python. pures Programmieren, Auswerten von Ausdrücken rekursives Programmieren, Typsystem. Python: Eine prozedurale Programmiersprache

Haskell und Python. pures Programmieren, Auswerten von Ausdrücken rekursives Programmieren, Typsystem. Python: Eine prozedurale Programmiersprache Haskell und Python Haskell: Eine funktionale Programmiersprache funktional, nicht-strikt, hat ein polymorphes und starkes Typsystem, flexible Datenstrukturen, gute Abstraktionseigenschaften, Ziele: pures

Mehr

DieÜbersetzung funktionaler Programmiersprachen

DieÜbersetzung funktionaler Programmiersprachen DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;

Mehr

Automaten, Spiele, und Logik

Automaten, Spiele, und Logik Automaten, Spiele, und Logik Woche 13 7. Juli 2014 Inhalt der heutigen Vorlesung Terminationsanalyse Rekursive Funktionnen fact(n)= if n==0 then 1 else n*fact(n-1) fibo(n)= if n

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Mathematik für Informatiker I

Mathematik für Informatiker I Mathematik für Informatiker I Mitschrift zur Vorlesung vom 19.10.2004 In diesem Kurs geht es um Mathematik und um Informatik. Es gibt sehr verschiedene Definitionen, aber für mich ist Mathematik die Wissenschaft

Mehr

Grundlegende Begriffe: Funktionen

Grundlegende Begriffe: Funktionen 2 Grundlegende Begriffe: Funktionen Hohe Gedanken brauchen eine hohe Sprache Aristophanes In diesem Kapitel werden wichtige Eigenschaften von Funktionen besprochen. Dazu werden zunächst die grundlegenden

Mehr

II.3.1 Rekursive Algorithmen - 1 -

II.3.1 Rekursive Algorithmen - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -

Mehr

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16 C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,

Mehr

Programmieren als Grundkompetenz

Programmieren als Grundkompetenz Programmieren als Grundkompetenz Irrtümer, Chancen und Methodik der Programmierausbildung Michael Sperber sperber@informatik.uni-tuebingen.de Vorgeschichte... AP Computer Science (1987/1998) Informatik

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Lösungen zum Übungsblatt 3: Softwareentwicklung I (WS 2006/07)

Lösungen zum Übungsblatt 3: Softwareentwicklung I (WS 2006/07) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J.O. Blech Dipl.-Inform. M.J. Gawkowski Dipl.-Inform. N. Rauch Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungen zum Übungsblatt

Mehr

Beispiel 1: Addition von Ordinalzahlen in SML

Beispiel 1: Addition von Ordinalzahlen in SML Slide 1 Eine semantische Analyse struktureller Rekursion Andreas Abel 26. Februar 1999 Beispiel 1: Addition von Ordinalzahlen in SML datatype Nat =... Slide 2 datatype Ord = O S of Ord Lim of Nat > Ord;

Mehr

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

Tücken der dynamischen Bindung

Tücken der dynamischen Bindung Kapitel 3 Tücken der dynamischen Bindung 3.1 this-pointer Im Methodenaufruf o.m(x) ist o Bezugsobjekt wird als zusätzlicher Parameter übergeben: m(o,x) kann im Rumpf von m als this (bzw self) angesprochen

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK FÜR BIOLOGEN Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie

Mehr

Formale Systeme. Das Erfu llbarkeitsproblem. Prof. Dr. Bernhard Beckert, WS 2017/2018

Formale Systeme. Das Erfu llbarkeitsproblem. Prof. Dr. Bernhard Beckert, WS 2017/2018 Formale Systeme Prof. Dr. Bernhard Beckert, WS 2017/2018 Das Erfu llbarkeitsproblem KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft

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

Einführung - Parser. Was ist ein Parser?

Einführung - Parser. Was ist ein Parser? Gliederung 1. Einleitung 1.1 Was ist ein Parser? 1.2 Was ist ein tabellengesteuerter TD-Parser? 1. Tabellengesteuerter TD-Parser 2.1 Funktionsweise 2.2 Darstellung als Pseudocode 2.3 Konstruktion von prädiktiven

Mehr

- Theorie der uninterpretierten

- Theorie der uninterpretierten Theorie der uninterpretierten Funktionen Entscheidungsverfahren mit Anwendungen in der Softwareverifikation STEPHAN FALKE INSTITUT FÜR THEORETISCHE INFORMATIK (ITI) 0 KIT 13. Universität Mai 2013 des S.

Mehr

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

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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration Programmieren lernen mit Groovy Rekursion Seite 1 Rekursion Rekursion Ursprung lat. recurrere ~ zurücklaufen rekursive Definition Definition mit Bezug auf sich selbst Beispiel Fakultätsfunktion n! 0! =

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

Substitution. Unifikation. Komposition der Substitution. Ausführung der Substitution

Substitution. Unifikation. Komposition der Substitution. Ausführung der Substitution Substitution Unifikation Ziel eines Widerspruchsbeweis: Widerspruch ja/nein Variablenbindung im Falle eines Widerspruchs Eine Substitution θ ist eine endliche Menge der Form {v 1 /t 1 v n /t n }, wobei

Mehr

FACHHOCHSCHULE MANNHEIM

FACHHOCHSCHULE MANNHEIM für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND

Mehr

Aufgabe 1 (12 Punkte)

Aufgabe 1 (12 Punkte) Aufgabe 1 (12 Punkte) Schreiben Sie eine Klasse public class ZinsesZins, die zu einem gegebenen Anfangskapital von 100,00 die Kapitalentwicklung bei einer jährlichen nachschüssigen Verzinsung in Höhe von

Mehr

Kapitel 3. Konvergenz von Folgen und Reihen

Kapitel 3. Konvergenz von Folgen und Reihen Kapitel 3. Konvergenz von Folgen und Reihen 3.1. Normierte Vektorräume Definition: Sei V ein Vektorraum (oder linearer Raum) über (dem Körper) R. Eine Abbildung : V [0, ) heißt Norm auf V, falls die folgenden

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 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

Nichtklassische Logiken

Nichtklassische Logiken Nichtklassische Logiken Peter H. Schmitt pschmitt@ira.uka.de UNIVERSITÄT KARLSRUHE Sommersemester 2004 P. H. Schmitt: Nichtklassische Logiken p.1 Inhalt Wiederholung P. H. Schmitt: Nichtklassische Logiken

Mehr

Formale Systeme. Prädikatenlogik 2. Stufe. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK

Formale Systeme. Prädikatenlogik 2. Stufe. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK Formale Systeme Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State of Baden-Württemberg and National Large-scale Research Center of the Helmholtz

Mehr