# Indentation en Algorithmique
## Introduction
L'indentation est un concept fondamental en programmation et en algorithmique. Elle consiste à décaler le texte d'un certain nombre d'espaces ou de tabulations par rapport à la marge gauche. Son rôle principal est d'améliorer la lisibilité du code et de refléter visuellement la structure logique des algorithmes. Une indentation correcte est cruciale pour comprendre le flux d'exécution et pour maintenir un code propre et maintenable.
> [!video] Vidéo explicative
> <iframe width="560" height="315" src="https://www.youtube.com/embed/Me6cuD92WNk?si=IJRZKWCTc2DUB8tR" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
## 1. Qu'est-ce que l'Indentation ?
> [!definition] Définition
> L'**indentation** est la pratique de décaler le texte d'un bloc de code par rapport à la marge gauche, afin de représenter visuellement sa structure hiérarchique et sa dépendance logique vis-à-vis des blocs de code englobants.
L'indentation est le reflet textuel des blocs logiques que vous avez pu identifier lors de la création d'algorigrammes ou de l'application de la logique combinatoire. Chaque niveau d'indentation correspond à un niveau d'imbrication logique.
## 2. Importance de l'Indentation
L'indentation n'est pas qu'une question d'esthétique ; elle a un impact direct sur la qualité et la compréhension d'un algorithme ou d'un programme.
> [!note] Remarque : Pourquoi indenter ?
> - **Lisibilité accrue :** Facilite la lecture et la compréhension rapide de la logique de l'algorithme.
> - **Structure visuelle :** Met en évidence les blocs de code (boucles, conditions, fonctions) et leurs relations d'imbrication.
> - **Détection d'erreurs :** Aide à repérer les erreurs logiques où une instruction n'est pas dans le bloc attendu.
> - **Maintenance et collaboration :** Un code bien indenté est plus facile à maintenir et à partager avec d'autres développeurs.
## 3. Règles et Conventions d'Indentation
Bien qu'il n'y ait pas de norme universelle unique, certaines conventions sont largement adoptées :
- **Consistance :** Utilisez toujours le même caractère (espaces ou tabulations) et le même nombre pour chaque niveau d'indentation.
- **Profondeur :** Une profondeur d'indentation de 2 ou 4 espaces est la plus courante.
- **Déclencheur :** Chaque fois qu'un nouveau bloc logique est ouvert (après un `SI`, `POUR`, `TANT QUE`, etc.), le code à l'intérieur de ce bloc doit être indenté d'un niveau supplémentaire.
> [!tip] Astuce : Espaces ou Tabulations ?
> La plupart des environnements de développement et des langages de programmation permettent de configurer si une tabulation est convertie en un certain nombre d'espaces. Pour une consistance maximale, l'utilisation d'**espaces** est souvent préférée car elle garantit que le code s'affiche de la même manière quel que soit l'éditeur utilisé.
## 4. Indentation et Structures Algorithmiques
L'indentation est essentielle pour représenter clairement les structures de contrôle.
### 4.1. Structures Conditionnelles (SI...ALORS...SINON)
```pseudo-code
SI condition ALORS
{
// Bloc d'instructions exécutées si la condition est VRAIE
Instruction_A
Instruction_B
}
SINON
{
// Bloc d'instructions exécutées si la condition est FAUSSE
Instruction_C
}
```
> [!example] Exemple : Indentation d'une condition
> ```pseudo-code
> LIRE age
> SI age >= 18 ALORS
> {
> AFFICHER "Vous êtes majeur."
> // Cette instruction est dans le bloc SI
> AFFICHER "Vous pouvez voter."
> }
> SINON
> {
> AFFICHER "Vous êtes mineur."
> }
> ```
### 4.2. Structures Répétitives (POUR, TANT QUE)
```pseudo-code
POUR chaque_element DANS collection FAIRE
{
// Bloc d'instructions exécutées pour chaque élément
Traitement_element
}
TANT QUE condition VRAIE FAIRE
{
// Bloc d'instructions exécutées tant que la condition est VRAIE
Instruction_iterative
Mise_a_jour_condition
}
```
> [!example] Exemple : Indentation d'une boucle
> ```pseudo-code
> POUR i DE 1 A 5 FAIRE
> {
> AFFICHER "Itération numéro : " + i
> // Cette instruction est dans le bloc POUR
> SI i MOD 2 == 0 ALORS
> {
> AFFICHER " (i est pair)" // Double indentation pour la condition imbriquée
> }
> }
> ```
## 5. Conséquences d'une Mauvaise Indentation
Une indentation incorrecte peut entraîner des problèmes de compréhension et, dans certains langages de programmation, des erreurs syntaxiques.
> [!warning] Attention : Risques d'une mauvaise indentation
> - **Code illisible :** Rend l'algorithme difficile à suivre et à déboguer.
> - **Erreurs logiques :** Peut masquer des erreurs où des instructions sont exécutées en dehors du bloc prévu.
> - **Erreurs syntaxiques (langages spécifiques) :** Des langages comme **Python** utilisent l'indentation comme partie intégrante de leur syntaxe pour définir les blocs de code. Une mauvaise indentation y est une erreur fatale.
## 6. Lien avec les Langages de Programmation (Python)
Alors que de nombreux langages (C, Java, JavaScript) utilisent des délimiteurs explicites (comme les accolades `{}`) pour définir les blocs de code, l'indentation y est une convention de style. Cependant, pour des langages comme **Python**, l'indentation est **obligatoire** et fait partie de la syntaxe même du langage.
> [!note] Préparation à Python
> En Python, l'absence d'indentation ou une indentation incohérente entraînera une erreur de compilation (`IndentationError`). Cela souligne l'importance de maîtriser cette compétence dès l'apprentissage de l'algorithmique.
## Résumé
L'indentation est une pratique essentielle en algorithmique et en programmation. Elle assure la lisibilité, reflète la structure logique des blocs de code et aide à prévenir les erreurs. Maîtriser une indentation correcte et cohérente est une compétence fondamentale pour tout développeur, d'autant plus que certains langages comme Python l'érigent en règle syntaxique. Une bonne indentation est le signe d'un code bien pensé et professionnel.
## 🗓️ Historique
> **Dernière mise à jour :** `26 octobre 2025`
> **Rédigé par :** [[Julien DUQUENNOY]]