162 lines
4.0 KiB
Markdown
162 lines
4.0 KiB
Markdown
# 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>.
|