Dans de nombreux langages de programmation (dans tous ?), on est amené à grouper des instructions successives, et à considérer ce groupe comme une seule “méta”-instruction. Mais encore faut-il trouver un moyen de marquer (par des éléments du langage et/ou par des dispositions visuelles) les limites d’un tel groupe d’instructions.
Notons par exemple groupe une suite d’instructions instruction_1 ; instruction_2 ; … ; instruction_p.
Imaginons également une condition test, vraie ou fausse à un moment donné du déroulement du script.
On cherche à écrire une séquence d’instructions du genre :
|
1 2 3 |
Commencer ici… Si la condition test est vraie, alors évaluer les instructions de groupe De toutes façons, continuer là… |
Voici deux formulations possibles. La première solution est pour le moins ambiguë (est-ce qu’on évalue uniquement instruction_1 si la condition test est vraie ?). Seule la seconde solution est correcte car elle indique clairement les limites du groupe d’instructions à évaluer si la condition test est vraie.
Formulation incorrecte
|
1 2 3 4 5 6 7 |
Commencer ici… Si la condition test est vraie, alors instruction_1 instruction_2 … instruction_p De toutes façons, continuer là… |
Formulation correcte
|
1 2 3 4 5 6 7 8 9 |
Commencer ici… Si la condition test est vraie, alors Début de groupe instruction_1 instruction_2 … instruction_p Fin de groupe De toutes façons, continuer là… |
On peut aussi imaginer une séquence d’instructions du genre :
|
1 2 3 |
Commencer ici… Tant que la condition test est vraie, évaluer les instructions de groupe De toutes façons, continuer là… |
Ou encore, si var est une variable parcourant un ensemble ens de valeurs, on peut chercher à écrire :
|
1 2 3 |
Commencer ici… Pour chacune des valeurs possibles de var dans ens, évaluer les instructions de groupe De toutes façons, continuer là… |
Voici quelles seraient les formulations correctes pour traduire ces intentions :
|
1 2 3 4 5 6 7 8 9 |
Commencer ici… Tant que la condition test est vraie, alors Début de groupe instruction_1 instruction_2 … instruction_p Fin de groupe De toutes façons, continuer là… |
|
1 2 3 4 5 6 7 8 9 |
Commencer ici… Pour chacune des valeurs de var dans ens Début de groupe instruction_1 instruction_2 … instruction_p Fin de groupe De toutes façons, continuer là… |
Il faut donc un moyen non ambigu de poser les limites d’un groupe d’instructions. Dans le même temps, il est d’usage d’accentuer visuellement le groupe par une légère indentation (décalage vers la droite).
Dans les exemples précédents, instruction_1 ; … ; instruction_p peuvent également être des instructions composées, et donc contenir des groupes (des blocs) d’instructions.
Chaque instruction du programme figure donc à un certain niveau de profondeur (si on convient que le niveau initial est le niveau 0, on trouvera des instructions de niveau 1, de niveau 2, etc.). Ces niveaux sont d’autant plus faciles à identifier pour le lecteur que le programmeur aura pris soin de les marquer visuellement par des indentations progressives.
Dans la plupart des langages, ces indentations n’ont rien d’obligatoire : elles constituent un simple confort visuel. Elles peuvent varier légèrement, à l’intérieur d’un même bloc, sans conséquence pour la logique du programme.
Retour à l’accueil du cours Python/Numpy
Sommaire du chapitre 3
- Entrée au clavier (input) et affichage à l’écran (print)
- Nécessité de délimiter des blocs d’instructions
- L’importance fondamentale de l’indentation en Python
- Branchements conditionnels if…elif…else…
- Expressions conditionnelles
- Répétitions conditionnelles (while)
- Notion d’intervalle
- Répétitions inconditionnelles (boucles for)
- L’instruction pass