Jython

7. if-else-Struktur

Mit der if-else-Struktur kann man bewirken, dass bestimmte Programmblöcke nur unter gewissen Bedingungen (selektiv) ausgeführt werden. Die Selektion wird mit dem Schlüsselwort if eingeleitet, gefolgt von einer Bedingung. Die Anweisungen im if -Block werden nur dann ausgeführt, wenn die Bedingung wahr ist, sonst werden die Anweisungen nach else, also im else-Block ausgeführt. In der if-Bedingung werden üblicherweise die Vergleichsoperatoren >, >= , < , <= , == , != verwendet. Die Anweisungen im if- bzw. else-Block müssen eingerückt sein. Der else-Block kann auch wegfallen.

Beispiel 1: Die Linienfarbe ändern
Falls der Anfangspunkt einer Linie eine negative x-Koordinate hat, wird die Linie mit roter, sonst mit grüner Farbe gezeichnet.

# Gp7a.py
from gpanel import *

makeGPanel(-30, 30, 0, 60)

x = -30
while x <= 30:
    if x <= 0:
        setColor("magenta")
    else:    
        setColor("cyan")
    line(0, 50, x, 0)
    x = x + 1
► In Zwischenablage kopieren
 

 

Beispiel 2: Zufallsregen
In einem Quadrat werden zufällig 50 000 Punkte gewählt. Wenn ein Punkt innerhalb der einbeschriebenen Kreises liegt, wird er rot, sonst grün gezeichnet. Da der Radius des Kreises 100 ist, gilt für die innere Punkte die Bedingung x2 + y2 < 1002.

# Gp7b.py
from gpanel import *
from random import randint

def randomDot():
    x = randint(-100, 100)
    y = randint(-100, 100)
    if x * x + y * y < 10000:
        setColor("red")
    else:
        setColor("green")
    pos(x, y)            
    fillCircle(0.5)
    
makeGPanel(-100, 100, -100, 100)

i = 0
while i < 50000:
    randomDot()
    i = i + 1
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

def randomDot(): Zeichnet einen kleinen Kreis in den entsprechenden Farbe an einer zufällig gewählten Position
while i < 50000: Da man die Variable i sonst im Programm nicht braucht, könnte man statt einer while-Schleife auch repeat 50000: verwenden


Beispiel 3
: Mehrfache Auswahl
Mit der Struktur if-elif-else kann man mehrere Bedingungen nacheinander überprüfen. Wenn die Bedingung nach if nicht zutrifft, werden die Bedingungen nach elif der Reihe nach überprüft. Falls keine der Bedingungen erfüllt ist, werden die Anweisungen nach else ausgeführt. Ein Doppelpunkt nach jeder Bedingung und die korrekte Einrückung sind wichtig.
Im Beispiel werden die Farben der kleinen Kreise je nach der Grösse ihrer x-Koordinaten gewählt.

# Gp7c.py
from gpanel import *

makeGPanel(0, 20, 0, 20)

x = 1
while x < 20:
    y = 1
    while y < 20:
        pos(x, y)
        if x < 5:
            setColor("red")
        elif x < 10:
            setColor("yellow")
        elif x < 15:
            setColor("green") 
        else:
            setColor("magenta")           
        fillCircle(0.5)
        y = y + 1
    x = x + 1
► In Zwischenablage kopieren
 


Beispiel 4
: Bedingungen mit and verknüpfen
Die so kombinierte Bedingung ist nur dann wahr, wenn beide Teilbedingungen wahr sind. Hier werden nur dann rote Punkte gezeichnet, wenn die x-Koordinate der Turtle grösser als 5 und kleiner als 15 ist.

# Gp7d.py
from gpanel import *

makeGPanel(0, 20, 0, 20)

x = 1
while x < 20:
    y = 1
    while y < 20:
        pos(x, y)
        if x > 5 and x < 15:
            setColor("red")       
        else:
            setColor("yellow")           
        fillCircle(0.5)
        y = y + 1
    x = x + 1
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

if x > 5 and x < 15: Es braucht keine Klammern
Analog können Bedingungen mit or verknüpft werden. In diesem Fall ist die kombinierte Bedingung wahr, wenn mindestens eine der beiden Bedingungen wahr ist

 


Aufgaben: Serie 7

1)


Erstelle mit Hilfe der if-else-Struktur die nebenstehende Grafik.


 


2)


Zeichne 1000 Linien mit Anfangspunkt in der Mitte des Fensters und Endpunkten in Punkten mit zufälligen Koordinaten im Bereich -100 bis 100. Die Linien mit einer positiven x-Koordinate sind rot, die übrigen grün gefärbt.

 


3)


Zeichne mit Hilfe der if-else-Struktur die nebenstehende Figur.