groovy-lecture/aufgaben/yuliya_liveuebung.md

99 lines
1.7 KiB
Markdown

# Live-Übung
## Operatoren
### 1) Gegeben ist eine Liste von Strings:
```
def words = ["Groovy", "ist", "cool"]
```
Verwende den Spread-Operator *., um eine Liste der Längen dieser Strings zu erstellen.
Lösung
```
def words = ["Groovy", "ist", "cool"]
def lengths = words*.length()
println("Längen: $lengths") // Erwartete Ausgabe: Längen: [6, 3, 4]
```
### 2) Gegeben ist eine Liste von Zahlen:
```
def numbers = [1, 2, 3, 4, 5]
```
Verwende den Spread-Operator *., um eine Liste der Quadrate dieser Zahlen zu erstellen.
Lösung
```
def numbers = [1, 2, 3, 4, 5]
def squares = numbers*.multiply(numbers)
println("Quadrate: $squares") // Erwartete Ausgabe: Quadrate: [1, 4, 9, 16, 25]
```
## Schleifen und Bedingungen
Schreibe eine
a) while-Schleife
b) for-Schleife
, die die Fakultät einer gegebenen Zahl berechnet und ausgibt.
Lösung
a)
```
def zahl = 5
def ergebnis = 1
for (int i = 1; i <= zahl; i++) {
ergebnis *= i
}
println("Die Fakultät von $zahl ist: $ergebnis")
```
b)
```
def zahl = 5
def ergbenis = 1
def i = 1
while (i <= zahl) {
ergebnis *= i
i++
}
println("Die Fakultät von $zahl ist: $ergebnis")
```
## Closures
Schreibe eine Funktion makeCounter, die eine Closure zurückgibt, die jedes Mal, wenn sie aufgerufen wird, um 1 erhöht.
```
def makeCounter() {
//TODO
}
def counter = makeCounter()
println(counter()) // Erwartete Ausgabe: 1
println(counter()) // Erwartete Ausgabe: 2
println(counter()) // Erwartete Ausgabe: 3
```
Lösung
```
def makeCounter() {
def count = 0
return {++count}
}
def counter = makeCounter()
println(counter()) // Erwartete Ausgabe: 1
println(counter()) // Erwartete Ausgabe: 2
println(counter()) // Erwartete Ausgabe: 3
```