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:44] 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.
  
-Die Zahl der beobachteten Vögel speicherst du in einem Array, ein befreundeter Programmierer hat dir bereits eine Codevorlage zur Verfügung gestellt FIXME +Die Zahl der beobachteten Vögel speicherst du in einem Array, ein befreundeter Programmierer hat dir bereits eine Codevorlage zur Verfügung gestellt, du findest sie hier: https://codeberg.org/info-bw-wiki/bluej-birdwatching
  
 ---- ----
Zeile 86: Zeile 129:
 Mache dir klar, dass die Methode als Rückgabetyp tatsächlich ein Array aus Zahlen festlegt. 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 ''birdPerDay'' die Zahlen für vergangenen 7 Tage enthält.+:!: Für die weiteren Aufgaben gilt, dass das Array ''birdsPerDay'' die Zahlen für vergangenen 7 Tage enthält.
  
 ---- ----
Zeile 92: Zeile 135:
 === (A2) === === (A2) ===
  
-Implementiere die Methode ''Birdwatching.getToday()'', um zurückzugeben, wie viele Vögel heute deinen Garten besucht haben. Die Vogelzählungen sind nach Tagen geordnet, wobei das erste Element die Anzahl des ältesten Tages ist und das letzte Element die Anzahl für heute darstellt.+Implementiere die Methode ''Birdwatching.getToday()'', um zurückzugeben, wie 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.
  
 ---- ----
Zeile 101: Zeile 144:
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A2) === +=== (A4) ===
-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.getCountForFirstDays()'', die die Anzahl der Vögel zurückgibtdie seit Beginn der Woche deinen Garten besucht habenaber die Zählung auf die angegebene Anzahl von Tagen ab dem Beginn der Woche begrenzt.
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A3) === +=== (A5) === 
-Schreibe eine Methode, die den Wert des dritten Elements des Arrays ausgibt.+ 
 +An manchen Tagen ist mehr los als an anderen. Ein "geschäftiger" Tag ist ein Tag, an dem acht oder mehr Vögel deinen Garten besucht haben. Implementiere die Methode ''Birdwatching.getBusyDays()''um die Anzahl der geschäftigen Tage zurückzugeben.
  
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A4) === 
-Verändere im Schleifenkopf der for-Schleife aus Aufgabe 2 den Vergleichsoperator, indem du ihn umkehrst (> statt <). Erläutere die Ausgabe. 
  
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A5) === 
-Erzeuge ein Array vom Datentyp String, das die Wochentage enthält. Lasse ebenfalls direkt bei der Instanziierung auf der Konsole die Länge des Arrays ausgeben. Beim Aufrufen von printArray() sollen nun auch die Wochentage ausgegeben werden. 
 ----  ---- 
 +{{: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.1728488663.txt.gz
  • Zuletzt geändert: 09.10.2024 15:44
  • von Frank Schiebel