Défi final
On veut écrire un algorithme qui indique si on pourra sortir en vélo demain selon la météo du jour (niveau du soleil S, température T et niveau de pluie P) et si la personne est déjà sortie aujourd'hui. Les niveaux sont entre 0 et 100.
L'algorithme est en deux parties. D'abord il décide s'il fera beau demain puis utilise cette information pour décider de la sortie ou non le lendemain.
Question
Par défaut, il ne fera pas beau demain. Voici les conditions (il faut juste que l'une d'entre elles soit vraie) pour qu'il fasse beau :
P > 70
S > 50 et P < 30
P < 70 et T > 20
S + P < 50
T > 30
En revanche, si la somme des niveaux de soleil et de pluie est supérieure à 150, il ne fera pas beau le lendemain même si l'une des conditions ci-dessus est vraie.
Enfin, s'il fait beau demain, l'algorithme affiche « Sortie demain ». S'il ne fait pas beau, l'algorithme affiche « Sortie demain » seulement si la personne n'est pas sortie aujourd'hui. Sinon, il affiche « Pas sortie demain ».
Écrire un algorithme permettant de décider si la personne doit sortir le lendemain.
Indice
L'algorithme doit préciser les entrées qu'il reçoit, ainsi que les conditions sur ces entrées. Par exemple, une entrée nommée n qui doit être supérieure à 0 sera notée :
Entrées:
n, un entier supérieur à 0
Indice
L'algorithme devra tester chacune des conditions une par une. Vous pouvez utiliser la structure suivante pour évaluer les conditions :
Si <condition> alors:
...
FinSi
Indice
Il est utile d'utiliser une variable beauTempsDemain
qui stocke l'information du temps du lendemain et qui est modifiée par la série de conditions, avec la syntaxe suivante :
Attribuer à beauTempsDemain la valeur Vrai
ou
Attribuer à beauTempsDemain la valeur Faux
Indice
Si la somme des niveaux de soleil et de pluie est supérieur à 150, il ne fera pas beau le lendemain quoi qu'il arrive. Cette condition est donc à tester en dernier.
Solution
Algo sortie_demain
Entrées:
S, un entier entre 0 et 100
T, un entier supérieur à -273
P, un entier entre 0 et 100
SortieAujourdhui, un booléen
Attribuer à beauTempsDemain la valeur Faux
Si P > 70 alors:
Attribuer à beauTempsDemain la valeur Vrai
FinSi
Si S > 50 et T > 15 alors:
Attribuer à beauTempsDemain la valeur Vrai
FinSi
Si P < 70 et T > 20 alors:
Attribuer à beauTempsDemain la valeur Vrai
FinSi
Si S + P < 50 alors:
Attribuer à beauTempsDemain la valeur Vrai
FinSi
Si T > 30 alors:
Attribuer à beauTempsDemain la valeur Vrai
FinSi
Si S + P > 150 alors:
Attribuer à beauTempsDemain la valeur Faux
FinSi
Si beauTempsDemain alors:
Afficher "Sortie demain"
Sinon
Si non sortieAujourdhui alors:
Afficher "Sortie demain"
Sinon:
Afficher "Pas sortie demain"
Question
Voici le squelette de l'algorithme en JavaScript.
Compléter le code JavaScript de la première partie de l'algorithme.
const S = Number(prompt('Entrer le niveau de soleil actuel'))
const T = Number(prompt('Entrer la température actuelle'))
const P = Number(prompt('Entrer le niveau de pluie actuel'))
const sortieAujourdhui = prompt('Êtes-vous sorti aujourd\'hui? (O ou N)') === 'O'
// Première partie
let beauTempsDemain = false
if (P > 70) {
beauTempsDemain = true
}
if () {
}
if () {
}
if () {
}
if () {
}
if () {
}
// Deuxième partie de l'algorithme
Indice
L'opérateur « et » en Javascript s'écrit &&
.
Solution
let beauTempsDemain = false
if (P > 70) {
beauTempsDemain = true
}
if (S > 50 && T > 15) {
beauTempsDemain = true
}
if (P < 70 && T > 20) {
beauTempsDemain = true
}
if (S + P < 50) {
beauTempsDemain = true
}
if (T > 30) {
beauTempsDemain = true
}
if (S + P > 150) {
beauTempsDemain = false
}
Question
Question
Traduire la seconde partie de l'algorithme.
Indice
if () {} else {}
Indice
Pour afficher un texte on peut utiliser l'instruction :
console.log("toto")
Solution
if (beauTempsDemain){
console.log('Sortie demain')
} else {
if (sortieAujourdhui) {
console.log('Pas sortie demain')
} else {
console.log('Sortie demain')
}
}
Question
Voici les conditions météorologiques d'aujourd'hui : S = 50, T = 17, P = 38. Sachant que je suis sorti aujourd'hui, est-ce que je devrais sortir demain ?
Solution
Pas de sortie demain.