# Indentations
---
## Algorithme verbeux
```pseudocode
DEBUT
REPETER 3 FOIS
avancer de 100
tourner à droite de 120 degrés
FIN
FIN
```
```pseudocode
DEBUT
REPETER 3 FOIS
avancer de 100
FIN
tourner à droite de 120 degrés
FIN
```
La différence est facile à comprendre.
---
* Dans le cas précédent, les blocs sont très explicites. On écrit notamment le mot **fin**. C'est un peu lourd.
* La plupart des langages utilisent les accolades
```c[1-3]
for (i = 1; i < 11; ++i){
printf("%d ", i);
}
```
Python repose entièrement sur les indentations (marge en début de ligne)
---
### Ouverture de block
Quand un élément de structure comme `for`, `if`, `else`, `while`... demande l'ouverture d'un bloc, la ligne **doit** terminer par `:`
```python[1-3]
tot = 0
for i in range(10): # : annonce le début de bloc
tot += i # indentation plus grande
```
La première ligne du bloc a une indentation plus grande
---
### fermeture du bloc
Quand le bloc se referme, on doit revenir à une indentations inférieure déjà rencontrée avant.
```python[1-5]
tot = 0
for i in range(10):
if i%2 == 0:
tot += i
print(tot) # indentation diminue : fin de bloc
```
En ligne 5, l'indentation est moindre qu'en 4. On a donc fermé un bloc. Comme la ligne 5 a la même indentation que `for` en ligne 2, alors on a même fermé 2 blocs (le `for` et le `if`)
---
### Exemple de fermeture fausse
```python[1-5]
tot = 0
for i in range(10):
if i%2 == 0:
tot += i
print(tot) # indentation diminue mais tombe mal
```
À la ligne 5, l'indentation a diminué. On a donc fermé un bloc. Mais le mot `print` n'est aligné avec rien. C'est faux.
Python renverra `Indentation Error`.