# C2-S08 — Débogage guidé

import { AssessmentGrid } from "../../src/components/AssessmentGrid";
import { Correction } from "../../src/components/Correction";
import { DownloadCard } from "../../src/components/DownloadCard";
import { ExerciseCard } from "../../src/components/ExerciseCard";
import { LearningObjectives } from "../../src/components/LearningObjectives";
import { LessonHeader } from "../../src/components/LessonHeader";
import { LessonNavigation } from "../../src/components/LessonNavigation";
import { TeacherTip } from "../../src/components/TeacherTip";

<LessonHeader
  id="C2-S08"
  title="Débogage guidé : Méthode d'investigation d'erreur"
  cycle="2"
  levels="CP, CE1, CE2"
  duration="45 minutes"
  tool="Scratch / ScratchJr"
  grouping="Binômes d'experts"
  expressPrep={{
    objective: "Appliquer la méthode des 5 étapes pour réparer un jeu en autonomie.",
    material: "Carnet du dépanneur imprimé + projet défectueux.",
    trap: "Modifier plusieurs blocs à la fois sans tester entre chaque changement.",
    timing: "10' Méthode dépanneur • 25' Audit des 3 bogues • 10' Recette",
  }}
  pdfUrl="/downloads/c2-s08-fiche-methode-debogage-v1.pdf"
/>

<LearningObjectives
  objectives={[
    "Appliquer une démarche scientifique de débogage en 5 étapes (Prédire, Tester, Localiser, Modifier une chose, Vérifier).",
    "Résoudre 3 types d'erreurs classiques (oubli d'initialisation, bloc mal emboîté, mauvaise condition).",
    "Développer la persévérance et l'analyse critique de son propre travail.",
  ]}
/>

---

## 🎒 Matériel & Préparation

- Projet modèle contenant 3 énigmes/bogues volontaires.
- Fiche de diagnostic « Carnet de santé du programme ».

---

## ⏱️ Les 5 étapes de la méthode de débogage

1. **Prédire :** Que devait faire le programme à l'origine ?
2. **Tester :** Que fait-il réellement à l'écran ?
3. **Localiser :** À quelle ligne ou à quel bloc précis le comportement dévie-t-il ?
4. **Modifier une seule chose :** Changer un seul bloc ou un seul paramètre à la fois.
5. **Vérifier :** Re-tester pour s'assurer que le bogue est corrigé sans en créer un nouveau.

---

## ⏱️ Déroulé de l'atelier

<ExerciseCard title="Mission : Réparer le jeu du labyrinthe défectueux" difficulty="Moyen">
  Le lutin traverse les murs noirs au lieu de rebondir en arrière, et le score commence à 100 au
  lieu de 0. 1. Trouver le bloc d'initialisation du score. 2. Corriger la détection de collision
  avec les murs.
</ExerciseCard>

<Correction title="Analyse des correctifs">

1. **Initialisation :**
   - _Erreur :_ `[Mettre score à 100]`
   - _Correction :_ `[Mettre score à 0]` dès le clic sur le drapeau vert.

2. **Collision avec le mur :**
   - _Erreur :_ Le bloc de recul était placé _en dehors_ de la condition de contact.
   - _Correction :_ `[Si <couleur noire touchée ?> alors [Reculer de 15 pas]]` à l'intérieur de la boucle de jeu.

</Correction>

<TeacherTip title="Règle d'or du débogage">
  Interdisez formellement d'effacer tout le script en cas d'erreur ! Le bon développeur isole la
  ligne fautive et préserve tout ce qui fonctionne déjà.
</TeacherTip>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Applique la démarche sans tout recommencer",
      withHelp: "Supprime tous les blocs pour repartir de zéro",
      autonomous: "Isole et modifie uniquement le bloc défectueux",
      transfer: "Explique l'origine du bogue à un autre binôme",
    },
    {
      label: "Vérifie la non-régression",
      withHelp: "Considère que c'est fini sans avoir re-testé",
      autonomous: "Re-teste l'ensemble du scénario après modification",
      transfer: "Rédige une note de correction sur sa fiche",
    },
  ]}
/>

---

## 📥 Téléchargements

<DownloadCard
  title="Fiche méthode : Le carnet du dépanneur informatique (C2-S08)"
  filename="c2-s08-fiche-methode-debogage-v1.pdf"
  format="pdf"
  size="1.2 KB"
  version="1.0"
  license="CC-BY-SA 4.0"
  href="/downloads/c2-s08-fiche-methode-debogage-v1.pdf"
/>


<LessonNavigation
  prevUrl="/cycle-2/c2-s07-premiere-interaction"
  prevId="C2-S07"
  prevTitle="Première interaction"
  nextUrl="/cycle-2/c2-s09-quiz-ou-jeu-simple"
  nextId="C2-S09"
  nextTitle="Quiz ou jeu simple"
  cycleUrl="/cycle-2"
  cycleTitle="Vue d'ensemble du Cycle 2"
/>
