groovy-lecture/aufgaben/ileyan_aufgaben.md

3.3 KiB

Leicht: Gegensätze ziehen sich an

Anna und Tom denken, sie sind ineinander verliebt. Nun wollen sie wissen, ob ihre Beziehung auch lange hält und sie wirklich Seelenverwandte sind. Das können sie nur rausfinden, wenn sie das in ihrem Dorf beliebte Blütenspiel spielen. Hierzu nimmt sich jeder der beiden eine Blume. Hat eine der Blumen eine ungerade Anzahl an Blüten und die andere eine gerade Anzahl, dann sind die beiden wirklich für einander bestimmt.

Schreibem sie ein Groovy Programm, dass die Anzahl der Blüten von beiden Blumen übergeben bekommt. Das Programm soll die beiden Zahlen miteinander vergleichen und je nachdem ausgeben, ob die beiden für einander bestimmt sind oder nicht.

Lösung:

def seelenverwandt(int ersteBlume, int zweiteBlume) {
    if ((ersteBlume % 2) != (zweiteBlume % 2)) {
        print "Ihr seid für einander bestimmt"!
    }
    else {
        print "Die Beziehung hält kein Leben lang..."
    }
}

Mittel: Begrüßungsliste

Anna und Tom haben diesmal beschlossen, eine kleine Party zu veranstalten und möchten sichergehen, dass sie alle ihre eingeladenen Freunde auf der Begrüßungsliste haben. Schreiben sie ein Groovy Programm, dass den beiden dabei hilft, die Namen ihrer Freunde hizuzufügen und die Liste anzuzeigen. Hierbei soll es möglich sein sowohl einzelne, als auch mehrere Namen hinzuzufügen. Tipp: Benutzen sie für die Implementierung eine Liste, sehen sie jedoch davon ab die list.add() Methode zu benutzen. Groovy bietet hier einen komfortableren Weg.

Lösung:

class Begruessungsliste {
    List<String> namen = []

    def addNames(String... neueNamen) {
        namen << neueNamen
        neueNamen.each { println "${it} wurde zur Begrüßungsliste hinzugefügt."}
    }

    def showList() {
        println "Aktuelle Begrüßungsliste: "
        namen.each { println "- ${it}"}
    }
}

Schwer: Wetterprognose für die Party

Da Anna und Tom nun ihre Begrüßungsliste haben, möchten sie natürlich auch sicherstellen, dass das Wetter gut ist. Sie haben eine Liste von täglichen Wettervorhersagen für die nächste Woche und möchten die Tage mit Sonnenschein zählen, um zu entscheiden, welcher Tag am besten für die Party geeignet ist. Helfen sie den beiden, indem sie ein Groovy Programm schreiben, welche die Anzahl der Zahe mit Sonnenschein in der Wettervorhersage berechnet.

Das Programm soll:

  1. Eine Liste von täglichen Wettervorhersagen entgegennehmen Beispiel ["Sonnig", "Regen", "Wolken", "Sonnig", "Sonnig", "Regen", "Wolken"]
  2. Die Anzahl der Tage mit Sonnenschein ("Sonnig") in der Liste zählen.
  3. Die Anzahl der Tage mit Sonnenschein ausgeben.

Achten sie darauf, dass sie hier keine statische Methode benutzen, sondern eine Klasse schreiben, deren Konstruktor man die Liste übergibt und die dann den Rest übernimmt (sowohl die Auswertung, als auch die Ausgabe)

Lösung:

class Wetterprognose {
    List<String> vorgersagen

    Wetterprognose(List<String> vorhersagen) {
        this.vorhersagen = vorhersagen
    }

    def countSunnyDays() {
        int count = 0
        vorhersagen.each {if {it == "Sonnig"} count++}
        return count
    }

    def printSunnyDays() {
        println "Anzahl der Tage mit Sonnenschein ${countSunnyDays(vorhersagen)}"
    }
}