Les boucles en VB

Les boucles en VB - VB/VBA/VBS - Programmation

Marsh Posté le 03-02-2009 à 12:20:25    

Bonjour
 
Lorsque j'étais à l'école (début des années 90), j'ai eu des cours de programmation en Basic (oui, oui j'ai bien dit Basic et pas VisualBasic);
en Pascal (Turbo Pascal version 6 si je me souviens bien) et en Cobol, malheureusement pas de C  et encore moins de C++.
 
Ici dernièrement, j'ai eu une envie de me remettre à la programmation et j'ai donc téléchargé Visual Studio 2008 Express Edition.
J'ai donc commencé par "apprendre VB" mais arrivé aux boucles "Do While" et "Do Until", je coince un peu.
 
Ce n'est pas que je ne comprends leurs fonctionnement (enfin j'espère), mais je ne vois pas la différence entre les deux.
 
Différence qui me semble bien visible en Pascal.
 
En voyant les noms "While" et "Until", je pensais qu'ils fonctionnaient comme en Pascal.
 
En Pascal, avec la boucle "While", on teste la condition au début et donc il se peut que les intructions de la boucle ne soit jamais exécutées.
Tandis qu'avec la boucle "Until", on exécute au moins une fois les instructions de la boucle et ensuite on teste la condition.
 
Mais ici en VB, le teste de la condition s'effectue au début et donc les instructions de la boucle peuvent ne pas être exécutée, quelque soit la boucle.
 
Les deux boucles, "Do While" et "Do Until", fonctionnent t'elles comme une boucle "While" en Pascal, ou est ce moi qui n'y comprend absolument plus rien ?
Dans quel cas utilise t'on l'une ou l'autre ?
En Pascal, si on sait que (dans la majorité des cas) l'on devra exécuté au moins une fois les instructions de la boucle, on utilise la "Repeat Until"
mais dans le cas contraire on utilise la "While".
 
Merci d'avance
 
Salutations
 
Fred
 

Reply

Marsh Posté le 03-02-2009 à 12:20:25   

Reply

Marsh Posté le 03-02-2009 à 13:05:27    

Pour expliquer, prenons un exemple traduit en français :
 
- Do Until EOF(f) = Faire jusqu'à ce que la fin du fichier soit atteinte.
- Do While Not EOF(f) = Faire tant que la fin du fichier n'est pas atteinte.
 
La diffférence est que la condition est inversée.  
 
A propos de l'emplacement de la condition, il existe deux cas :
 
1. Test au début
Do { While | Until } condition
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
 
2. Test à la fin
Do
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition
 
(Personnellement, je n'utilise que la boucle For car je suis certain de ne jamais avoir de boucle infinie, et je n'ai pas à me poser la question de l'emplacement du test. Au besoin, je réalise un test dans le corps de la boucle, par exemple If EOF(f) Exit For End If.)


Message édité par olivthill le 03-02-2009 à 13:06:37
Reply

Marsh Posté le 03-02-2009 à 20:26:00    

Merci olivthill
 
Je ne savais pas que l'on pouvait faire  
Do
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop { While | Until } condition  
 
J'utiliserai certainement Do While ...Loop et DO ...Loop Until par facilité, ca correspondra plus à ce que j'ai connu avec Pascal
 
Merci de m'avoir éclairer

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed