2. Algorithmenbegriff

Ähnliche Dokumente
Flussdiagramm / Programmablaufplan (PAP)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Arbeitsblätter für Algorithmierung und Strukturierung

Einführung in die Informatik Algorithms

Arbeitsblätter für Algorithmierung und Strukturierung C #

Übung zur Vorlesung Berechenbarkeit und Komplexität

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

Programmieren 1 C Überblick

Kapitel 1: Algorithmen und ihre Analyse

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Struktogramme. Hinweise 1 Stand:

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Einführung in die Informatik 1

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

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Javakurs für Anfänger

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

Kontrollstrukturen -- Schleifen und Wiederholungen

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

Algorithmen & Programmierung. Rekursive Funktionen (1)

Erwin Grüner

Berechenbarkeit und Komplexität Vorlesung 11

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Anweisungen und Kontrollstrukturen

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Abstrakte Algorithmen und Sprachkonzepte

Grundlagen der Informatik I (Studiengang Medieninformatik)

Einführung in die Informatik I

Konzepte der Informatik

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

2 Teil 2: Nassi-Schneiderman

Theoretische Informatik SS 03 Übung 3

Programmierung mit C Algorithmen

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

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

2. Programmierung in C

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

Mathematische Rekursion

Einführung in die Informatik I

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

INFORMATIK FÜR BIOLOGEN

Grundlagen der Informatik I Einführung

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

Komplexität von Algorithmen

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Programmierung

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Kontrollstrukturen - Universität Köln

11. Rekursion, Komplexität von Algorithmen

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

VBA-Programmierung: Zusammenfassung

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

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

Einführung in die Informatik I (autip)

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Elementare Konzepte von

Inhalt. 3. Spezielle Algorithmen

LOOP-Programme: Syntaktische Komponenten

BKTM - Programmieren leicht gemacht.

Komplexität von Algorithmen:

Algorithmen und Datenstrukturen"

Algorithmen und Datenstrukturen"

Operatoren (1) Operatoren (2)

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

Programmierkurs Java

Labor Software-Entwicklung 1

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Algorithmen und Datenstrukturen

Programmieren I. Kapitel 5. Kontrollfluss

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

Informatik I. Informatik I Iteration vs. Rekursion. Iteration vs. Rekursion Iteration vs. Rekursion. 20. Iteration vs.

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

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

Algorithmen und Datenstrukturen

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Vorlesung Programmieren

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011

Algorithmen in Java. 1. Was sind Algorithmen? 2. Wie beschreibt man Algorithmen? 3. Wie erstellt man Algorithmen? 4. Wie untersucht man Algorithmen?

Abschnitt 11: Korrektheit von imperativen Programmen

Informatik I: Einführung in die Programmierung

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Grundlagen der theoretischen Informatik

Folgen und Funktionen in der Mathematik

Transkript:

2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen Ausgabewerte ermittelt werden. Berechnungsvorschrift muß präzise und endlich sein, löst Problemenklasse Elementaroperationen müssen von Maschine durchgeführt werden können Abfolge der Schritte liegt fest, bzw. Wahlmöglichkeiten sind festgelegt Beispiele: Algorithmen zu Addition, Subtraktion, Division, Multiplikation,... euklidischer Algorithmus,... R. Der 1 Reifenauswechseln Ein Algorithmus? 1. Löse die Radmuttern. 2. Hebe den Wagen an. 3. Schraube die Radmuttern ab. 4. Tausche das Rad gegen ein anderes Rad aus. 5. Schraube die Radmuttern an. 6. Setze den Wagen ab. 7. Ziehe die Radmuttern fest. Jeder Schritt definiert? Festgelegte Folge von Ausführungsschritten? Gibt es Elementaroperationen und wer führt sie aus? R. Der 2

Ein Nicht-Algorithmus Wir machen Rührei 1. Erhitze Öl in der Pfanne bis sich Bläschen bilden. 2. Schlage die Eier in die Pfanne. 3. Füge eine Prise Salz hinzu und rühre gut durch. 4. Lasse alles brutzeln bis die Eier die richtige Konsistenz haben. Euklidischer Algorithmus Gesucht: größter gemeinsamer Teiler positiver ganzer Zahlen n, m 1. Wenn m kleiner als n, vertausche Werte von m und n. 2. Dividiere m durch n, nenne den Rest r. 3. Wenn r gleich 0 ist, so gib n aus und terminiere. 4. Wenn r nicht gleich 0 ist, so weise m den Wert von n zu und n den von r. 5. Gehe zu 2. Jeder Schritt definiert? Festgelegte Folge von Ausführungsschritten? Gibt es Elementaroperationen und wer führt sie aus? R. Der 3 Eigenschaften von Algorithmen Abstraktion: Lösung einer Klasse von Problemen Finitheit: Beschreibung endlich, jeweils nur endlich viel Speicherplatz Terminierung: wenn Algorithmen bei jeder Eingabe nach endlicher Zeit halten und ein Ergebnis liefern, so heißen sie terminierend Determinismus: Algorithmus heißt deterministisch, wenn zu jeder Zeit der Ausführung nur eine Fortsetzungsmöglichkeit besteht Determiniertheit: Algorithmus heißt determiniert, wenn bei gleichen Eingabewerten stets das gleiche Ergebnis geliefert wird Deterministische Algorithmen immer determiniert, aber nicht umgekehrt! Algorithmen sollten verständlich und effizient sein R. Der 4

Darstellung von Algorithmen natürlichsprachlich für die Kommunikation von Ideen oft ausreichend, muß präzisierbar sein Stilisierte Prosa und Pseudo-Code Mischung von Prosa und Konstrukten aus Programmiersprachen Graphische Darstellungen, Ablaufpläne, Struktogramme machen Kontrollfluß sichtbar Formulierung in Programmiersprache Präzision, Ausführbarkeit auf Maschine garantiert R. Der 5 Grafische Darstellungsmittel Anfang Bedingung (Ablauflinien und Zusammenführung) Ein/Ausgabe Unterprogramme Aktion Ende R. Der 6

Kontrollstrukturen und Ablaufsteuerung Kontrollstrukturen bzw. Ablaufsteuerung legen die Reihenfolge und Bedingungen fest, unter denen jeder Algorithmusschritt ausgeführt wird. Wir betrachten explizit die Kontrollstrukturen Folge, Selektion, Iteration und Rekursion. Folge (Sequenz) Einfachste Form eines Algorithmus der in einer linearen Abfolge von genau beschriebenen Schritten besteht. Es wird immer nur ein Schritt ausgeführt. Jeder Schritt genau nur einmal ausgeführt. Strikt sequentielle Abarbeitung. Stop mit Abarbeitung des letzten Schrittes. Seien A1, A2,... Anweisungen. Eine Sequenz wäre z.b. A26; A3; A15;... Für fast alle Aufgabenstellungen zu starr. Keine Alternativen erlaubt. R. Der 7 Selektion Erlaubt Alternativen. Entscheidung der Alternative von Bedingung anbhängig. Allgemeine Form: if (Bedingung) Anweisung oder auch if (Bedingung) Anweisung_1 else Anweisung_2 Beispiel. int i;... if (i < 3) {i = 0;} else {i = 3;} Jede Anweisung kann eine Folge von Anweisungen sein und das gesamte Konstrukt ist ebenfalls eine Anweisung. (Schachtelung) if (x > y) {if (x > z) {i = x;} else {i = z;}} else { if (y > z) {i = y;} else {i = z;}} Welche Klammern können weggelassen werden? R. Der 8

Iteration Schleife (loop) erlaubt beliebig häufige Wiederholung bestimmter Algorithmusschritte, die im Schleifenkörper stehen. Zählschleife (feste Anzahl von Iterationen). Beispiel: Wiederhole (n-mal) Anweisung Anweisung meint dabei im allgemeinen einen Block (Folge) von Einzelanweisungen. Anweisung bildet den Schleifenkörper und wird bei jedem Durchlauf ausgeführt. Abweisende Schleife: while (Bedingung) Anweisung Die Anweisung wird so oft durchgeführt, wie die Bedingung erfüllt ist. Bedingung wird vor Abarbeiten des Schleifenkörpers geprüft. Akzeptierende Schleife: do Anweisung while (Bedingung) Die Anweisung wird mindestens einmal ausgeführt. Prüfung nach Abarbeitung des Schleifenkörpers. R. Der 9 Schleifen Sei B eine Bedingung und Anweisung ein Block von Anweisungen, die den Schleifenkörper bilden. Bedingung Anweisung Nein Anweisung Bedingung Nein Abweisende Schleife while (B) Anweisung Akzeptierende Schleife do Anweisung while (B) R. Der 10

Die for Schleife (in C) Erlaubt übersichtliche Formulierung einfacher Initialisierungs- und Zählvorgänge. Syntax: for (ausdruck_1; ausdruck_2; ausdruck_3 ) Anweisung ist gleichbedeutend mit ausdruck_1; /*Das ist der Initialisierungsausdruck*/ while (ausdruck_2 ) /*Der zweite Ausdruck legt das Abbruchkriterium fest*/ { Anweisung ausdruck_3; /*Wird bei jedem Schleifendurchlauf bewertet. Verändert Wert der Schleifenvariablen*/ } Beispiel: int i, sum =0, n=100; for (i=1;i<=n;i++) { sum += i; i *=2;} /*Das ist die Anweisung bzw. der Schleifenkörper*/ R. Der 11 Rekursion Definition: Rekursion ist ein allgemeines Verfahren, bei dem ein Konzept direkt oder indirekt durch sich selbst definiert wird. Beispiel: Eine Liste ist entweder leer oder besteht aus einer Element gefolgt von einer Liste. Definition: Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Beispiel: Die Fakultät fac(n) einer ganzen Zahl n > 0 ist definiert durch fac(n) = n * fac(n-1) mit der Startbedingung fac(0) = 1. Weitere Beispiele: Euklidischer Algorithmus, Türme von Hanoi, Ariadne Faden u.a. R. Der 12

Induktion Die Induktion ist ein mathematisches Verfahren, um Aussagen über den natürlichen Zahlen zu beweisen. Einsatz zum Beweis der Richtigkeit rekursiver und iterativer Algorithmen. Sei S(n) eine beliebige Aussage über eine ganze Zahl n. Der Beweis, dass S(n) für alle Zahlen n > k richtig ist geht in folgenden Schritten vonstatten: Induktionsanfang: Beweise die Aussage für ein k > 0 (meist k=0). Induktionsschritt: Beweise, dass unter der vorausgesetzten Gültigkeit von S(n) für alle n > k auch S(n + 1) richtig ist. R. Der 13