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 07:08] – [Zugriff auf Array-Elemente] Frank Schiebelfaecher:informatik:oberstufe:java:algorithmen:arrays:definition:start [09.10.2024 18:41] (aktuell) – [Vogelbeobachtung] Frank Schiebel
Zeile 47: Zeile 47:
  
 ((Java verfügt auch über Klassen, mit denen man Objektlisten und Arrays effizienter verwalten kann, fürs Erste begnügen wir uns mal mit dem Weg "zu Fuß")) ((Java verfügt auch über Klassen, mit denen man Objektlisten und Arrays effizienter verwalten kann, fürs Erste begnügen wir uns mal mit dem Weg "zu Fuß"))
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (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. 
- 
  
 ===== Zugriff auf Array-Elemente ===== ===== Zugriff auf Array-Elemente =====
Zeile 73: Zeile 67:
 zahlen[4] = 78; zahlen[4] = 78;
 </code> </code>
-<callout icon="fa fa-pencil-square-o" color="blue" title="(A2)"> 
  
-Erweitere das Programm aus (A1) sodass für alle Elemente des Arrays eine Zeile wie die folgende ausgegeben wird+Der Zugriff auf einen Indexder außerhalb der gültigen Indizes des Arrays liegt, führt zu einer ''IndexOutOfBoundsException''
-<code> + 
-   Das Array-Element mit dem Index hat den Wert 11 +==== Alle Array-Elemente sequentiell verarbeiten ==== 
-   Das Array-Element mit dem Index 1 ... + 
-   Das Array-Element mit dem Index ...+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> </code>
  
-Verwende dazu eine [[..:..:..:sprachelemente:for-schleife:start|Zählschleife (for-Schleife)]]Welches ist der Startwertwelches der Endwertden diese Schleife haben muss? +Um ein Array auf diese Weise vollständig zu durchlaufen, muss der Kopf der for-Schleife so aussehen: 
-</callout> + 
-==== Aufgabe 3 ====+<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. 
 + 
 +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 hierhttps://codeberg.org/info-bw-wiki/bluej-birdwatching 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A1) === 
 + 
 +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  |}} 
 +=== (A2=== 
 + 
 +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. 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A3) === 
 +Implementiere die Methode ''Birdwatching.incrementTodaysCount()'', um die Anzahl der Vögel von heute um eins zu erhöhen. 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A4) === 
 + 
 +Implementiere die Methode ''Birdwatching.getCountForFirstDays()''die die Anzahl der Vögel zurückgibtdie 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  |}} 
 +=== (A5) === 
 + 
 +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  |}} 
 +=== (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>
  
-Schreibe eine Methode, die den Wert des dritten Elements des Arrays ausgibt.+Verwende dazu einmal eine [[..:..:..:sprachelemente:for-schleife:start|Zählschleife (for-Schleife)]] und einmal eine for-each-Schleife.
  
-==== Aufgabe 4 ====+===== Dateien =====
  
-Verändere im Schleifenkopf der for-Schleife aus Aufgabe 2 den Vergleichsoperator, indem du ihn umkehrst (> statt <). Erläutere die Ausgabe. 
  
-==== Aufgabe 5 ==== 
  
-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. 
  
 {{simplefilelist>.:*}} {{simplefilelist>.:*}}
  • faecher/informatik/oberstufe/java/algorithmen/arrays/definition/start.1728457737.txt.gz
  • Zuletzt geändert: 09.10.2024 07:08
  • von Frank Schiebel