Verzweigungen

Nach der Sequenz und der Iteration lernen wir nun die Selektion kennen: Bei der Progammierstruktur Selektion wird «selektiv» Code ausgeführt. D.h. der Code wird nur ausgeführt, wenn eine bestimmte Bedingung gültig ist. Die Bedingung wird wie bei der while-Schleife in Form eines Wahrheitswertes angegeben.

if-Struktur

Hier wird ein Code-Block selektiv ausgeführt: «Wenn ... dann ...»

if-Struktur
if nicht_vegetarier:
    print("Fleisch würzen")
    print("Fleisch braten")
print("servieren")

Dabei muss die Variable nicht_vegetarier einen Wahrheitswerte beinhalten.

if <nicht_vegetarier> then
    Fleisch würzen :: looks
    Fleisch braten :: looks
end
servieren :: looks

if-else-Struktur

Hier werden zwei Code-Blöcke selektiv ausgeführt: «Wenn ... dann ... sonst ...»

if-else-Struktur
if salatsauce_italienisch:
    print("Balsamico, Olivenöl")
    print("Meersalz")
else:
    print("Weinessig, Rapsöl")
    print("Yoghurt")
    print("Salatgewürze")        
print("umrühren")
if <salatsauce_italienisch> then
    Balsamico, Olivenöl :: looks
    Meersalz :: looks    
else
    Weinessig, Rapsöl :: looks
    Yoghurt :: looks
    Salatgewürze :: looks    
end
umrühren :: looks

Im else-Teil wird keine Bedingung überprüft! Die Bedingung ist durch die Bedingung im if bereits gegeben: Wenn diese nämlich nicht erfüllt ist, dann wird der else-Block ausgeführt.

Verschachteln von if-else

if-else-Blöcke lassen sich beliebig verschachteln:

if salatsauce_italienisch:
    print("Balsamico, Olivenöl")
    print("Meersalz")
    if scharf:
        print("Pfeffer")
else:
    print("Weinessig, Rapsöl")
    print("Yoghurt")
    print("Salatgewürze")        
if <salatsauce_italienisch> then
    Balsamico, Olivenöl :: looks
    Meersalz :: looks   
    if <scharf> then
       Pfeffer :: looks
    end 
else
    Weinessig, Rapsöl :: looks
    Yoghurt :: looks
    Salatgewürze :: looks    
end

elif

Python bietet eine zusätzliche Möglichkeit an, if-Schleifen aneinanderzuhängen. Dies kann man verwenden, wenn mehr als zwei Möglichkeiten existieren: if-elif-else. Es sind beliebig viele elif möglich. Das else kommt am Schluss oder wird weggelassen.

if salatsauce_italienisch:
    print("Balsamico, Olivenöl")
    print("Meersalz")
elif salatsauce_französisch:
    print("Weinessig, Rapsöl")
    print("Yoghurt")
    print("Salatgewürze")    
else:
    print("Rohkost") 

Scratch kennt kein elif. Man müsste dort ein verschachteltes if-else verwenden:

if <salatsauce_italienisch> then
    Balsamico, Olivenöl :: looks
    Meersalz :: looks   
else
    if <salatsauce_französisch> then
        Weinessig, Rapsöl :: looks
        Yoghurt :: looks
        Salatgewürze :: looks
    else
        Rohkost :: looks
    end    
end