Hallo ihr da draußen!,
ich habe vor langer Zeit Hilfe bei einem Projekt gebraucht und auch, zum Glück, bekommen. Allerdings verstehe ich einen Part nicht, muss es meinem Lehrer aber erklären! Kann mir bitte einer von euch helfen???
Offline
Die Blöcke nach dem "warte 1 Sek." bilden den Part welcher die Zahlen sortiert.
Die äußere "falls 0 < länge von Start"-Klammer überprüft erst einmal, ob in der Liste "Start" überhaupt etwas enthalten ist, damit man das sortieren kann. Die darauffolgende Klammer wiederholt das nachfolgende Prozedere so lange, bis die Liste Start komplett sortiert wurde.
Zuerst einmal werden die beiden Hilfsvariablen auf 1 gesetzt, sozusagen ein Reset durchgeführt.
Nun wird die Liste von oben nach unten durchgegangen. Ist ein Element in der Liste höher als das bisher höchste (Hilfe1 Element (das, was gerade geprüft wird) von Start > Hilfe2 Element (das bisher höchste) von Start), wird Hilfe2 sofort aktualisiert und auf die Stelle in der Liste gesetzt, in der dieses Element zu finden ist (das zur Zeit durch Hilfe1 markierte). Sollte das markierte Element niedriger sein als das bisher höchste (Hilfe2), wird es einfach ignoriert.
Danach wird Hilfe1 (also das zu prüfende Element der Liste) um 1 erhöht, womit man die nächste Stelle der Liste Start unter die Lupe nimmt. Das ganze wird so lange wiederholt, bis alle Stellen der Liste abgeklappert wurden (deshalb "wiederhole länge von Start mal")und somit das höchste Element feststeht. Dieses wird dann an die Liste Ziel angehängt, und, damit nicht ständig das gleiche Element übertragen wird, aus der Liste Start entfernt ([füge Hilfe2 Element von Start zu Ziel hinzu] und [entferne Hilfe2 aus Start]).
Die Variablen Hilfe1 und Hilfe2 werden wieder auf 1 gesetzt (damit die "Start" wieder von vorne durchgegangen und eine neue höchste Zahl gesucht werden kann) und das Ganze geht von vorne los, so lange, bis alles sortiert und aus der Liste Start entfernt wurde (länge von Start = 0).
Ich hoffe ich konnte helfen.
_Lirex
Offline
Wobei das angegebene Programm aber folgenden logischen Fehler enthält:
Es wird "Hilfe 1" auf 1 gesetzt ,...und....
es wird "Hilfe 2" auf 1 gesetzt .......
in der nun folgenden Schleife (Länge von START mal) wird "Hilfe 1" um eins erhöht.
----------
Nehmen wir an, Liste START wäre 3 Einträge lang, dann würde "Hilfe 1" gesamt 3 mal um 1 erhöht werden und am Ende auf 4 stehen.
Liste START hat aber gar keine 4 Elemente. Welches 4te Element von START wird vom Programm nun verglichen ?
Ein kurz aufblinkender roter Rahmen um die Liste START deutet diesen Fehler an, ignoriert ihn aber glücklicherweise für den weiteren Ablauf.
Ein weiterer logischer Fehler für meinen Geschmack ist die Zufallszahl von 1 bis 40 zu wählen, für die Variable ZAHL, denn die daraus resultierende Liste START könnte nun wahrhaftig zufällig ein Element lang sein, was ziemlich unsinnig wäre.
Last edited by Buddy60 (2013-02-11 12:25:33)
Offline