Jython HomeDruckenJava-Online

if - else - Struktur (Selektion)


Programmverzweigungen auf Grund von bestimmten Bedingungen gehören zu den Grundstrukturen jeder Programmiersprache. Die Anweisungen nach if werden nur dann ausgeführt, wenn die Bedingung wahr ist, sonst werden die Anweisungen nach else ausgeführt. Im if-Ausdruck werden üblicherweise die Vergleichsoperatoren >, >= , < , <= , == , != verwendet.

Beispiel 1: Die Turtle zeichnet eine Treppe mit 10 Stufen. Die Farbe der Stufen wird mit einer if-else-Struktur bestimmt. Ist die Stufenzahl gerade, wird eine rote Stiftfarbe gewählt, sonst eine grüne. Für die Überprüfung, ob i gerade oder ungerade ist, wird die Modulodivision durch 2 verwendet, die den Rest nach der Division durch 2 liefert. Ist der Rest 0, so ist die Zahl gerade, sonst ungerade.

 

# Tu5.py

from gturtle import *

makeTurtle()
setPos(-200, -200)
setLineWidth(5)
for i in range(10):
    if i % 2 == 0:
        setPenColor("red")
    else:
        setPenColor("green")
    forward(40)
    right(90)
    forward(40)
    left(90)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

Erklärungen zum Programmcode:

Mit dem Befehl setLineWidth(5) wird die Liniendicke wird auf 5 gesetzt. Standardwert ist 1

 

  if - Struktur

Oft ist der else-Teil überflüssig Das Programm verzweigt in den if-Block, falls die Bedingung erfüllt ist.

Beispiel 2: Die Turtle bewegt sich in einer Wiederholstruktur vorwärts und dreht um 90° nach rechts. Dabei wird die Schrittlänge nach jedem Schleifendurchgang um 2 vergrössert. Falls die Schrittlänge gleich 140 ist, wechselt die Stiftfarbe auf grün. Die aktuelle Schrittlänge kann in der Statusbar ausgeschrieben werden.


# Tu5a.py

from gturtle import *

makeTurtle()
  
addStatusBar(20)
speed(-1)
setPenColor("red")
for s in range(4, 220, 2):
    if s == 140:
        setPenColor("green")
    forward(s)
    right(90)
    setStatusText("Size: " + str(s))
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

Erklärungen zum Programmcode:

Der Befehl addStatusBar(20) erzeugt eine 20 Pixel hohe Statusbar, in der während der Programmausführung Informationen ausgeschrieben werden können
setStatusText("Size: " + str(s)) ersetzt den vorhandenen Text durch einen neuen. In unserem Beispiel wird hier die aktuelle Grösse der gezeichneten Linie angegeben

 

  Mit if - Struktur Fehler "abfangen"

Die if-Struktur wird oft verwendet, um Fehler abzufangen und dadurch unplamässiges Verhalten der Programme zu vermeiden.

Beispiel 3: Prorammabsturz verhindern
Im Kapitel Farben wurde im Beispiel 3 eine Farbauswahl box verwendet. Dabei wird mit dem Befehl askColor() eine Dialogbox gestartet, die eine Farbewahl mit Mausklick ermöglicht. Da im Beispiel mehrere Farbfiguren gezeichnet werden, wird diese Dialogbox mehrmals geöffnet, jeweils vor dem Zeichnen einer nächsten Figur. Die gewählte Farbe wird anschlissend als color gespeichert.

 
Ausführen mit Webstart

Falls man aber keine Farbe gewählt hat und auf Abbrechen klickt, erscheint im Beispiel 3 im vorhergehenden Kapitel eine Fehlermeldung und das Programm stürzt ab. Dieser Programmabstürz kann mit einer if-Struktur verhindert werden. Wenn keine Farbe ausgewähle wurde, wird das Programm mit break beendet.


# Tu5b.py

from gturtle import *

makeTurtle()

hideTurtle()
clear("black")
for x in range(-250, 250, 70):
    setPos(x, x)
    color = askColor("Farbauswahl", "yellow")
    if color == None:
        break
    setPenColor(color)
    dot(70)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

Erklärungen zum Programmcode:

askColor() : startet die Farbauswahlbox
if color == None: es wurde keine Farbe gewählt
break : da Programm wird beendet, das Turtlefenster wird aber weiter angezeigt
           Anstelle break könnten in dieser Zeile auch z. B. color = "black" stehen,
           dann kan die nächste Programmzeile ausgeführt werden

 

  Mehrfache Auswahl

Es können auch mehrere Bedingungen nacheinander überprüft werden. Falls die Bedingung bei if nicht erfüllt ist, wird die Bedingung bei elif überprüft. elif ist eine Abkürzung von else if. Dann werden die Bedingung nach den weiteren elif überprüft. Falls keine dieser Bedingungen stimmt, werden die Anweisungen nach else ausgeführt.

Beispiel 3: Die Turtle zeichnet in einer Wiederholstruktur Dreiecke in mehreren Farben.

# Tu5c.py

from gturtle import *

makeTurtle()
fillToPoint(0, 0)   
for k in range(6):
    if k == 0:
        setPenColor("red")
    elif k == 1:
        setPenColor("yellow")
    elif k == 2:
        setPenColor("blue")
    elif k == 3:
        setPenColor("green")
    else:
        setPenColor("black")
        
    for i in range(3):
        forward(100)
        right(120)
    right(60)
 
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

Erklärungen zum Programmcode:

Mit dem Befehl fillToPoint(0, 0) werden die nachfolgend gezeichneten Dreiecke gefüllt. Die Füllfarbe entspricht hier der Stiftfarbe.

 


Aufgaben: Serie 5

  Zeichne folgenden Figuren.

 

1)
2)
3)