Défi
Vous souhaitez mettre en place un système permettant de faire des statistiques sur la météo de votre région.
Vous disposez déjà d'une fonction qui vous permet de savoir s'il fait beau temps pour un jour donné.
/** JavaScript */
// Simule l'information du beau temps.
function isGoodWeather () {
return Math.random() < 0.20
}
Question
À partir de cette fonction prédéfinie, construisez un programme qui, pour chaque jour de l'année, affiche sa météo et calcule à la fin de l'année le pourcentage de jours de beau temps.
Pour cela, dans une boucle for
, parcourez 365 jours en affichant à chaque fois « Jour X : il fait beau »
ou « Jour X : il fait moche »
.
À la fin des 365 jours, afficher le pourcentage de beaux jours obtenus.
Indice
Appeler simplement isGoodWeather()
pour chaque jour : si le résultat est true
, alors il s'agit d'un beau jour.
Utiliser Math.round(x)
pour arrondir un nombre x.
Solution
let goodDays = 0
for (let i = 0; i < 365; i++) {
if (isGoodWeather()) {
goodDays++
console.log('Jour ' + i + ': il fait beau')
} else {
console.log('Jour ' + i + ': il fait moche')
}
}
const percent = Math.round(goodDays / 365 * 100)
console.log('Pourcentage de jours beaux dans l\'année: ' + percent + '%')
Question
Vous voulez maintenant savoir si vous pouvez sortir dehors pour un jour donné. Vous sortez s'il fait beau.
En réutilisant la fonction prédéfinie, réalisez un programme qui boucle jusqu'à tant qu'il fasse beau.
Affichez pour chaque jour « Jour X : je sortirai demain »
ou « Jour X : il faut beau, je sors »
pour le jour de beau temps.
Solution
let goodDay = false
let i = 0
while (!goodDay) {
goodDay = isGoodWeather()
if (goodDay) {
console.log('Jour ' + i + ': il fait beau je sors!')
} else {
console.log('Jour ' + i + ': je sortirai demain...')
}
i++
}
Question
Finalement, vous voulez avoir un programme qui consigne le jour de chaque semaine où vous êtes sorti.
Pour chacune des 52 semaines de l'année, le programme boucle jusqu'à trouver un jour de beau temps dans la semaine. Dans ce cas, il affiche : « Je suis sorti cette semaine X, le jour Y »
.
Indice
Les semaines sont parcourues dans une boucle for
. À l'intérieur, une boucle while
permet de parcourir les jours tant qu'aucun n'est un beau jour.
Indice
La boucle des jours de la semaine doit s'arrêter dans deux cas :
Si un jour de beau temps est trouvé.
S'il n'y a plus de jours dans la semaine (pas plus de 7 itérations par semaine).
Solution
On obtient deux boucles imbriquées :
La boucle externe effectuera quoi qu'il arrive 52 itérations.
La boucle imbriquée effectuera au maximum 7 itérations, et s'arrêtera avant si on trouve un jour de beau temps.
for (let i = 1; i < 53; i++) {
// Début de la semaine i
let goodDay = false
let weekday = 1
// Tant qu'aucun beau jour n'est trouvé et que la semaine n'est pas terminée
while (!goodDay && weekday <= 7) {
goodDay = isGoodWeather()
if (goodDay) {
console.log('Je suis sorti cette semaine ' + i + ', le jour ' + weekday)
}
weekday++
}
}