Dernière modification le 20 avril 2022
Il est possible d’enregistrer plusieurs conditions de sortie. Normalement, la nouvelle condition sera placée à la dernière place. Les conditions sont évaluées en séquence, comme l’opérateur || (ou logique) en langage C. Si la première condition est vraie, la boucle s’arrête, sinon, la seconde condition est évaluée, si elle vraie, la boucle s’arrête, sinon la condition suivante est évaluée etc. On constate donc que toutes les conditions de sortie ne sont pas testées puisque lorsqu’une condition est vraie, les autres sont ignorées. Donc, l’ordre dans lequel sont placées les conditions de sortie a de l’importance.
Dans une boucle parcourant les valeurs d’un tableau a avec un index i, il y a au moins une condition de sortie associée au dépassement du tableau. Il est important que la condition sur i soit examinée en premier afin d’éviter une erreur de débordement de tableau sur le test de a[i]!
Si la première condition de sortie porte sur le test d’une valeur du tableau et la seconde sur le débordement possible de l’indice du tableau, on obtient les conditions de sortie suivantes :
a[i] == max i >= a.length
Si au moment de l’évaluation du bloc Until, la valeur de i vaut a.length, la première condition est évaluée et crée une erreur d’exécution puisque a[a.length] n’existe pas.
Si toutefois une première condition de sortie portant sur l’accès à un élément de tableau a été définie et qu’une seconde condition de sortie devant tester la validité de l’indice est ajoutée, AlgoTouch replace automatiquement la condition sur l’indice avant la condition sur l’accès au tableau. Les conditions portant sur les variables index seront placées en premier. Par exemple s’il existe déjà la condition :
a[i] == max
et que l’on ajoute la condition
i >= a.length
les conditions de sorties seront réordonnées ainsi :
i >= a.length a[i] == max