StructorizerHandbuch DE

Anwendungsfall: Einsteiger – einfache mathematische Beispiele

Einsteiger beginnen typischerweise mit einfachen mathematischen Berechnungen (etwa der Berechnung der FakultĂ€t, des grĂ¶ĂŸten gemeinsamen Teilers oder Ähnlichem) im IPO-Stil (Eingabe–Verarbeitung–Ausgabe), basierend auf unmittelbar ausfĂŒhrbaren Anweisungen ohne komplizierte Syntax, oder mit einfachen Zeichenaufgaben mithilfe der Primitive des Turtleizer. So lassen sich rasch motivierende Erfolge erzielen, die ein schnelles praktisches VerstĂ€ndnis der algorithmischen Konzepte vermitteln. Die Beobachtungsmöglichkeiten ĂŒber die Animationsfunktionen des Debuggers sind dabei ebenso unverzichtbar wie die vielfĂ€ltigen Hinweise des Analysers.

Nach dieser ersten, eher Bottom-Up-orientierten Lernphase unterscheidet sich der Anwendungsfall der fortgeschritteneren Einsteiger kaum vom Top-Down-Ansatz des Entwurfs mit interner Verfeinerung – schlicht weil dies in der Regel der optimale Weg ist, ein Problem mithilfe eines Algorithmus zu lösen.

In diesem Fall ist es jedoch weniger wichtig, wie kompatibel die gefundene Lösung mit verschiedenen Programmiersprachen ist – entscheidend ist, einen funktionierenden Algorithmus zu entwickeln, der getestet und verifiziert werden kann. Dabei sollten Sie die syntaktischen Spezifikationen des Structorizer-Sprachdialekts einhalten. Deshalb empfiehlt es sich, die Syntaxhervorhebung und den Analyser einzuschalten (siehe empfohlene Einstellungen unten).

Bezogen auf unsere Beispielaufgabe könnte das im vorherigen Anwendungsfall grob skizzierte Unterprogramm so weit verfeinert werden, bis es vollstĂ€ndig durch Anweisungen in ausfĂŒhrbarer Structorizer-Syntax implementiert ist, z. B.:

Die resultierende Diagrammgruppe fĂŒr die DeflateText-Aufgabe
Die resultierende Diagrammgruppe fĂŒr die DeflateText-Aufgabe im Arranger

Nun können alle Arten von Test- und Debugging-Möglichkeiten sowie Laufzeitanalysen (AusfĂŒhrungszĂ€hlung zur Hot-Spot-Erkennung oder Testabdeckung) genutzt werden, um ein tieferes VerstĂ€ndnis des Algorithmenverhaltens zu gewinnen:

Testprotokoll auf der Ausgabe-Konsole
Testprotokoll auf der Ausgabe-Konsole

Testabdeckungsnachweis fĂŒr die obige Eingabe (Modus „deep test coverage" – tiefe Testabdeckung):

Laufzeitanalyse mit Testabdeckung
Laufzeitanalyse mit Testabdeckung

Visualisierung des Testlaufs mit Hervorhebung der AusfĂŒhrungs-Hot-Spots – welche Operationen am hĂ€ufigsten ausgefĂŒhrt werden (Modus „execution count" – AusfĂŒhrungszĂ€hlung):

Laufzeitanalyse mit AusfĂŒhrungszĂ€hlung
Laufzeitanalyse mit AusfĂŒhrungszĂ€hlung

Visualisierung des Testlaufs mit Hervorhebung der logarithmischen AusfĂŒhrungszeitverteilung ĂŒber die Diagramme – welche Operationslast sich hinter einer bestimmten algorithmischen Komponente verbirgt, z. B. einer Schleife oder einem Aufruf (Modus „done operations, logar." – durchgefĂŒhrte Operationen, logarithmisch):

Laufzeitanalyse mit verwandten Operationen (logarithmisch)
Laufzeitanalyse mit verwandten Operationen (logarithmisch)

Ist der Algorithmus validiert und analysiert, ist die eigentliche Aufgabe erledigt – die gewonnenen Erkenntnisse bleiben.

NatĂŒrlich ist es weiterhin möglich, Code fĂŒr die gefundene Lösung zu generieren. Dabei muss man sich bewusst sein, dass einige Teile des Algorithmus in der gewĂ€hlten Zielprogrammiersprache neu geschrieben werden mĂŒssen, da nicht immer ein passendes Äquivalent fĂŒr alle eingebauten Datentypen, Operatoren, Funktionen und Prozeduren von Structorizer vorhanden ist.

Durch die bewusste Wahl ausfĂŒhrbarer Anweisungssyntax kann Structorizer auch fĂŒr schnelles Prototyping und die Demonstration von Algorithmen bei kleineren bis mittelgroßen Beispielaufgaben eingesetzt werden, insbesondere im Unterricht. Dank der integrierten Datenstrukturierungsmöglichkeiten wie Arrays, Records (Structs) und sogar Textdateien kann dies auch fĂŒr bestimmte Algorithmen in anspruchsvolleren Kontexten gelten.

Wichtigste AktivitÀten und Werkzeuge:

Empfohlene Einstellungen: