mardi 5 décembre 2017

Création d'un menu

Une astuce érgonomique très répondue est la création des menus. Elle souvent utilisée lorsque le programme fait plusieurs choses (plusieurs traitements).

Pour réaliser un menu, il nous faut the structures de contrôle :
  1. Une structure Case ... of (switch en Java) : cette structure permet d'exécuter le traitement adéquat au choix effectué par l'utilisateur.
  2. Une boucle Répéter ... Jusqu'à pour garantir que l'utilisateur fera un choix valide (principe par ici).
Ainsi, le code d'un menu simple sera en Pascal :


Program Menu;

Const
 MIN = 1;
 MAX = 6;
Var 
 option : Integer;

Begin

 WriteLn('Bienvenue dans ce menu inutil :');
 WriteLn('1 - Créer un nouveau fichier');
 WriteLn('2 - Ouvrir un fichier existant');
 WriteLn('3 - Supprimer un fichier existant');
 WriteLn('4 - Créer un nouveau dossier');
 WriteLn('5 - Ouvrir un dossier existant');
 WriteLn('6 - Supprimer un dossier existant');
 WriteLn();
 
 Repeat
  WriteLn('Votre choix ?');
  ReadLn(option);
  
  Case (option) of
   1 : WriteLn('Créer un nouveau fichier');
   2 : WriteLn('Ouvrir un fichier existant');
   3 : WriteLn('Supprimer un fichier existant');
   4 : WriteLn('Créer un nouveau dossier');
   5 : WriteLn('Ouvrir un dossier existant');
   6 : WriteLn('Supprimer un dossier existant');
  else 
   WriteLn('Option invalide');
  End;
 Until ((option >= MIN) And (option <= MAX));
  
End.

 L'exécution sera :






Note : l'édition et l'exécution sont faites sous Geany (site officiel), il garde la fenêtre ouverte et vous donnera des informations sur le déroulement de l'exécution.

Garantir l'appartenance de la valeur entrée à un intervalle donné

Un problème souvent rencontré est la validation d'une valeur entrée par l'utilisateur. La forme la plus simple est de garantir l'appartenance de la valeur saisie à un intervalle donné. Par exemple, si la valeur saisie désigne un mois alors elle doit être comprise entre 1 et 12.

La solution la plus simple (sans faire recours à des bibliothèques) est l'utilisation d'une boucle de type Répéter ... Jusqu'à (Repeat ... Until) et ce pour deux raisons :

  1. Cette boucle est exécutée au moins une fois; la première lecture sera effectuée à l'intérieur de la boucle.
  2. Cette boucle garde l'utilisateur à l'intérieur jusqu'à ce qu'il fournit une valeur correcte.
Ainsi, le code suivant sera suffisant :


Program ForcerEntree;

Const
 MIN = 10;
 MAX = 100;
 
var 
 valeur : Integer;

BEGIN
 
 Repeat
  WriteLn('Faites entrer une valeur entre ', MIN, ' et ', MAX);
  ReadLn(valeur);
 Until ((valeur >= MIN) And (valeur <= MAX));
 WriteLn('Succès, vous avez saisi ', valeur);
 
END.

L'exécution sera ainsi :