Mise au point de programmes

Lorsqu’un programme a été conçu avec AlgoTouch, il se peut qu’il ne fonctionne pas comme souhaité. En effet, la programmation est une activité complexe qui nécessite d’envisager tous les cas. Il est rare qu’un programme soit correct du premier coup. Dans cette page, nous voyons comment mettre au point un programme en commençant par visualiser son exécution puis en procédant à des modifications du code.

Déroulement de l'exécution

Il est important de pouvoir suivre les différentes étapes d’un programme. L’exécution d’un programme peut s’effectuer de différentes manières: soit en mode bloc, soit en mode ligne:

  • en mode ligne, l’utilisateur peut suivre le résultat de chaque instruction. Dans le cas d’une macro Do, le programme s’exécute depuis la première ligne jusqu’à la dernière. Dans le cas d’une macro Loop, le programme démarre sur la première ligne du bloc From puis exécute les instructions conformément au fonctionnement de la boucle. Plus précisément, il exécute successivement toutes les lignes du bloc From, puis il évalue la ou les conditions du bloc Until. Si aucune n’est vraie, il exécute successivement toutes les instructions du bloc Loop, avant d’évaluer à nouveau les conditions du bloc Until. A la sortie du bloc Until, il exécute successivement toutes les lignes du bloc Terminate.
  • en mode bloc, toutes les lignes d’un bloc sont exécutées sans interruption puis l’affichage des données est mis à jour. Ce mode permet de visualiser plus rapidement le fonctionnement d’un programme.

Exécution détaillée

Quel que soit le mode d’exécution (directe, en mode bloc ou en mode ligne), en sélectionnant ce bouton, AlgoTouch visualise toutes les modifications des données effectuées par le programme. Par exemple, le lancement d’un programme de tri sur un tableau visualisera brièvement toutes les modifications des valeurs du tableau.

Modifications d'une macro​

Bien qu’AlgoTouch n’autorise pas l’édition du texte du programme, différentes manipulations permettent de le modifier.

  • avec la brosse:
    • suppression de la ligne sélectionnée
    • suppression de toutes les lignes d’un bloc sélectionné
    • suppression de toutes les lignes d’une clause d’une alternative ( if ou else )
  • ajout de nouvelles instructions en lançant l’enregistrement pour que les actions de l’utilisateur ajoutent les instructions correspondantes.
    • après la ligne sélectionnée
    • en début du bloc sélectionné.
    • en début de clause d’une alternative

Améliorations de code

AlgoTouch facilite certaines simplifications du code en particulier dans le cas des alternatives.

Changer la condition d'une alternative

Pour ce faire, il faut définir le contexte du cas correspondant au traitement lorsque la condition est vraie. Il suffit alors de sélectionner la ligne de l’alternative et activer le menu Macro -> Changer la comparaison. Un comparateur apparait, il suffit de replacer 2 valeurs sur les plateaux, d’activer le test et de choisir la nouvelle condition.

Ajouter une clause else​

Lors de la construction du programme, si aucune instruction n’a été enregistrée dans la clause else, celle-ci n’existe plus dans le code. Si on décide de réintroduire cette clause, il suffit de sélectionner la ligne de l’alternative et d’activer le menu Macro -> Ajouter un Else. La clause else est à nouveau disponible avec un TODO à l’intérieur. On peut soit exécuter le bloc contenant l’alternative pour enregistrer les instructions de ce else, après interruption sur le TODO,soit enregistrer directement le code du else.
    if (x > 0) {
      s = s + x ;
      x = x - 1 ;
    }
    if (x > 0) {
      s = s + x ;
      x = x - 1 ;
    } else {
      // x <= 0
      // TO DO
}

Réorganiser une alternative

Lors de la construction du programme, si aucune instruction n’a été enregistrée dans le cas d’une condition vraie d’une alternative, mais qu’une clause else existe, il est utile de restructurer le code en activant le menu Macro -> restructurer l’alternative. AlgoTouch modifie le code en inversant la condition et place le code du else après le test.
    if (x <= 0) {
    }
    else {
      s = s + x ;
      x = x - 1 ;
    }
    if (x > 0) {
      s = s + x ;
      x = x - 1 ;
    }