Algorithmique impérative/Menu
Ce problème traite de la création d'une interface graphique rudimentaire dans un environnement textuel (un terminal).
Problématique
modifierNous supposons que nous avons déclaré 3 procédures dont les identifiants sont les suivants (peu nous importe ce qu'elles font : le sujet n'est pas ici)
Procedure_A
Procedure_B
Procedure_C
Vous devez créer le programme principal permettant à l'utilisateur de choisir laquelle des trois il veut lancer. Le programme doit avoir les fonctionnalités suivantes :
- Une fois que la procédure choisie par l'utilisateur a été exécutée, le menu est de nouveau proposé.
- L'utilisateur doit pouvoir quitter le programme depuis le menu.
- Le programme doit expliquer à l'utilisateur comment utiliser le programme.
- (optionnel) on suppose que l'utilisateur est distrait et qu'il peut ne pas donner une bonne réponse. Gérez ce cas.
Première analyse
modifierVoici quelques idées directrices formant une première analyse de la problématique. Chacun de ces points seront analysés dans la section suivante.
- ...permettant à l'utilisateur de choisir... : l'utilisateur doit intervenir. Il va falloir faire intervenir un
Lire
afin qu'il puisse nous donner son choix. - ...laquelle des trois... :
- ...le menu est de nouveau proposé : il s'agit d'une répétition.
- ...quitter le programme depuis le menu : une autre possibilité. En fait, l'utilisateur aura le choix entre quatre possibilités :
A
,B
,C
ouquitter
. - ...expliquer à l'utilisateur comment utiliser le programme' : on affichera les instructions avec
Afficher
.
Analyse approfondie
modifierVoici les réflexions qu'il faut mener sur les questions clés du problèmes.
Gérer le choix de l'utilisateur
modifierNous allons représenter le choix de l'utilisateur par un entier. Finalement, l'utilisateur à quatre possibilités pour le menu (entre parenthèse : l'entier que nous allons y associer) :
- Exécuter la procédure A (1)
- Exécuter la procédure B (2)
- Exécuter la procédure C (3)
- Quitter (0)
Nous allons donc lui poser la question "Que voulez vous faire ?", il répondra par un entier en fonction duquel on fera un SÉLECTIONNER.
(optionnel) l'utilisation d'une chaîne de caractères nous permettra de contrôler l'erreur si l'utilisateur entre autre chose que 1,2,3 ou 0. Si on utilise un entier et que l'utilisateur entre "truc" il va y avoir un problème (sur une machine, le programme se bloquera...).
L'utilisateur retrouve le menu
modifierPour que l'utilisateur retombe sur le menu, il va falloir utiliser une structure itérative, mais laquelle ? Petite réflexion :
- À priori, on ne sait pas combien de fois l'utilisateur va exécuter une procédure. Cela exclut le POUR.
- REPETER ou TANTQUE ? Le menu va s'afficher au moins une fois ce qui nous laisse penser qu'un REPETER est plus approprié. De plus la situation est bien décrite par la phrase "Afficher le menu jusqu'à ce qu'il choisisse de quitter", ce qui conforme notre choix. Nous utiliserons donc un REPETER.
Solution finale
modifierAlgorithme menu (* on suppose que les procédures sont déclarées *) Procedure_A ... Procedure_B ... Procedure_C ... Variables reponse : chaîne de caractères (* entrée de l'utilisateur *) Debut Répéter Afficher("Que voulez-vous faire ? Donnez l'entier correspondant") Afficher("1 : exécuter la procédure A") Afficher("2 : exécuter la procédure B") Afficher("3 : exécuter la procédure C") Afficher("0 : quitter") Lire(reponse) Sélectionner reponse parmi 1 : Procedure_A() 2 : Procedure_B() 3 : Procedure_C() 0 : (* on ne fait rien *) * : Afficher("Merci d'entrer un code valide") Jusqu'à (reponse='0') Fin