Übungsaufgaben

Aufgabe: Fakultäts-Berechnung mit Schleifen

Die Fakultät einer Zahl n ist definiert als das Produkt der Zahlen von 1 bis n. Schreiben Sie ein Programm fakultaet.py, das die Fakultät einer am Programmanfang zugewiesenen Variablen n ausgibt. Berechnen Sie das Ergebnis einmal mit einer for-Schleife und einmal mit einer while-Schleife. Vergleichen Sie die beiden Implementierungen. Welche bevorzugen Sie? Begründen Sie Ihre Antwort.

Hausaufgabe: Fachsprache zur Beschreibung von Programmen

Benennen Sie im folgenden Programm alle Programmkonstrukte mit ihrem korrekten Namen. Benennen Sie insbesondere alle Anweisungen und alle Ausdrücke und geben Sie dabei auch die Teilausdrücke komplexer Ausdrücke an.

text = "Ho"
zahl = 3
for i in range(1,zahl+1):
  if i % 2 == 1:
    text = text + text
print(text)

Beschreiben Sie den Ablauf des Programms umgangsprachlich und geben Sie an, was es ausgibt.

Bonusaufgabe: Zählschleifen untersuchen

Ergründen Sie experimentell, wie sich for-Schleifen in Python verhalten, wenn im Schleifenrumpf Zuweisungen an die Zählvariable enthalten sind. Welche Werte hat die Zahlvariable jeweils vor einer solchen Zuweisung? Können Sie mit Hilfe von Zuweisungen an die Zählvariable eine nicht terminierende for-Schleife schreiben?

Bonusaufgabe: Python-Programm, das sich selbst ausgibt

Schreiben Sie ein nicht leeres Python-Programm, das, wenn es ausgeführt wird, seinen eigenen Quelltext im Terminal ausgibt. Verwenden Sie nur Python-Sprachkonstrukte, die bisher in der Vorlesung besprochen wurden.

Hinweise:

  • Diese Bonus-Aufgabe ist sehr schwer. Selbst die Übungsgruppenleiter dürften Schwierigkeiten haben, sie zu lösen. Bei Detailfragen können sie aber trotzdem helfen.
  • Alle Lösungen aus dem Internet, die ich gefunden habe, verwenden Sprachkonstrukte, die wir noch nicht besprochen haben und die sich nicht ohne Weiteres mit unseren Mitteln ausdrücken lassen.
  • Zeilenumbrüche können in Python gelegentlich weggelassen (oder durch Semikolons ersetzt) werden.
  • Zeichenketten können entweder in einfache oder in doppelte Hochkommata eingeschlossen werden. Dies ist nützlich, um Zeichenketten, die Hochkommata enthalten, zu definieren. Zum Beispiel ist "'" eine Zeichenkette, die ein einfaches Kochkomma enthält und '"' eine Zeichenkette, die ein doppeltes Hochkomma enthält.