Dernière modification : Dec 08 , 2024
Dernière modification : Dec 08 , 2024

Contenu

Imaginez que vous développez une application de gestion de contacts en Groovy. Utilisez les différents concepts appris pour créer un script qui réalise les tâches suivantes :

  1. Variables et Affichage:

    • Déclarez une variable nomUtilisateur et demandez à l'utilisateur d'entrer son nom. Ensuite, imprimez "Bonjour, [nomUtilisateur] !" en utilisant cette variable.
  2. Structures Conditionnelles:

    • Demandez à l'utilisateur d'entrer son âge. Écrivez une structure conditionnelle en Groovy qui vérifie si l'utilisateur est majeur. Imprimez un message approprié.
  3. Boucle For:

    • Utilisez une boucle for pour demander à l'utilisateur d'entrer trois contacts (noms) et stockez-les dans une liste.
  4. Listes et Itération:

    • Parcourez la liste des contacts et imprimez chaque nom.
  5. Chaînes de Caractères:

    • Concaténez les noms des contacts en une seule chaîne de caractères et imprimez le résultat.
  6. Fonctions:

    • Écrivez une fonction en Groovy qui prend l'âge d'un contact en paramètre et renvoie une catégorie d'âge (enfant, adolescent, adulte). Appelez la fonction pour chaque contact et imprimez le résultat.
  7. Maps et Accès aux Éléments:

    • Créez une map représentant les informations d'un contact (nom, âge, ville). Stockez ces maps dans une liste.
  8. Closures:

    • Déclarez une closure en Groovy qui prend deux nombres en paramètres et renvoie leur somme. Utilisez cette closure pour calculer la somme des âges de tous les contacts.
  9. Opérations sur les Chaînes:

    • Prenez la chaîne concaténée des noms des contacts et convertissez-la en majuscules. Imprimez le résultat.
  10. Opérateurs Logiques:

    • Utilisez les opérateurs logiques en Groovy pour écrire une condition qui vérifie si la somme des âges est supérieure à 100. Imprimez un message en conséquence.

Solution

// Saisie du nom de l'utilisateur en ligne de commande
print "Entrez votre nom : "
def nomUtilisateur = System.console().readLine()

// Afficher un message de salutation
println "Bonjour, $nomUtilisateur !"

// Saisie de l'âge de l'utilisateur en ligne de commande
print "Entrez votre âge : "
def ageUtilisateur = System.console().readLine() as int

// Vérifier si l'utilisateur est majeur
if (ageUtilisateur >= 18) {
    println "Vous êtes majeur."
} else {
    println "Vous êtes mineur."
}

// Liste pour stocker les contacts
def contacts = []

// Demander à l'utilisateur d'entrer trois contacts
for (int i = 0; i < 3; i++) {
    print "Entrez le nom du contact $i : "
    def contact = System.console().readLine()
    contacts << contact
}

// Afficher les noms des contacts
println "Noms des contacts :"
contacts.each { println it }

// Concaténer les noms des contacts
def nomsConcatenes = contacts.join(', ')
println "Noms concaténés : $nomsConcatenes"

// Fonction pour catégoriser l'âge
def categoriserAge(age) {
    if (age < 12) {
        return "Enfant"
    } else if (age < 18) {
        return "Adolescent"
    } else {
        return "Adulte"
    }
}

// Appliquer la fonction à chaque contact
println "Catégorie d'âge des contacts :"
contacts.each { contact ->
    print "Entrez l'âge de $contact : "
    def ageContact = System.console().readLine() as int
    def categorieAge = categoriserAge(ageContact)
      println "$contact est un $categorieAge."
}

// Liste pour stocker les maps d'informations des contacts
def infosContacts = []

// Créer une map pour chaque contact
contacts.each { contact ->
    print "Entrez l'âge de $contact : "
    def ageContact = System.console().readLine() as int
    print "Entrez la ville de $contact : "
    def villeContact = System.console().readLine()
    def infosContact = [nom: contact, age: ageContact, ville: villeContact]
    infosContacts << infosContact
}

// Afficher les informations des contacts
println "Informations des contacts :"
infosContacts.each { println it }

// Closure pour calculer la somme de deux nombres
def sommeClosure = { nombre1, nombre2 -> nombre1 + nombre2 }

// Calculer la somme des âges à l'aide de la closure
def sommeAges = infosContacts.collect { it.age }.inject(0, sommeClosure)
println "Somme des âges : $sommeAges"

// Convertir la chaîne concaténée en majuscules
def nomsEnMajuscules = nomsConcatenes.toUpperCase()
println "Noms en majuscules : $nomsEnMajuscules"

// Vérifier si la somme des âges est supérieure à 100
if (sommeAges > 100) {
    println "La somme des âges dépasse 100."
} else {
    println "La somme des âges est inférieure ou égale à 100."
}