Gestaltungsorientierte Informatik

Dies ist eine alte Version des Dokuments!


Wiederhole dich nicht! (Funktionen)

Während wir natürlich wollen, dass bestimmte Teile eines Programmes wiederholt ausgeführt werden und das mit Hilfe der Schleife inzwischen auch können, wollen wir nicht, dass man das gleiche Verhalten in einem Programm mehrfach programmiert. Gute Programme erfüllen das sog. „DRY“-Prinzip (=Don’t Repeat Yourself), wonach alles, was gleich funktioniert, nur einmal programmiert werden soll. Vielleicht ist dir schon aufgefallen, dass wir das bisher nicht können. Wenn man von einem Ort wieder zurück gehen möchte, dann muss man die gleiche Beschreibung noch einmal programmieren … und endloses Hin- und Herlaufen können wir bislang gar nicht realisieren.

Das Problem können wir mit Hilfe von selbstdefinierten Funktionen lösen. Das sind eigene „Anweisungen“, die man genau wie die vordefinierten Funktionen in einem Programm beliebig oft aufrufen kann. Das folgende Beispiel zeigt wie das funktioniert.

funktionen.py
  1. def waldlichtung():
  2. gute_antwort = False
  3. while not gute_antwort:
  4. print("Waldlichtung")
  5. print("Du befindest dich auf einer kleinen Lichtung im Wald. Hohe Bäume umringen den Platz, ihr Blätterdach lässt nur vereinzelte Sonnenstrahlen hindurch. Ein schmaler Pfad führt nach Norden und ein anderer nach Osten. Der Boden ist weich, mit Moos bedeckt, und du meinst, in der Ferne das Plätschern von Wasser zu hören.")
  6. wahl = input("Wohin soll es gehen? (n=Norden, o=Osten) ")
  7. if wahl == "n":
  8. gute_antwort = True
  9. flussufer()
  10. elif wahl == "o":
  11. gute_antwort = True
  12. verlasseneHuette()
  13. else:
  14. dunklerWald()
  15.  
  16. def flussufer():
  17. gute_antwort = False
  18. while not gute_antwort:
  19. print("Flussufer")
  20. print("Der Pfad mündet an ein glitzerndes Flussufer. Das Wasser ist klar und fließt ruhig dahin, doch weiter auf der anderen Seite siehst du dichten Wald. Ein alter Holzsteg ragt ein Stück in den Fluss – instabil, aber vielleicht noch nutzbar. Zurück kannst du Süden gehen, zurück zur Waldlichtung.")
  21. wahl = input("Wohin soll es gehen? (s=Süden) ")
  22. if wahl == "s":
  23. gute_antwort = True
  24. waldlichtung()
  25. else:
  26. dunklerWald()
  27.  
  28. def verlasseneHuette():
  29. gute_antwort = False
  30. while not gute_antwort:
  31. print("Verlassene Hütte")
  32. print("Ein schmaler Weg führt dich zu einer kleinen, verwitterten Hütte. Die Fenster sind blind vor Staub, die Tür steht einen Spalt offen. Drinnen scheint es dunkel, aber du meinst, einen schwachen Geruch von Rauch wahrzunehmen – vielleicht war hier kürzlich jemand. Du kannst zurück nach Westen, zur Waldlichtung.")
  33. wahl = input("Wohin soll es gehen? (w=Westen) ")
  34. if wahl == "w":
  35. gute_antwort = True
  36. waldlichtung()
  37. else:
  38. dunklerWald()
  39.  
  40. def dunklerWald():
  41. print("Dunkler Wald")
  42. print("Du verlässt den schmalen Pfad und schlägst dich durchs Unterholz. Schon nach wenigen Schritten verdunkelt sich das Licht, und die Luft wird kälter. Der Wald wirkt hier älter, dichter – fast lebendig. Zwischen den knorrigen Wurzeln scheint Nebel aufzusteigen, der lautlos über den Boden kriecht. Schnell kehrst du um, bevor du den Weg zurück nicht mehr findest.")
  43.  
  44. waldlichtung()
textadventure/wiederhole_dich_nicht.1779309672.txt.gz · Zuletzt geändert: von celandir