Boucle pour

Résolu
lekludo Messages postés 144 Statut Membre -  
pampiou Messages postés 24 Statut Membre -
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. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    à ton avis ?
    0
  2. lekludo Messages postés 144 Statut Membre 1
     
    je connais franchement pas le résultat. Néanmoins je pense que le contenu de i est réinitialisée est-ce vrai?
    0
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      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.
      0
  3. pampiou Messages postés 24 Statut Membre 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.
    0
    1. MrSlave Messages postés 2657 Statut Membre 147
       
      '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. ^^
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
      0
    3. MrSlave Messages postés 2657 Statut Membre 147
       
      Autant pour moi.
      Je crois que je me suis planté. ^^
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      pas de problème.
      Figure toi qu'avant d'essayer je n'était vraiment pas sur du résultat...
      0
  4. lekludo Messages postés 144 Statut Membre 1
     
    merci bien ta réponse ma beaucoup servi je voulais juste savoir si i était a 11 a plus
    0