Vérifier les saisies
Un utilisateur peut taper n'importe quoi : un mot à la place d'un nombre, un âge de 500 ans, rien du tout. Un bon programme vérifie ce qu'il reçoit, au lieu de planter ou de calculer n'importe quoi.
Des fonctions qui répondent vrai ou faux
Une fonction de vérification pose une question et renvoie un booléen. On lui donne un nom qui commence par est ou a :
fonction estNoteValide(note)
retourne note >= 0 et note <= 20
fin fonction
affiche estNoteValide(15) // vrai
affiche estNoteValide(25) // faux
affiche estNoteValide(-3) // faux
La fonction renvoie directement le résultat de la comparaison. Elle s'utilise ensuite très naturellement dans un si :
fonction estNoteValide(note)
retourne note >= 0 et note <= 20
fin fonction
noteSaisie est un nombre
demande 'Une note sur 20 ? ' dans noteSaisie
si estNoteValide(noteSaisie) alors
affiche 'Note enregistrée.'
sinon
affiche 'Une note doit être comprise entre 0 et 20.'
fin si
Vérifier un mot de passe
Plusieurs règles à la fois : au moins 8 caractères, et au moins un chiffre. La fonction chiffres ne garde que les chiffres d'un texte : s'il n'en reste aucun, c'est que le mot de passe n'en contenait pas.
fonction estMotDePasseSolide(secret)
si longueur(secret) < 8 alors
retourne faux
fin si
si longueur(chiffres(secret)) = 0 alors
retourne faux
fin si
retourne vrai
fin fonction
affiche estMotDePasseSolide('hibou') // faux : trop court
affiche estMotDePasseSolide('hiboucoddy') // faux : pas de chiffre
affiche estMotDePasseSolide('hibou2026') // vrai
Chaque règle qui échoue renvoie faux tout de suite. Si on arrive à la dernière ligne, c'est que toutes les règles sont respectées.
Question : Que renvoie estMotDePasseSolide('abc123') ? — faux. Le mot de passe contient des chiffres, mais il ne fait que 6 caractères : la première règle échoue.
Redemander tant que c'est faux
Signaler une erreur, c'est bien ; redemander, c'est mieux. On range ce travail dans une fonction réutilisable : elle pose la question jusqu'à obtenir un nombre entre deux bornes.
fonction demanderNombre(question, mini, maxi)
reponse est un texte
valeur est un nombre
valide est un booléen vaut faux
tant que non valide
demande question dans reponse
si est_nombre(reponse) alors
valeur vaut convertir_nombre(reponse)
valide vaut valeur >= mini et valeur <= maxi
fin si
si non valide alors
affiche 'Merci de taper un nombre entre ' + mini + ' et ' + maxi + '.'
fin si
fin tant que
retourne valeur
fin fonction
age est un nombre
age vaut demanderNombre('Ton âge ? ', 3, 120)
mois est un nombre
mois vaut demanderNombre('Ton mois de naissance (1 à 12) ? ', 1, 12)
affiche 'Merci ! Tu as ' + age + ' ans et tu es né le mois ' + mois + '.'
Trois idées dans cette fonction :
- la réponse est lue dans un texte, pour pouvoir la tester avec
est_nombre sans provoquer d'erreur ; - le drapeau
valide ne passe à vrai que si la réponse est un nombre et qu'il est entre les bornes ; - les bornes sont des paramètres : la même fonction sert pour un âge, un mois, une note.
Une réponse oui ou non
fonction demanderOuiNon(question)
invite est un texte vaut question + ' (oui/non) '
reponse est un texte vaut ''
tant que reponse <> 'oui' et reponse <> 'non'
demande invite dans reponse
reponse vaut minuscules(supprime_espace(reponse))
si reponse <> 'oui' et reponse <> 'non' alors
affiche 'Réponds par oui ou par non.'
fin si
fin tant que
retourne reponse = 'oui'
fin fonction
si demanderOuiNon('Veux-tu rejouer ?') alors
affiche 'C’est reparti !'
sinon
affiche 'À bientôt.'
fin si
minuscules et supprime_espace rendent la fonction tolérante : OUI ou Oui, avec ou sans espace autour, sont acceptés. La dernière ligne renvoie vrai pour « oui » et faux pour « non ».
Quand le choix est limité à quelques réponses, choisir est encore plus sûr : l'utilisateur clique, il ne peut pas se tromper.
En résumé
- Une fonction de vérification renvoie
vrai ou faux et s'utilise dans un si. - Lire la saisie dans un texte, puis la tester avec
est_nombre, évite les erreurs. - Une boucle
tant que avec un drapeau redemande jusqu'à une réponse correcte. - Une fonction de saisie bien écrite se réutilise dans tous tes programmes.