Informatik Vorkurs Sommersemester 2015

Größe: px
Ab Seite anzeigen:

Download "Informatik Vorkurs Sommersemester 2015"

Transkript

1 Informatik Vorkurs Sommersemester 2015 Vom Algorithmus zum Programm Werner Struckmann / Marvin Priedigkeit, Stephan Mielke 31. März 10. April 2015

2 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung: Algorithmusbegriff Vom Algorithmus zum Programm 1. Was ist ein Algorithmus? 2. Was ist ein Programm? 3. Wie wird ein Algorithmus aufgeschrieben? 4. Mit welchem Aufwand löst der Algorithmus das Problem? 5. Löst der Algorithmus das Problem? 6. Gibt es einen Algorithmus für das Problem? 7. Vom kleinen zum großen Programm 8. Weitere Aspekte

3 Kann ein Computer rechnen? Ein Java-Beispiel public static void main(string[] args) { System.out.println(1*1); System.out.println(12*12); System.out.println(123*123); System.out.println(1234*1234); System.out.println(12345*12345); System.out.println(123456*123456); } Ausgabe: März 10. April 2015 Werner Struckmann Seite 3 / 35

4 Kann ein Computer rechnen? Ein Java-Beispiel public static void main(string[] args) { System.out.println(1*1); System.out.println(12*12); System.out.println(123*123); System.out.println(1234*1234); System.out.println(12345*12345); System.out.println(123456*123456); } Ausgabe: Diese Ausgabe ist offensichtlich falsch! 31. März 10. April 2015 Werner Struckmann Seite 3 / 35

5 Kann ein Computer rechnen? Ein zweites Java-Beispiel public static void main(string[] args) { int z = 256*256*256* ; System.out.println(z*z); } 31. März 10. April 2015 Werner Struckmann Seite 4 / 35

6 Kann ein Computer rechnen? Ein zweites Java-Beispiel public static void main(string[] args) { int z = 256*256*256* ; System.out.println(z*z); } Ausgabe: 1 Hat er sich schon wieder verrechnet? 31. März 10. April 2015 Werner Struckmann Seite 4 / 35

7 Kann ein Computer rechnen? Ein drittes Java-Beispiel double a = 1.0/3.0; double b = a , c; if (a == b) c = 0; else c = 1/(a-b); System.out.printf("%20.5f%n",c); 31. März 10. April 2015 Werner Struckmann Seite 5 / 35

8 Kann ein Computer rechnen? Ein drittes Java-Beispiel double a = 1.0/3.0; double b = a , c; if (a == b) c = 0; else c = 1/(a-b); System.out.printf("%20.5f%n",c); Ausgabe: Billiarde 637 Billionen 672 Milliarden 591 Millionen 771 Tausend und 89,5 korrekter Wert: März 10. April 2015 Werner Struckmann Seite 5 / 35

9 Kann ein Computer rechnen? Warum sich der Computer hier dreimal verrechnet hat, werden wir in Programmieren 1 lernen. 31. März 10. April 2015 Werner Struckmann Seite 6 / 35

10 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung: Algorithmusbegriff Vom Algorithmus zum Programm 1. Was ist ein Algorithmus? 2. Was ist ein Programm? 3. Wie wird ein Algorithmus aufgeschrieben? 4. Mit welchem Aufwand löst der Algorithmus das Problem? 5. Löst der Algorithmus das Problem? 6. Gibt es einen Algorithmus für das Problem? 7. Vom kleinen zum großen Programm 8. Weitere Aspekte

11 Ist das Programm korrekt? In Jahre 1999 wurde durch die Fehlfunktion eines Seitenairbags ein Baby getötet. Die Untersuchungen ergaben einen Softwarefehler: Die Ausführungsreihenfolge zweier Anweisungen war vertauscht worden. Der Fehler trat nur in der Software eines speziellen Fahrzeugmodells auf. Es wurde vergessen, diese spezielle Software zu testen. 31. März 10. April 2015 Werner Struckmann Seite 8 / 35

12 Ist das Programm korrekt? Richtige Reihenfolge: airbag = ein; if (kindersitz == belegt) { airbag = aus; } Falsche Reihenfolge: if (kindersitz == belegt) { airbag = aus; } airbag = ein; 31. März 10. April 2015 Werner Struckmann Seite 9 / 35

13 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung: Algorithmusbegriff Vom Algorithmus zum Programm 1. Was ist ein Algorithmus? 2. Was ist ein Programm? 3. Wie wird ein Algorithmus aufgeschrieben? 4. Mit welchem Aufwand löst der Algorithmus das Problem? 5. Löst der Algorithmus das Problem? 6. Gibt es einen Algorithmus für das Problem? 7. Vom kleinen zum großen Programm 8. Weitere Aspekte

14 Der intuitive Algorithmusbegriff Gegeben sei ein Problem. Eine Handlungsvorschrift, deren mechanisches Befolgen ohne Verständnis des Problems zur Lösung des Problems führt, wird Algorithmus genannt.

15 Der intuitive Algorithmusbegriff Gegeben sei ein Problem. Eine Handlungsvorschrift, deren mechanisches Befolgen ohne Verständnis des Problems zur Lösung des Problems führt, wird Algorithmus genannt. Etwas präziser: Ein Algorithmus ist eine wohldefinierte Rechenvorschrift, die eine (evtl. leere) Menge von Größen als Eingabe verwendet und eine Menge von Größen als Ausgabe erzeugt. Ein Algorithmus ist also eine Abfolge von Schritten, die die (evtl. leere) Eingabe in eine Ausgabe umwandelt.

16 Der intuitive Algorithmusbegriff Gegeben sei ein Problem. Eine Handlungsvorschrift, deren mechanisches Befolgen ohne Verständnis des Problems zur Lösung des Problems führt, wird Algorithmus genannt. Etwas präziser: Ein Algorithmus ist eine wohldefinierte Rechenvorschrift, die eine (evtl. leere) Menge von Größen als Eingabe verwendet und eine Menge von Größen als Ausgabe erzeugt. Ein Algorithmus ist also eine Abfolge von Schritten, die die (evtl. leere) Eingabe in eine Ausgabe umwandelt. Der Algorithmus muss durch einen endlichen Text in einer wohldefinierten Sprache beschrieben sein. Die Objekte der Aktionen müssen klar sein. Die Operationen müssen mechanisch ausführbar sein. Die Reihenfolge der Operationen muss evtl. feststehen.

17 Der intuitive Algorithmusbegriff Gegeben sei ein Problem. Eine Handlungsvorschrift, deren mechanisches Befolgen ohne Verständnis des Problems zur Lösung des Problems führt, wird Algorithmus genannt. Etwas präziser: Ein Algorithmus ist eine wohldefinierte Rechenvorschrift, die eine (evtl. leere) Menge von Größen als Eingabe verwendet und eine Menge von Größen als Ausgabe erzeugt. Ein Algorithmus ist also eine Abfolge von Schritten, die die (evtl. leere) Eingabe in eine Ausgabe umwandelt. Der Algorithmus muss durch einen endlichen Text in einer wohldefinierten Sprache beschrieben sein. Die Objekte der Aktionen müssen klar sein. Die Operationen müssen mechanisch ausführbar sein. Die Reihenfolge der Operationen muss evtl. feststehen. Ein Problem, für dessen Lösung ein Algorithmus existiert, heißt berechenbar. In der Definition wird nicht gefordert, dass die Abfolge der Rechenschritte stets terminiert (Halteproblem).

18 Beispiele Zerlegung handwerklicher Arbeiten in einzelne Schritte, Kochrezepte, Verfahren zur schriftlichen Multiplikation, Algorithmus zur Bestimmung des größten gemeinsamen Teilers zweier natürlicher Zahlen. Zwei dieser Beispiele sehen wir uns jetzt an. 31. März 10. April 2015 Werner Struckmann Seite 12 / 35

19 Beispiel: Multiplikation zweier Zahlen =?

20 Beispiel: Multiplikation zweier Zahlen =? 2 7 6

21 Beispiel: Multiplikation zweier Zahlen =? * * 276 6

22 Beispiel: Multiplikation zweier Zahlen =? * *

23 Beispiel: Multiplikation zweier Zahlen =? * * = (1 10+2) (2 10+3) = ( ) = = 276

24 Beispiel: Größter gemeinsamer Teiler Es sollen zwei Brüche addiert werden: Bestimme den Hauptnenner. Erweitere die Brüche. Addiere die Zähler = = = = 9 13 Bestimme den ggt von Zähler und Nenner. Kürze den Bruch. Wie berechnet man den ggt? 31. März 10. April 2015 Werner Struckmann Seite 14 / 35

25 1. Algorithmus: Teilermengen a = 52, b = 36: T a = T 52 = {1, 2, 4, 13, 26, 52} T b = T 36 = {1, 2, 3, 4, 6, 12, 18, 36} T a T b = T 52 T 36 = {1, 2, 4} ggt(52, 36) = max(t a T b ) = max{1, 2, 4} = 4 Bestimme die Teilermengen T a und T b. Bestimme die Durchschnittsmenge T a T b. Bestimme das Maximum von T a T b. 31. März 10. April 2015 Werner Struckmann Seite 15 / 35

26 2. Algorithmus: Primfaktorzerlegung a = 52, b = 36: 52 = = ggt(52, 36) = = 4 Bestimme die Primfaktorzerlegungen von a und b. Bestimme die Primfaktorzerlegung des ggts: Bilde dazu das jeweilige Minimum der Exponenten von a und b. 31. März 10. April 2015 Werner Struckmann Seite 16 / 35

27 3. Algorithmus: Verfahren von Euklid (ca. 300 v. Chr.) a = 52, b = 36: Berechne r = a mod b. Setze a = b und b = r. Wiederhole diese Schritte bis b = 0 ist. a ist das Ergebnis. r a b März 10. April 2015 Werner Struckmann Seite 17 / 35

28 Fragestellungen für Algorithmen: Korrektheit und Komplexität Partielle Korrektheit: Falls der Algorithmus terminiert wird die Spezifikation erfüllt. Totale Korrektheit: Der Algorithmus terminiert und erfüllt die Spezifikation. Komplexität: Speicherplatz des Algorithmus Laufzeit des Algorithmus 31. März 10. April 2015 Werner Struckmann Seite 18 / 35

29 Programm und Programmiersprache Ein Programm ist die Formulierung eines Algorithmus und seiner Datenbereiche in einer Programmiersprache. Eine Programmiersprache erlaubt es, Algorithmen präzise zu beschreiben. Insbesondere legt eine Programmiersprache die elementaren Operationen, die Möglichkeiten zu ihrer Kombination und die zulässigen Datenbereiche eindeutig fest. Unter programmieren versteht man den Vorgang des Erstellens eines Programms. Die Programmierausbildung der ersten Semester erfolgt in der Sprache Java. Später werden weitere Sprachen gelehrt. 31. März 10. April 2015 Werner Struckmann Seite 19 / 35

30 Beispiel: Der euklidische Algorithmus in fünf Programmiersprachen Java (objektorientierte Sprache) s t a t i c i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; }

31 Beispiel: Der euklidische Algorithmus in fünf Programmiersprachen Java (objektorientierte Sprache) s t a t i c i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; } Prolog (logische Sprache) ggt (A, 0,A ). ggt (A, B, Z ) : U is A mod B, ggt (B,U, Z ).

32 Beispiel: Der euklidische Algorithmus in fünf Programmiersprachen Java (objektorientierte Sprache) s t a t i c i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; } Prolog (logische Sprache) ggt (A, 0,A ). ggt (A, B, Z ) : U is A mod B, ggt (B,U, Z ). Haskell (funktionale Sprache) ggt : : Integer > Integer > Integer ggt a b b == 0 = a otherwise = ggt b ( a mod b )

33 Beispiel: Der euklidische Algorithmus in fünf Programmiersprachen Java (objektorientierte Sprache) s t a t i c i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; } C-Shell (Skriptsprache) set a =... ; set b =... while ( $b!= r = $a % $b set a = $b set b = $r end echo $a Prolog (logische Sprache) ggt (A, 0,A ). ggt (A, B, Z ) : U is A mod B, ggt (B,U, Z ). Haskell (funktionale Sprache) ggt : : Integer > Integer > Integer ggt a b b == 0 = a otherwise = ggt b ( a mod b )

34 Beispiel: Der euklidische Algorithmus in fünf Programmiersprachen Java (objektorientierte Sprache) s t a t i c i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; } Prolog (logische Sprache) ggt (A, 0,A ). ggt (A, B, Z ) : U is A mod B, ggt (B,U, Z ). Haskell (funktionale Sprache) ggt : : Integer > Integer > Integer ggt a b b == 0 = a otherwise = ggt b ( a mod b ) C-Shell (Skriptsprache) set a =... ; set b =... while ( $b!= r = $a % $b set a = $b set b = $r end echo $a C (imperative Sprache) i n t ggt ( i n t a, i n t b ) { i n t r ; while ( b!= 0) { r = a % b ; a = b ; b = r ; } return a ; }

35 Beispiel: Lineare diophantische Gleichungen Definition Eine lineare diophantische Gleichung mit zwei Unbekannten x und y ist eine Gleichung der Form ax + by = c (*) für gegebene ganze Zahlen a, b, c. Gesucht werden ganze Zahlen x und y, die die Gleichung erfüllen.

36 Beispiel: Lineare diophantische Gleichungen Definition Eine lineare diophantische Gleichung mit zwei Unbekannten x und y ist eine Gleichung der Form ax + by = c (*) für gegebene ganze Zahlen a, b, c. Gesucht werden ganze Zahlen x und y, die die Gleichung erfüllen. Satz Die Gleichung (*) besitzt genau dann eine Lösung, wenn ggt(a, b) c gilt.

37 Beispiel: Lineare diophantische Gleichungen Definition Eine lineare diophantische Gleichung mit zwei Unbekannten x und y ist eine Gleichung der Form ax + by = c (*) für gegebene ganze Zahlen a, b, c. Gesucht werden ganze Zahlen x und y, die die Gleichung erfüllen. Satz Die Gleichung (*) besitzt genau dann eine Lösung, wenn ggt(a, b) c gilt. Beispiel Zum Beispiel besitzt die Gleichung 36x + 52y = 24 eine ganzzahlige Lösung, weil ggt(36, 52) = 4 ein Teiler von 24 ist: = 24. Mithilfe eines erweiterten euklidischen Algorithmus können Lösungen von linearen diophantischen Gleichungen bestimmt werden, falls sie existieren.

38 Beispiel: Allgemeine diophantische Gleichungen Definition Eine allgemeine diophantische Gleichung mit den Unbekannten x 1, x 2,..., x n ist eine Gleichung der Form p(x 1, x 2,..., x n ) = 0, wobei p ein ganzzahliges Polynom mit n Variablen ist.

39 Beispiel: Allgemeine diophantische Gleichungen Definition Eine allgemeine diophantische Gleichung mit den Unbekannten x 1, x 2,..., x n ist eine Gleichung der Form p(x 1, x 2,..., x n ) = 0, wobei p ein ganzzahliges Polynom mit n Variablen ist. Problem Gibt es einen Algorithmus, der entscheiden kann, ob eine allgemeine diophantische Gleichung ganzzahlige Lösungen besitzt? Dies ist das berühmte zehnte Hilbertsche Problem aus dem Jahr 1900.

40 Beispiel: Allgemeine diophantische Gleichungen Definition Eine allgemeine diophantische Gleichung mit den Unbekannten x 1, x 2,..., x n ist eine Gleichung der Form p(x 1, x 2,..., x n ) = 0, wobei p ein ganzzahliges Polynom mit n Variablen ist. Problem Gibt es einen Algorithmus, der entscheiden kann, ob eine allgemeine diophantische Gleichung ganzzahlige Lösungen besitzt? Dies ist das berühmte zehnte Hilbertsche Problem aus dem Jahr Fakt Solch einen Algorithmus gibt es nicht. Dies wurde von Yuri Matijasevič im Jahre 1970 bewiesen.

41 Beispiel: Allgemeine diophantische Gleichungen Definition Eine allgemeine diophantische Gleichung mit den Unbekannten x 1, x 2,..., x n ist eine Gleichung der Form p(x 1, x 2,..., x n ) = 0, wobei p ein ganzzahliges Polynom mit n Variablen ist. Problem Gibt es einen Algorithmus, der entscheiden kann, ob eine allgemeine diophantische Gleichung ganzzahlige Lösungen besitzt? Dies ist das berühmte zehnte Hilbertsche Problem aus dem Jahr Fakt Solch einen Algorithmus gibt es nicht. Dies wurde von Yuri Matijasevič im Jahre 1970 bewiesen. Folgerung Es gibt Probleme, die mit keinem Computer gelöst werden können! Zum Beispiel das Halteproblem oder das zehnte Hilbertsche Problem.

42 Der intuitive Algorithmusbegriff (Wiederholung) Ein Algorithmus ist eine Berechnungsvorschrift. Die Aufgabe, die der Algorithmus lösen soll, wird durch eine Spezifikation festgelegt. Die Berechnungsvorschrift wird durch einen endlichen Text kodiert. Sie beschreibt die auszuführenden Berechnungen hinreichend präzise. Die Berechnungen sind aus elementaren Operationen aufgebaut und besitzen Aus- und evtl. Eingabewerte. Hierbei handelt es ich um eine sog. intuitive Definition. In der Informatik wird auch eine formale Definition benötigt, zum Beispiel zum Nachweis, dass für ein bestimmtes Problem kein Algorithmus existiert.»intuitiv heißt nicht erlernt.«(bruce M. Hood) 31. März 10. April 2015 Werner Struckmann Seite 23 / 35

43 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung: Algorithmusbegriff Vom Algorithmus zum Programm 1. Was ist ein Algorithmus? 2. Was ist ein Programm? 3. Wie wird ein Algorithmus aufgeschrieben? 4. Mit welchem Aufwand löst der Algorithmus das Problem? 5. Löst der Algorithmus das Problem? 6. Gibt es einen Algorithmus für das Problem? 7. Vom kleinen zum großen Programm 8. Weitere Aspekte

44 Was ist ein Algorithmus? Wichtige Aspekte s. oben: intuitiver Algorithmusbegriff intuitiv heißt nicht erlernt (Bruce M. Hood) Spezifikation Terminierung primitive und komplexe Datentypen, abstrakte Datentypen Varianten des Algorithmusbegriffs: deterministisch, determiniert, nichtdeterministisch, randomisiert, parallel, verteilt, März 10. April 2015 Werner Struckmann Seite 25 / 35

45 Was ist ein Programm? Umsetzung eines Algorithmus in eine Sprache, die ein Computer versteht. Sprachen: Maschinensprachen maschinenorientierte Sprachen (Assemblersprachen) problemorientierte Sprachen Verarbeitung von Programmen: Compiler Interpreter Mischverfahren Bestandteile einer Programmiersprache: Lexik Syntax Semantik Pragmatik einer Programmiersprache 31. März 10. April 2015 Werner Struckmann Seite 26 / 35

46 Java-Mischverfahren Java-Quellprogramm javac Java-Bytecode java java JVM: Windows JVM: Linux 31. März 10. April 2015 Werner Struckmann Seite 27 / 35

47 Wie wird ein Algorithmus aufgeschrieben? Paradigmen: Imperatives Paradigma: Algol, Pascal, C Objektorientiertes Paradigma: Smalltalk, Eiffel Funktionales Paradigma: ML, Lisp, Haskell Logisches Paradigma: Prolog Hybride Paradigmen: Imperativ und objektorientiert: Java, C++ Java 8 geht in die Richtung weiteres Paradigma: funktional Imperativ und funktional: Scheme Imperativ, objektorientiert und funktional: Scala Deklaratives vs. prozedurales Paradigma 31. März 10. April 2015 Werner Struckmann Seite 28 / 35

48 Mit welchem Aufwand löst der Algorithmus das Problem? Komplexität Laufzeitkomplexität, Speicherkomplexität best case, average case, worst case Komplexität Es gibt weitere Komplexitätsfragen! O-Notation, Landau-Symbole Θ(g) = {f : N R c 1 > 0, c 2 > 0, n 0 > 0 n n 0. 0 c 1 g(n) f (n) c 2 g(n)} O(g) = {f : N R c > 0, n 0 > 0 n n 0. 0 f (n) cg(n)} Ω(g) = {f : N R c > 0, n 0 > 0 n n 0. 0 cg(n) f (n)} o(g) = {f : N R c > 0 n 0 > 0 n n 0. 0 f (n) < cg(n)} ω(g) = {f : N R c > 0 n 0 > 0 n n 0. 0 cg(n) < f (n)} 31. März 10. April 2015 Werner Struckmann Seite 29 / 35

49 Löst der Algorithmus das Problem? Spezifikation Korrektheit: partielle Korrektheit, totale Korrektheit Verifikation: Nachweis der Korrektheit Validation: Als Validierung bezeichnet man den Test eines Softwaresystems unter Bedingungen, wie sie im späteren Einsatz herrschen werden. Auch wenn das zu erstellende Programm verifiziert wurde, kann auf eine Validierung nicht verzichtet werden, da ein mathematischer Nachweis der Korrektheit beispielsweise nichts über das Laufzeitverhalten des Programms oder die Auslastung von Ressourcen aussagt. Gibt es einen Algorithmus, der alle Algorithmen verifizieren kann? Der Satz von RICE gibt viele konkrete Probleme an, die algorithmisch nicht behandelt werden können. 31. März 10. April 2015 Werner Struckmann Seite 30 / 35

50 Gibt es einen Algorithmus für das Problem? Berechenbarkeit, Entscheidbarkeit Formale Algorithmendefinition Turing-Maschine Markov-Algorithmus λ-kalkül Primitiv rekursive Funktionen... Diese Modelle sind alle äquivalent. Beispiele: Halteproblem, diophantische Gleichungen,... Abzählbar viele Probleme sind berechenbar. Überabzählbar viele Probleme sind nicht berechenbar. D. h., so gut wie kein Problem kann ein Computer lösen. 31. März 10. April 2015 Werner Struckmann Seite 31 / 35

51 Church sche These ALONZO CHURCH stellte 1936 die folgende These auf, die bis heute nicht widerlegt wurde: Church sche These: Der intuitive Algorithmenbegriff wird durch das Modell der Turing-Maschine adäquat definiert. Die Church sche These kann natürlich nicht bewiesen werden, da sie den intuitiven Algorithmenbegriff verwendet. Über intuitive Dinge können keine formalen Beweise geführt werden. Es wurde gezeigt, dass alle oben erwähnten formalen Algorithmusdefinitionen äquivalent sind. Daher kann in der Church schen These die Turing-Maschine durch andere Definitionen des Algorithmus ersetzt werden. 31. März 10. April 2015 Werner Struckmann Seite 32 / 35

52 Vom kleinen zum großen Programm Software Engineering Manifest (2006): Das Software Engineering zielt auf die ingenieurmäßige Entwicklung, Wartung, Anpassung und Weiterentwicklung großer Softwaresysteme unter Verwendung bewährter systematischer Vorgehensweisen, Prinzipien, Methoden und Werkzeuge. Analysephase Entwurfsphase Implementierungsphase Testphase Betriebs- und Wartungsphase 31. März 10. April 2015 Werner Struckmann Seite 33 / 35

53 Weitere Aspekte (Beispiele) Standardalgorithmen Datenstrukturen, Typsysteme, abstrakte Datentypen Prinzipien zum Entwurf von Algorithmen Divide-and-Conquer-Algorithmen Backtracking-Algorithmen Greedy-Algorithmen Dynamische Algorithmen,... Variationen des Algorithmusbegriffs Randomisierte Algorithmen Nichtdeterministische Algorithmen Parallele, verteilte Algorithmen,... Sprachen der Informatik GPL (General purpose languages): Programmiersprachen DSL (Domain specific languages): Datenbanksprachen, HTML, XML, März 10. April 2015 Werner Struckmann Seite 34 / 35

54 Herzlichen Dank für Ihre Aufmerksamkeit! Viel Erfolg im Studium. 31. März 10. April 2015 Werner Struckmann Seite 35 / 35

Das Studium der Informatik in Braunschweig

Das Studium der Informatik in Braunschweig Das Studium der Informatik in Braunschweig Vorkurs SS 2012 W. Struckmann, Ch. Peltz, 23. März 2012 Berufsbild des Informatikers Bologna-Prozess Informatik-Studium in Braunschweig Etwas Informatik aus den

Mehr

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung Teil I Einführung Überblick 1 Vorbemerkungen 2 Algorithmen 3 4 Historischer Überblick Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 1 1 Vorbemerkungen Was ist Informatik? Informatik

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Werner Struckmann Wintersemester 2005/06 1. Der Algorithmenbegriff 1.1 Der intuitive Algorithmenbegriff 1.2 Ein Beispiel: Sortieren durch Einfügen 1.3 Programmiersprachen:

Mehr

Angewandte Mathematik am Rechner 1

Angewandte Mathematik am Rechner 1 Angewandte Mathematik am Rechner 1 SOMMERSEMESTER 2017 Kapitel 3 [Bildquellen: Wikipedia User David Madore, Inductiveload ] Grundlagen 2: Funktionen, Berechenbarkeit und emergente Komplexität Michael Wand

Mehr

Das Studium der Informatik in Braunschweig. Werner Struckmann

Das Studium der Informatik in Braunschweig. Werner Struckmann Das Studium der Informatik in Braunschweig Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Studienberatung Informatik 21. September 2011 Berufsbild

Mehr

Wie rechnet ein Rechner? Werner Struckmann Vorkurs Wintersemester 2014/2015

Wie rechnet ein Rechner? Werner Struckmann Vorkurs Wintersemester 2014/2015 Wie rechnet ein Rechner? Werner Struckmann Vorkurs Wintersemester 2014/2015 Was machen wir? Warum sollte man wissen, wie ein Rechner rechnet? Wie rechnet ein Rechner? Speicherung von Zahlen Verarbeitung

Mehr

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

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 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften

Mehr

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard Cyrill Stachniss 1/14 Motivation und Einleitung Bisher haben wir verschiedene

Mehr

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

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

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Informatik Teil 1 Wintersemester 2011/2012 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen Inhalt 1. Algorithmen -

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

Mehr

Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.

Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion. Algorithmus Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion. Hier einige informelle Erklärungen zum Algorithmus P

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

Einführung in die Informatik Turing Machines Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard 1 Motivation und Einleitung Bisher haben wir verschiedene Programmiersprachen

Mehr

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel  Problem Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung

Mehr

Unentscheidbarkeitssätze der Logik

Unentscheidbarkeitssätze der Logik Unentscheidbarkeitssätze der Logik Elmar Eder () Unentscheidbarkeitssätze der Logik 1 / 30 Die Zahlentheorie ist nicht formalisierbar Satz (Kurt Gödel) Zu jedem korrekten formalen System der Zahlentheorie

Mehr

Allgemeines Halteproblem Hilberts 10. Problem

Allgemeines Halteproblem Hilberts 10. Problem Allgemeines Halteproblem Hilberts 10. Problem Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen November 2011 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

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

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

Mehr

Wir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen?

Wir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen? Einige Fragen Ziel: Wir suchen Antworten auf die folgenden Fragen: Wie kann man das intuitiv Berechenbare formal fassen? Was ist ein Algorithmus? Welche Indizien hat man dafür, dass ein formaler Algorithmenbegriff

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

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

ALP I Turing-Maschine

ALP I Turing-Maschine ALP I Turing-Maschine Teil I WS 2012/2013 Äquivalenz vieler Berechnungsmodelle Alonzo Church λ-kalkül Kombinatorische Logik Alan Turing Turing-Maschine Mathematische Präzisierung Effektiv Berechenbare

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann

Mehr

Algorithmus und Programm: Vom Algorithmus zum Programm

Algorithmus und Programm: Vom Algorithmus zum Programm Algorithmus und Programm: Vom Algorithmus zum Programm 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Software-Grundlagen 1.1 Vom Algorithmus

Mehr

Einführung in die Informatik Algorithms II

Einführung in die Informatik Algorithms II Einführung in die Informatik Algorithms II Eigenschaften von Algorithmen Wolfram Burgard Cyrill Stachniss 14.1 Was können Computer berechnen? In Kapitel 1 haben wir gesagt, dass Programme die Umsetzung

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te 1 Einführung: Algorithmen Algorithmen und Datenstrukturen WS 2012/13 Pro f. Dr. Sán do r Fe k e te Literatur 1.1 Was ist ein Algorithmus? Ein Algorithmus ist eine aus endlich vielen Schritten bestehende

Mehr

Reduktion / Hilberts 10. Problem

Reduktion / Hilberts 10. Problem Reduktion / Hilberts 10. Problem Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 9. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

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

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

Die Reduktion Hilberts 10. Problem

Die Reduktion Hilberts 10. Problem Die Reduktion Hilberts 10. Problem Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 8. November 2010 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

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

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann

Mehr

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung

Mehr

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben Algorithmen und Algorithmisierung von Aufgaben 2-1 Algorithmisierung: Formulierung (Entwicklung, Wahl) der Algorithmen + symbolische Darstellung von Algorithmen Formalismen für die symbolische Darstellung

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2017 1. Einführung 1.1 Sprachen und

Mehr

Berechenbarkeit und Komplexität

Berechenbarkeit und Komplexität Teil II: Berechenbarkeit und Komplexität Algorithmen und Komplexität 22. November 2016 Berechenbarkeitstheorie RAM-Maschine 1: M 1 1 2: M 0 1 3: M 0 M 0 M 1 4: M 2 M 2 M 1 5: GOTO 3 IF M 2 > 0. M 2 : M

Mehr

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Übung zur Vorlesung Berechenbarkeit und Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein

Mehr

6.4 Entscheidbarkeit. nein sein müssen, ist klar. THEO 6.4 Entscheidbarkeit 205/307 c Ernst W. Mayr

6.4 Entscheidbarkeit. nein sein müssen, ist klar. THEO 6.4 Entscheidbarkeit 205/307 c Ernst W. Mayr 6.4 Entscheidbarkeit Wortproblem Leerheit Äquivalenz Schnittproblem Typ 3 ja ja ja ja DCFL ja ja ja nein (*) Typ 2 ja ja nein (*) nein Typ 1 ja nein (*) nein nein Typ 0 nein (*) nein nein nein (*) Diese

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

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in

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

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - ! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation! Spezifikation: Angabe, was ein Programm

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:

Mehr

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen Algorithmen und Datenstrukturen Effizienz und Funktionenklassen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Grundlagen der Modellierung und Programmierung, Übung

Grundlagen der Modellierung und Programmierung, Übung Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak

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

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

2.5 Halteproblem und Unentscheidbarkeit

2.5 Halteproblem und Unentscheidbarkeit 38 25 Halteproblem und Unentscheidbarkeit Der Berechenbarkeitsbegriff ist auf Funktionen zugeschnitten Wir wollen nun einen entsprechenden Begriff für Mengen einführen Definition 255 Eine Menge A Σ heißt

Mehr

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest Gliederung Algorithmen und Datenstrukturen I Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Winter 2009/10,

Mehr

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1 Zeitkomplexität (1) Proseminar Theoretische Informatik Proseminar Theoretische Informatik: Lisa Dohrmann 1 Warum Komplexitätsbetrachtung? Ein im Prinzip entscheidbares und berechenbares Problem kann in

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

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt? Informatik I 14.02.2014 28. Ausblick Informatik I 28. Ausblick Bernhard Nebel Albert-Ludwigs-Universität Freiburg 28.1 28.2 28.3 Was geht nicht? 14.02.2014 Bernhard Nebel (Universität Freiburg) Informatik

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

LOOP-Programme: Syntaktische Komponenten

LOOP-Programme: Syntaktische Komponenten LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=

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

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin Kapitel 1 Einleitung 1.1. Begriff des Algorithmus Eine der ältesten Beschreibungstechniken für Abläufe: Benannt nach dem Mathematiker Al-Khwarizmi (ca. 780...840), der am Hof der Kalifen von Bagdad wirkte.

Mehr

Funktionale Programmiersprachen

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

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

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

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 14. Juli 2017 Semantik von Programmiersprachen Übersicht Art der Veranstaltung: Vorlesung mit

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Als Programmierung bezeichnet man die Tätigkeit Computerprogramme (software) zu erstellen. Konzeptioneller Entwurf Umsetzung des Entwurfs in Programmcode (Implementation):

Mehr

Die Church-Turing-These

Die Church-Turing-These Die Church-Turing-These Elmar Eder () Die Church-Turing-These 1 / 12 Formale Systeme Formale Systeme µ-partiellrekursive Funktionen Logikkalküle SLD-Resolution (Prolog) Chomsky-Grammatiken Turing-Maschinen

Mehr

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)

Mehr

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)

Mehr

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii D3kjd3Di38lk323nnm xiii I Grundlegende Konzepte 1 1 Vorbemerkungen und Überblick... 3 1.1 Informatik, Algorithmen und Datenstrukturen....... 3 1.2 Historischer Überblick: Algorithmen................. 5

Mehr

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007 C. A. R. Hoare An Axiomatic Basis for Computer Programming Nicolas Schelp Proseminar Assertions SS 2007 Inhalt Motivation Kurze Biographie Der Hoare-Kalkül Axiome und Inferenzregeln des Hoare-Kalküls Die

Mehr

Definition: (Kette, noethersche Ordnung)

Definition: (Kette, noethersche Ordnung) 3. Funktionales Programmieren 3.4 Semantik, Testen und Verifikation Definition: (Kette, noethersche Ordnung) Sei (M, ) eine Ordnung. Eine Folge ϕ : N M heißt eine (abzählbar unendliche) aufsteigende Kette,

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 30. Ausblick Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13.02.2016 1 13.02.2016 B. Nebel Info I 3 / 17 Programmieren jedenfalls ein bisschen Python-Programme

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität

Mehr

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen Willkommen zur Vorlesung Algorithmen und Datenstrukturen Mein Name: Andreas Berndt Zum Dozenten Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen Derzeitige Sprachen:

Mehr

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Bitte in Druckschrift leserlich ausfüllen! Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift

Mehr

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217 EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung

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

Etwas Mathematik. Vorkurs Wintersemester 2016/17 Werner Struckmann Oktober 2016

Etwas Mathematik. Vorkurs Wintersemester 2016/17 Werner Struckmann Oktober 2016 Vorkurs Wintersemester 2016/17 Werner Struckmann 4. 14. Oktober 2016 Aussagen Aussagen und ihre Bedeutung Aussage: Ein sprachliches Gebilde, dem man sinnvoll einen der Wahrheitswerte wahr oder falsch zuordnen

Mehr

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

Einführung in die Informatik Algorithms

Einführung in die Informatik Algorithms Einführung in die Informatik Algorithms Eigenschaften von Algorithmen Wolfram Burgard 14.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren zur Lösung von Problemen. Eine

Mehr

DUDEN. Basiswissen Schule. Informatik Abitur. PAETEC Verlag für Bildungsmedien Berlin : Dudenverlag Mannheim Leipzig Wien Zürich

DUDEN. Basiswissen Schule. Informatik Abitur. PAETEC Verlag für Bildungsmedien Berlin : Dudenverlag Mannheim Leipzig Wien Zürich DUDEN Basiswissen Schule Informatik Abitur PAETEC Verlag für Bildungsmedien Berlin : Dudenverlag Mannheim Leipzig Wien Zürich vv 3 j Inhaltsverzeichnis 1 Grundbegriffe 7 1.1 Die Informatik als junge Wissenschaft

Mehr

1 Zahlentheorie. 1.1 Kongruenzen

1 Zahlentheorie. 1.1 Kongruenzen 3 Zahlentheorie. Kongruenzen Der letzte Abschnitt zeigte, daß es sinnvoll ist, mit großen Zahlen möglichst einfach rechnen zu können. Oft kommt es nicht darauf, an eine Zahl im Detail zu kennen, sondern

Mehr

Berechenbarkeit und Komplexität Vorlesung 11

Berechenbarkeit und Komplexität Vorlesung 11 Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.

Mehr

Von der Chomsky-Hierarchie

Von der Chomsky-Hierarchie Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2013 1. Einführung 1.1 Sprachen und

Mehr

Programmieren für Fortgeschrittene

Programmieren für Fortgeschrittene Programmieren für Fortgeschrittene 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Wintersemester 2013/2014 1. Einführung 1.1 Sprachen

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische Informatik SS 03 Übung 3 Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige

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