|
|||||||||||||
le 06-15-2012 02:43 AM
Bonjour à tous,
Petite question : dans la mesure du possible, est-il préférable d'utiliser une boucle while ou une boucle for ?
Cordialement,
le 06-15-2012 02:50 AM
Je réponds par une question similaire : dans la mesure du possible, est-il préférable d'utiliser un couteau ou une fourchette?
boucle for, boucle while, les 2 sont des boucles, mais de type différent.
couteau, fourchette, les 2 sont des couverts, mais de type différent.
La réponse est : ça dépend de ce qu'on veux en faire...
le 06-15-2012 02:53 AM
Alors je vais poser une autre question : On a le choix entre une boucle while et une boucle for avec un terminal de condition... lequel choisir ?
le 06-15-2012 03:00 AM
Pardon, mais c'est la même question que la précédente.
La boucle for c'est pour construire ou dépiler un tableau, le break dans la boucle for c'est pour quand on dépile un tableau qu'on veut pouvoir stopper la boucle avant le nombre d'itération initialement programmé (en cas d'erreur ou autre).
La boucle while, c'est pour faire indéfiniment la même chose jusqu'à ce qu'un évènement programmé se produise.
Cela dit, en "tordant" l'outil on peut utiliser l'une ou l'autre pour presque toutes les utilisations. Maintenant pour les utilisations qui sont à mi-chemin entre les deux (les FGV par exemple) ça ne change strictement rien, c'est une histoire de goût personnel ou d'habitude.
le 06-15-2012 03:10 AM
Disons que moi j'ai un nombre limité d'itération (égal au nombre de blocs audio) et je veux pouvoir arrêter la vidéo quand je veux et le tout doit etre cadencé à 50ms (utilisation de la fonction "attendre un multiple de ms"), le mieux est donc d'utiliser une boucle For conditionnée ?
Au niveau du processeur , les 2 boucles l'utilisent à même échelle ?
06-15-2012 03:14 AM - modifié 06-15-2012 03:19 AM
Si la cadence est l'élément le plus important, pourquoi pas une timed loop?
Edit :
Une timed loop sur Windows n'est pas aussi déterministe que sur un OS RT, mais sur Windows on peut grandement améliorer le déterminisme d'une timed loop en utilisant la clock d'une carte DAQ pour cadencer la boucle, je sais pas trop comment ça se fait, mais j'ai fait des tests qui le mettait en évidence il y a 2 ou 3 ans. Donc si tu as une carte DAQ avec une clock non utilisée...
le 06-15-2012 03:19 AM
J'ai éssayé mais ce n'est pas la fonction "attendre en ms" que je veux mais "attendre un multiple de ms"... sinon ça décale la lecture audio. Sur ce même type de boucle, peut-on changer la fonction "attendre" en "attendre un multiple de " ??
06-15-2012 03:24 AM - modifié 06-15-2012 03:27 AM
C'est légèrement différent, on peut décider de ce qu'il faut faire si la boucle prend du retard (sortir et donner une erreur, attendre un multiple de, ignorer le retard).
Mais si il n'y a pas de problème de cadence dans une boucle while ou for, il est fort peu probable que ça jouera aussi avec une timed loop. L'avantage sera que si d'autre tâches viennent prendre de la ressource pendant que cette boucle tourne, "normalement" (oui... on est sous Windows...) la timed loop bénéficie d'une priorité plus élevée.
Note : le "attendre un multiple de" est très bien mais attention au piège car si le code met plus que la valeur demandée pour s'exécuter, on attend le prochain multiple et ça peut (pas forcément mais c'est possible) décaler encore plus. ![]()
le 06-15-2012 03:29 AM
Je ne dit pas que la timed loop est ce qu'il faut pour cette appli (que je ne connais pas), je dis juste que c'est un autre outils qu'il faut considérer. ![]()
le 06-15-2012 03:29 AM
Oui merci je le savais pour "attendre un multiple", mais n'ayez crainte tout va bien ![]()
Ah autre petite question je me pose :
- quelle est la différence entre un noeud de propriété qui lit une valeur et un variable locale ?
Mon Profil | Confidentialité |
Conditions d'utilisation |
Contacter NI
© 2011 National Instruments Corporation. All rights reserved. | Envoyer cette page
|
||

Envoyer cette page