Table des matières
somme = 5 + 4 + 3 + 2 + 1 = 15En fonction de la valeur de n le résultat n’est pas le même. Pour réaliser ce programme, il est nécessaire d’utiliser une nouvelle structure de programmation appelée l’itération ou la boucle.
somme vaut 0 et n vaut 5Lors de l’exécution pas à pas du programme, les variables somme et n prennent les valeurs suivantes :
somme vaut 5 et n vaut 4 somme vaut 9 et n vaut 3 somme vaut 12 et n vaut 2 somme vaut 14 et n vaut 1 somme vaut 15 et n vaut 0A la fin, la valeur de somme (15) est affichée.
somme = somme + n; n = n - 1;Ce bloc est exécuté 5 fois. Cette valeur correspond à la valeur initiale de 5. Évidemment, si cette valeur est à 3, le bloc est exécuté 3 fois. Et, enfin, si la valeur initiale de n est négative, le bloc ne s'exécute pas.
Pour créer un programme constitué d’une boucle avec AlgoTouch, il faut utiliser une structure différente du bloc Do. On utilise la commande
Macro -> Créer macro boucle
Dans la zone Instructions, on constate la création du squelette d’un programme constitué de 4 blocs. L’utilisateur va les remplir progressivement.
MacroExemple From // ... Until // ... Loop // ... Terminate
// ...
somme = somme + n; n = n - 1;
Une fois le cas général trouvé, en l’occurrence l’addition de n à somme et la soustraction de 1 à n , l’utilisateur enregistre la séquence dans la section Loop.
Il peut ensuite répéter en l’exécutant la séquence précédemment enregistrée pour vérifier son bon fonctionnement.
n == 0Sans entrer dans le détail, l’utilisateur peut choisir une condition supérieure avec :
n <= 0
Read "Read n" n ; somme = 0;Quand le programmeur est sûr de son code, il enregistre le bloc From.
Write "La valeur de somme" somme ;A ce niveau le programme est complet.
From Read n; somme = 0; Until (0>=n) Loop somme = somme + n; n = n - 1; Terminate Write "La valeur de somme" somme ;
Le programme à réaliser doit calculer le produit des nombres de 1 à n. La valeur de n est saisie par l'utilisateur du programme.
Pour n à 5 la valeur à calculer est 5*4*3*2 soit : 120.
Les variables utilisées sont :
La version de base de ce programme est dans le fichier produitBase.alg
Define Main From produit = 1 ; Read "Read n" n ; Until (n <= 1) Loop produit = produit * n ; n = n - 1 ; Terminate EndSource AlgoTouch de la solution : Produit.alg
Solution en AlgoTouch Puissance.alg
Define Puissance From Read "Read x" x ; Read "Read n" n ; exp = 1 ; Until (n <= 0) Loop exp = exp * x ; n = n - 1 ; Terminate Write "La valeur de la puissance est " exp ; EndSource Algotouch de la solution : Puissance.alg
Define PGCD From Read "x :" x ; Read "y :" y ; Until (x == y) Loop if (x < y) { y = y - x ; } else { // x >= y x = x - y ; } Terminate Write "Le PGCD est : " x ; EndSource AlgoTouch : PGCD
Certains algorithmes itératifs nécessitent une boucle avec plusieurs sorties. C’est le cas de l’algorithme qui détermine si un entier est un nombre premier. Un nombre premier est divisible uniquement par deux nombres 1 et lui-même.
Par exemple 13 est un nombre premier. Il n’est divisible ni par 2, ni par 3, ni par 5, ni par 6. Seuls 1 et 13 divisent 13. Il n’est pas utile de vérifier la divisibilité de 13 par 7 et les entiers suivants car 2 fois 7 est supérieur à 13.
Par contre 35 n’est pas un nombre premier car 35 est divisible par 5 et 7, pas uniquement pas 1 et 35.
Pour tester que 35 n’est pas un nombre premier, il faut effectuer les opérations suivantes :
Comme 35 est divisible par 5, ce n’est pas un nombre premier
Loop reste = nb % i ; if (reste != 0) { i = i + 1 ; double = i + i ; } else { // reste == 0 premier = 0 ; }Et les deux conditions d’arrêt :
Read "Read nb" nb ; i = 2 ; premier = 1 ;Et la terminaison :
Write "La valeur de premier" premier ;