Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Größe: px
Ab Seite anzeigen:

Download "Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung"

Transkript

1 Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive Programmierung Aufwandsbetrachtungen rekursiver Programme 2. Semantik funktionaler Programme Induktiver Beweis Induktive Deutung Fixpunktdeutung 3. Einführung in die rein funktionale Programmiersprache Scheme 4. Verfahren zur automatischen Speicherverwaltung 2 Eigenschaften rein funktionaler Programmierung Alle Programme und Prozeduren sind Funktionen und unterscheiden deutlich zwischen hereinkommenden Werten (Parameter) und herausgehenden Werten (Ergebnisse) Programmausführung in funktionalen Programmen ist die Auswertung eines Ausdrucks Es gibt keine Variablen Variablen werden durch Parameter ersetzt Es gibt keine Zuweisungen und keine Schleifen Schleifen werden durch rekursive Aufrufe ersetzt Der Wert einer Funktion hängt nur vom Wert der Parameter ab und nicht von der Reihenfolge der Berechnungen 3

2 Funktionale und imperative Programmierung Vorteile funktionaler Programmierung gegenüber imperativer Programmierung einheitliche Betrachtung von Programmen als Funktionen Behandlung von Funktionen als Daten (=Werte) Einschränkung von Seiteneffekten Automatische Speicherfreigabe Flexibilität, Prägnanz in der Notation, einfache Semantik Hauptnachteil funktionaler Programmierung ist die Ineffizienz der Programmausführung Anwendungsgebiete: künstliche Intelligenz, mathematische Beweissysteme, Logikanwendungen 4 Funktionales Programmieren in imperativen Sprachen Imperative Programmiersprachen (wie Modula-3) besitzen im allgemeinen ebenfalls mehr oder weniger ausgereifte Formen der funktionalen Programmierung rein funktionale Programmierung in imperativen Sprachen kann durch folgende Einschränkungen bei der Auswahl der gewählten Programmierelemente erreicht werden ausschließliche Verwendung von Funktionen zur Beschreibung des Kontrollflusses eines Programms wird alleinig auf Selektion und Funktionsaufruf zurückgegriffen keine Verwendung von Variablen, Zuweisungen und Schleifen in den Programmen Mächtigkeit des so eingeschränkten Programmiermodells entspricht dem der uneingeschränkten imperativen Sprache 5 Voraussetzungen (Euklidischer Algorithmus) Euklidischer Algorithmus kann zur Berechnung des größten gemeinsamen Teilers (ggt) benutzt werden Eine Zahl ggt heißt größter gemeinsamer Teiler zweier Zahlen a und b falls gilt: ggt teilt a und b für jeden gemeinsamen Teiler d von a und b gilt: d teilt die Zahl ggt wichtige Eigenschaften des ggt: ggt(x,0) = x ggt(x, y) = ggt(y, x mod y) für x,y > 0 6

3 Modula-3 Programm (Euklidischer Algorithmus) PROCEDURE ggt(a,b : INTEGER) : INTEGER= VAR tmp : INTEGER; LOOP IF b = 0 THEN RETURN a; tmp := a; a := b; b := tmp MOD b; 7 Modula-3-Programm (Rekursive Funktion) PROCEDURE ggt(a,b : INTEGER) : INTEGER= IF b = 0 THEN RETURN a; RETURN ggt(b, a MOD b) 8 Allgemeiner Entwurf rekursiver Funktionen analog zum Beweisen mit vollständiger Induktion stellt man sich die Frage: wie wird der Basisfall gelöst? der absolute Trivialfall der einfachste nicht-triviale Fall wie kann der allgemeine Fall der Größe n auf die Lösung für eine Größe n < n reduziert werden? aus der so erzeugten Spezifikation können bedingte Gleichungen abgeleitet werden, die dann in Programmcode umgesetzt werden derartig konstruierte rekursive Funktionen können dann mittels Induktion als korrekt bewiesen werden 9

4 Rekursive Funktionen: Mathematische Operationen PROCEDURE mod (n,m:integer):integer = (* n 0, m > 0*) IF n < m THEN RETURN n; RETURN mod(n-m,m); END mod; 10 Rekursive Funktionen: Mathematische Operationen PROCEDURE binom (n,k:integer):integer =(*n,k 0, n k*) IF n = k OR k = 0 THEN RETURN 1; RETURN binom(n-1,k-1) + binom(n-1,k); END binom; 11 Rekursive Funktion: Erkennen eines Palindroms PROCEDURE h (n : INTEGER) : INTEGER = (* n 0 *) IF n < 10 THEN RETURN 1 RETURN 10 * h(n / 10) END h; PROCEDURE spiegel (n : INTEGER) : INTEGER = (* n 0 *) IF n < 10 THEN RETURN n RETURN mod(n,10) * h(n) + spiegel(n/10) END spiegel; PROCEDURE palindrom (n: INTEGER) : BOOLEAN = (*n 0*) RETURN spiegel(n) = n END palindrom; 12

5 Rekursionsformen: Lineare Rekursion in einer rekursiven Funktionsdeklaration für f tritt ein Aufruf von f in jedem Zweig einer Fallunterscheidung höchstens einmal auf PROCEDURE sum(i, j : INTEGER) : INTEGER = IF i > j THEN RETURN 0; RETURN i + sum(i + 1, j); END sum; 13 Rekursionsformen: Repetitive Rekursion eine linear rekursive Funktion f heißt repetitiv rekursiv, falls alle rekursiven Aufrufe in den Zweigen einer Fallunterscheidung als äußerste (letzte) Aktion vorkommen PROCEDURE ggt(u,v : INTEGER) : INTEGER = IF v = 0 THEN RETURN u; RETURN ggt(v, u MOD v); 14 Rekursionsformen: Kaskardenartige Rekursion treten in mindestens einem Zweig einer Fallunterscheidung zwei oder mehr rekursive Aufrufe auf, so spricht man von einer kaskaden- oder baumartigen, nichtlinearen Rekursion PROCEDURE binom (n,k:integer):integer = IF n = k OR k = 0 THEN RETURN 1; RETURN binom(n-1,k-1) + binom(n-1,k); END binom; 15

6 Rekursionsformen: Vernestete Rekursion treten im Rumpf einer rekursiven Funktion f in den aktuellen Parameterausdrücken eines rekursiven Aufrufs von f weitere rekursive Aufrufe von f auf, so heißt f vernestet. PROCEDURE ackermann (m,n:integer):integer = (*m,n 0*) IF m = 0 THEN RETURN n + 1; IF n = 0 THEN RETURN ackermann(m-1,1) RETURN ackermann(m-1, ackermann(m,n-1)); END ackermann; 16 Effizienz funktionaler Programme Bewertungskriterien für den Auswertungsaufwand eines funktionalen Programms Anzahl der auf algorithmischer Basis bei der Berechnung auszuführenden Grundoperationen Anzahl der durchgeführten rekursiven Funktionsaufrufe Aufruftiefe der rekursiven Funktionen Effizienz funktionaler Programme leidet oft besonders unter dem sehr kostspieligen Aufbau der Funktionsrahmen während der rekursiven Berechnung der Funktionsergebnisse zur Effizienzverbesserung werden funktionale Programme vom Übersetzer oft vor der Ausführung wieder in eine nicht rekursive Form gebracht 17 Laufzeitstapel beim rekursiven Aufruf Basis Stapel Wachstum Rahmen der aufrufenden Funktion Rahmen der aufgerufenen Funktion top of stack 18

7 Bestandteile von Funktionsrahmen Parameter Temporär genutzter Platz Rücksprungadresse Statischer Verweis Dynamischer Verweis 19 Automatische Transformation rekursiver Aufrufe Anlegen der Funktionsrahmen zur Ausführung einer rekursiven Funktion ist sowohl sehr speicher- als auch sehr zeitintensiv Übersetzer für funktionale Sprachen versuchen daher bei der Programmerzeugung intern rekursive Funktionen wieder in Schleifen zu transformieren repetitiv rekursive Funktionen eignen sich besonders zur einfachen und schnellen Rücktransformation in Schleifen nicht repetitiv rekursive Funktionen können mittels akkumulierender Parameter in repetitive Funktionen transformiert werden 20 Transformation von rekursiven Aufrufen in Schleifen Eigenschaften repetitiv rekursiver Funktionen: vor Auswertung eines neuen rekursiven Aufrufs ist die Auswertung des vorhergehenden rekursiven Aufrufs völlig abgeschlossen aktuelle Parameterwerte müssen nicht aufbewahrt werden Umwandlung repetitiv rekursiver Funktionen in Schleifen: für jeden Funktionsparameter p i wird eine Variable t i angelegt Funktionsrumpf wird in eine Endlosschleife umgewandelt nicht rekursive Fallunterscheidungen bleiben unverändert rekursive Fallunterscheidungen werden in 2 Schritten modelliert: Zuweisungen der aktuellen Parameterwerte a i des rekursiven Aufrufs zu den temporären Variablen t i Zuweisung der den t i zugewiesenen Werte an die formalen Parametern der Funktion p i 21

8 Beispiel: Repetitiv rekursive Funktion PROCEDURE ggt(u,v : INTEGER) : INTEGER = IF v = 0 THEN RETURN u; RETURN ggt(v, u MOD v); 22 Beispiel: Transformation in eine Schleife PROCEDURE ggt(u,v : INTEGER) : INTEGER = (* Vom Übersetzer eingefügte Hilfsvariablen *) VAR t1, t2 : INTEGER; LOOP IF v = 0 THEN RETURN u; (* Auswertung der aktuellen Parameter *) t1 := v; t2 := u MOD v; (* Neuzuweisung der Parameter *) u := t1; v := t2; (* IF *) (* Schleife *) 23 Transformation nicht repetitiv rekursiver Funktionen prinzipiell kann jede rekursive Funktion in die repetitive Form gebracht und anschließend in eine Schleife transformiert werden einfach gestaltet sich die Transformation von nur linearen Rekursionen in das repetitiv rekursive Gegenstück in nur linearen Rekursionsformen ist in jeder Fallunterscheidung höchsten ein rekursiver Aufruf erlaubt rekursiver Aufruf in nur linearen Funktionen muss jedoch nicht die letzte Operation einer Fallunterscheidung sein Transformation von nur linearer in repetitiv lineare Rekursion rekursive Funktionsdeklaration wird um einen zusätzlichen Ergebnisparameter erweitert Operationen, die sonst erst nach Beendigung des rekursiven Aufrufes durchgeführt würden, werden vorab berechnet und dem Ergebnisparameter beim rekursiven Aufruf übergeben 24

9 Beispiel: Nicht repetitiv rekursive Funktion PROCEDURE sum(i, j : INTEGER) : INTEGER = IF i > j THEN RETURN 0; RETURN i + sum(i + 1, j); END sum; 25 Beispiel: Transformation in repetitiv rekursive Form PROCEDURE sum1(i, j, sumsofar : INTEGER) : INTEGER = IF i > j THEN RETURN sumsofar; RETURN sum1(i + 1, j, sumsofar + i) END sum1; PROCEDURE sum(i, j : INTEGER) : INTEGER = RETURN sum1(i, j, 0); END sum; 26

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract: Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

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

Grundlagen der Programmierung (Vorlesung 14)

Grundlagen der Programmierung (Vorlesung 14) Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

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

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

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

Mehr

Was ist Logische Programmierung?

Was ist Logische Programmierung? Was ist Logische Programmierung? Die Bedeutung eines Computer-Programms kann durch Logik erklärt werden. Die Idee der logischen Programmierung besteht darin, die Logik eines Programms selber als Programm

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

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

Kontrollstrukturen, Strukturierte Programmierung

Kontrollstrukturen, Strukturierte Programmierung , Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

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

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

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Darstellung von Algorithmen Aus den Einführungsbeispielen und

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

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1 Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische

Mehr

Funktionale Programmierung

Funktionale Programmierung FP-1.0 Funktionale Programmierung Prof. Dr. Uwe Kastens SS 2013 Vorlesung Funktionale Programmierung SS 2013 / Folie 100 Begrüßung Functional Programming is Fun FP-1.1 Fun ctional Programming is Fun ctional

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

! Sprachkonstrukte für den funktionalen Programmierstil in Java. ! Programmiertechniken:

! Sprachkonstrukte für den funktionalen Programmierstil in Java. ! Programmiertechniken: Überblick über dieses Kapitel Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2011/2012 Kapitel 5: Funktionaler Programmierstil und Rekursion! Sprachkonstrukte

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

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

Objektorientierte Programmierung

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

! Sprachkonstrukte für den funktionalen Programmierstil in Java! ! Programmiertechniken:! ! Terminierung und partielle Korrektheit!

! Sprachkonstrukte für den funktionalen Programmierstil in Java! ! Programmiertechniken:! ! Terminierung und partielle Korrektheit! Überblick über dieses Kapitel Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2012/2013 Kapitel 5: Funktionaler Programmierstil und Rekursion Sprachkonstrukte

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

Imperative vs. Funktionale Programmierung

Imperative vs. Funktionale Programmierung Beispiel: Entwerfe eine Funktion, die testet, ob eine Zahl n eine Primzahl ist oder nicht. Beobachtung: (1) Wenn n Primzahl ist, ist die Menge der Teiler von n leer. (2) Die Menge der Teiler von n sind

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

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

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

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 Einführung in die Programmierung WS 2014/15 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 2. Alg., Ber. & PS Inhalt 1. Algorithmen 2. Programmiersprachen Algorithmus und Programm(iersprache)

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

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

Programmierkurs Java

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

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

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

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

Großübung zu Einführung in die Programmierung

Großübung zu Einführung in die Programmierung Großübung zu Einführung in die Programmierung Daniel Bimschas, M.Sc. Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/bimschas Inhalt 1. Besprechung Übung 4 Iteration

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

Funktionale Programmierung mit C++

Funktionale Programmierung mit C++ Funktionale Programmierung mit C++ Überblick Programmierung in funktionaler Art Warum funktionale Programmierung? Was ist funktionale Programmierung? Charakteristiken funktionaler Programmierung Was fehlt

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 22. Constraint-Satisfaction-Probleme: Kantenkonsistenz Malte Helmert Universität Basel 14. April 2014 Constraint-Satisfaction-Probleme: Überblick Kapitelüberblick

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Darstellung des eingegebenen Programms Wähle Zielarchitektur Wähle abstrakte

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Manuel Grandeit Hallo Welt -Seminar 28.06.2011 Manuel Grandeit 1 / 40 Inhaltsübersicht Einführung Münzwechsel Was ist ein Zustand? Konstruktion einer DP-Lösung Top-Down-DP Bottom-Up-DP

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

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Der Euklidische Algorithmus

Der Euklidische Algorithmus Euklid.nb 1 Der Euklidische Algorithmus (Euklid von Alexandria ca. 365-300 v.chr.) Realisierung in den Versionen: Subtraktionsform, Divisionsform, iterativ, rekursiv und regelbasiert Nimmt man abwechselnd

Mehr

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C: Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

2. Die Darstellung von Algorithmen

2. Die Darstellung von Algorithmen 2. Die Darstellung von Algorithmen Aus den Einführungsbeispielen und Übungsaufgaben ist erkennbar, dass zur Darstellung von Algorithmen Grundelemente notwendig sind. Neben der Notation einzelner elementarer

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Kapitel 11: Wiederholung und Zusammenfassung

Kapitel 11: Wiederholung und Zusammenfassung Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

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

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public

Mehr

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40 CAP-News 40 CAP-News ist in unrägelmäßigen Abständen erscheinende Information zum Produktkonfigurator CAP/VARIANTS. Hier werden die neuen Befehle, Funktionen und Möglichkeiten beschrieben. In CAP-News

Mehr

SWP Prüfungsvorbereitung

SWP Prüfungsvorbereitung 20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c

Mehr

Binäre lineare Optimierung mit K*BMDs p.1/42

Binäre lineare Optimierung mit K*BMDs p.1/42 Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile in Anlehnung an

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Algorithmen und algorithmische Sprachkonzepte

Algorithmen und algorithmische Sprachkonzepte Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03 Überarbeitet und ergänzt von W. Küchlin zu Informatik I, Tübingen

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Fakultät Wirtschaftswissenschaft

Fakultät Wirtschaftswissenschaft Fakultät Wirtschaftswissenschaft Matrikelnr. Name Vorname KLAUSUR: Entwurf und Implementierung von Informationssystemen (32561) TERMIN: 11.09.2013, 14.00 16.00 Uhr PRÜFER: Univ.-Prof. Dr. Stefan Strecker

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

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

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

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 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Programmiersprachen: rekursives Programmieren in Haskell

Programmiersprachen: rekursives Programmieren in Haskell Kapitel 1 Programmiersprachen: rekursives Programmieren in Haskell Das generelle Ziel dieses Teils der Vorlesung ist das Verständnis von Programmierparadigmen, insbesondere rekursive Programmierung, funktionaler

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

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

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

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

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme Eines der am häufigsten auftretenden Standardprobleme der angewandten Mathematik ist das Lösen linearer Gleichungssysteme, etwa zur Netzwerkberechnung in der Elektrotechnik oder

Mehr

Beispiel: Fibonacci-Zahlen

Beispiel: Fibonacci-Zahlen Beispiel: Fibonacci-Zahlen Unendliche Reihe: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... Fibonacci-Kaninchen: L. P. Fibonacci (1170-1250) G. Zachmann Informatik 1 - WS 05/06 Rekursion 23 Fibonacci Zahlen in der

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

Mehr

Algorithmen & Programmierung. Aspekte von Algorithmen

Algorithmen & Programmierung. Aspekte von Algorithmen Algorithmen & Programmierung Aspekte von Algorithmen Algorithmus (Wdh.) Aufgabe Beschreibung einer Abfolge von Schritten zur Lösung eines Problems in einer beliebigen Sprache Charakteristika eines Algorithmus

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr