faecher:informatik:oberstufe:java:algorithmen:arrays:definition:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:algorithmen:arrays:definition:start [09.10.2024 15:04] – [Zugriff auf Array-Elemente] Frank Schiebelfaecher:informatik:oberstufe:java:algorithmen:arrays:definition:start [09.10.2024 18:41] (aktuell) – [Vogelbeobachtung] Frank Schiebel
Zeile 68: Zeile 68:
 </code> </code>
  
-===== Vogelbeobachtung =====+Der Zugriff auf einen Index, der außerhalb der gültigen Indizes des Arrays liegt, führt zu einer ''IndexOutOfBoundsException''.
  
 +==== Alle Array-Elemente sequentiell verarbeiten ====
  
 +Häufig möchte man alle Elemente eines Array der Reihe nach anschauen und möglichweise etwas mit den gespeichert Werten machen, man spricht davon, dass man "über das Array iteriert".
 +
 +Hier bieten sich zunächst **zwei Möglichkeiten** an:
 +
 +Wenn man die volle Kontrolle haben möchte über welche Elemente des Arrays man iteriert, verwendet man am besten eine Zählschleife (for-Schleife). Bei dieser Art, die Array Elemente auszulesen, hat mal stets auch den Wert des entsprechenden Index vorliegen:
 +
 +<code java>
 +char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
 +
 +for (int i = 0; i < 3; i++) {  
 +    // Output the vowel
 +    System.out.print(i + "::" + vowels[i] + " ");
 +}
 +
 +// 0::a 1::e 2::i 
 +</code>
 +
 +Um ein Array auf diese Weise vollständig zu durchlaufen, muss der Kopf der for-Schleife so aussehen:
 +
 +<code java>
 +for (int i = 0; i < meinArray.length; i++) {  
 +  ...
 +}
 +</code>
 +
 +Der Umstand, dass ein Array auch eine Java-"Collection" ist, bedeutet, dass du neben dem direkten Zugriff auf Werte über den Index auch über alle Werte iterieren kannst, indem du eine "for-each"-Schleife verwendest:
 +
 +<code java>
 +char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
 +
 +for(char vowel: vowels) {
 +    // Output the vowel
 +    System.out.print(vowel);
 +}
 +
 +// => aeiou
 +</code>
 +
 +===== Vogelbeobachtung =====
 +((Die Übungen zur Vogelbeobachtung sind stark an die Vorlage "bird-watcher" des Java-Tracks bei exercism.org angelehnt. https://github.com/exercism/java/tree/main/exercises/concept/bird-watcher Der Java-Track steht unter einer MIT Lizenz:
 +https://github.com/exercism/java/blob/main/LICENSE))
 +{{ :faecher:informatik:oberstufe:java:algorithmen:arrays:definition:robin-6906521_640.jpg?400|}}((Bild von [[https://pixabay.com/users/netti_nu_nu-21673442/|Aneta Rog]]))
 Du bist ein begeisterter Vogelbeobachter und führst Buch darüber, wie viele Vögel in den letzten sieben Tagen deinen Garten besucht haben. Du bist ein begeisterter Vogelbeobachter und führst Buch darüber, wie viele Vögel in den letzten sieben Tagen deinen Garten besucht haben.
  
-Du hast sechs Aufgaben, die sich alle mit den Zahlen der Vögel befassendie deinen Garten besucht haben.+Die Zahl der beobachteten Vögel speicherst du in einem Array, ein befreundeter Programmierer hat dir bereits eine Codevorlage zur Verfügung gestelltdu findest sie hier: https://codeberg.org/info-bw-wiki/bluej-birdwatching 
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A1) === === (A1) ===
-Passe das folgende [[https://codeberg.org/qg-info-unterricht/arrays01|BlueJ-Projekt (arrays01)]] so an, dass es das oben definierte Array ''zahlenarray'' als Instanzvariable besitzt. Die Werte sollen dabei auch übernommen werden. Lass dir die Länge des Arrays im Konstruktor bei der Erzeugung eines Array Objekts auf der Konsole ausgeben. 
  
 +Passe die Methode ''getNumbersOfLast7Days()'' so an, dass diese die Beobachtungszahlen für die vergangenen 7 Tage zurück gibt. Die Zahlen waren wie folgt:
  
 +^  Vor 6 Tagen (Sa)  ^  Vor 5 Tagen (So)  ^  Vor 4 Tagen (Mo)  ^  Vor 3 Tagen (Di)  ^  Vorgestern (Mi)  ^  Gestern (Do)  ^  Heute (Fr)  ^
 +|  12                |  7                  0                  6                  15                8              7           |
  
 +Mache dir klar, dass die Methode als Rückgabetyp tatsächlich ein Array aus Zahlen festlegt.
 +
 +:!: Für die weiteren Aufgaben gilt, dass das Array ''birdsPerDay'' die Zahlen für vergangenen 7 Tage enthält.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A2) === === (A2) ===
-Erweitere das Programm aus (A1) so, dass für alle Elemente des Arrays eine Zeile wie die folgende ausgegeben wird: 
-<code> 
-   Das Array-Element mit dem Index 0 hat den Wert 11 
-   Das Array-Element mit dem Index 1 ... 
-   Das Array-Element mit dem Index 2 ... 
-</code> 
  
-Verwende dazu eine [[..:..:..:sprachelemente:for-schleife:start|Zählschleife (for-Schleife)]]. Welches ist der Startwertwelches der Endwertden diese Schleife haben muss?+Implementiere die Methode ''Birdwatching.getToday()''um zurückzugebenwie viele Vögel heute deinen Garten besucht haben. Die Vogelzählungen sind im Array ''birdsPerDay'' nach Tagen geordnet, wobei das erste Element die Anzahl des ältesten Tages ist und das letzte Element die Anzahl für heute darstellt.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A3) === === (A3) ===
-Schreibe eine Methode, die den Wert des dritten Elements des Arrays ausgibt.+Implementiere die Methode ''Birdwatching.incrementTodaysCount()''um die Anzahl der Vögel von heute um eins zu erhöhen.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A4) === === (A4) ===
-Verändere im Schleifenkopf der for-Schleife aus Aufgabe 2 den Vergleichsoperator, indem du ihn umkehrst (> statt <). Erläutere die Ausgabe.+ 
 +Implementiere die Methode ''Birdwatching.getCountForFirstDays()'', die die Anzahl der Vögel zurückgibt, die seit Beginn der Woche deinen Garten besucht haben, aber die Zählung auf die angegebene Anzahl von Tagen ab dem Beginn der Woche begrenzt.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A5) === === (A5) ===
-Erzeuge ein Array vom Datentyp Stringdas die Wochentage enthältLasse ebenfalls direkt bei der Instanziierung auf der Konsole die Länge des Arrays ausgebenBeim Aufrufen von printArray() sollen nun auch die Wochentage ausgegeben werden.+ 
 +An manchen Tagen ist mehr los als an anderen. Ein "geschäftiger" Tag ist ein Tagan dem acht oder mehr Vögel deinen Garten besucht habenImplementiere die Methode ''Birdwatching.getBusyDays()'', um die Anzahl der geschäftigen Tage zurückzugeben. 
 + 
 ----  ---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (A6) ===
 +Erweitere das die Klasse um eine Methode ''Birdwatching.printRawData()'' du auf der Konsole folgende Ausgabe erhältst:
 +<code>
 +   Am Tag mit dem Index 0 wurden 12 Vögel beobachtet.
 +   Am Tag mit dem Index 1 wurden 7 Vögel beobachtet.
 +   Am Tag mit dem Index 2 wurden 0 Vögel beobachtet.
 +   [...]
 +</code>
 +
 +Verwende dazu einmal eine [[..:..:..:sprachelemente:for-schleife:start|Zählschleife (for-Schleife)]] und einmal eine for-each-Schleife.
 +
 +===== Dateien =====
 +
 +
 +
 +
 {{simplefilelist>.:*}} {{simplefilelist>.:*}}
  • faecher/informatik/oberstufe/java/algorithmen/arrays/definition/start.1728486256.txt.gz
  • Zuletzt geändert: 09.10.2024 15:04
  • von Frank Schiebel