Trockentest beim Struktogramm durchführen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Dabei geht man einfach Schritt für Schritt durch, von oben nach unten.

Die erstem 3 Zeilen werden natürlich nacheinander durchlaufen. Das grünliche ist eine Schleife. Am Anfang und jedes Mal wenn die Schleife durchlaufen wurde (In der Schleife ist alles, was im grünen Bereich nach rechts gerückt steht) ob die Schleife erneut durchlaufen werden soll oder nicht.

Beispiel für bei a=5 und b=30:

  • Ist a>0? Ja. Also wird die Schleife ein erstes Mal durchlaufen
  • Dann eine Bedingung (If - Abfrage) a%2==1. das ist in den Meisten Sprachen ein Modulozeichen (Rest ganzzahlige Division / wenn du Modulo nicht kennst mach Dich separat schlau). 5%2==1 ist Wahr (entspricht einem: Ist a ungerade)
  • Wahr ist das was im linken Bereich steht (wäre es unwahr, a also gerade würde gemacht was rechts steht, hier also nichts)
  • Im linken Bereich steht p=p+b. p ist 0, b ist hier 30, also wird p auf 30 gesetzt.
  • Dann wird ganzzahlig dividiert a=a/2. A durch 2 wäre 2,5, bei der ganzzahligen Division fällt alles hinter dem Komma weg, damit wird a zu 2
  • Dann wird b verdoppelt (b=b*2), also b = 60.
  • Damit wird die Schleife beendet und es wird überprüft ob die Schleifenbedingung noch erfüllt ist. A ist noch >0, also geht es noch einmal in die Schleife.
  • Entsprechend der Bedingungen in der Schleife verändern sich die Werte weiter (das ist Deine Aufgabe, kann sein, dass es einige Male durch die Schleife geht)
  • Erst wenn a nicht mehr >0 ist, wird die Schleife verlassen und p ausgegeben ("A:" = Ausgabe / "E:=Eingabe)
  • Danach ist das Programm zuende

So würde man in Wirklichkeit nie programmieren. Code wird einmal geschrieben, vielleicht ein paarmal geändert aber sehr viel häufiger gelesen. Man sollte sehr schnell verstehen, was passiert. Das ist hier definitiv nicht der Fall. So ein Programm dient der Lehre und dem Verständnis der Programme und zum besseren Verständnis, was passiert.

So würde ich es der Praxis allerhöchstens bei Rekursionen nutzen. Als Erfahrener Programmierer kann man das aber meist direkt anhand der Wert. Zum Beispiel (ähnlich dem Beispiel) in einer rekursiven Methode soll jeweils ohne Rest ein wer /2 dividiert werden und erst wenn er unter 1 ist, dann soll das beendet werden und gleichzeitig geht ein Zähler hoch, wie dividiert wurde. Zum Beispiel: Ich fange mit 7 an. Dann ergibt die Folge: 7 / 3 / 1 / 0. Also 3 Divisionsschritte. Eigentlich wäre ein Diagramm wie oben die Grundlage, so könnte man sich Schritt für Schritt anschauen, was passiert. Wenn man aber genügend Überblick hat, wird man das später in der Praxis aber nicht machen müssen. Der If-Term und das b quadrieren machen das ganze zu Lernzwecken in der Aufgabe bewusst etwas schwerer.

Micha676 
Fragesteller
 19.11.2023, 12:34

Vielen Dank!

0