Aller au contenu

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 :

  1. Combien de réservations sont définies et quand ? ______________________
  2. Quels créneaux libres de 60 minutes le test attend-il entre 8 h et 18 h ? ______________________
  3. Pourquoi 15 h 00 – 16 h 00 n'est-il pas libre ? ______________________
Éléments de réponse
  1. 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 ».

  1. Écris le test qui reproduit le problème (cas « bout à bout »).
  2. Localise la ligne fautive et explique la cause.
  3. Corrige et vérifie que le test passe.
  4. É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 : ______________________