Skip to content

Commit

Permalink
Merge pull request #135 from it-ninjas/feature/TF-733-J2.6-adapt-list…
Browse files Browse the repository at this point in the history
…-assignments

change assignemnts
  • Loading branch information
jFriedli authored Jan 6, 2025
2 parents b55c797 + a06ceff commit 692b811
Showing 1 changed file with 67 additions and 18 deletions.
85 changes: 67 additions & 18 deletions content/en/labs/java/java-oop/01_lists.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,84 @@ description: >

### Aufgabe 1

Schreibe ein Programm, welche aus der Kommandozeile eine Reihe von Zahlen liest und die
Zahl an der Position x (x ist die erste Zahl in der Reihe) in der Konsole ausgibt.
Folgende Bedingungen müssen eingehalten werden:
In dieser Aufgabe werden wir eine Liste von Wörtern analysieren. Die Liste enthält bereits vordefinierte Wörter, und dein Programm soll die folgenden Schritte ausführen:

- Die Anzahl der Zahlen in der Reihe kann beliebig variert werden.
- Wenn es die Position nicht gibt, wird "ERROR! Die Position x existiert nicht" in der Konsole ausgegeben
- Gib die **Anzahl der Wörter** in der Liste aus.
- Gib **alle Wörter** in der Konsole wieder.
- Gib alle **Nomen** (Wörter, die mit einem grossen Buchstaben beginnen) **in Grossbuchstaben** aus.
- Gib die **Wörter in umgekehrter Reihenfolge** aus.

Die Liste, die du verwenden sollst, lautet:

```java
List<String> words = new ArrayList<>(List.of(
"Abstraktion", "API", "Annotation", "ArrayList", "Bedingung", "Bibliothek",
"Bytecode", "Collection", "Compiler", "Debugging", "Deployment", "entwickeln",
"Exception", "Framework", "GarbageCollector", "generisch", "HashMap",
"Heap", "implementieren", "Interface", "JVM", "Kapselung", "Klasse",
"konstruieren", "Konstruktor", "Lambda", "lernen", "Methoden",
"Modifikator", "Objekt", "optimieren", "Polymorphismus", "reflektieren",
"Reflexion", "Schleife", "sortieren", "Stack", "Stream", "Synchronisation",
"Thread", "TreeSet", "UnitTest", "Variable", "Vererbung"
));
```

_Bei der Umsetzung dürfen keine Streams verwendet werden!_

**Beispiel 1**
---

### Aufgabe 2

Input: 3 45 6 23 76 34<br>
Output: Die Zahl an der Position 3 ist: 23
Schreibe ein Programm, das die **Fibonacci-Zahlen** bis zu einer bestimmten Zahl **n** berechnet und in einer ArrayList speichert.

**Beispiel 2**
#### Was ist Fibonacci?

Input: 8 45 6 23 76 34<br>
Output: ERROR! Die Position 8 existiert nicht
Die **Fibonacci-Folge** ist eine berühmte Zahlenreihe, bei der **jede Zahl die Summe der beiden vorangehenden Zahlen ist**. Sie beginnt immer mit den Zahlen 0 und 1.
Die ersten Fibonacci-Zahlen sind:

---
```
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
```

### Aufgabe 2
Die Berechnungen verlaufen also folgendermassen:

- 0 (erste Zahl, fixer Wert)
- 1 (zweite Zahl, fixer Wert)
- 1 (= 0 + 1)
- 2 (= 1 + 1)
- 3 (= 1 + 2)
- 5 (= 2 + 3)
- 8 (= 3 + 5)
- 13 (= 5 + 8)
- 21 (= 8 + 13)
- 34 (= 13 + 21)
- ...

Eine ArrayList eignet sich besonders gut, um Fibonacci-Zahlen zu speichern, da wir im Voraus nicht wissen, wie viele Zahlen berechnet werden müssen, bis eine bestimmte Zahl erreicht ist.
Die ArrayList kann dynamisch wachsen und neue Zahlen aufnehmen.
Durch diese Aufgabe lernst du den Umgang mit ArrayLists und wie sie sich dynamisch vergrössern lassen, ohne dass du dir Gedanken über die feste Größe von Arrays machen musst.

Die Fibonacci-Folge ist relevant, weil sie in der **Natur** häufig vorkommt, wie bei der Anordnung von Blättern oder der Struktur von Tannenzapfen.

#### Umsetzung

Du schreibst eine Methode für die Berechnung der Fibonacci-Zahlen bis zu einem bestimmten Wert.
Die Methode berechnet die Fibonacci-Zahlen, bis die aktuell berechnete Zahl grösser als **n** ist, und gibt die Liste der berechneten Fibonacci-Zahlen als Rückgabewert zurück.
Es ist also vor der Berechnung unklar, wie lange die Liste werden kann.

Methodensignatur:

```java
List<Integer> fibonacci(int n);
```

Wenn wir also zum Beispiel **n** auf 20 setzen, wäre das Resultat eine ArrayList mit den folgenden Einträgen:

Schreibe ein Programm, welche einen Text mit einer beliebigen Anzahl Wörter aus der Kommandozeile liest und folgendes damit macht:
```java
[0, 1, 1, 2, 3, 5, 8, 13, 21]
```

- Die Anzahl gelesene Wörter ausgeben
- Alle gelesenen Wörter in der Konsole wiedergeben
- Alle Nomen aus dem Text (Wörter, die mit einem grossen Buchstaben beginnen) in Grossbuchstaben ausgeben
- Alle gelesene Wörter in umgekehrte Reihenfolge ausgeben
21 ist grösser als 20, deshalb stoppt die Liste nach diesem Eintrag.

_Bei der Umsetzung dürfen keine Streams verwendet werden!_

Expand Down

0 comments on commit 692b811

Please sign in to comment.