Java-Turtle - Mehrfachverzweigungen

Aus ProgrammingWiki
Archivierte Version vom 2011-06-06T20:29:44+00:00. Aktuelle Version

Java Turtle - Mehrfachverzweigung SWITCH


Statt mehrerer IF-Anweisungen, können Mehrfachverzweigungen genutzt werden:
Er geht 20 mal 10 Schritte voran, dabei wird bei den 20 Wiederholungen eine die Laufvariable i benutzt
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
ist die Laufvariable k durch 1 teilbar, dann werden 10 Schritte in rot gezeichnet,
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in grün gezeichnet,
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in blau gezeichnet,
ist die Laufvariable k durch 2 teilbar, dann werden 10 Schritte in schwarz gezeichnet,

  • turtle.left(90);int k = 1;
*  for (int i = 1; i < 21; i++)
*  { 
*   switch(k) 
*   {
*    case 1:  
* { turtle.penColor(255,0,0); break;} * case 2:
* { turtle.penColor(0,255,0); break;} * case 3:
* { turtle.penColor(0,0,255); break;} * case 4:
* { turtle.penColor(0,0,0); break;} * } * turtle.forward(10); * k++; * if (i % 4 == 0) * { k =1; } * }
| Koehler_Turtle4_Strichlinie.jpg

Mit IF-THEN-Blöcken (einseitige Verzweigungen) können Anweisungen nur bei bestimmten Bedingungen ausgeführt werden
Erklärung der Anweisungen:

  • turtle.left(90); - Blickrichtung Turtle ist links
  • for (int i = 1; i <= 21; i++ ) Zählschleife, wiederholt folgenden Anweisungen 20 mal:
  • turtle.penDown(); - Absetzen des Stiftes zum Zeichnen
  • if (i % 2 == 0) - 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:
  • turtle.penUp()
  • turtle.forward(10); - Anschließend läuft der Turtle 10 Schritte, bei gerader Laufvariable i wird keine Linie gezeichnet (turtle.penUp())


StruktogrammJava QuelltextPascal Quelltext
Koehler_STRICHLINIE.pngturtle.left(90);
for (int i = 1; i <= 21; i++ )
{
turtle.penDown();
if (i % 2 == 0)
{ turtle.penUp(); }
turtle.forward(10);
}
turtle.left(90);
begin
for i := 1 to 20 do
begin
turtle_penDown();
IF ( i mod 2 = 0 );
turtle_penUp();
end;
turtle_forward(10);



Zweiseitige Verzweigung mit IF-THEN-ELSE

Der Turtle läuft Zick-Zack (zweiseitige Verzweigung):
der Turtel schaut 45° nach links
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);
    * for (int i = 1; i < 21; i++)
    * {
    * if (i % 2 == 0);
    * {turtle.right(90);}
    * else
    * { turtle.left(90);}
    * turtle.forward(10);
    * }
| Koehler_Turtle4_Zickzacklinie.jpg

Mit IF-HEN-ELSE-Blöcken (zweiseitige Verzweigungen) können Anweisungen in zwei verschiedene Wege verzweigt werden
Erklärung der Anweisungen:

  • turtle.left(45); - Blickrichtung Turtle ist 45° links
  • for (int i = 1; i <= 21; i++ ) Zählschleife, wiederholt folgenden Anweisungen 20 mal:
  • if (i % 2 == 0) - 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:
  • turtle.right(90)()
  • Ist der Divisionsrest ungleich 0, also eine ungerade Zahl, dann wird die NEIN-Anweisung (ELSE) ausgeführt:
  • turtle.left(90)()
  • turtle.forward(10); - Anschließend läuft der Turtle 10 Schritte in der gewählten Richtung vorwärts


StruktogrammJava QuelltextPascal Quelltext
Koehler_ZICKZACKLINIE.pngturtle.left(45);
for (int i = 1; i <= 21; i++ )
{
if (i % 2 == 0)
{ turtle.right(90); }
else
{turtle.left(90);}
turtle.forward(10);
}
turtle.left(45);
begin
for i := 1 to 20 do
begin
IF ( i mod 2 = 0 );
turtle_right(90)
ELSE
turtle_left(90);
turtle_forward(10);
end;