Theorie Icon

Lernziele
Du kannst...
  • Funktionen ineinander schachteln, um einen Datenfluss zu realisieren.,
  • Daten in einem Dictionary ablegen,
  • Daten aus einem Dictionary über keys herauslesen und
  • Dictionaries als passenden Datentyp der funktionalen Programmierung einsetzen.

Link: Materialien CodingDoJo week9


Übungsaufgaben

Löse folgende Übungsaufgaben. Die mit dem * gekennzeichnete Aufgaben sind zusätzliche Übungsaufgaben, die zur Wiederholung gedacht sind.

Funktionen ineinander einsetzen

Thonny Icon

A01 Summe zweier Quadratzahlen (in ArTEMiS)
Definiere zwei Funktionen summe und quadrat. Eine weitere Funktion summeZweierQuadratzahlen soll zu zwei übergebenen Zahlen die Summe ihrer Quadrate zurückliefern.

Gib die erste Zahl ein: 45
Gib die zweite Zahl ein: 87
Die Summer der Quadrate dieser beiden Zahlen ist 9594.

Thonny Icon

A02 Gleiches nur kompakter
Setze das Programm aus der Aufgabe zuvor ohne die dritte Funktion summeZweierQuadratzahlen und ohne zusätzliche Berechnungen im Funktionsaufruf um.

Dein Code sollte maximal 12 Zeilen besitzem und die selbe Ausgabe liefern wie die Aufgabe zuvor. Schachtele die Funktionen, um dies zu erreichen.

Thonny Icon

A03 *Binomialkoeffizient (in ArTEMiS)
Schreibe eine Funktion zur Rückgabe des Binomialkoeffizienten zweier Zahlen, die auf eine weitere Funktion zur Berechnung der Fakultät zurückgreift.

Gib die Grundmenge ein: 49
Gib die Teilmenge ein: 6
Der Binominialkoeffizient dieser beiden Zahlen ist 13983816.

Methoden von Dictionaries

Thonny Icon

B02 Methoden von Dictionaries (in ArTEMiS)
  1. Lege ein Dictionary für eine Besetzungsliste eines Filmes oder einer Serie an mit den keys von drei Charakteren und als value den entsprechenden Schauspieler.
  2. Gib anschließend alle Schauspieler auf dem Bildschirm aus.
  3. Ändere den Schauspieler zu einem Charakter.
  4. Benutze nun die for-in-Schleife um alle Charakter auszugeben.

  1. Eine Ausgabe des Dictionarys mittels print() könnte zum Beispiel wie folgt aussehen:
    {'Sam Winchester': 'Jared Padalecki', 'Dean Winchester': 'Jensen Ackles', 'Castiel': 'Sydney Imbeau'}
  2. Beispielausgabe: dict_values(['Jared Padalecki', 'Jensen Ackles', 'Sydney Imbeau'])
  3. Eine Ausgabe der values nach der Änderung könnte beispielsweise so aussehen:
    dict_values(['Jared Padalecki', 'Jensen Ackles', 'Misha Collins'])
  4. Beispielausgabe:
    Sam Winchester
    Dean Winchester
    Castiel

Thonny Icon

B02 *Methoden von Dictionaries II (in ArTEMiS)
  1. Gib die Länge des Dictionaries mit der Funktion len aus.
  2. Lösche einen speziellen Charakter aus dem Dictionary.
  3. Lösche alle Inhalte aus dem Dictionary.
  4. Lösche die Referenz auf ein Dictionary mit del.
  5. Erstelle ein Dictionary mit dem Morsecode und gib den entsprechenden Code für den Notruf "SOS" aus.

  1. Du weißt, dass dein Code korrekt ist, wenn du eine Länge von 3 erhälst.
  2. Nach dem Löschen eines Charakters könne eine Ausgabe des Dictionarys beispielsweise so aussehen:
    {'Sam Winchester': 'Jared Padalecki', 'Dean Winchester': 'Jensen Ackles'}
  3. Nach dem Löschen der Inhalte sollte eine Ausgabe des Dictionarys so Aussehen: {}
  4. Nach dem Löschen der Referenz sollte das Dictionary über den Variablennamen nicht mehr erreichbar sein und einen Fehler ausgeben.
  5. Ausgabe: ... --- ...

Dictionaries als Rückgabewerte

Thonny Icon

C01 Liste von Personen-Dictionaries als Rückgabe (in ArTEMiS)
Implementiere eine zweite Funktion in Ergänzung zum praktischen Input, die 5 Vor- und Nachnamen abfragt, damit jeweils die Funktion aus dem praktischen Input aufruft und anschließend die Personen Dictionaries in einer Liste speichert. Diese Liste soll von der Funktion zurückgeliefert werden.

Die zurückgegebene Liste könnte beispielsweise so aussehen:
[{'vorname': 'James T.', 'nachname': 'Kirk'}, {'vorname': 'Jean-Luc', 'nachname': 'Picard'}, {'vorname': 'Benjamin', 'nachname': 'Sisko'}, {'vorname': 'Kathryn', 'nachname': 'Janeway'}, {'vorname': 'Jonathan', 'nachname': 'Archer'}]

Thonny Icon

C02 *Input und Ausgabe einbinden (in ArTEMiS)
Erweitere das Programm so, dass es die Funktionen aus der Aufgabe zuvor benutzt, um 5 Personen in einer Liste zu speichern. Diese Liste soll dann in ihrem Programm mit Hilfe der for-in-Schleife ausgegeben werden.

Die Ausgabe könnte beispielsweise so aussehen:
James T. Kirk
Jean-Luc Picard
Benjamin Sisko
Kathryn Janeway
Jonathan Archer

Datenfluss und Tabellenkalkulation

Thonny Icon

D01 Funktional Programmieren in einem Tabellenkalkulationsprogramm
Die Aufgabe ist in einem Tabellenkalkulationsprogramm die Berechnung der Klausurnoten automatisch aus der Summe der Punkte der Personen zu berechnen.
  1. Erstelle ein Tabellenblatt mit den Spalten Vorname, Aufgabe1, Aufgabe2, Aufgabe3, Aufgabe4, Summe und Note. Benutze die Summe-Funktion um alle Punkte der Aufgaben in der Spalte Summe für jede Person aufzusummieren.
  2. Lege zwei neue Spalten Noten und Punkte an. Fülle die Spalte Noten mit den Noten von 1.0 bis 5.0. In der Klausur sind 40 Punkte zu erreichen. Bei 20 Punkten erreicht man eine 4. Teile die übrigen 20 Punkte gleichverteilt über die Noten besser als 4 auf.
  3. In der Spalte Note soll nun automatisch aus der Summe der Punkte und der Spalte Noten die korrekte Note angezeigt werden. Falls keine Eintragung in der Spalte Aufgabe1 vorliegt soll nichts angezeigt werden. Erstelle ein Datenflussdiagramm nur mit den Funktionen WENN und ISTLEER (Libreoffice), das dieses Problem löst.
  4. Leite aus dem Datenflussdiagramm den entsprechenden Code ab und teste diesen anschließend in der Tabelle.

Ob deine Formel funktioniert kannst du direkt an zufälligen Daten testen. Deine Formel sollte aus dem Datenflussdiagramm, wie im Theorie-Input gezeigt, herleitbar sein. Genauso kannst du natürlich auch das Datenflussdiagramm aus deiner Formel herleiten.