Huelsse/Profil Nawi/Java/Java-Turtle - Mehrfachverzweigungen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
'''Java Turtle - Mehrfachverzweigung SWITCH'''
----

Statt mehrerer IF-Anweisungen, können Mehrfachverzweigungen genutzt werden:<BR>
Der Turtle geht 20 mal 10 Schritte voran, dabei wird bei den 20 Wiederholungen eine die Laufvariable i benutzt<br>
zusätzlich wird eine zweite Variable k (kann Werte zwischen 1 und 4 annehmen) genutzt, ist i durch 4 teilbar, wird k wieder auf 1 gesetzt und bei jedem Schleifendurchlauf um 1 erhöht<BR>
ist die Laufvariable k durch 1 teilbar, dann werden 10 Schritte in rot gezeichnet, <BR>
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in grün gezeichnet, <br>
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in blau gezeichnet, <br>
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in schwarz gezeichnet, <br>
{|
 |-
 | 
 *  turtle.left(90);
 *  int k = 1;
 *  for (int i = 1; i < 21; i++)
 *  { 
 *   switch(k) 
 *   {
 *    case 1:  <BR>*   { turtle.penColor(255,0,0); break;} 
 *    case 2:  <BR>*   { turtle.penColor(0,255,0); break;} 
 *    case 3:  <BR>*   { turtle.penColor(0,0,255); break;} 
 *    case 4:  <BR>*   { turtle.penColor(0,0,0); break;} 
 *   } 
 *  turtle.forward(10);
 *  k++;
 *  if (i %  4 == 0)
 *  { k =1; }
 * }
 || [[Bild:Koehler_Turtle5_bunte_linie.jpg]] 
 |}

Mit IF-THEN-Blöcken (einseitige Verzweigungen) können Anweisungen 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 einseitigen Verzweigung: % - Modula-Operation - untersucht den ganzzahligen Divisionsrest, ist dieser gleich 0, also eine gerade Zahl, dann wird der Anweisungsblock der JA-Verzweigung (THEN) 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 gezeichnet (turtle.penUp())


{| border="1"
 |-
 | Struktogramm || Java Quelltext || Pascal Quelltext  
 |-
 | [[Bild:Koehler_Turtle5_bunte_linie.png]] || 
  turtle.left(90);
  int k = 1;<BR>
  for (int i = 1; i < 21; i++)<BR>
  { <BR>
   switch(k) <BR>
   {<BR>
    case 1:  <BR>
   { turtle.penColor(255,0,0); break;} <BR>
    case 2:  <BR>
   { turtle.penColor(0,255,0); break;} <BR>
    case 3:  <BR>
   { turtle.penColor(0,0,255); break;} <BR>
    case 4:  <BR>
   { turtle.penColor(0,0,0); break;} <BR>
   } <BR>
  turtle.forward(10);<BR>
  k++;<BR>
  if (i %  4 == 0)<BR>
  { k =1; }<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-THEN-ELSE'''

Der Turtle läuft Zick-Zack (zweiseitige Verzweigung): <BR>
der Turtel schaut 45° nach links <BR>Er geht 20 mal 10 Schritte voran, ist bei den 20 Wiederholungen für die Laufvariable i eine gerade Zahl erreicht (IF-THEN-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-HEN-ELSE-Blöcken (zweiseitige Verzweigungen) können Anweisungen 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 zweiseitigen Verzweigung: % - Modula-Operation - untersucht den ganzzahligen Divisionsrest, ist dieser gleich 0, also eine gerade Zahl, dann wird der Anweisungsblock der Ja-Verzweigung (THEN) ausgeführt, hier:
* <span style="background-color:#80ffff">turtle.right(90)()</span>
* Ist der Divisionsrest ungleich 0, also eine ungerade Zahl, dann wird die NEIN-Anweisung (ELSE) 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>