Boucle pour

Résolu
Bonjour,

je suis un novice en programmation. J'ai un petit problème. considérons l'algorithme suivant
pour i allant de 0 à 10 faire
afficher(i);
finpour
quel est le contenu de la variable i après exécution de la boucle? 0 ou 10? merci d'avance

4 réponses

  1. je connais franchement pas le résultat. Néanmoins je pense que le contenu de i est réinitialisée est-ce vrai?
    1. Contributeur
      pourquoi serait il réinitialisé ?
      En plus, là, on parle algorithme. Contrairement à ce que disent les autres, i ne vaut pas forcément 11, ça dépend de la manière de faire la boucle.
      En C++, un variable peut être propre à une boucle, donc elle n'a pas de valeur à la sortie de la boucle.
  2. Bonjour,

    Ni l'un ni l'autre en fait. Je m'explique.
    Ton i varie de 0 à 10 dans ta boucle, ce sont tes valeurs extrêmes. Lorsque tu parcours la boucle la première fois, i vaut 0. A la fin, la programme fait automatiquement i=i(d'avant)+1 puis recommence la boucle. Au final, quand i = 10, tu réalises la boucle puis i=i+1 donc i vaut 11. Le programme compare alors la valeur de i avec les valeurs extrêmes que tu as choisies. 11 étant plus grand que 10, tu sors de la boucle et tu continues le programme.
    Ta boucle sera en VB :

    For i=0 to 10
    'lignes d'instruction
    Next
    'A partir de là, i=11

    J'espère avoir répondu à ta question. A bientôt.
    1. 'A partir de là, i=11

      Euh ... si tu affiches i, il vaudra bien 10.
      Je crois que je comprend ce que tu veux dire, mais pas vraiment ta façon de le dire. ^^
    2. Modérateur
      Un petit test pour vérifier cela :
      Sub test()
      Dim i As Integer
      For i = 0 To 10
      Range("A" & i + 1).Value = i
      Next
      MsgBox i
      End Sub

      La MsgBox est bien située après la boucle et indiques...........

      11
      CQFD
    3. Autant pour moi.
      Je crois que je me suis planté. ^^
    4. Modérateur
      tu parles du : Range("A" & i + 1).Value? Rien à voir... Ca n'est pas cette ligne de code qui incrémente i . L'exemple était mal donné. Prends celui-ci, il n'y a pas de + 1 et on obtient bien 11 à la fin :
      Sub test()
      Dim i As Integer
      For i = 0 To 10
      MsgBox i
      Next
      MsgBox i
      End Sub
    5. Modérateur
      pas de problème.
      Figure toi qu'avant d'essayer je n'était vraiment pas sur du résultat...
  3. merci bien ta réponse ma beaucoup servi je voulais juste savoir si i était a 11 a plus