Huelsse/Profil Nawi/Java/Java-Turtle - Verzweigungen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
'''Java Turtle - Verzweigung'''
----
'''Einseitige Verzweigung mit IF'''
{|
|-
| Hier muss sich der Turtle entscheiden (Verzweigung):<BR>Er geht 20 mal 10 Schritte voran, ist bei den 20 Wiederholungen für die Laufvariable i eine gerade Zahl erreicht, dann wird der Stift gehoben und 10 Schritte ohne Zeichnen vorwärts gegangen
* turtle.left(90);<BR>* for (int i = 1; i < 21; i++)<BR>* {<BR>* turtle.penDown();<BR>* if (i % 2 == 0)<BR>* { turtle.penUp(); }<BR>*<BR>* turtle.forward(10);<BR>* }
|| [[Bild:Koehler_Turtle4_Strichlinie.jpg]]
|}
Mit IF-Blöcken (einseitige Verzweigungen) können Annweisungen nur bei bestimmten Bedingungen ausgeführt werden<BR>
Erklärung der Anweisungen:
* turtle.left(90); - Blickrichtung Turtle ist links
* <span style="background-color:#80ff80">for (int i = 1; i <= 21; i++ )</span> Zählschleife, wiederholt folgenden Anweisungen 20 mal:
* turtle.penDown(); - Absetzen des Stiftes zum Zeichnen
* <span style="background-color:#80ffff"> if (i % 2 == 0) </span> - Start der Einseitgen Verzweigung: % - Modula-Operation - untersucht den gangzahligen Divisionsrest, ist dieser gleich 0, also eine gerade Zahl, dann wird der Anweisungsblock der Verzweigung ausgeführt, hier:
* <span style="background-color:#80ffff">turtle.penUp()</span>
* turtle.forward(10); - Anschließend läuft der Turtle 10 Schritte, bei gerader Laufvariable i wird keine Linie gezeichent (turtle.penUp())
{| border="1"
|-
| Struktogramm || Java Quelltext || Pascal Quelltext
|-
| [[Bild:Koehler_STRICHLINIE.png]] || turtle.left(90);<BR> for (int i = 1; i <= 21; i++ )<br> {<BR> turtle.penDown(); <BR> if (i % 2 == 0)<BR> { turtle.penUp(); }<BR> turtle.forward(10); <BR> }<BR> || turtle.left(90); <BR> begin <BR> for i := 1 to 20 do <BR> begin <BR> turtle_penDown();<BR> IF ( i mod 2 = 0 );<BR> turtle_penUp(); <BR> end; <BR> turtle_forward(10); <BR>
|}
<BR>
'''Zweiseitige Verzweigung mit IF - ELSE'''
{|
|-
| Der Turtle läugt Zick-Zack (zweiseitige Verzweigung): der Turtel schaut 45° nach lnks <BR>Er geht 20 mal 10 Schritte voran, ist bei den 20 Wiederholungen für die Laufvariable i eine gerade Zahl erreicht (IF-Zweig), dann schaut der Turtle 90° nach rechts, ansonsten 90° nach links (ELSE-Zweig), in der gewählten Richtung geht der Turtle 10 Schritte vorwärts
* turtle.left(45);<BR>* for (int i = 1; i < 21; i++)<BR>* {<BR>* if (i % 2 == 0);<BR>* {turtle.right(90);} <BR>* ELSE <BR>* { turtle.left(90)}<BR>* turtle.forward(10);<BR>* }
|| [[Bild:Koehler_Turtle4_Zickzacklinie.jpg]]
|}
Mit IF-ELSE-Blöcken (zweiseitige Verzweigungen) können Annweisungen in zwei verschiedene Wege verzweigt werden<BR>
Erklärung der Anweisungen:
* turtle.left(45); - Blickrichtung Turtle ist 45° links
* <span style="background-color:#80ff80">for (int i = 1; i <= 21; i++ )</span> Zählschleife, wiederholt folgenden Anweisungen 20 mal:
* <span style="background-color:#80ffff"> if (i % 2 == 0) </span> - Start der Einseitgen Verzweigung: % - Modula-Operation - untersucht den gangzahligen Divisionsrest, ist dieser gleich 0, also eine gerade Zahl, dann wird der Anweisungsblock der Verzweigung ausgeführt, hier:
* <span style="background-color:#80ffff">turtle.right(90)()</span>
* Ist der Divisions rest ungleich 0, also eine ungerade Zahl, dann wird die ELSE-Anweisung ausgeführt:
* <span style="background-color:#80ffff">turtle.left(90)()</span>
* turtle.forward(10); - Anschließend läuft der Turtle 10 Schritte in der gewählten Richtung vorwärts
{| border="1"
|-
| Struktogramm || Java Quelltext || Pascal Quelltext
|-
| [[Bild:Koehler_ZICKZACKLINIE.png]] || turtle.left(45);<BR> for (int i = 1; i <= 21; i++ )<br> {<BR> if (i % 2 == 0)<BR> { turtle.right(90); }<BR> ELSE <BR> turtle.left(90); <br>turtle.forward(10); <BR> }<BR> || turtle.left(45); <BR> begin <BR> for i := 1 to 20 do <BR> begin <BR> IF ( i mod 2 = 0 );<BR> turtle_right(90) <BR>ELSE <BR> turtle_left(90); <BR> turtle_forward(10);<BR> end; <BR>
|}
<BR>
Erstellen Sie die folgende Turtle-Grafik "geschachtelte Quadrate" mit 2 Zählschleifen:
* <span style="background-color:#80ff80">1. Äußere Schleife: </span>ruft das Zeichnen eines Quadrates dreimal auf, erhöht anschließend die Schrittweite
* <span style="background-color:#FFFF80">2. Innere Schleife: </span> Zeichnet das Quadrat mit der gewünschten Seitenlänge s
* Startschrittweite für s: 50
* Startposition: Canvasmitte
{|-
|-
| '''geschachtelte Quadrate: 50, 75, 100''' ||
|-
| <run id="4dd0206ebbf2b">
canvas.clear();
turtle.home();
turtle.penDown();
</run>
|| <canvas>
</canvas>
|}