Sie sind auf Seite 1von 2

Fach: Sem.TestNr: Datum: Klasse: Name: KatalogNr.

SEW1 PLF 2.1 23.3.2022 1CI


Notenskala: unter 12 Pkt.: Nicht genügend (5), ab 12 Pkt.: Genügend (4), ab 15,5 Pkt.: Befriedigend (3), ab 19,5 Pkt.: Gut (2), ab 22,5 Pkt.: Sehr gut (1)

Grundsätzliches
• Jede Aufgabe zählt 6 Punkte, insgesamt gibt es 24 Punkte.
• Hältst du die folgenden Punkte nicht ein, dann gibt es Abzugspunkte:
◦ Speichere alle Aufgaben in der selben Datei mit dem Namen:
„PLF_1CI_2_1_Familienname.java“. Statt „Familienname“ soll natürlich dein
Name stehen!
◦ Alle Variablen müssen sinnvolle Namen haben. Für gravierende Stilmängel wie z.B.
konsequente falsche Einrückungen gibt es ebenfalls Abzugspunkte.
◦ Jede Methode muss in der main-Methode mit sinnvollen Werten getestet werden!

Einleitung
Die historischen Temperarturwerte (seit 1775) der Wetterstation „Hohe Warte“ sind bei der
Zentralanstalt für Meteorologie und Geodynamik (ZAMG) kostenlos und frei verfügbar1. Die
Monats-Temperatur-Durchschnitsswerte können von dort heruntergeladen werden. Sie sind jedoch
nicht in normalen Grad Celsius, sondern in Zehntel-Grad Celsius gespeichert. Das hat den Vorteil,
dass diese Art der Darstellung ohne Komma auskommt, das international ja mal als Dezimalpunkt
und mal als Dezimalkomma geschrieben wird.
Im Angabeverzeichnis liegt eine Java-Datei, die diese Temperaturwerte schon als Array-Konstante
definiert hat.
Eure Aufgabe wird es bei dieser PLF primär sein, mit diesen Temperaturwerten zu arbeiten. Z.B.
die Zehntelgrad in normale Grad umzuwandeln, Mittelwerte über die Jahrzehnte bilden, ….

konkrete Aufgaben
Jede Methode muss eine JavaDoc haben. Dafür gibt es pro Beispiel einen der sechs Punkte.

1) Schreibe die Methode tenthDegreeToNormalDegree(int tenthDegrees[]), die das


Array mit ganzzahligen Zehntelgrad in normale Grad umwandelt.
• Überlege dir, welchen Rückgabewert die Methode benötigt.
• Beispiel für die Rückgabe: 9.3, 7.9, 8.3, 9.9, 9.8, ...

2) Schreibe die Methode printDegreesTable(double degrees[], int firstYear,


int firstPrintYear, int lastPrintYear), die die Grade mit Jahreszahlen für die
Jahre firstPrintYear … lastPrintYear laut Beispiel ausgibt.
• Der Parameter firstYear ist das Jahr des ersten Temperaturwerts im Array degrees.
• Die Ausgabe der Gradzahlen soill auf 1 Kommastelle gerundet werden. (Tipp: printf)
• Beispiel-Ausgabe:
double[] degrees = tenthDegreeToNormalDegree(TENTH_DEGREES);
printDegreesTable(degrees, TENTH_DEGREES_STARTYEAR, 2000, 2008);

Ausgabe:
2000: 11,7° Celsius
2001: 10,6° Celsius
...
2008: 11,4° Celsius
• Hinweis: falls Aufgabe 1 nicht geschafft wurde, kann statt dessen das Array
DEGREES_HELPER verwendet werden.

1 http://www.zamg.ac.at/histalp/dataset/station/csv.php
3) Schreibe die Methode double[] meansForDecades(double degrees[]), die für jede
Dekade (= 10 Jahre) den Mittelwert berechnet.
• Die Mittelwerte sollen für je zehn Werte berechnet werden. D.h. ein Mittelwert für die ersten
10 Werte aus Degrees (1775-1784), der nächste für die nächsten 10 Werte (1785-1794),
usw.
• Hinweis: Das Rückgabe-Array ist nur mehr ein Zehntel so groß wie das Array degrees.
• Beispiel für die Rückgabe: 9.15, 9.36, 9.65, …
• Hinweis: falls Aufgabe 1 nicht geschafft wurde, kann statt dessen das Array
DEGREES_HELPER verwendet werden.

4) Erzeugen eines Diagramms für die Dekaden-Mittelwerte.


(Sehr schwer und lang, mach unbedingt die anderen drei Aufgaben zuerst.)
4a) Schreibe die Methode String[] getLabelsForDecadesDiagramm(int startYear,
int years), die die Beschriftungen {"1775-1784", "1785-1794", ….} für die
Dekadenmittelwerte aus der Aufgabe 3) erzeugt.
• Der Parameter startYear ist das erste Jahr, in dem die Mittelwerte starten (in diesem
Beispiel 1775).
• Der Parameter years gibt an, über wie viele Jahre die Mittelwerte gehen.
• Diese Beschriftungen werden für das Beispiel 4b) benötigt.

4b) Schreibe die Methode String createDiagramm(String header, String labels[],


double values[]), die ein Diagramm in einem einzigen String erzeugt.
• In der erste Zeile soll als Beschriftung der Parameter header stehen.
• Nach einer Leerzeile sollen immer paarweise ein Wert aus labels und einer aus values
stehen.
◦ Die labels sollen immer mit 10 Zeichen Breite ausgegeben werden.
◦ Die values sollen auf eine Kommastelle genau ausgegeben werden.
◦ (Tipp: String.format)
◦ Für jedes Zehntel eines Wertes aus values soll ein Stern ausgegeben werden, d. h.
z. B. für einen Wert von 8,4 sollen 84 Sterne ausgegeben werden.
• Die Ausgabe soll insgesamt so ausschauen:
(die 3 Punke stehen immer für die Werte, die wegen des Platzbedarfs hier am Zettel
ausgelassen wurden)
Temperatur-Statistik 1775-2014
1775-1784 ( 9,2°): *****...**********
1785-1794 ( 9,4°): *****...************
...
2005-2014 (11,0°): *****...****************************
• Tipp: Für die Aufgabe 4b) ist ein StringBuilder sinnvoll. Mann muss ihn aber nicht
verwenden.

Klebe hier dein Einlogg-Pickerl auf:

Das könnte Ihnen auch gefallen