[[..:Datenbank:]] <- [[..:..:Informatik-Buch:]] -> ====== Algorithmisches Problemlösen ====== Die Themen im Rahmen des Algorithmischen Problemlösens: * Algorithmen bei der automatisierten Datenverarbeitung * Algorithmen grafisch darstellen / entwickeln * Algorithmen in einer Programmiersprache implementieren * systematisches Problemlösen ===== Einführung Algorithmus ===== Ein Algorithmus ist eine systematische Lösung für ein Problem. Das heißt, dass für eine bestimmte Kategorie von Problemen immer der gleiche Lösungsweg anwendbar ist. Dieser Lösungsweg heißt dann Algorithmus. Einige Anforderungen an einen Algorithmus, die unmittelbar klar sind, müssen gefordert werden: * Endlichkeit - sonst fehlt die Zeit ihn vollständig aufzuschreiben. * Ausführbarkeit - was soll man sonst damit? * Eindeutigkeit - am Ablauf darf kein Zweifel entstehen. * Allgemeinheit - die gesamte Kategorie von Problemen muss gelöst werden können. Sonst ist es nur eine Lösung, kein Lösungsweg. (vergleiche Gasper, Spengler, Stimm: Technische und theoretische Informatik) Um einen Algorithmus darzustellen gibt es verschiedene Möglichkeiten: * [[Flussdiagramm]] / Programmablaufmodell * [[Struktogramm]] / Strukturbetonte Darstellung * Sourcecode (Das Programm in einer bestimmten Programmiersprache.) ===== Finden eines Algorithmus ===== - Ablaufsituationen klären und die Verarbeitung beschreiben - strukturbetonte Darstellung - Implementierung Eine optisch unterstütze besonders für Anfänger geeignete Möglichkeit zu lernen, wie Algorithmen in Informatik erstellt und umgesetzt werden ist ''Robot Karol''. Das Programm beinhaltet eine minimale deutsche (!) Programmiersprache mit einem Roboter als optische Rückmeldung. ===== Top-Down-Methode ===== Das zu lösende Problem wird von oben nach unten bearbeitet. Das bedeutet, dass man sich eine Lösung für das eigentlich Problem in wenigen Schritten überlegt. Diese einzelnen Schritte sind meist einfacher zu lösen als das gesamte Problem auf einen Schlag. Die einzelnen Schritte sollen also kein schon bekanntes Problem mit vorhandenem Algorithmus darstellen, sondern kleinere ebenfalls noch zu bearbeitende Probleme. Sind die Teilprobleme immer noch zu komplex, wird weiter aufgeteilt. Solange, bis man unten angelangt ist und die Teilprobleme implementieren kann. Dann steigt man wieder auf, bis das ganze System gelöst ist. ===== Grundlagen mit Karol ===== Mit [[..:Programmiersprachen:Karol:]]s Hilfe werden die wichtigsten Grundlagen der Programmierung gelegt: * einfache, vorgegebene Befehle nutzen * Wiederholungen mit ''wiederhole'' (**zählergesteuerte** Wiederholung) * Bedingungen und Wiederholungen mit ''solange'' (**kopfgesteuerte** Wiederholung / Eintrittsbedingung) * Unterprogramme / eigene Methoden => vereinfachte Programme * Fallunterscheidungen / situationsbedingtes Vorgehen * eigene Bedingungen => vereinfachte Programme * **fußgesteuerte** Wiederholung / Austrittsbedingung * Geschachtelte Wiederholungen * Bibliothek anlegen, benutzen ===== Algorithmen vorgestellt und erläutert ==== [[http://www-i1.informatik.rwth-aachen.de/~algorithmus/index.php|Diese Seite]] ist für alle, die schon immer wissen wollten, warum der PC weiß, dass "A" vor "B" kommt ;) (Und mehr natürlich)