2. Programmiersprache

Bedingte Anweisung


Fachleute treffen in ihrem Arbeitsleben ständig Entscheidungen. Zum Beispiel:

  • Professoren und Professorinnen entscheiden anhand der Anwesenheit und der Noten der Studierenden, ob diese bestanden haben.
  • Ökonomen und Ökonominnen entscheiden anhand von Inflations- und Beschäftigungsdaten, welche Ratschläge sie zu Anlagestrategien geben.
  • Unternehmensleitende entscheiden anhand von Verkaufsdaten und Markttrends über Produkteinführungen oder Marketingkampagnen.
  • Psychologen und Psychologinnen verlassen sich auf Bewertungen, um zu entscheiden, welche Behandlungen sie empfehlen.
In der Programmierung können wir Programme erstellen, die Entscheidungen mithilfe sogenannter bedingter Anweisungen treffen. Bedingungen helfen einem Programm, zwischen verschiedenen Aktionen zu wählen, basierend auf bestimmten Bedingungen, die wir definieren. Wir verwenden dafür oft „If“-Anweisungen.

Wenn ein Biologe beispielsweise ein Programm erstellen möchte, das die Wasserqualität anhand des pH-Werts bestimmen kann, könnte der Biologe Bedingungen verwenden. Siehe das folgende Beispiel:

In Python und Blockly prüft eine bedingte Anweisung, ob etwas wahr oder falsch ist, und entscheidet dann auf dieser Grundlage, was zu tun ist. Der Beispielcode funktioniert folgendermaßen:

  • Der Code prüft, ob pH_level genau 7 ist.
    • Wenn dies wahr ist, wird water_quality auf „neutral“ gesetzt.
    • Wenn dies falsch ist, wird weiter geprüft:
      • Wenn pH_level kleiner als 7 ist, wird water_quality zu „sauer“.
      • Wenn der pH-Wert größer als 7 ist, wird die Wasserqualität „alkalisch“.


Das Schlüsselwort if leitet eine Bedingung ein. elif fügt eine weitere Bedingung hinzu, wenn die vorherige Bedingung falsch war. Die else-Bedingung wird ausgeführt, wenn die vorherigen Bedingungen nicht erfüllt wurden. Wir nutzen hier den Vergleichsoperator „==“,

Vergleichsoperatoren

Vergleichsoperatoren werten einen Ausdruck als booleschen Wert aus. Die folgende Tabelle enthält die grundlegendsten Vergleichsoperatoren und ihre Beispiele.

Syntax(Symbol) Name Beschreibung Beispiel
== ist gleich Gibt „Wahr“ zurück, wenn beide Seiten gleich sind.  5 == 5 gibt „Wahr“ zurück.
!=

ist ungleich

Gibt „Wahr“ zurück, wenn beide Seiten unterschiedlich sind. 5 != „5“ gibt „Wahr“ zurück.
> ist größer als Gibt „Wahr“ zurück, wenn die linke Seite größer ist. 3,0 > 3 gibt „Falsch“ zurück.
< ist kleiner als  Gibt „Wahr“ zurück, wenn die linke Seite kleiner ist.  2,9 < 3 gibt „Wahr“ zurück.


Die mit Vergleichsoperatoren gebildeten Booleschen Ausdrücke müssen einer if-else-Anweisung übergeben werden. Siehe das folgende Beispiel:

if 5 != 7:
    print("Ergebnisse sind ungleich")
else:
    print("Ergebnisse sind gleich")

Der obige Code gibt „Ergebnisse sind ungleich“ aus, da 5 != 7 den Wert „Wahr“ zurückgibt. Hier sind einige Punkte zu beachten: 

1. Die Zeilen nach einem Doppelpunkt „:“ müssen eingerückt werden. Es können zwar verschiedene Einrückungsschemata verwendet werden, aber es ist üblich, einen Einzug durch einen Tabulator oder vier Leerzeichen anzuzeigen. Bitte wählen Sie eine einheitliche Methode!
2. In einer if-, elif- oder else-Anweisung können mehrere Zeilen auf einmal angegeben werden, solange sie alle korrekt eingerückt sind.
3. Die else-Anweisung kann weggelassen werden. Wenn die Bedingung in der if-Anweisung „Falsch“ ist, fährt das Programm einfach mit der nächsten Zeile fort, ohne etwas zu tun. Aber denken Sie daran, dass eine else-Anweisung nur funktioniert, wenn es davor eine if-Anweisung gibt.


Das Ergebnis von pH_level == 7 ist ein boolescher Wert – entweder „True“ ("Wahr") oder „False“ ("Falsch"). Wenn es „True“ ist (der pH-Wert ist 7), wird „water_quality“ auf „neutral“ gesetzt. Wenn es „False“ ist (der pH-Wert ist nicht 7), springt das Programm zum elif- oder else-Teil.

Boolesche Werte

Bevor ein Programm Entscheidungen treffen kann, müssen Bedingungen ausgewertet werden. Das Ergebnis dieser Auswertung ist ein boolescher Wert – also entweder wahr oder falsch. Eine boolesche Variable ist eine Variable, die genau einen dieser beiden Werte annehmen kann. Man nennt sie deshalb boolesch, und ihr Datentyp ist der boolesche Datentyp.

Im Folgenden sehen Sie einige Beispiele für boolesche Variablen.

    • student_pass: Diese Variable hat den Wert „True“, wenn der Schüler bestanden hat, und „False“, wenn der Schüler durchgefallen ist.
    • onclick: Diese Variable hat den Wert „True“, wenn der Benutzer auf ein bestimmtes Objekt auf einer Webseite klickt, und „False“, wenn er nicht darauf klickt.
    • check_integrity: Diese Variable hat den Wert „True“, wenn eine Datei bei der Überprüfung durch ein Programm als intakt eingestuft wird, und „False“, wenn das Programm feststellt, dass die Datei beschädigt ist.

Just for fun: In vielen Programmiersprachen wird die Zahl 0 als „falsch“ und jede andere Zahl als „wahr“ interpretiert. Das klingt vielleicht ungewöhnlich, ergibt aber Sinn – denn letztlich bestehen Computer aus Nullen und Einsen. Diese Unterscheidung bildet die Grundlage für logisches Denken in der digitalen Welt.





AUFGABEN

Wir möchten Sie beim Lernen unterstützen, indem wir Sie durch fünf verschiedene Aktivitäten begleiten. Jede dieser Aktivitäten bildet einen weiteren Schritt beim Aufbau Ihrer Programmierfähigkeiten – mit zunehmendem Detailgrad und wachsender Komplexität.

Wenn Ihnen etwas beim ersten Versuch nicht gelingt, können Sie es jederzeit noch einmal versuchen. Nehmen Sie sich aber bitte ausreichend Zeit und Mühe, bevor Sie sich die Lösung ansehen.


Eine Biologin setzt sich leidenschaftlich für den Schutz ihrer Lieblingsvogelart ein, die durch den Verlust ihres Lebensraums bedroht ist. Um fundierte Entscheidungen über die erforderlichen Schutzmaßnahmen treffen zu können, sammelt sie Daten über die Populationsdichte dieser Art in verschiedenen Lebensräumen. Die Populationsdichte wird berechnet, indem die Anzahl der Vögel durch die Größe des Gebiets geteilt wird. Auf diese Weise hofft sie, entscheiden zu können, welche Gebiete die größte Unterstützung beim Naturschutz benötigen.

Können Sie ihr helfen, indem Sie die folgenden Aufgaben erledigen?



  AUFGABE 1
!    

Die Biologin hat ein Programm entwickelt, das, wenn es Daten über die Populationsdichte der Vogelart in einem bestimmten Lebensraum erhält, automatisch die Priorität des Lebensraums für Schutzmaßnahmen festlegt.

Jetzt schauen Sie sich den Code an und beantworten Sie die dazugehörigen Fragen. Versuchen Sie, im Quiz 100 % richtig zu beantworten. Und keine Sorge: Wenn es beim ersten Mal nicht klappt, können Sie es jederzeit noch einmal versuchen.

Die Variable „vogelpopulationsdichte“ wird auf Individuen/ha festgelegt.



AUFGABE 2
!    

Sie beschloss, andere Kriterien aufzustellen. Wenn die Populationsdichte der Vogelart nun zwischen 1000 und 300 liegt, wird sie als niedrig priorisiert eingestuft, und wenn sie zwischen 300 und 100 liegt, wird sie als mittel priorisiert eingestuft.

Analysieren Sie den Code, führen Sie ihn aus und reichen Sie den Code in Blockly oder Python ein. Sie erhalten in beiden Fällen eine „Glückwunsch“-Nachricht.

Wählen Sie erneut eine der beiden Programmiersprachen und erledigen Sie die Aufgabe. Da wir empfehlen, mit beiden vertraut zu sein, wird unsere Web-App Ihren in Blockly geschriebenen Code automatisch in Python übersetzen und umgekehrt. Implementieren Sie den folgenden Code selbst, entweder mit Blockly oder mit Python.

Anweisungen: Blockly (OPTION I)

  1. Replizieren Sie den obenstehenden Code in der Blockly-Oberfläche.  
  2. Klicken Sie auf 'Submit', um zu überprüfen, ob das Ergebnis tatsächlich das ist, was wir wollten.

Anweisungen: Python (OPTION II)

vogelbestandsdichte = 200
if vogelbestandsdichte > 1000:
    print('Sehr niedrige Prioritaet')
elif vogelbestandsdichte > 300:
    print('Niedrige Prioritaet')
elif vogelbestandsdichte > 100:
    print('Mittlere Prioritaet')
elif vogelbestandsdichte > 10:
    print('Hohe Prioritaet')
else:
    print('Kritisch - Notfallprioritaet')
  1. Kopieren Sie den Code aus dem obenstehenden Abschnitt und fügen Sie ihn im unteren Codebereich (auf der rechten Seite) ein.
  2. Klicken Sie auf 'Submit', um zu überprüfen, ob das Ergebnis tatsächlich das ist, was wir wollten.

Nur zum Spaß: Was denken Sie, wird der Code ausgeben? Machen Sie eine Vermutung und führen Sie das Programm aus, um zu sehen, ob Ihre Vermutung korrekt war. Warum glauben Sie, dass dieses Ergebnis ausgegeben wurde?


2. Mögliche Lösung

vogelbestandsdichte = 200
if vogelbestandsdichte > 1000:
    print('Sehr niedrige Prioritaet')
elif vogelbestandsdichte > 300:
    print('Niedrige Prioritaet')
elif vogelbestandsdichte > 100:
    print('Mittlere Prioritaet')
elif vogelbestandsdichte > 10:
    print('Hohe Prioritaet')
else:
    print('Kritisch - Notfallprioritaet')

# Der obenstehende Blockly Code und der Python Code hier sind 100% gleich,
                        # obwohl die auf den ersten Blick anders aussehen können.
                        





 AUFGABE 3
!    
Ein Kollege der Biologin hat einige Änderungen am Code vorgenommen, und die Biologin hat festgestellt, dass die Ergebnisse teilweise nicht korrekt sind.  Können Sie den Code analysieren und der Biologin helfen, indem Sie ihren Fehler beheben? 

Analysieren Sie den Code, beheben Sie den Fehler und senden Sie ihn ein, um die Glückwunschnachricht zu erhalten. 


Tipp: Vergewissern Sie sich, dass die verschiedenen Verwendungsweisen von if- und elif-Anweisungen korrekt sind. Da es viel einfacher, diesen Fehler in Python zu beheben, haben wir Blockly für diese Aufgabe deaktiviert.

3. Mögliche Lösung

vogelbestandsdichte = 200
if vogelbestandsdichte > 1000:
    print('Sehr niedrige Prioritaet')
elif vogelbestandsdichte > 300:
    print('Niedrige Prioritaet')
elif vogelbestandsdichte > 100:
    print('Mittlere Prioritaet')
elif vogelbestandsdichte > 10:
    print('Hohe Prioritaet')
else:
    print('Kritisch - Notfallprioritaet')




 AUFGABE 4
!    

Die Biologin bittet Sie um Unterstützung dabei, den Code so anzupassen, dass je nach Prioritätsstufe ein passendes Budget für Naturschutzmaßnahmen empfohlen wird.

Die Vorgaben lauten:

  • Bei mittlerer Priorität soll das Programm 15.000 EUR empfehlen.

  • Bei hoher Priorität soll es 40.000 EUR vorschlagen.

  • Und bei einer kritischen Priorität – Notfall soll das empfohlene Budget 100.000 EUR betragen.

Passen Sie den Code entsprechend an, damit für jede Prioritätsstufe das richtige Budget ausgegeben wird.

Folgen Sie den Anweisungen, ändern Sie das Programm und reichen Sie es ein, um die Glückwunschnachricht zu sehen.


Anweisungen

Schritt 1: Passen Sie den Code so an, dass er Budgetempfehlungen enthält:

  • Fügen Sie für die Bedingung „Mittlere Prioritaet“ einen „print"-Befehl hinzu, der Folgendes ausgibt: „Empfohlenes Budget fuer Naturschutzmassnahmen: 15000 EUR“.
  • Fügen Sie für die Bedingung „Hohe Prioritaet“ einen „print"-Befehl hinzu, der Folgendes ausgibt: „Empfohlenes Budget fuer Naturschutzmassnahmen: 40000 EUR“.
  • Fügen Sie für die Bedingung „Kritisch - Notfallprioritaet" einen „print"-Befehl hinzu, der Folgendes ausgibt: „Empfohlenes Budget fuer Naturschutzmassnahmen: 100000 EUR“.

Schritt 2: Senden Sie es ab und sehen Sie die Meldung „Herzlichen Glückwunsch".


Weisen Sie der Eingabevariable beim Einreichen Ihres Codes keinen Wert zu. Zum Testen Ihres Codes werden automatisch verschiedene Werte zugewiesen.


4. Mögliche Lösung

if vogelbestandsdichte > 1000:
    print('Sehr niedrige Prioritaet')
elif vogelbestandsdichte > 300:
    print('Niedrige Prioritaet')
elif vogelbestandsdichte > 100:
    print('Mittlere Prioritaet')
    print('Empfohlenes Budget fuer Naturschutzmassnahmen: 15000 EUR')
elif vogelbestandsdichte > 10:
    print('Hohe Prioritaet')
    print('Empfohlenes Budget fuer Naturschutzmassnahmen: 40000 EUR')
else:
    print('Kritisch - Notfallprioritaet')
    print('Empfohlenes Budget fuer Naturschutzmassnahmen: 100000 EUR')





 AUFGABE 5 (OPTIONAL)
!    

Die Biologin möchte die Empfehlungen für Schutzmaßnahmen verfeinern. Künftig soll nicht nur der Zustand der Vogelpopulation berücksichtigt werden, sondern auch die Populationsdichte der Raubtiere. Ihre Aufgabe ist es, ein Programm zu erstellen, das logische Bedingungen verwendet, um beide Faktoren zu prüfen:

  • den Status der Vogelpopulation

  • und die Dichte der Raubtiere

Das Programm soll dann – basierend auf beiden Informationen – entscheiden, ob Schutzmaßnahmen erforderlich sind oder nicht.


Folgen Sie den Anweisungen, führen Sie das Programm aus, reichen Sie es ein und erhalten Sie die Glückwunschnachricht. 

Aufgabe: Raubtier und Beute

Implementieren Sie ein Python-Programm, das mithilfe von bedingten Anweisungen entscheidet, ob Schutzmaßnahmen erforderlich sind. Das Programm sollte sowohl den Status der Populationsdichte von Vögeln als auch von Raubtieren bewerten und auf der Grundlage der folgenden Bedingungen über Schutzmaßnahmen entscheiden: 

  • Naturschutzmaßnahmen sind erforderlich, wenn die Vogelpopulationsdichte als „kritisch“ eingestuft wird.
  • Naturschutzmaßnahmen sind nicht erforderlich, wenn die Vogelpopulationsdichte „hoch“ ist.
  • Wenn die Vogelpopulationsdichte „mäßig“ ist, sind Naturschutzmaßnahmen nur dann erforderlich, wenn die Raubtierpopulationsdichte „hoch“ ist; andernfalls sind sie nicht erforderlich.
  • Wenn die Vogelpopulationsdichte „niedrig“ ist, sind Naturschutzmaßnahmen nur dann erforderlich, wenn die Raubtierpopulationsdichte entweder „hoch“ oder „mäßig“ ist; andernfalls sind sie nicht erforderlich.

Anweisungen

Schritt 1: Variablen einrichten

  • Definieren Sie zwei Variablen: vogelbestandsdichte und raeuberbestandsdichte.
  • Wichtig: Sie können mit diesen Variablen experimentieren, indem Sie auf „Ausführen“ klicken, aber wenn Sie Ihre Antwort überSenden“ überprüfen, löschen Sie bitte diese Zeilen und definieren Sie diese Variablen nicht.
  • Legen Sie ihre Werte als Zeichenketten fest. Für diese Aufgabe können Sie Werte wie „kritisch“, „hoch“, „mittel“ und „niedrig“ verwenden. Zum Beispiel:

vogelbestandsdichte = „kritisch“

raeuberbestandsdichte = „hoch“

Schritt 2: Naturschutzlogik implementieren

  • Schreiben Sie eine if-Anweisung, um zu überprüfen, ob vogelbestandsdichte == „kritisch“ ist. Wenn dies der Fall ist, geben Sie „Naturschutzmassnahme erforderlich“ aus.

Schritt 3: Fügen Sie zusätzliche Bedingungen für die Vogelbestandsdichte hinzu

  • Verwenden Sie elif-Anweisungen für jede verbleibende Bedingung:
    • Wenn vogelbestandsdichte == „hoch“, print „Naturschutzmassnahme nicht erforderlich“.
    • Wenn vogelbestandsdichte „mittel“ ist:
      • Verwenden Sie eine if-Anweisung, um zu überprüfen, ob raeuberbestandsdichte == „hoch“ ist. Wenn dies zutrifft, print „Naturschutzmassnahme erforderlich“; andernfalls print „Naturschutzmassnahme nicht erforderlich“.
    • Wenn die Vogelbestandsdichte „niedrig“ ist:
      • Verwenden Sie eine if-Anweisung, um zu überprüfen, ob die Raubtierbestandsdichte „hoch“ oder „mittel“ ist. Wenn dies zutrifft, geben Sie „Naturschutzmassnahme erforderlich“ aus, andernfalls „Naturschutzmassnahme nicht erforderlich“.

Schritt 4: Senden

Senden Sie das Programm und erhalten Sie die „Glückwunsch“-Meldung.

Tip: Wenn Sie nichts mit 'else' machen wollen, aber 'else' nicht wegmachen können, können Sie einfach print("") eingeben.

5. Mögliche Lösung

# Bestimmen, ob Naturschutzmassnahmen erforderlich sind if vogelbestandsdichte == "kritisch": print("Naturschutzmassnahme erforderlich") elif vogelbestandsdichte == "hoch": print("Naturschutzmassnahme nicht erforderlich") elif vogelbestandsdichte == "mittel": if raeuberbestandsdichte == "hoch": print("Naturschutzmassnahme erforderlich") else: print("Naturschutzmassnahme nicht erforderlich") elif vogelbestandsdichte == "niedrig": if raeuberbestandsdichte == "hoch" or raeuberbestandsdichte == "mittel": print("Naturschutzmassnahme erforderlich") else: print("Naturschutzmassnahme nicht erforderlich") else: print("")


 
!    


Take Away Message

Wir haben gelernt, dass wir durch die Verwendung von Bedingungen mit if-, else- und elif-Anweisungen verschiedene Teile des Programms basierend auf von uns definierten Bedingungen ausführen können.