Informatik 1
Wintersemester 2015/16

Tutorium 3 – Programmieren mit Konstanten und Funktionen

Nach der Bearbeitung dieses Arbeitsblattes haben Sie gelernt

Nach dieser Übung sollen Sie in der Lage sein, selbstständig Funktionen zu definieren, um kleine Programme strukturieren und Ausdrücke einfacher wiederverwenden zu können.

Die folgende Checkliste soll Ihnen beim Programmieren von Funktionen und Konstanten helfen. Anfangs kann es sich lohnen, diese für jede Funktion bzw. Konstante durchzugehen und sicherzustellen, dass alle Vorraussetzungen erfüllt sind:

Bearbeiten Sie die Aufgaben in kleinen Gruppen (2 - 3 Personen). Sie müssen nicht alle Aufgaben bearbeiten, aber:

Achten Sie selbständig darauf, die Lernziele zu erreichen!

Helfen Sie sich bei Bedarf gegenseitig oder fragen Sie Ihre Tutorin oder Ihren Tutor.

Viel Erfolg!

Das folgende Programm dient als Ausgangsbasis für einige Verbesserungen, welche wir in dieser Übung durchführen werden. Sie können es auch im Forum herunterladen.

(above/align "left"
  (beside
    (text "a. " 10 "black")
    (rectangle (* 1.5 121) 15 "solid" "blue")
    (text "121" 10 "black"))
  (square 5 "solid" "transparent")
  (beside
    (text "b. " 10 "black")
    (rectangle (* 1.5 32) 15 "solid" "blue")
    (text "32" 10 "black"))
  (square 5 "solid" "transparent")
  (beside
    (text "c. " 10 "black")
    (rectangle (* 1.5 60) 15 "solid" "blue")
    (text "60" 10 "black"))
  (square 5 "solid" "transparent")
  (beside
    (text "d. " 10 "black")
    (rectangle (* 1.5 43) 15 "solid" "blue")
    (text "43" 10 "black")))

Refactoring – Magic Literals durch Konstanten ersetzen

  1. Markieren Sie alle magic literals.
  2. Was bedeuten die magic literals?
  3. Ersetzen Sie die magic literals durch geeignet definierte Konstanten.

Ein Beispiel: Die Zahl 10 taucht acht mal im Programm auf. An jeder dieser Stellen gibt sie die Schriftgröße des dargestellten Textes an. Um dies deutlich zu machen definieren wir

(define FONT-SIZE 10)

und ersetzen alle Vorkommen von 10 durch FONT-SIZE.

Tipp: Denken Sie daran, dass es auch neben magic numbers noch magic strings, magic images etc. geben kann.

Refactoring – Funktionsdefinitionen

Das obige Programm enthält Wiederholungen. Manche Unterausdrücke wiederholen sich wörtlich, andere jeweils nur mit kleinen Variationen. In dieser Aufgabe üben Sie diese Wiederholungen zu vermeiden.

  1. Markieren Sie die Wiederholungen. Nutzen Sie dabei z.B. verschiedene Farben für die verschiedenen Wiederholungen, die Sie erkannt haben.
  2. Markieren Sie die Variationspunkte (die Unterschiede zwischen den verschiedenen Variationen einer Wiederholung).
  3. Pro Wiederholung: Programmieren Sie in DrRacket eine Funktion, welche für die markierten Unterausdrücke aus Teilaufgabe a. steht. Tipp: Die Funktion sollte einen Parameter für jeden Variationspunkt aus Teilaufgabe b. enthalten. Achten Sie auf geeignete Namen für die Funktion, sowie die Parameter. Zur Erinnerung: Wenn sich Ausdrücke gar nicht unterscheiden, müssen Sie als Konstante definiert werden.
  4. Ersetzen Sie alle Wiederholungen nun durch Funktionsaufrufe bzw. Konstanten.

Für Fortgeschrittene: Wie gehen Sie damit um, dass "121" und 121 verschiedene Literale sind?

Animationen

In dieser Aufgabe üben Sie die Verwendung von animate, indem Sie das Balkendiagram animieren. Dabei sollen die Balken gleichmäßig wachsen – solange bis die gewünschte Balkenlänge erreicht ist (so ähnlich wie bei Wahlumfragen im Fernsehen).

Programmieren Sie eine Funktion create-chart-scene, welche die aktuelle Zeit für die Balkenwerte verwendet – solange bis der eigentliche Balkenwert erreicht ist.

Tipp: Versuchen Sie die Funktionen aus der Aufgabe 2 zu verwenden.

Tipp: Da das Bild mit der Zeit seine Höhe ändert ist es sinnvoll es links unten ausgerichtet auf einer leeren Szene in geeigneter Größe zu platzieren.