1 / 63

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen

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 2003/04. Was ist ein Programm?.

lang
Download Presentation

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorithmen und algorithmische SprachkonzepteProgramme 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 2003/04 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 3-540-20958-1

  2. Was ist ein Programm? • Deutliche Diskrepanz zwischen beiden Begriffserklärungen im Lexikon! • 'Programm': sehr allgemein (umgangssprachlich) aufgefasst • 'Programmierung': spezifische Deutung des Begriffs 'Programm' • 'Programm' im allgemeinen: • z.B. Fernsehprogramm, Konferenzprogramm, Parteiprogramm • 'Programm' im speziellen: • nicht notwendig nur auf Computer bezogen Programm einer Waschmaschine, eines Videorecorders Programm einer Waschmaschine, eines Videorecorders Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -2- Springer-Verlag, ISBN 3-540-20958-1

  3. Was ist ein Programm? Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -3- Springer-Verlag, ISBN 3-540-20958-1

  4. Was ist ein Programm? Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -4- Springer-Verlag, ISBN 3-540-20958-1

  5. Begriff des Algorithmus • Begriffsdefinition • Ein Algorithmus(algorithm) ist die Beschreibung eines Verfahrens, um aus gewissen Eingabegrößen bestimmte Ausgabegrößen zu berechnen. Dabei müssen folgende Bedingungen erfüllt sein • Spezifikation • Durchführbarkeit • Korrektheit W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -5- Springer-Verlag, ISBN 3-540-20958-1

  6. Begriff des Algorithmus Spezifikation • Eingabespezifikation: Es muss genau spezifiziert sein, welche Eingabegrößen erforderlich sind und welchen Anforderungen diese Größen genügen müssen, damit das Verfahren funktioniert • Ausgabespezifikation: Es muss genau spezifiziert sein, welche Ausgabegrößen (Resultate) mit welchen Eigenschaften berechnet werden W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -6- Springer-Verlag, ISBN 3-540-20958-1

  7. Begriff des Algorithmus Durchführbarkeit • EndlicheBeschreibung: das Verfahren muss in einem endlichen Text vollständig beschrieben sein • Effektivität: Jeder Schritt des Verfahrens muss effektiv (d.h. tatsächlich) „mechanisch“ ausführbar sein • Bem.: „Effektivität“ ist nicht zu verwechseln mit „Effizienz“ („Wirtschaftlichkeit“) • Determiniertheit: Der Verfahrensablauf ist zu jedem Zeitpunkt fest vorgeschrieben W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -7- Springer-Verlag, ISBN 3-540-20958-1

  8. Begriff des Algorithmus • Korrektheit • partielle Korrektheit: Jedes berechnete Ergebnis genügt der Ausgabespezifikation, sofern die Eingaben der Eingabespezifikation genügt haben • Terminierung: Der Algorithmus hält nach endlich vielen Schritten mit einem Ergebnis an, sofern die Eingaben der Eingabespezifikation genügt haben W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -8- Springer-Verlag, ISBN 3-540-20958-1

  9. Begriff des Algorithmus • Bemerkung: Nach unserer Begriffsbestimmung gäbe es also keine • nicht-deterministische, • nicht-terminierende • ... • Algorithmen • Diese Begriffe werden aber durchaus verwendet! • Methode erfüllt alle Anforderungen an einen Algorithmus, bis auf die mit „nicht“ gekennzeichnete W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -9- Springer-Verlag, ISBN 3-540-20958-1

  10. Ein "Algorithmus" aus dem täglichen Leben Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -10- Springer-Verlag, ISBN 3-540-20958-1

  11. Eine sehr alte Beschreibung eines Algorithmus Zitiert nach R. Manthey, Vorlesung Informatik I, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -11- Springer-Verlag, ISBN 3-540-20958-1

  12. Herkunft des Wortes „Algorithmus“ nach R. Manthey, Vorlesung Informatik I, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -12- Springer-Verlag, ISBN 3-540-20958-1

  13. Algorithmen und Programme nach R. Manthey, Vorlesung Informatik I, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -13- Springer-Verlag, ISBN 3-540-20958-1

  14. Problem – Algorithmus - Programm Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -14- Springer-Verlag, ISBN 3-540-20958-1

  15. Prinzipien des Algorithmenentwurfs • Neben den Bedingungen, die schon in die Begriffsdefinition eingegangen sind, gibt es weitere wichtigePrinzipien, die beim Entwurf zu beachten sind • Effizienz • Der Algorithmus soll möglichst wenig Aufwand verursachen • Das Ergebnis mit möglichst wenig Rechenschritten (oder mit möglichst wenig Speicherbedarf) erzielen • Frage der Komplexität von Algorithmen wichtiges Thema in der Informatik III und Informatik IV • Korrektheitbeweisbar? • Ein nicht-korrekter Algorithmus ist nach unserer Definition kein Algorithmus! • Trotzdem sind nicht-korrekte Verfahren eher die Regel als die Ausnahme W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -15- Springer-Verlag, ISBN 3-540-20958-1

  16. Beschreibung von Algorithmen • Für die Beschreibung von Algorithmen gibt es viele Möglichkeiten • Alltagssprache • Konkrete Programmiersprache • Dazwischen gibt es eine Vielzahl von Notationen, die den Übergang zwischen Problembeschreibung und Programm erleichtern sollen • Flussdiagramme • Pseudocode W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -16- Springer-Verlag, ISBN 3-540-20958-1

  17. Beschreibung von Algorithmen • Wir stellen Algorithmen als FolgeeinzelnerBearbeitungsschritte dar • Diese können ggf. wiederholt werden, bis das gewünschte Ergebnis erzielt ist • Wiederholungen geschehen entweder • innerhalb der Schrittfolge durch Anweisungen wie: weiter mit Schritt (2) („Iteration“), • oder durch erneutes Aufrufen des Algorithmus mit einer einfacherenProblemstellung („Rekursion“) • Jeder Schritt sollte wie ein Buchkapitel einem Thema folgen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -17- Springer-Verlag, ISBN 3-540-20958-1

  18. Grundschema des Algorithmenaufbaus • Folgendes Grundschema wird uns bei vielen Algorithmen begegnen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -18- Springer-Verlag, ISBN 3-540-20958-1

  19. Grundschema des Algorithmenaufbaus: Beispiel • Beispiel:Man finde ein Verfahren zur Berechnung des Rests r der Ganzzahldivision a/b, also für cb+r=a und r<b, wobei 0≤a und 0≤b • Diese Funktion wird meist „Modulus-Funktion“ genannt, da ra mod b W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -19- Springer-Verlag, ISBN 3-540-20958-1

  20. Steuerungsverlauf • Die Anordnung der Anweisungen eines Algorithmus, die bestimmt, in welcher Reihenfolge Dinge geschehen, heißt • Steuerungsverlauf(control flow) des Algorithmus • Wird auch Kontrollfluss (flow of control) genannt • Manchmal wird auch der Programmablauf oder Kontrollfaden(thread of control), also die tatsächlich abgespulten Schritte und Anweisungen so bezeichnet W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -20- Springer-Verlag, ISBN 3-540-20958-1

  21. Steuerungsverlauf • Die Konstruktion „fahre fort mit Schritt 2“ stellt einen Sprung (jump) im Steuerungsverlauf dar • Dies ist die elementarste Form, eine Wiederholung oder sonstige Verzweigung im Ablauf auszudrücken • Dadurch erhalten wir die elementar-iterativeBeschreibungsform von Algorithmen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -21- Springer-Verlag, ISBN 3-540-20958-1

  22. Elementar-iterative Beschreibungsform • Die elementar-iterative Beschreibungsform hat die nützliche und angenehme Eigenschaft: • Wir können über einzelne Schritte des Verfahrens sprechen • Die „fahre fort“-Konstruktion entspricht unmittelbar der goto-Anweisung im Programmieren • Zur Anwendung von goto werden Schritte mit einer Marke (Label) versehen, um das Ziel des Sprunges zu kennzeichnen • Anwendung vongoto ist aber sehr gefährlich! • Strukturiert komplexe Programm nicht ausreichend • Steuerungsverlauf kann verworren und unübersichtlich sein W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -22- Springer-Verlag, ISBN 3-540-20958-1

  23. Flussdiagramme • Der Steuerungsverlauf kann mit der Notation der Flussdiagramme(flow chart) graphisch dargestellt werden • Die Sprache der Flussdiagramme benutzt folgende Symbole • Werden mit Pfeilenverbunden • Die Ausführung solcher Ablaufpläne folgt den Pfeilen zwischen den Kästchen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -23- Springer-Verlag, ISBN 3-540-20958-1

  24. Flussdiagramme • Beispiel: Grundschema des Algorithmenaufbaus als Flussdiagramm W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -24- Springer-Verlag, ISBN 3-540-20958-1

  25. Modulus-Funktion als Flussdiagramm • Beispiel:Flussdiagramm für iterative Beschreibung der Modulus-Funktion W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -25- Springer-Verlag, ISBN 3-540-20958-1

  26. Strukturiert-iterative Beschreibungsform • Um den Steuerungsverlauf auch bei komplexen Algorithmen übersichtlich zu halten, schränkt man die Sprüngeein: • Schleifen der Flussdiagramme sind höchstens ineinander geschachtelt • Schleifen überkreuzen sich nicht! • Im Arbeitsschritt des Grundschemas würde man z. B. nur wieder eine geschlossene Schleife oder einen (vorzeitigen) Sprung zurück zum Test des Trivialfalls erlauben • Wir sprechen in diesem Fall von strukturiertenSprüngenim Gegensatz zu freienSprüngen, die prinzipiell beliebige Ziele haben können W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -26- Springer-Verlag, ISBN 3-540-20958-1

  27. Strukturiert-iterative versus elemantar-iterative Beschreibungsform • Beispiel: Schemata einiger Kontrollflüsse Spaghetti-Code Strukturiert-iterativ Elementar-iterativ W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -27- Springer-Verlag, ISBN 3-540-20958-1

  28. Strukturiert-iterative Beschreibungsform • Sprünge kommen zunächst nur noch implizit bei der Ausführung höherer Iterationsstrukturen vor • Dieses sind Fallunterscheidungen wie if-then-else • Oder insbesondere bei Schleifenkonstrukten (loop), wie etwa • while • Diese bewirken, dass der Programmfluss in einer Schleife von einem Test zu einem Bearbeitungsschritt und wieder zurück zum Test geht W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -28- Springer-Verlag, ISBN 3-540-20958-1

  29. Strukturiert-iterative Beschreibungsform: while • Schleifenkonstrukte: while • Die klassische while-Schleife lautet wie folgt: • Bei Eintritt in die while-Schleife wird zunächst die Bedingung (ein Boolescher Ausdruck) ausgewertet • Beim Wert true wird die Anweisungssequenz einmal ausgeführt und danach erneut zur Bedingung verzweigt • Beim Wert false wird die Schleife (ohne Ausführung der Anweisungssequenz) beendet W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -29- Springer-Verlag, ISBN 3-540-20958-1

  30. Strukturiert-iterative Beschreibungsform: while • Die while-Schleife entspricht also der Konstruktion • . W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -30- Springer-Verlag, ISBN 3-540-20958-1

  31. Rekursive Beschreibungsform • Im rekursiven Ansatz versucht man, ein vorgelegtes Problem P(X) nach folgendem Schema in zwei Teilen zu lösen: • Bem.: Rekursive und iterative Beschreibungsformen sind gleichmächtig • Nach einer Formalisierung des Algorithmenbegriffs kann dies auch bewiesen werden! • Etwa in der Vorlesung Informatik IV W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -31- Springer-Verlag, ISBN 3-540-20958-1

  32. Rekursive Beschreibungsform: Beispiel • Beispiel: In gängiger mathematischer Notation könnte ein Verfahren zur Berechnung der Modulus-Funktion a mod b wie folgt aussehen: W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -32- Springer-Verlag, ISBN 3-540-20958-1

  33. Rekursive Beschreibungsform: Beispiel • Beispiel (Forts.): Um festzustellen, ob diese Berechnungsvorschrift einen Algorithmus darstellt, müssen wir folgende Fragen beantworten: • Spezifikation • Eingabe • Ausgabe • Durchführbarkeit • Endliche Beschreibung • Effektivität • Determiniertheit • Korrektheit • Partielle Korrektheit • Terminierung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -33- Springer-Verlag, ISBN 3-540-20958-1

  34. Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels • Beispiel (Forts.): • Spezifikation W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -34- Springer-Verlag, ISBN 3-540-20958-1

  35. Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels • Beispiel (Forts.): W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -35- Springer-Verlag, ISBN 3-540-20958-1

  36. Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels • Beispiel (Forts.): W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -36- Springer-Verlag, ISBN 3-540-20958-1

  37. Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels • Beispiel (Forts.): • Korrektheit • Bemerkungen: Diese Überlegungen stellen einen Korrektheitsbeweis dar • Die Termination konnte bei diesem Algorithmus also bewiesen werden; es gibt aber kein mechanisches Verfahren das bei einem beliebigen Algorithmus entscheiden kann, ob dieser terminiert oder nicht („Halte-Problem“) W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -37- Springer-Verlag, ISBN 3-540-20958-1

  38. Rekursive Beschreibungsform: Beispiel in Java • Das rekursive Verfahren in mathematischer Notation können wir mit minimalen Änderungen nach Java umsetzen • Wir definieren dazu eine Java-Funktion mod, die zwei ganze Zahlen a und b als Parameter hat und eine ganze Zahl als Ergebnis liefert W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -38- Springer-Verlag, ISBN 3-540-20958-1

  39. Rekursive Beschreibungsform: Beispiel in Java • Zur Illustration stellen wir nun noch eine etwas ausführlichere (aber gleichwertige) Version dieser Funktion vor Kommentarzeilen Zum Vergleich: Rekursionsgleichung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -39- Springer-Verlag, ISBN 3-540-20958-1

  40. Euklidischer Algorithmus zur ggT-Berechung • Als weiteres Beispiel für die rekursive Beschreibungsform nehmen wir den Euklidischen Algorithmus zu Berechnung des größten gemeinsamen Teilers (ggT) zweier ganzer Zahlen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -40- Springer-Verlag, ISBN 3-540-20958-1

  41. Euklidischer Algorithmus zur ggT-Berechung • Beschreibung in einem Pseudo-Code Zum Vergleich: Rekursionsgleichung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -41- Springer-Verlag, ISBN 3-540-20958-1

  42. Euklidischer Algorithmus zur ggT-Berechung • Beschreibung in Java Andere Art eines Kommentars, ein „Dokumentationskommentar“ Modulus-Funktion ist in Java eingebaut; wird durch das Symbol % beschrieben; könnten auch die selbst definierte Funktion mod aufrufen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -42- Springer-Verlag, ISBN 3-540-20958-1

  43. Rekursion und funktionale Programmierung • Der rekursive Ansatz zur Problemlösung ist die Hauptdenkweise, die die funktionalen Programmiersprachen unterstützen • Etwa LISP, Scheme, ML, Haskell • Vorzug liegt in der großen Eleganz und Kompaktheit gerade bei kleinen Lehrbuchbeispielen • Dieser Ansatz erfordert nur sehr wenige syntaktische Konstrukte der Programmiersprache (kein while, for, repeat, ...) W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -43- Springer-Verlag, ISBN 3-540-20958-1

  44. Rekursion und funktionale Programmierung • Funktionale Denkweise: • kein Begriff des Zustands(state) einer Berechnung. • manchmal beträchtliche Eleganz, erleichtert auch Korrektheitsbeweise • Alle Daten sind global, alle Funktionen können auf allen Daten operieren • Objektorientierte Denkweise: • Funktionen sind mit ihren Daten zu Objekten gekapselt • Objekte interagieren durch Fenster mit anderen Objekten • Objekte haben Zustände (gegeben durch die Daten) • Zustände werden durch Berechnung weiterentwickelt • In der objektorientierten Welt ist daher das (ebenfalls klassische) zustandsorientierte iterative Konzept zur Konstruktion von algorithmischen Problemlösungen am weitesten verbreitet • Wie wir gesehen haben, kann auch in einer objektorientierten Sprache wie Java rekursiv programmiert werden! W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -44- Springer-Verlag, ISBN 3-540-20958-1

  45. Konstruktion und Verifikation iterativer Algorithmen • Bei der Verwendung von imperativen (Anweisungs orientiert) Programmiersprachen wie Java stellt die Konstruktion korrekter iterativer Algorithmen den Kern des Programmierens dar • Hat man diese nicht verstanden, kann man auch nicht programmieren • Wir betrachten deshalb den Grundaufbau iterativer Algorithmen nochmals in vertiefter Form • Besonders auch unter dem Aspekt, dass wir strukturiert-iterative Algorithmen entwickeln und als korrekt beweisen wollen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -45- Springer-Verlag, ISBN 3-540-20958-1

  46. Konstruktion und Verifikation iterativer Algorithmen • Betrachten Grundschema des Algorithmenaufbaus in einer Variante, die einem strukturiert-iterativen Ansatz entspricht • Der Algorithmus operiert dabei auf einer Menge V von Variablen (Name mit wechselndem Wert) • Diese Zustandsvariablen haben veränderliche Werte und können somit bearbeitet werden, und unter ihnen befindet sich schlußendlich das Resultat • Nach einem Vorbereitungsschrittwird so lange die Arbeitf(V) verrichtet, wie die SchleifenbedingungC(V) wahr ist • Danach wird ein Nachbearbeitungsschrittausgeführt und der Algorithmus beendet W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -46- Springer-Verlag, ISBN 3-540-20958-1

  47. Konstruktion und Verifikation iterativer Algorithmen • Zur Verifikation werden Zustandsvariablen partitioniert in V=EHA • Eist Menge der Eingabevariablen • Eingabeparameter der Berechnung • Aist Menge der Ausgabevariablen • Werte zum Schluss zeigen Ergebnis der Berechnung an • Hist Menge der Hilfsvariablen • Die Werte der Variablen spiegeln zu jedem Zeitpunkt den Zustand (state) der Berechnung wider W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -47- Springer-Verlag, ISBN 3-540-20958-1

  48. Konstruktion und Verifikation iterativer Algorithmen • Problemlösung durch den Algorithmus findet also dadurch statt, dass der Anfangszustand V0, in dem nur die Variablen in E relevante Werte haben, durch eine BerechnungssequenzSchritt für Schritt („iterativ“) in einen Endzustand transformiert wird • In dem die Werte der Variablen in A das gewünschte Gesamtresultat darstellen • Oft gibt es nur ein einziges Resultat, das wir üblicherweise mit r oder res bezeichnen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -48- Springer-Verlag, ISBN 3-540-20958-1

  49. Konstruktion und Verifikation iterativer Algorithmen • Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen • Variablen können Werte zugewiesen werden • Zuweisungsoperator in imperativen Sprachen von fundamentaler Bedeutung • In Pascal heißt Zuweisungsoperator := • Benutzen := für Zuweisungsoperator in Pseudocode • In C, C++, Java heißt Zuweisungsoperator = W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -49- Springer-Verlag, ISBN 3-540-20958-1

  50. Konstruktion und Verifikation iterativer Algorithmen • Erfolgt Reduktion mithilfe strukturierter Iteration, so kann i.A. Korrektheit durch Finden einer geeigneten Schleifeninvariante bewiesen werden • Schleifeninvariante: Prädikatenlogische Formel INV(V), die an bestimmter Stelle einer Schleife bei allen Schleifendurchgängen stets gilt • F(V) ist Schleifeninvariante falls • F(V) gilt vor dem ersten Durchgang • F(V) => F(V ´); F gilt nachher, falls F vorher gegolten hat W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -50- Springer-Verlag, ISBN 3-540-20958-1

More Related