TP – Les créneaux libres d'une salle
BTS SIO SISR 2e année – Bloc 1 – S08 – individuel
Note
But. Tu écris les fonctions qui calculent les créneaux libres d'une salle et son taux d'occupation, guidé par des tests automatiques, puis tu corriges une fonction défectueuse.
Durée : 2 h 50 (parties A à D), plus le bilan. Prérequis : cours S08 lu. Fichiers : creneaux.js (à compléter), tests.js (fourni, ne pas modifier), creneaux-bugge.js (partie D). Exécution : node tests.js.
Note
Comment ce TP fonctionne. Avant d'écrire le code, tu écris ce que tu anticipes. Les tests te disent si tu as raison.
Nom : ____________
Contraintes
- Les heures sont manipulées en minutes depuis minuit (09:30 devient 570).
- Tu ne modifies pas
tests.js. Chaque fonction fait une chose.
Partie A – Lire les tests (≈ 20 min)
Ouvre tests.js et réponds sans coder :
- Combien de réservations sont définies et quand ? ______________________
- Quels créneaux libres de 60 minutes le test attend-il entre 8 h et 18 h ? ______________________
- Pourquoi 15 h 00 – 16 h 00 n'est-il pas libre ? ______________________
Éléments de réponse
- Deux : 9 h–11 h et 14 h–15 h 30. 2.
08:00, 11:00, 12:00, 13:00, 16:00, 17:00(six créneaux). 3. La réservation 14 h–15 h 30 occupe encore la salle de 15 h 00 à 15 h 30 : le créneau 15 h–16 h chevauche cette réservation.
Partie B – Les conversions et le chevauchement (≈ 45 min)
Complète enMinutes, enTexte et chevauche. Exécute node tests.js après chaque fonction : les tests échouent tant que tout n'est pas écrit, mais le message te dit quelle assertion échoue.
J'anticipe. Pour enTexte(570), que doit renvoyer la fonction, et comment gères-tu 5 minutes (« 05 ») ? ______________________
Éléments de réponse
"09:30". Pour compléter à deux chiffres : String(valeur).padStart(2, "0").
Partie C – Créneaux libres et taux d'occupation (≈ 55 min)
Complète estLibre, creneauxLibres et tauxOccupation. Tous les tests passent (message « Tous les tests passent »).
Calcule ensuite à la main puis avec ton code : pour une salle ouverte de 8 h à 22 h (14 h) avec des réservations de 2 h, 3 h et 1 h 30, quel est le taux d'occupation ? ______________________
Éléments de réponse
2 h + 3 h + 1 h 30 = 6 h 30 = 390 min ; 14 h = 840 min ; 390 / 840 = 0,464… soit environ 46,4 %.
Partie D – Le défaut caché (≈ 40 min)
Le fichier creneaux-bugge.js contient une version de chevauche. Un agent se plaint : « le portail refuse de réserver 11 h–12 h alors que la salle est libre à 11 h, la réservation précédente finissant à 11 h ».
- Écris le test qui reproduit le problème (cas « bout à bout »).
- Localise la ligne fautive et explique la cause.
- Corrige et vérifie que le test passe.
- Écris une phrase pour le compte rendu de correction (ce qui n'allait pas, ce qui a été changé, comment c'est vérifié).
Éléments de réponse
Le test : chevauche({debut: 540, fin: 660}, {debut: 660, fin: 720}) doit valoir false. Dans la version défectueuse, <= compte comme chevauchement deux créneaux qui ne se touchent qu'en un instant. Correction : remplacer <= par < dans les deux comparaisons. Compte rendu : « Le chevauchement était évalué avec des comparaisons larges ; deux réservations bout à bout étaient refusées. Comparaisons strictes, test de régression ajouté. »
Retour en entreprise (si ta situation le permet)
Demande à ton tuteur un exemple de script ou de fonction utilisé dans le service (Bash, PowerShell, tableur). Quelle est son entrée, sa sortie ? Existe-t-il un moyen de le tester ? Anonymise tout document.
Rendu
Archive RENDU-B1A2-S08-NOM.zip : creneaux.js (tests au vert), le test ajouté en partie D et le compte rendu de correction.
Bilan de la séance
Remplis ce bilan seul, honnêtement : il sert à décider ce qu'il faut reprendre. Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise (le vocabulaire des grilles nationales d'évaluation), ou Non évalué.
| Compétence du référentiel | Ce que j'ai fait dans cette séance | Niveau |
|---|---|---|
| B1.3 – Développer la présence en ligne de l'organisation | ||
| B1.4 – Travailler en mode projet |
Note
Les codes sont ceux du référentiel.
Je sais faire, sans aide :
- Utiliser conditions, boucles et tableaux
- Écrire des fonctions courtes et testables
- Traduire une règle métier en code
- Lire un test qui échoue et corriger
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________