Übungsaufgaben

Hausaufgabe: Prozeduren definieren

Definieren Sie eine Prozedur putDreieck() mit einem Parameter size zur Ausgabe eines rechtwinklingen Dreiecks gegebener Kantenlänge. Für den Parameter 4 soll die folgende Ausgabe erzeugt werden.

*
**
* *
****

Suchen Sie nach sich wiederholenden Mustern in Ihrer Implementierung und definieren Sie gegebenenfalls geeignete Funktionen oder Prozeduren um Ihre Implementierung zu vereinfachen.

Bonusaufgabe: Collatz-Folge visualisieren

Definieren Sie eine Prozedur putHailstone() mit einem Parameter n, die nacheinander Zeilen aus Sternen nach dem folgenden Schema ausgibt:

  • Solange n größer als 1 ist, gib eine Zeile aus n Sternen aus und weise n einen neuen Wert zu. Wenn n gerade ist, halbiere es. Wenn nicht, setze den Wert auf 3*n + 1.

  • Ist n gleich 1, gib einen Stern aus.

Für den Parameter 6 soll die Prozedur die folgende Ausgabe erzeugen.

******
***
**********
*****
****************
********
****
**
*

Bonusaufgabe: Geschachtelte bedingte Anweisungen

Schreiben Sie eine Prozedur, die die Zahlen von 1 bis zu einer übergegebenen Zahl ausgibt und zu jeder Zahl jeweils noch folgenden Hinweis hinzufügt:

  • Vielfache von 2 sollen durch “geht durch 2” ergänzt werden.

  • Vielfache von 3 sollen durch “geht durch 3” ergänzt werden.

  • Zahlen, die Vielfache sowohl von 2 als auch von 3 sind, sollen durch “geht durch 2 und 3” ergänzt werden.

  • alle anderen Zahlen sollen durch “geht weder durch 2 noch 3” ergänzt werden.

Für das Argument 10 soll die Ausgabe der Prozedur also so aussehen:

1 geht weder durch 2 noch 3
2 geht durch 2
3 geht durch 3
4 geht durch 2
5 geht weder durch 2 noch 3
6 geht durch 2 und 3
7 geht weder durch 2 noch 3
8 geht durch 2
9 geht durch 3
10 geht durch 2

Aufgabe: Funktionen und Prozeduren beschreiben

Betrachten Sie das folgende python-Programm.

def is_divisible(n,k):
  return (n%k == 0)

def is_prime(n):
  k = 2
  while k*k <= n:
    if is_divisible(n,k):
      return False
    k = k + 1
  return (n > 1)

def print_prime_twins(to):
  for n in range(1,to+1):
    if is_prime(n) and is_prime(n+2):
      print(str(n) + "," + str(n+2))

print_prime_twins(100)
  1. Erläutern Sie das gezeigte Programm, dessen Arbeitsweise sowie dessen Ausgabe unter Verwendung der Begriffe Programm, Funktion, Prozedur, Argument, Parameter, Rückgabewert, Rumpf, Aufruf, Wahrheitswert, Variable, Anweisung, Zuweisung, Ausdruck, Wert und Schleife. Benennen Sie dabei komplexe Anweisungen mit ihrer korrekten Bezeichnung.

  2. Unterziehen Sie den verwendeten Programmierstil einer kritischen Betrachtung mit Blick auf Verständlichkeit für Personen, die das Programm lesen.