2. Programmiersprache

Funktionen


Komplexere Computerprogramme enthalten in der Regel eine Reihe von "Unterprogrammen", die in der Programmierung als "Prozedur", "Methode" oder auch als "Funktion" bezeichnet werden. Der Zweck einer Funktion besteht darin, eine bestimmte „Unteraufgabe“ im Programm auszuführen, die vom Hauptprogramm wiederholt verwendet wird. Dies dient auch dazu, das Programm übersichtlicher zu gestalten und Programmfehler zu reduzieren.

Stellen Sie sich beispielsweise einen Geologen vor, der Erdbebendaten untersucht und wiederholt einige Berechnungen durchführen muss – z. B. die durchschnittliche Stärke von Erdbeben ermitteln oder Daten nur für die stärksten Erdbeben auswählen. Anstatt die Arbeit jedes Mal neu zu erledigen, kann er für jede Aufgabe Funktionen erstellen und diese bei Bedarf verwenden. Hier ist ein Beispiel für eine Funktion mit dem Namen "durchschnitt_magnitude":

  • In Python wird eine Funktion mit dem Schlüsselwort def definiert.
  • Im Beispiel heißt die Funktion „durchschnitt_magnitude“.
  • Die Funktion hat zwei „Eingaben“ oder Parameter, die „magnitude1“ und „magnitude2“ genannt werden und die Magnituden (Stärken) von zwei Erdbeben darstellen.
  • Innerhalb der Funktion werden die beiden Magnituden addiert, durch 2 geteilt, um den Durchschnitt zu ermitteln, und dann wird uns dieses Ergebnis zurückgegeben. Dieses Endergebnis wird als Rückgabewert bezeichnet.
  • durchschnitt_magnitude(magnitude1, magnitude2) ist ein Funktionsaufruf, und diese Zeile kann als Aufruf der Funktion bezeichnet werden. Dadurch wird die Funktion durchschnitt_magnitude aufgerufen und mit zwei Werten versehen, nämlich den Erdbebenstärken magnitude1 und magnitude2.
  • Beim Aufruf nimmt die Funktion die empfangenen Werte, berechnet den Durchschnitt und gibt das Ergebnis zurück.
  • Das zurückgegebene Ergebnis (der Durchschnitt) wird dann in der Variable „durchschnitt“ gespeichert.





Weitere Beispiele für die Verwendung von Funktionen sind:

  • In einem Videospiel: Wenn ein Charakter eine Fähigkeit einsetzt, um ein Monster anzugreifen, prüft eine Funktion die Stärke beider Figuren und passt die Gesundheit des Monsters entsprechend an.
  • In einem Kursverwaltungssystem: Eine Funktion kann die bisherigen Prüfungs- und Projektnoten eines Schülers oder einer Schülerin zusammenführen, um daraus die Abschlussnote zu berechnen.
  • Bei der Spam-Erkennung von E-Mails: Eine Funktion kann prüfen, ob eine E-Mail verdächtige Wörter oder schädliche Links enthält. Diese Funktion wird jedes Mal ausgeführt, wenn eine neue E-Mail eingeht.


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.


Ein Geologe, der sich mit der Erforschung von Erdbeben beschäftigt, braucht ein Programm, das die Stärke eines Erdbebens auf der Richterskala einordnet und passende Sicherheitsmaßnahmen vorschlägt. Ihre Aufgabe ist es, Funktionen zu erstellen, die dem Geologen dabei helfen, Erdbeben schnell und zuverlässig zu klassifizieren.

Könnten Sie ihn unterstützen, indem Sie die folgenden Aufgaben lösen?



 AUFGABE 1


!    

Der Geologe hat eine Funktion zur Klassifizierung der Stärke von Erdbeben entwickelt.

Schauen Sie sich nun den Code an und beantworten Sie die dazugehörigen Fragen. Ziel ist es, im folgenden Quiz 100 % der Punkte zu erreichen.
Falls es beim ersten Versuch nicht klappt, können Sie das Quiz jederzeit noch einmal machen.





Basierend auf der Klassifizierung unter https://www.britannica.com/science/Richter-scale 




 AUFGABE 2

!    Als Nächstes möchte der Geologe die Stärken (Magnituden) verschiedener Erdbeben klassifizieren und auf dem Bildschirm ausgeben.  

Analysieren Sie den gegebenen Code in der Anleitung, erstellen Sie das Programm, reichen Sie es ein und erhalten Sie eine Glückwunschnachricht.



Anleitung

Analysieren Sie den folgenden Code und führen Sie ihn anschließend aus. Wenn alles richtig funktioniert, reichen Sie ihn ein – und Sie erhalten eine „Glückwunsch“-Nachricht als Bestätigung.

def klassifiziere_magnitude(richter_skala):
    if richter_skala < 3.0:
        return "Mikro"
    elif 3.0 <= richter_skala < 4.0:
        return "Gering"
    elif 4.0 <= richter_skala < 5.0:
        return "Leicht"
    elif 5.0 <= richter_skala < 6.0:
        return "Maessig"
    elif 6.0 <= richter_skala < 7.0:
        return "Stark"
    elif 7.0 <= richter_skala < 8.0:
        return "Schwer"
    else:
        return "Sehr schwer"
    
print(klassifiziere_magnitude(2.5))   
print(klassifiziere_magnitude(3.5))  
print(klassifiziere_magnitude(4.7))   
print(klassifiziere_magnitude(6.5))   
print(klassifiziere_magnitude(8.5))  

2. Mögliche Lösung

def klassifiziere_magnitude(richter_skala):
    if richter_skala < 3.0:
        return "Mikro"
    elif 3.0 <= richter_skala < 4.0:
        return "Gering"
    elif 4.0 <= richter_skala < 5.0:
        return "Leicht"
    elif 5.0 <= richter_skala < 6.0:
        return "Maessig"
    elif 6.0 <= richter_skala < 7.0:
        return "Stark"
    elif 7.0 <= richter_skala < 8.0:
        return "Schwer"
    else:
        return "Sehr schwer"
    
print(klassifiziere_magnitude(2.5))   
print(klassifiziere_magnitude(3.5))  
print(klassifiziere_magnitude(4.7))   
print(klassifiziere_magnitude(6.5))   
print(klassifiziere_magnitude(8.5))



 AUFGABE 3

!    

Untersuchen Sie den vorherigen Code aus Aufgabe 2 und beantworten Sie die folgenden Fragen.

Ziel ist es, im folgenden Quiz 100 % der Punkte zu erreichen. Falls es beim ersten Versuch nicht klappt, können Sie das Quiz jederzeit noch einmal machen.




 AUFGABE 4

!    

Der Geologe möchte seine Erdbebenanalyse verbessern, indem er für jede Klassifizierung eine passende Empfehlung hinzufügt. So kann er lokalen Behörden gezielt Maßnahmen vorschlagen – abhängig von der Stärke des Erdbebens. Ihre Aufgabe ist es, eine neue Funktion mit dem Namen empfehlen_aktion zu schreiben.

Diese Funktion soll – basierend auf dem Ergebnis der Funktion klassifiziere_magnitude – eine konkrete Handlungsempfehlung ausgeben.

So unterstützen Sie den Geologen dabei, schnell und klar verständlich auf verschiedene Erdbebenstärken zu reagieren.

Lesen Sie die Anweisungen und ändern Sie den untenstehenden Code. Senden Sie ihn ab, um eine Glückwunschnachricht zu erhalten.


Anweisungen

Schritt 1:

  • Erstellen Sie eine neue Funktion mit dem Namen „empfehlen_aktion“.
  • Diese Funktion sollte einen Parameter enthalten: klassifikation, der die Erdbebenklassifizierung darstellt (z. B. „Mikro“, „Gering“, „Leicht“).

Schritt 2:

  • Verwenden Sie if- und elif-Anweisungen, um Bedingungen für jede Erdbebenklassifizierung festzulegen.
  • Geben Sie für jede Klassifizierungsstufe eine bestimmte empfohlene Maßnahme als Rückgabewert der Funktion an.
    • Für „Mikro“: "Keine Massnahmen erforderlich."
    • Für „Gering“:  "Warnhinweise herausgeben, keine weiteren Massnahmen."
    • Für „Leicht“: "Sicherheitsueberpruefung der Umgebung."
    • Für „Maessig“: "Notdienst benachrichtigen und Sicherheitsvorkehrungen pruefen."
    • Für „Stark“: "Vorsichtsmassnahmen in bewohnten Gebieten."
    • Für „Schwer“:  "Evakuierungen in betroffenen Gebieten in Erwaegung ziehen."
    • Für „Sehr schwer“: "Evakuierung und sofortige Notfallmassnahmen."

Beispiel:

if klassifikation == "Mikro":
        return "Keine Massnahmen erforderlich."
...

Schritt 3:

  • Senden Sie das Programm ein und erhalten Sie die ‚Glückwünsche‘.

4. Mögliche Lösung

def empfehlen_aktion(klassifikation):
    if klassifikation == "Mikro":
        return "Keine Massnahmen erforderlich."
    elif klassifikation == "Gering":
        return "Warnhinweise herausgeben, keine weiteren Massnahmen."
    elif klassifikation == "Leicht":
        return "Sicherheitsueberpruefung der Umgebung."
    elif klassifikation == "Maessig":
        return "Notdienst benachrichtigen und Sicherheitsvorkehrungen pruefen."
    elif klassifikation == "Stark":
        return "Vorsichtsmassnahmen in bewohnten Gebieten."
    elif klassifikation == "Schwer":
        return "Evakuierungen in betroffenen Gebieten in Erwaegung ziehen."
    elif klassifikation == "Sehr schwer":
        return "Evakuierung und sofortige Notfallmassnahmen."

print(empfehlen_aktion("Mikro"))        
print(empfehlen_aktion("Leicht"))        
print(empfehlen_aktion("Sehr schwer"))


 AUFGABE 5 (OPTIONAL)


!    

Da der Geologe nun sowohl eine Klassifizierungsfunktion als auch eine Empfehlungsfunktion hat, möchte er diese in einer einzigen, benutzerfreundlichen Funktion namens "analysiere_erdbeben" zusammenfassen.

Mit analysiere_erdbeben kann er Erdbeben nun schnell und effizient analysieren – die Funktion klassifiziert die Stärke des Erdbebens und gibt gleichzeitig eine passende Handlungsempfehlung aus. So erhält er auf einen Blick wichtige Informationen, die dazu beitragen, die Sicherheit der Bevölkerung zu verbessern.


Führen Sie das Programm aus, indem Sie die folgenden Anweisungen befolgen. Senden Sie den Code, um die Glückwunschnachricht zu erhalten.


Anweisungen Schritt 1:
Schreiben Sie eine Funktion namens analysiere_erdbeben, die die Magnitude der Richterskala als Eingabe verwendet. Diese Funktion sollte:
  • klassifiziere_magnitude verwenden, um die Klassifizierung des Erdbebens anhand seiner Magnitude zu bestimmen.
  • empfehlen_aktion verwenden, um eine empfohlene Maßnahme basierend auf der Klassifizierung bereitzustellen.
  • eine Nachricht zurückgeben, die sowohl die Klassifizierung als auch die empfohlene Maßnahme enthält. Die Funktion sollte eine formatierte Nachricht auf Deutsch zurückgeben. Zum Beispiel:

„Erdbeben-Klassifikation: Maessig. Empfohlene Aktion: Notdienst benachrichtigen und Sicherheitsvorkehrungen pruefen.“


Schritt 2:
Testen Sie analysiere_erdbeben mit verschiedenen Werten der Richterskala, um zu sehen, ob die Klassifizierung und die empfohlene Aktion korrekt ausgegeben werden.
Beispiel-Testfälle:
  • Eingabe: 2,5 – Erwartete Ausgabe: „Erdbeben-Klassifikation: Mikro. Empfohlene Aktion: Keine Massnahmen erforderlich.“
  • Eingabe: 4,5 – Erwartete Ausgabe: „Erdbeben-Klassifikation: Leicht. Empfohlene Aktion: Sicherheitsüberprüfung der Umgebung.“
  • Eingabe: 6,5 – Erwartete Ausgabe: „Erdbeben-Klassifikation: Schwer. Empfohlene Aktion: Evakuierungen in betroffenen Gebieten in Erwägung ziehen.“


Schritt 3:
  • Reichen Sie das Programm ein und erhalten Sie die Glückwunschnachricht.

5. Mögliche Lösung
# Schon Fertig: Funktion zur Klassifizierung der Erdbebenstärke basierend auf der Richterskala
def klassifiziere_magnitude(richter_skala):
	if richter_skala < 3.0:
		return "Mikro"
	elif 3.0 <= richter_skala < 4.0:
		return "Gering"
	elif 4.0 <= richter_skala < 5.0:
		return "Leicht"
	elif 5.0 <= richter_skala < 6.0:
		return "Maessig"
	elif 6.0 <= richter_skala < 7.0:
		return "Stark"
	elif 7.0 <= richter_skala < 8.0:
		return "Schwer"
	else:
		return "Sehr schwer"

# Schon Fertig: Funktion zur Empfehlung von Maßnahmen basierend auf der Klassifikation
def empfehlen_aktion(klassifikation):
	if klassifikation == "Mikro":
		return "Keine Massnahmen erforderlich."
	elif klassifikation == "Gering":
		return "Warnhinweise herausgeben, keine weiteren Massnahmen."
	elif klassifikation == "Leicht":
		return "Sicherheitsueberpruefung der Umgebung."
	elif klassifikation == "Maessig":
		return "Notdienst benachrichtigen und Sicherheitsvorkehrungen pruefen."
	elif klassifikation == "Stark":
		return "Vorsichtsmassnahmen in bewohnten Gebieten."
	elif klassifikation == "Schwer":
		return "Evakuierungen in betroffenen Gebieten in Erwaegung ziehen."
	elif klassifikation == "Sehr schwer":
		return "Evakuierung und sofortige Notfallmassnahmen."

# Aufgabe: Funktion zur Analyse des Erdbebens, kombiniert Klassifikation und Empfehlungen
def analysiere_erdbeben(richter_skala):
    klassifikation = klassifiziere_magnitude(richter_skala)
    aktion = empfehlen_aktion(klassifikation)	
    return "Erdbeben-Klassifikation:" +str(klassifikation)+ ". Empfohlene Aktion: "+str(aktion)

# Testfälle: Bitte nicht aendern
print(analysiere_erdbeben(2.5))
print(analysiere_erdbeben(4.5))
print(analysiere_erdbeben(6.5))
print(analysiere_erdbeben(8.5)) 


 
!    


Take Away Message

Wir haben gelernt, wie man Funktionen definiert, die Daten in Form von Parametern erhalten und einen Wert an das Programm zurückgeben. Funktionen sind besonders nützlich für Aufgaben, die innerhalb eines Programms mehrfach wiederverwendet werden müssen. Sie erleichtern die Programmierung, indem sie größere Probleme in kleinere, überschaubare Teile zerlegen.