Créer un programme à menu
Beaucoup de programmes fonctionnent avec un menu : on choisit une action, elle s'exécute, puis le menu revient. C'est une structure à connaître par cœur : une boucle, un choix, des conditions.
Un menu simple
choisir affiche les options et range le numéro de l'option cliquée dans une variable :
choix est un nombre
affiche 'Que veux-tu faire ?'
choisir ['Dire bonjour', 'Lancer un dé', 'Donner l’heure'] dans choix
si choix = 1 alors
affiche 'Bonjour !'
sinon si choix = 2 alors
affiche 'Le dé tombe sur ' + hasard(1, 6)
sinon
affiche 'Il est ' + convertir_heure(maintenant())
fin si
Le programme exécute une action, puis se termine. Pour un vrai menu, il faut qu'il revienne.
Le menu qui revient
On place le tout dans une boucle tant que, et on ajoute une option « Quitter » qui arrête la boucle :
choix est un nombre vaut 0
tant que choix <> 4
affiche '--- Menu ---'
choisir ['Dire bonjour', 'Lancer un dé', 'Donner l’heure', 'Quitter'] dans choix
si choix = 1 alors
affiche 'Bonjour !'
sinon si choix = 2 alors
affiche 'Le dé tombe sur ' + hasard(1, 6)
sinon si choix = 3 alors
affiche 'Il est ' + convertir_heure(maintenant())
fin si
fin tant que
affiche 'Au revoir !'
La variable choix démarre à 0 pour que la boucle commence. Quand l'utilisateur choisit l'option 4, la condition choix <> 4 devient fausse et la boucle s'arrête.
Question : Que se passe-t-il si l'on oublie l'option « Quitter » dans le menu ? — La boucle ne s'arrête jamais. Sans moyen de rendre la condition fausse, la boucle tourne sans fin : il faudrait arrêter le programme à la main.
Un menu qui agit sur des données
Un menu devient utile quand ses actions modifient quelque chose. Voici une tirelire :
tirelire est un nombre vaut 0
montant est un nombre
choix est un nombre vaut 0
actions est un tableau vaut ['Déposer', 'Retirer', 'Voir le solde', 'Quitter']
tant que choix <> 4
choisir actions dans choix
si choix = 1 alors
demande 'Combien déposes-tu ? ' dans montant
tirelire ajoute montant
sinon si choix = 2 alors
demande 'Combien retires-tu ? ' dans montant
si montant > tirelire alors
affiche 'Il n’y a pas assez dans la tirelire.'
sinon
tirelire soustrait montant
fin si
sinon si choix = 3 alors
affiche 'Solde : ' + tirelire + ' €'
fin si
fin tant que
affiche 'Solde final : ' + tirelire + ' €'
Deux bonnes idées ici :
- les options sont rangées dans un tableau
actions, plus lisible qu'une longue ligne ; - avant de retirer, on vérifie que la tirelire contient assez.
Une action par procédure
Quand les actions grossissent, on range chacune dans une procédure. Le menu redevient court et lisible :
tirelire est un nombre vaut 0
procédure deposer()
montant est un nombre
demande 'Combien déposes-tu ? ' dans montant
tirelire ajoute montant
fin procédure
procédure retirer1()
montant est un nombre
demande 'Combien retires-tu ? ' dans montant
si montant > tirelire alors
affiche 'Il n’y a pas assez dans la tirelire.'
sinon
tirelire soustrait montant
fin si
fin procédure
choix est un nombre vaut 0
actions est un tableau vaut ['Déposer', 'Retirer', 'Voir le solde', 'Quitter']
tant que choix <> 4
choisir actions dans choix
si choix = 1 alors
appelle deposer()
sinon si choix = 2 alors
appelle retirer1()
sinon si choix = 3 alors
affiche 'Solde : ' + tirelire + ' €'
fin si
fin tant que
La procédure de retrait s'appelle retirer1, car retirer est déjà le nom d'une fonction de CoddyRun.
En résumé
- Un menu =
choisir, puis une suite de si ... sinon si. - Une boucle
tant que fait revenir le menu ; une option « Quitter » l'arrête. - Ranger les options dans un tableau rend le code plus lisible.
- Une procédure par action garde le menu court.