Aller au contenu

Structures de contrôle

1. Objectif du cours

Comprendre et manipuler les structures de contrôle fondamentales en PHP (tests conditionnels, branches alternatives, switch) pour prendre des décisions et piloter le flux d'exécution. S'exercer à formaliser des situations en pseudo-code et à vérifier le comportement via des exécutions simples.

2. Notions et définitions essentielles

  • Expression littérale : ligne de calcul contenant des variables (ex. : 3 + a = 4).
  • Expression booléenne : expression évaluée à True ou False (résultat des comparaisons).
  • Test conditionnel : opération qui compare des éléments pour obtenir un booléen et exécuter des actions selon le résultat.
  • Logigramme : schéma représentant flux et choix (rectangles = actions, losanges = tests, ovales = début/fin).

3. Fonctionnement et principes

  • Un test conditionnel évalue une expression booléenne ; si elle est True, on exécute les actions associées.
  • If / else : structure binaire ; else est optionnel et s'exécute si la condition est False.
  • Else if (sinon si) : chaîne de tests séquentiels permettant plusieurs nuances (plusieurs conditions évaluées dans l'ordre).
  • Switch / case : aiguillage basé sur l'égalité d'un unique élément testé face à plusieurs valeurs ; l'exécution peut « tomber » d'un case au suivant si on ne l'arrête pas.
  • Break (dans switch) : stoppe l'exécution du switch après le case correspondant pour éviter l'exécution des cases suivants.
  • Default : cas de secours exécuté si aucun case ne correspond ; utile pour gérer les entrées imprévues (ex. lettres accentuées non reconnues).
  • Boucles (for, while) : répétition d'actions ; while s'exécute tant que la condition est True, for répète un nombre déterminé d'itérations.

4. Commandes et manipulations

Regroupe les éléments PHP réellement présentés dans le document (exemples et exercices) avec rôle succinct :

  • var_dump(...) — Affiche le type et la valeur d'une expression (utile pour voir bool true/false).
  • readline(prompt) — Demande une saisie utilisateur depuis la console et renvoie la chaîne entrée.
  • echo ... — Affiche du texte dans la console.
  • if (condition) { ... } else { ... } / else if (condition) { ... } — Structures conditionnelles pour exécuter des blocs selon des tests.
  • switch (expression) { case valeur: ...; break; ... default: ... } — Aiguillage sur l'égalité d'une expression ; case correspond à une valeur ; break termine le switch ; default gère les cas non prévus.
  • for(init; condition; incr) { ... } — Répète un bloc un nombre déterminé d'itérations (ex. parcourir les lettres d'un mot).
  • while(condition) { ... } — Répète tant que la condition est True (ex. boucle principale du jeu du pendu).

5. Sécurité et bonnes pratiques

  • Toujours prévoir un cas par défaut (default) pour gérer les entrées inattendues et éviter des comportements non gérés.
  • Penser à stopper un switch (break) quand on ne veut pas de « fall-through » ; oublier break peut produire des actions non voulues.
  • Concevoir un code lisible : limiter les else if successifs si trop nombreux, documenter la logique et utiliser un logigramme pour les cas complexes.
  • Tester les entrées utilisateur et considérer les limites pratiques (ex. majuscules/minuscules, lettres accentuées non reconnues).
  • Effectuer des tests fonctionnels systématiques (exécuter pour chaque valeur attendue et pour des valeurs imprévues).

6. Points essentiels à retenir pour le TSSR

  • Les expressions booléennes sont centrales : elles déterminent l'exécution conditionnelle (True/False).
  • If permet une alternative binaire ; else fournit le cas complémentaire.
  • Else if sert à chaîner des tests pour couvrir plusieurs intervalles ou catégories.
  • Switch est adapté quand on compare un même élément à plusieurs valeurs exactes ; il simplifie certains aiguillages.
  • Sans arrêt, un switch exécute les actions de tous les cases suivants (comportement de « chute ») — prévoir l'arrêt si nécessaire.
  • Default est indispensable pour couvrir les cas imprévus (sécurité logique).
  • Boucles (for/while) servent à parcourir des structures (ex. lettres d'un mot) et à reprendre des étapes jusqu'à une condition d'arrêt.
  • Les commandes d'entrée/sortie (readline, echo) permettent d'interagir et de vérifier les comportements dans la console.
  • Var_dump est utile pour déboguer et vérifier le type/valeur des expressions booléennes.
  • Restez méthodique : conceptualisez d'abord (logigramme), puis implémentez et testez.

7. Tableau récapitulatif

Critère If … else if … else Switch / case
Usage conseillé Tests variés, comparaisons inégales (<, >, ==, etc.) Comparaison d'un seul élément avec plusieurs valeurs exactes
Type de comparaison Divers opérateurs (>, <, ==, ...) Test d'égalité uniquement
Comportement après un cas satisfait Exécute uniquement le bloc correspondant Exécution continue des cases suivants sauf si on arrête
Mécanisme d'arrêt Implicite (on n'exécute qu'un bloc) Nécessité d'un arrêt explicite pour éviter la chute
Gestion des imprévus else final default (cas par défaut)

8. Vérifications pratiques

  • Var_dump : vérifier en console qu'une expression booléenne renvoie bien bool(true) ou bool(false).
  • Switch avec/without stop : exécuter un switch sans break pour observer la chute (plusieurs messages) puis avec break pour confirmer qu'un seul case s'affiche.
  • Default : tester des entrées non prévues (ex. lettres accentuées) et constater que la clause par défaut s'exécute.
  • Jeu du pendu (exercice) : vérifier que mot_a_completer se complète quand une lettre correcte est saisie, que essais_restants diminue uniquement pour lettres absentes, et que l'exécution affiche « Bravo » ou « Pendu » selon le résultat.
  • Exécutions de démonstration : lancer les scripts pour chaque valeur testée (ex. températures, nombres, choix) et vérifier que les messages affichés correspondent aux attentes (messages montrés dans les captures/consoles du cours).

9. Flashcards Anki

Qu'est-ce qu'une expression littérale ? :: Une ligne de calcul contenant des variables (ex. 3 + a = 4). Qu'est-ce qu'une expression booléenne ? :: Une expression évaluée à True ou False. Quel opérateur est cité pour tester l'égalité ? :: == Que fait var_dump en PHP ? :: Affiche le type et la valeur d'une expression. Quel mot-clé PHP correspond à "si" ? :: if À quoi sert la clause else ? :: Exécuter des actions si la condition du if est False. Quand utilise-t-on else if ? :: Pour enchaîner plusieurs tests conditionnels séquentiels. Dans quel cas le switch est-il conseillé ? :: Quand on compare un unique élément à plusieurs valeurs distinctes. Quel est le rôle de break dans un switch ? :: Terminer l'exécution du switch pour éviter d'exécuter les cases suivants. Quel mot-clé fournit un cas par défaut dans un switch ? :: default