Exercise 9 : Evaluation de la syntaxe
Cet exercice combine divers concepts de la syntaxe Groovy en utilisant un scénario pratique pour renforcer la compréhension globale.
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 :
-
Variables et Affichage:
- Déclarez une variable
nomUtilisateur
et demandez à l'utilisateur d'entrer son nom. Ensuite, imprimez "Bonjour, [nomUtilisateur] !" en utilisant cette variable.
- Déclarez une variable
-
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é.
-
Boucle For:
- Utilisez une boucle
for
pour demander à l'utilisateur d'entrer trois contacts (noms) et stockez-les dans une liste.
- Utilisez une boucle
-
Listes et Itération:
- Parcourez la liste des contacts et imprimez chaque nom.
-
Chaînes de Caractères:
- Concaténez les noms des contacts en une seule chaîne de caractères et imprimez le résultat.
-
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.
-
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.
-
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.
-
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.
-
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."
}