Files
1ereNSI/web/js/CORRECTION.md

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>.