JavaScript : Fonctions et Tableaux
Organiser son code et manipuler des collections de données
Objectifs Pédagogiques
- Déclarer des fonctions classiques et fléchées
- Comprendre les paramètres, le retour et la portée
- Créer et manipuler des tableaux (Arrays)
- Parcourir un tableau avec
foretfor...of - Combiner fonctions et tableaux pour résoudre des problèmes
- Utiliser les méthodes essentielles des tableaux
Les Fonctions
1.1 Déclaration classique
Une fonction regroupe un bloc de code réutilisable. En JavaScript, la syntaxe classique est :
function calculerTTC(prixHT, tva) { let ttc = prixHT + (prixHT * tva); return ttc; } // Appel de la fonction let prix = calculerTTC(100, 0.19); console.log(prix); // 119
Rappel
Sans return, une fonction retourne undefined. Le return arrête immédiatement l'exécution de la fonction.
Écrivez une fonction saluer(prenom) qui retourne "Bonjour, [prénom] !". Testez-la dans la console avec votre prénom.
1.2 Fonctions fléchées (Arrow Functions)
Syntaxe plus concise introduite en ES6 :
// Forme complète const calculerTTC = (prixHT, tva) => { let ttc = prixHT + (prixHT * tva); return ttc; }; // Forme raccourcie (une seule expression → return implicite) const carre = (n) => n * n; const double = (n) => n * 2; console.log(carre(5)); // 25 console.log(double(7)); // 14
Réécrivez votre fonction saluer en arrow function (forme raccourcie).
1.3 Paramètres par défaut
const creerCompte = (nom, role = "étudiant") => { return `${nom} — Rôle : ${role}`; }; console.log(creerCompte("Ahmed")); // Ahmed — Rôle : étudiant console.log(creerCompte("Fatma", "admin")); // Fatma — Rôle : admin
1.4 Portée des variables (Scope)
Une variable déclarée dans une fonction n'est pas accessible à l'extérieur :
let message = "Global"; function tester() { let secret = "Local"; console.log(message); // ✅ "Global" — accessible console.log(secret); // ✅ "Local" — accessible } tester(); console.log(message); // ✅ "Global" console.log(secret); // ❌ ReferenceError: secret is not defined
Avant d'exécuter ce code, prédisez le résultat de chaque console.log. Puis vérifiez dans la console.
Les Tableaux (Arrays)
2.1 Créer et accéder aux éléments
let notes = [12, 15, 9, 14, 17]; console.log(notes[0]); // 12 — premier élément console.log(notes[2]); // 9 — troisième élément console.log(notes.length); // 5 — nombre d'éléments console.log(notes[notes.length - 1]); // 17 — dernier élément // Modifier un élément notes[2] = 11; console.log(notes); // [12, 15, 11, 14, 17]
Attention
Les indices commencent à 0. Un tableau de 5 éléments a des indices de 0 à 4. Accéder à notes[5] retourne undefined.
Créez un tableau de 5 prénoms. Affichez le premier, le dernier, et la taille du tableau.
2.2 Méthodes essentielles
| Méthode | Action | Retourne |
|---|---|---|
push(val) |
Ajouter à la fin | Nouvelle taille |
pop() |
Retirer le dernier | Élément retiré |
unshift(val) |
Ajouter au début | Nouvelle taille |
shift() |
Retirer le premier | Élément retiré |
splice(i, n) |
Supprimer n éléments à partir de l'indice i | Éléments supprimés |
indexOf(val) |
Position d'un élément | Indice ou -1 |
includes(val) |
Vérifie la présence | true / false |
let fruits = ["pomme", "banane"]; fruits.push("orange"); // ["pomme", "banane", "orange"] fruits.unshift("fraise"); // ["fraise", "pomme", "banane", "orange"] let dernier = fruits.pop(); // dernier = "orange" let premier = fruits.shift(); // premier = "fraise" console.log(fruits); // ["pomme", "banane"] // Recherche console.log(fruits.includes("pomme")); // true console.log(fruits.indexOf("banane")); // 1 console.log(fruits.indexOf("kiwi")); // -1 (non trouvé)
Partez d'un tableau ["HTML", "CSS"]. Ajoutez "JavaScript" à la fin, puis "Python" au début. Supprimez "CSS" avec splice. Affichez le résultat.
2.3 Parcourir un tableau
let matieres = ["Math", "Info", "Gestion", "Anglais"]; // Méthode 1 : for classique (quand on a besoin de l'indice) for (let i = 0; i < matieres.length; i++) { console.log(`${i + 1}. ${matieres[i]}`); } // Méthode 2 : for...of (quand on veut juste les valeurs) for (let matiere of matieres) { console.log(matiere); }
Quelle boucle choisir ?
Utilisez for...of par défaut. Utilisez le for classique uniquement quand vous avez besoin de l'indice i (numéroter, comparer avec l'élément suivant, etc.).
Créez un tableau de 5 notes. Parcourez-le pour afficher chaque note avec son numéro : "Note 1 : 12", "Note 2 : 15", etc.
Combiner Fonctions et Tableaux
3.1 Passer un tableau en paramètre
Un tableau peut être passé comme argument à une fonction, ce qui permet de créer des outils réutilisables :
const calculerSomme = (tableau) => { let somme = 0; for (let val of tableau) { somme += val; } return somme; }; let notes = [12, 15, 9, 14]; console.log(calculerSomme(notes)); // 50
3.2 Exemple complet : Calcul de moyenne
const calculerMoyenne = (notes) => { if (notes.length === 0) return 0; let somme = 0; for (let note of notes) { somme += note; } return somme / notes.length; }; const getMention = (moyenne) => { if (moyenne >= 16) return "Très Bien"; if (moyenne >= 14) return "Bien"; if (moyenne >= 12) return "Assez Bien"; if (moyenne >= 10) return "Passable"; return "Non admis"; }; // Utilisation let mesNotes = [12, 15, 9, 14, 16, 11]; let moy = calculerMoyenne(mesNotes); console.log(`Moyenne : ${moy.toFixed(2)}`); console.log(`Mention : ${getMention(moy)}`);
toFixed(n)
La méthode toFixed(2) arrondit un nombre à 2 décimales et retourne une chaîne. Utile pour afficher des moyennes proprement.
Testez ce code avec différents tableaux de notes. Modifiez-le pour qu'il affiche aussi le nombre total de notes.
Exercices
Réalisez ces exercices dans votre fichier script.js. Créez une fonction pour chaque exercice et testez-la.
Exercice 1 Convertisseur de température
Écrivez deux fonctions :
celsiusVersFahrenheit(c)— formule :F = C × 9/5 + 32fahrenheitVersCelsius(f)— formule :C = (F − 32) × 5/9
Testez avec plusieurs valeurs et affichez les résultats formatés :
// Résultat attendu : // 0°C = 32.00°F // 100°C = 212.00°F // 98.6°F = 37.00°C
Exercice 2 Analyse complète de notes
À partir du tableau suivant, écrivez des fonctions séparées pour calculer chaque statistique :
let notes = [12, 8, 15, 6, 14, 17, 9, 11]; // Fonctions à créer : // calculerMoyenne(notes) → moyenne // trouverMax(notes) → note la plus haute // trouverMin(notes) → note la plus basse // compterReussites(notes) → nombre de notes >= 10 // Résultat attendu : // ============================ // RAPPORT DE NOTES // ============================ // Nombre de notes : 8 // Moyenne : 11.50 // Note max : 17 // Note min : 6 // Réussites : 5 / 8 // Mention : Assez Bien // ============================
Exercice 3 Recherche dans un annuaire
Écrivez une fonction rechercherEtudiant(liste, nom) qui :
- Vérifie si l'étudiant existe dans le tableau
- Retourne sa position (en commençant à 1) s'il est trouvé
- Retourne
-1s'il n'est pas trouvé
let etudiants = ["Ahmed", "Fatma", "Mohamed", "Ines", "Youssef"]; // Résultat attendu : // rechercherEtudiant(etudiants, "Fatma") → "Fatma trouvé(e) en position 2" // rechercherEtudiant(etudiants, "Ali") → "Ali non trouvé(e) dans la liste"
Exercice 4 FizzBuzz amélioré
Reprenez le FizzBuzz du TP1, mais cette fois :
- Créez une fonction
fizzBuzz(n)qui retourne"Fizz","Buzz","FizzBuzz"ou le nombre - Utilisez un tableau pour stocker tous les résultats de 1 à 30
- Affichez le tableau final avec
console.table()
// Structure attendue : const fizzBuzz = (n) => { // votre logique ici }; let resultats = []; // Remplir le tableau avec une boucle // Afficher avec console.table(resultats)
Exercice 5 Gestion d'une liste de courses
Simulez une liste de courses interactive avec un tableau et trois fonctions :
ajouterArticle(liste, article)— ajoute l'article seulement s'il n'est pas déjà présentsupprimerArticle(liste, article)— supprime l'article s'il est trouvé, sinon affiche un messageafficherListe(liste)— affiche la liste numérotée dans la console
Testez le scénario suivant :
let courses = []; ajouterArticle(courses, "Pain"); ajouterArticle(courses, "Lait"); ajouterArticle(courses, "Oeufs"); ajouterArticle(courses, "Beurre"); afficherListe(courses); // 1. Pain // 2. Lait // 3. Oeufs // 4. Beurre ajouterArticle(courses, "Pain"); // "Pain est déjà dans la liste" supprimerArticle(courses, "Lait"); supprimerArticle(courses, "Café"); // "Café n'est pas dans la liste" afficherListe(courses); // 1. Pain // 2. Oeufs // 3. Beurre
Indices
Utilisez includes() pour vérifier les doublons, indexOf() + splice() pour supprimer un élément précis.
Récapitulatif
| Concept | Syntaxe |
|---|---|
| Fonction classique | function nom(p) { return ...; } |
| Arrow function | const nom = (p) => ...; |
| Paramètre par défaut | function f(a, b = 10) { } |
| Créer un tableau | let t = [1, 2, 3]; |
| Ajouter / Retirer | push(), pop(), unshift(), shift() |
| Supprimer à une position | splice(index, count) |
| Chercher | indexOf(), includes() |
| Parcourir (avec index) | for (let i = 0; i < t.length; i++) |
| Parcourir (valeurs) | for (let el of tableau) |
| Arrondir | nombre.toFixed(n) |