Boucle pour

Résolu/Fermé
lekludo Messages postés 121 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 - 22 juil. 2010 à 16:14
pampiou Messages postés 20 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 2 octobre 2013 - 22 juil. 2010 à 17:05
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

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 juil. 2010 à 16:27
à ton avis ?
0
lekludo Messages postés 121 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 1
22 juil. 2010 à 16:29
je connais franchement pas le résultat. Néanmoins je pense que le contenu de i est réinitialisée est-ce vrai?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 juil. 2010 à 16:54
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
pampiou Messages postés 20 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 2 octobre 2013 2
22 juil. 2010 à 16:33
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
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
22 juil. 2010 à 16:37
'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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
22 juil. 2010 à 16:40
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
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
Modifié par MrSlave le 22/07/2010 à 16:45
Autant pour moi.
Je crois que je me suis planté. ^^
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
22 juil. 2010 à 16:45
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
22 juil. 2010 à 16:55
pas de problème.
Figure toi qu'avant d'essayer je n'était vraiment pas sur du résultat...
0
lekludo Messages postés 121 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 14 février 2017 1
22 juil. 2010 à 16:37
merci bien ta réponse ma beaucoup servi je voulais juste savoir si i était a 11 a plus
0