CMC-Laayoune - OFPPT – Institut de CONTRÔLE CONTINU – VARIANTE
Formation 1
Module : Développement Web (JavaScript) Durée : 2h00 | Note : /40 pts
Partie I – Théorique (10 pts)
Question 1 : Quelle est la différence entre un langage compilé et un langage interprété ? Donnez
un exemple de chaque. (2 pts pts)
Question 2 : Expliquez les trois portées de variables en JavaScript (var, let, const) avec un
exemple pour chaque. (4 pts pts)
Question 3 : Qu’est-ce qu'une Promesse (Promise) en JavaScript ? Citez ses trois états possibles.
(4 pts pts)
QCM – Cochez la bonne réponse (1 pt chacune) :
N° Question A B C D
1 Quelle méthode HTTP est POST GET DELETE PUT
utilisée pour récupérer une
ressource ?
Réponse : □ A □ B □ C □ D
2 Quel opérateur compare la == != === >=
valeur ET le type en JS ?
Réponse : □ A □ B □ C □ D
3 Quelle méthode ajoute un push() pop() shift() unshift()
élément à la fin d'un tableau ?
Réponse : □ A □ B □ C □ D
4 typeof null retourne : "null" "undefined" "object" "boolean"
Réponse : □ A □ B □ C □ D
5 Quelle méthode convertit un [Link]() [Link]() [Link]() [Link]()
objet JS en chaîne JSON ?
Réponse : □ A □ B □ C □ D
Partie II – Pratique (30 pts)
Les exercices sont progressifs. Chaque exercice peut utiliser les résultats du précédent.
Exercice 1 – Variables et opérateurs (8 pts pts)
1. Déclarez les variables suivantes :
• Un entier age = 20
• Une chaîne nom = "Ali"
• Un booléen estMajeur = true
• Une constante TVA = 0.20
2. Calculez et affichez dans la console ([Link]) :
• La somme de age et 5
• La concaténation : "Bonjour " + nom
• Le résultat de : age >= 18 ? "Majeur" : "Mineur"
3. Utilisez typeof pour afficher le type de age et de nom.
Exercice 2 – Structures de contrôle (8 pts pts)
On dispose du tableau de notes suivant :
let notes = [12, 8, 17, 5, 14, 9, 11, 16, 3, 18];
1. À l'aide d'une boucle for, parcourez le tableau et affichez pour chaque note :
• "Admis" si la note >= 10, "Rattrapage" si 8 <= note < 10, sinon "Refusé"
2. Calculez et affichez la moyenne du tableau.
3. Affichez le nombre d'étudiants admis, en rattrapage et refusés.
Exercice 3 – Fonctions et objets (8 pts pts)
1. Créez un objet Etudiant avec les propriétés : nom, prenom, note, et une méthode getMention() qui
retourne :
• "Très bien" (>= 16), "Bien" (>= 14), "Assez bien" (>= 12), "Passable" (>= 10), "Insuffisant" sinon.
2. Écrivez une fonction fléchée (arrow function) trierEtudiants(tableau) qui prend un tableau d'objets Etudiant
et retourne le tableau trié par note décroissante.
3. Testez avec au moins 3 objets Etudiant et affichez les résultats triés avec leur mention.
Exercice 4 – Asynchrone & JSON – Niveau avancé (6 pts pts)
On dispose du JSON suivant représentant une liste de produits :
const jsonProduits = '[
{"id":1,"nom":"Laptop","prix":8000,"stock":5},
{"id":2,"nom":"Souris","prix":120,"stock":0},
{"id":3,"nom":"Clavier","prix":350,"stock":12}
]';
1. Parsez le JSON et stockez-le dans une variable produits.
2. Écrivez une fonction Promise getProduitDisponible(id) qui :
• Simule une attente de 1 seconde (setTimeout)
• Résout avec l'objet produit si stock > 0
• Rejette avec un message d'erreur si stock = 0 ou produit inexistant
3. Appelez getProduitDisponible() pour chaque produit en utilisant .then() et .catch().
4. Utilisez try/catch avec une expression régulière pour valider que le nom du produit ne contient que des
lettres et espaces.