modifications des tp, exercices, ajouts d'indications en JS, d'exemples en gloutons, 3 semaines de boulot enfin voilà
This commit is contained in:
161
web/js/CORRECTION.md
Normal file
161
web/js/CORRECTION.md
Normal file
@@ -0,0 +1,161 @@
|
||||
# Correction des exercices - JavaScript
|
||||
|
||||
---------
|
||||
|
||||
## Exercice 1 : Pair ou impair
|
||||
|
||||
### Version simple avec prompt
|
||||
|
||||
```javascript
|
||||
const nombre = parseInt(prompt("Entrez un nombre :"));
|
||||
|
||||
if (nombre % 2 === 0) {
|
||||
document.write(nombre + " est pair");
|
||||
} else {
|
||||
document.write(nombre + " est impair");
|
||||
}
|
||||
```
|
||||
|
||||
### Version avec gestion des erreurs
|
||||
|
||||
```javascript
|
||||
const saisie = prompt("Entrez un nombre :");
|
||||
const nombre = parseInt(saisie);
|
||||
|
||||
if (isNaN(nombre)) {
|
||||
document.write("Erreur : vous n'avez pas entré un nombre valide");
|
||||
} else if (nombre % 2 === 0) {
|
||||
document.write(nombre + " est pair");
|
||||
} else {
|
||||
document.write(nombre + " est impair");
|
||||
}
|
||||
```
|
||||
|
||||
**Points importants :**
|
||||
- `%` est l'opérateur modulo (reste de la division)
|
||||
- Un nombre est pair si `nombre % 2` vaut 0
|
||||
- `isNaN()` vérifie si la valeur n'est pas un nombre (Not a Number)
|
||||
- `parseInt()` convertit une chaîne en entier
|
||||
|
||||
---------
|
||||
|
||||
## Exercice 2 : Calculatrice simple
|
||||
|
||||
### Version simple
|
||||
|
||||
```javascript
|
||||
const a = parseFloat(prompt("Entrez le premier nombre :"));
|
||||
const b = parseFloat(prompt("Entrez le deuxième nombre :"));
|
||||
const operation = prompt("Quelle opération ? (+, -, *, /)");
|
||||
|
||||
let resultat;
|
||||
|
||||
if (operation === "+") {
|
||||
resultat = a + b;
|
||||
} else if (operation === "-") {
|
||||
resultat = a - b;
|
||||
} else if (operation === "*") {
|
||||
resultat = a * b;
|
||||
} else if (operation === "/") {
|
||||
if (b === 0) {
|
||||
resultat = "Erreur : division par zéro impossible";
|
||||
} else {
|
||||
resultat = a / b;
|
||||
}
|
||||
} else {
|
||||
resultat = "Opération non reconnue";
|
||||
}
|
||||
|
||||
document.write(a + " " + operation + " " + b + " = " + resultat);
|
||||
```
|
||||
|
||||
### Version avec switch
|
||||
|
||||
```javascript
|
||||
const a = parseFloat(prompt("Entrez le premier nombre :"));
|
||||
const b = parseFloat(prompt("Entrez le deuxième nombre :"));
|
||||
const operation = prompt("Quelle opération ? (+, -, *, /)");
|
||||
|
||||
let resultat;
|
||||
|
||||
switch (operation) {
|
||||
case "+":
|
||||
resultat = a + b;
|
||||
break;
|
||||
case "-":
|
||||
resultat = a - b;
|
||||
break;
|
||||
case "*":
|
||||
resultat = a * b;
|
||||
break;
|
||||
case "/":
|
||||
if (b === 0) {
|
||||
resultat = "Erreur : division par zéro";
|
||||
} else {
|
||||
resultat = a / b;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
resultat = "Opération non reconnue";
|
||||
}
|
||||
|
||||
document.write(a + " " + operation + " " + b + " = " + resultat);
|
||||
```
|
||||
|
||||
**Points importants :**
|
||||
- `parseFloat()` convertit en nombre décimal (contrairement à `parseInt()` qui donne un entier)
|
||||
- Il faut vérifier la division par zéro
|
||||
- `switch` est une alternative à plusieurs `if/else if`
|
||||
- Chaque `case` doit se terminer par `break`
|
||||
|
||||
---------
|
||||
|
||||
## Exercice 3 : FizzBuzz
|
||||
|
||||
```javascript
|
||||
for (let i = 1; i <= 100; i++) {
|
||||
if (i % 3 === 0 && i % 5 === 0) {
|
||||
document.write("FizzBuzz<br>");
|
||||
} else if (i % 3 === 0) {
|
||||
document.write("Fizz<br>");
|
||||
} else if (i % 5 === 0) {
|
||||
document.write("Buzz<br>");
|
||||
} else {
|
||||
document.write(i + "<br>");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Version alternative avec concaténation
|
||||
|
||||
```javascript
|
||||
for (let i = 1; i <= 100; i++) {
|
||||
let resultat = "";
|
||||
|
||||
if (i % 3 === 0) {
|
||||
resultat = resultat + "Fizz";
|
||||
}
|
||||
if (i % 5 === 0) {
|
||||
resultat = resultat + "Buzz";
|
||||
}
|
||||
|
||||
if (resultat === "") {
|
||||
resultat = i;
|
||||
}
|
||||
|
||||
document.write(resultat + "<br>");
|
||||
}
|
||||
```
|
||||
|
||||
**Points importants :**
|
||||
- L'ordre des conditions est important : on teste d'abord "multiple de 3 ET 5"
|
||||
- `&&` est l'opérateur ET logique
|
||||
- La version alternative évite la répétition du test "multiple de 3 ET 5"
|
||||
|
||||
---------
|
||||
|
||||
Auteur : Florian Mathieu
|
||||
|
||||
Licence CC BY NC
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>.
|
||||
Reference in New Issue
Block a user