Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Problème d’exécution de boucle for

Résolu !
Accéder à la solution

Salut à tous,

 

J’ai un petit souci qui me laisse perplexe…

Voici deux situations qui semblent normalement similaires. Il devrait se produire le même résultat.

 

for.png

while.png

Hors le cas avec la while marche et le cas avec la for non !?

 Encore plus étrange quant je mets une sonde dans la for celle-ci ne ce mets « Pas d’exécution » alors que le tableau pilote lui commande bien quelques tours.

 

Juste pour info, mais je pense que cela n’a pas d’incidence direct, je suis dans le cas d’un vi polymorphe.

 

Merci de votre aide

0 Compliments
Message 1 sur 7
5 365 Visites

Bonjour,

 

La boucle For ne s'execute pas forcement le nombre d efois que tu crois, elle s'execute le nombre de fois MINIMUM entre les autoindexation et le "terminal N". Si la boucle ne s'execute pas je pense que tu as passé un pableau vide quelque part.

 

Cordialement

Rodéric L
Certified LabVIEW Architect
Message 2 sur 7
5 362 Visites
Solution
Accepté par l'auteur du sujet cb28

Attention !   (réflexion à chaud, en 3sec)

 

Dans ta boucle FOR le nombre d'itérations est défini par :

 

la valeur sur le terminal "N"

 

ou

 

le nombre d'éléments contenus dans le plus petit de tes Tableaux d'entrée.

 

Des deux, c'est le plus petit qui pilotera ta FOR.

 

Autrement dit, si en entrée, tu as :

 

N = 20 ... et parmis tous tes Tableaux d'entrée, un qui n'a que 3 éléments,

 

ta FOR ne fera que 3 itérations.

 

Si en entrée tu as au moins un Tableau "vide" ... ta FOR ne s'exécutera pas.

 

Tes Tableaux ont-ils tous le même nombre d'éléments ...

 

égal à celui sur lequel tu prélèves ton "size of array" pour piloter N ?

 

EDIT :

désolé Rodéric, nous avons posté ensemble (je n'ai pas vu ton message avant de poster)

 

 

 

 

Message 3 sur 7
5 361 Visites

Mes tableaux n'étant pas de la même taille, j'ai mis un tableau "pilote" sur le terminal N, histoire que ça tourne comme je le souhaite.

 

Ce que je n'avais pas connaissance jusqu'alors, c'est malgré un nombre imposé sur le terminal N, en cas de tableau vide à l'entrée d’une boucle for celle-ci ne s'exécute pas.

 

Merci les gars pour la rapidité de vos réponses, vous avez vue juste tous les deux !

 

PS : je prends la réponse d'Ouadji comme solution  car elle est un peu plus détaillée...

 

 

 

0 Compliments
Message 4 sur 7
5 355 Visites

Ah oui, encore juste une question du coup, sans vouloir abuser, que ce passe-t-il excatement comme réaction en cas de « déséquilibre » des tableaux a l’entrée dans une for ou dans une while ? Comme Pierre le suggère dans sa question. (Tes Tableaux ont-ils tous le même nombre d'éléments ...)

0 Compliments
Message 5 sur 7
5 350 Visites

 

Des essais que je viens de faire je constate.

 

Pour la for :

 La boucle s’arrête d’elle même dès que l’un des éléments ce présente vide lors de l’exécution.

 

Pour la while :

Elle ignore simplement l’entrée vide et continue de s’exécuté.

 

J'ai oublié quelque chose ?

0 Compliments
Message 6 sur 7
5 341 Visites

Non c'est bien sa, avec la while tu as la valeur par défaut. 

 

En effet, Ouadji a plus détaillé, mais j'avais raison pour le tableau vide Smiley tirant la langue

 

A+ bon codage!

Rodéric L
Certified LabVIEW Architect
Message 7 sur 7
5 335 Visites