# Contrôle de Saisie et Boucles
> [!video] Vidéo explicative
> <iframe width="560" height="315" src="https://www.youtube.com/embed/lm_VGL0Tg40?si=ujdTtd7AnO9qU-aP" 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>
## Introduction
En programmation, la robustesse d'un algorithme est primordiale. Un programme interagit souvent avec des utilisateurs, et les données qu'ils fournissent (saisies) peuvent être incorrectes, incomplètes ou mal formatées. Le *contrôle de saisie* est une étape essentielle pour garantir l'intégrité des données et la bonne exécution du programme. Pour répéter des actions, comme demander une saisie jusqu'à ce qu'elle soit valide, les *boucles* sont des structures algorithmiques fondamentales.
Ce chapitre abordera les principes du contrôle de saisie et explorera les différents types de boucles, en s'appuyant sur les concepts de logique combinatoire et d'algorigrammes déjà acquis.
## 1. Le Contrôle de Saisie
> [!definition] Contrôle de Saisie
> Le contrôle de saisie est le processus de vérification des données fournies par l'utilisateur ou une source externe afin de s'assurer qu'elles respectent les critères attendus (type, format, plage de valeurs) avant leur traitement par l'algorithme.
### 1.1 Pourquoi contrôler les saisies ?
- **Prévenir les erreurs d'exécution :** Une donnée inattendue peut provoquer des plantages ou des comportements imprévisibles.
- **Assurer l'intégrité des données :** Garantir que les données traitées sont cohérentes et valides.
- **Améliorer l'expérience utilisateur :** Fournir un retour clair à l'utilisateur en cas d'erreur et lui permettre de corriger sa saisie.
- **Sécurité :** Empêcher les injections de code malveillant ou les accès non autorisés (particulièrement important dans les applications web).
### 1.2 Principes du contrôle de saisie
Le contrôle de saisie implique généralement :
1. La lecture de la donnée.
2. La vérification de la donnée à l'aide de conditions (par exemple, des structures `SI...ALORS...SINON` vues en logique combinatoire).
3. La répétition de la demande de saisie si la donnée est invalide.
> [!note] Liens avec les pré-requis
> La *logique combinatoire* est directement appliquée lors de la définition des conditions de validation (ex: "nombre entier ET entre 1 et 10"). Les *algorigrammes* permettent de visualiser ces étapes, notamment la boucle de re-saisie.
## 2. Contrôle de Saisie Robuste avec Boucles
Combiner le contrôle de saisie et les boucles permet de créer des interactions utilisateur robustes.
> [!example] Saisie d'un nombre entier positif
> ```pseudo-code
> DEBUT
> {
> nombre : ENTIER
> saisieValide : BOOLEEN
>
> saisieValide <- FAUX
> RÉPÉTER
> {
> ECRIRE "Veuillez saisir un nombre entier positif : "
> LIRE nombre
> SI (nombre > 0) ALORS
> {
> saisieValide <- VRAI
> }
> SINON
> {
> ECRIRE "Erreur : Le nombre doit être positif. Veuillez réessayer."
> }
> }
> JUSQU'À (saisieValide = VRAI)
> ECRIRE "Vous avez saisi le nombre : ", nombre
> }
> ```
> Dans cet exemple, l'utilisateur est invité à saisir un nombre. Si le nombre n'est pas positif, un message d'erreur est affiché et la boucle se répète, demandant une nouvelle saisie.
> [!warning] Boucles infinies
> Il est crucial de s'assurer que la condition d'une boucle finit par devenir fausse (pour `TANT QUE`) ou vraie (pour `RÉPÉTER JUSQU'À`). Si la condition ne change jamais de manière à terminer la boucle, on crée une *boucle infinie*, qui bloquera le programme.
## Résumé
Le *contrôle de saisie* est une pratique essentielle pour développer des algorithmes fiables et robustes, en filtrant les données utilisateur pour assurer leur validité. Les *boucles* sont les structures de contrôle qui permettent de répéter des instructions, et sont particulièrement utiles pour réitérer une demande de saisie jusqu'à ce qu'elle soit conforme.
Nous avons exploré trois types de boucles :
- **`TANT QUE`** : Répète tant qu'une condition est vraie (vérification avant exécution).
- **`POUR`** : Répète un nombre défini de fois ou pour chaque élément d'une séquence.
- **`RÉPÉTER JUSQU'À`** : Répète jusqu'à ce qu'une condition devienne vraie (exécution au moins une fois, vérification après exécution).
La maîtrise de ces concepts est fondamentale et sera appliquée dans la pratique lors de l'apprentissage des langages de programmation comme Python, où ces structures se traduisent par des mots-clés spécifiques (`while`, `for`, et des constructions équivalentes pour le `do-while`).
## 🗓️ Historique
> **Dernière mise à jour :** `26 octobre 2025`
> **Rédigé par :** [[Julien DUQUENNOY]]