Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change assignemnts #135

Merged
merged 5 commits into from
Jan 6, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading