# C4-S07 — Blocs personnalisés

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";
import { WatchOut } from "../../src/components/WatchOut";

<LessonHeader
  id="C4-S07"
  title="Blocs personnalisés : Procédures, modularité et paramètres d'entrée"
  cycle="4"
  levels="5e, 4e, 3e"
  duration="55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Créer une procédure réutilisable avec paramètres d'entrée (taille, vitesse, répétitions).",
    material: "Exemple de tracé de figures géométriques modulaires.",
    trap: "Confondre le paramètre formel et la variable globale de même nom.",
    timing: "15' Définition de bloc • 25' Modularité logicielle • 15' Bilan",
  }}
  pdfUrl="/downloads/c4-s07-fiche-blocs-personnalises-v1.pdf"
/>

<LearningObjectives
  objectives={[
    "Créer un bloc personnalisé (procédure / sous-programme) dans la palette rouge/rose `Mes Blocs`.",
    "Ajouter des paramètres d'entrée numériques ou textuels (arguments) pour rendre le bloc polyvalent.",
    "Appliquer le principe DRY (Don't Repeat Yourself) en factorisant le code dupliqué.",
  ]}
/>

---

## 🎒 Matériel & Préparation

- Projet de dessin ou de déplacement contenant plusieurs scripts identiques dupliqués.

---

## ⏱️ Déroulé de la séance

### 1. Pourquoi créer ses propres blocs ? (10 min)

Quand on doit faire sauter un personnage à 5 endroits différents du jeu, recopier 5 fois les mêmes 6 blocs alourdit le code.  
On crée un bloc `Sauter avec hauteur (H) et vitesse (V)`.

### 2. Atelier pratique : La fabrique de polygones paramétrés (30 min)

<ExerciseCard title="Mission : Le bloc personnalisé DessinerPolygone" difficulty="Moyen">
  1. Aller dans **Mes Blocs** → Créer un bloc `TracerPolygone (NbCotes) (Longueur)`. 2. Définir le
  comportement sous le bloc chapeau `définir TracerPolygone`. 3. Appeler ce bloc pour tracer une
  maison composée d'un carré de 80 pas et d'un toit triangulaire de 80 pas.
</ExerciseCard>

<Correction title="Architecture du bloc avec paramètres">

```text
// Définition de la procédure avec paramètres
définir TracerPolygone (NbCotes) (Longueur)
stylo en position d'écriture
répéter (NbCotes) fois
    avancer de (Longueur) pas
    tourner droite de ((360) / (NbCotes)) degrés
relever le stylo

// Script principal (Appel de procédures modulaires)
[quand le drapeau vert est cliqué]
effacer tout
aller à x: (-40) y: (-50)
s'orienter à 90

// 1. La façade carrée (4 côtés de 80 pas)
TracerPolygone (4) (80)

// 2. Le toit triangulaire (3 côtés de 80 pas)
aller à x: (-40) y: (30)
s'orienter à 30
TracerPolygone (3) (80)
```

</Correction>

### 3. Option avancée : « Exécuter sans rafraîchissement d'écran » (15 min)

Cocher cette option permet d'exécuter un calcul lourd ou un tracé complexe instantanément (en 1 seule image par seconde) sans attendre l'animation visuelle.

<TeacherTip title="Lien avec les fonctions en mathématiques et Python">
  Insistez sur la notion d'argument d'entrée : `f(x)`. Le bloc personnalisé prépare directement la
  structure `def ma_fonction(parametre):` en Python.
</TeacherTip>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Crée et définit un bloc personnalisé",
      withHelp: "Copie-colle les scripts manuellement sans créer de bloc",
      autonomous: "Factorise le code redondant dans une procédure propre",
      transfer: "Ajoute 2 paramètres d'entrée (taille et couleur)",
    },
    {
      label: "Comprend la séparation Définition vs Appel",
      withHelp: "Confond le bloc de définition et le bloc d'appel",
      autonomous: "Définit le bloc une seule fois et l'appelle à plusieurs reprises",
      transfer: "Utilise l'exécution sans rafraîchissement d'écran pour optimiser le rendu",
    },
  ]}
/>

---

## 📥 Téléchargements

<DownloadCard
  title="Fiche blocs personnalisés et modularité (C4-S07)"
  filename="c4-s07-fiche-blocs-personnalises-v1.pdf"
  format="pdf"
  size="1.2 KB"
  version="1.0"
  license="CC-BY-SA 4.0"
  href="/downloads/c4-s07-fiche-blocs-personnalises-v1.pdf"
/>


<LessonNavigation
  prevUrl="/cycle-4/c4-s06-recherche-et-statistiques"
  prevId="C4-S06"
  prevTitle="Statistiques et calculs"
  nextUrl="/cycle-4/c4-s08-clones"
  nextId="C4-S08"
  nextTitle="Clones"
  cycleUrl="/cycle-4"
  cycleTitle="Vue d'ensemble du Cycle 4"
/>
