Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

Visualisierung von Arrays

Aufgabe: Ein Array von ganzen Zahlen (int) soll als Balkendiagramm dargestellt werden.

Balkendiagramm

Bild: Screenshot von Ausführung des Programms „balkendiagramm“ (Schaller, ZPG IMP)

Du hast bei der "Kaffeehaus-Täuschung" die notwendigen Techniken für den Umgang mit Arrays schon angewendet. Schaue dir zunächst nochmals deine Lösung an.

Zunächst musst du die richtigen Koordinaten für die blauen Rechtecke bestimmen. Für den Befehl um ein Rechteck zu zeichnen, benötigst du die x- und die y-Koordinate des linken oberen Eckes und die Breite und Höhe des Rechtecks: rect(x, y, width, height);

Tabelle

 

Aufgabe:

  1. Lege in deinem Heft eine Tabelle wie oben an und fülle die leeren Tabellenfelder aus.

    Damit man die Werte in einer Schleife verwenden kann, muss ein Term gefunden werden, der für jedes i als Ergebnis die Werte der Koordinaten, bzw. der Rechteckgröße liefert.

  2. Finde einen Term der Form m * i + c, bei der die obigen y-Koordinaten herauskommen.

  3. Gib den Term an, mit dem man die Breite des Balkens unter Verwendung des zahlen-Arrays und i ausdrücken kann.

Implementation:

Lade das Programm alg10_balkendiagramm.

  1. Version 1:

    Implementiere die ersten vier Balken durch Angabe der Koordinaten aus der Tabelle. Ergänze dazu die Methode zeicheBalken an der "ToDo"-Stelle.

  2. Version 2:

    Ersetze die y-Koordinate und die Breite durch die oben ermittelte Formel. Deklariere vorher eine Integer-Variable i. Setze i vor dem ersten Rechteck auf 0, vor dem zweiten auf 1 usw. Überprüfe, ob deine Rechtecke immer noch korrekt gezeichnet werden.

  3. Version 3:

    Verwende eine for-Schleife, um alle Balken zeichnen zu lassen. Diese muss das i in jedem Durchgang um 1 erhöhen. Die Anzahl der Elemente im Array bekommst du durch zahlen.length.

    Tipp: Vergleiche mit deiner Implementation von der Kaffeehaus-Täuschung.

Nun soll noch der Text des Balkendiagramms ergänzt werden. Dazu gibt es einen Befehl

text(anzuzeigenderText, x, y);

also z.B.

text("Hallo", 10, 10);

text("x ist "+x, 20, 40);

 

Aufgabe:

Abbildung zur Aufgabe

  1. Bestimme wie oben die Koordinaten der einzelnen Texte. Überlege dir wieder einen Term, um die Koordinaten mit i auszudrücken.

  2. Schreibe die Texte für i=0 bis i=3 ab. Markiere mit einem farbigen Stift die Teile, die in den Texten nicht identisch sind.

    Die identischen Teile sind feste Texte. Sie werden in Anführungszeichen geschrieben. Die sich verändernden Teile sind Variablenwerte. Sie müssen an die festen Texte angehängt werden (siehe Abbildung rechts).

  3. Implementiere das Anzeigen des Textes.

Am Ende jeder Implementation steht das Testen des Programms auf mögliche Fehler. Es reichtnicht, ein Beispiel erfolgreich auszuführen.

Aufgabe:

  1. Verändere die Einträge des Arrays.Verändere auch die Anzahl der Einträge.

  2. esten: Überlege dir, was passiert, wenn das Array gar keinen Eintrag hat. Was passiert, wenn ein Eintrag 0 ist? Was passiert bei negativen Einträgen? Teste diese Grenzfälle in deinem Programm. Trifft deine Erwartung zu?

  3. Bewerte deine Tests: Können die Testfälle so überhaupt bei der Aufgabenstellung vorkommen? Ist eine Änderung des Programms notwendig?

 

Visualisierung von Arrays

Hilfekarte 1

Hilfekarten 2-3

Hilfekarten 4-5

 

Visualisierung von Arrays: Herunterladen [odt][138 KB]

Visualisierung von Arrays: Herunterladen [pdf][145 KB]

Hilfekarten: Herunterladen [odt][134 KB]

Hilfekarten: Herunterladen [pdf][92 KB]

 

Weiter zu Hilfekarte 1