ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...
Répondre • Page 1 sur 1

Boucle

par Raiko » 24 févr. 2015 15:40

Bonjour,

Ca fait un moment que j'essaye d'utiliser la fonction boucle sans succés.
Je voudrais lorsque "a" se produit, while condition "b" remplit result=0, quand "b" non remplit result=1, fin de boucle en attendant que l'evenement se produise à nouveau.

Voila le code que j'ai essayé:

if A THEN
WHILE B DO
RESULT=0
WEND
RESULT=1

endif

RETURN Result

:merci:

Re: Boucle

par koub » 24 févr. 2015 19:17

Salut Raiko, expliques un peu mieux ce que tu veux faire car c'est flou mais gardes en tête que ton code est exécuté à chaque clôture de bougie...

c'est le tant que la condition B est remplie qui me gène, je ne vois pas l’intérêt de la boucle, je penserai + à une imbrication de conditions :

Code : #

IF A THEN
          IF B THEN
                    Result = 0
          ELSE
                    Result = 1
          ENDIF
ENDIF

RETURN Result
+, koub.

Re: Boucle

par Raiko » 24 févr. 2015 20:43

Salut Koub,

Tu es bien sympatique de me venir une fois de plus en aide.
Voila qui devrait éclaircir, en faite je veux:

if (A[5] or A[4] or A[3] or A[2] or A[1] or A) AND B THEN
RESULT=0
ELSIF (A[5] or A[4] or A[3] or A[2] or A[1] or A) THEN
RESULT=1
ENDIF
RESULT=0

Donc je pense avoir besoin d'une boucle car dans cette exemple le choix de A[5] est arbitraire, ca pourrait etre A[n].
Une fois que result=1, la boucle doit s'arreter et reprendre quand A se produit à nouveau.

Re: Boucle

par koub » 24 févr. 2015 20:59

LoL, ok ça ne reste pas très clair, mais ça devrait ressembler à ça:

Code : #

FOR i=0 TO 5 DO
          IF A[i] AND B THEN
                    Result = 0
          ELSIF A[i] AND NOT B THEN
                    Result = 1
                    BREAK
          ENDIF
NEXT

RETURN Result
la valeur 5 pouvant être remplacée par "n", une variable qui peut prendre n'importe quelle valeur en restant un entier bien sûr...
la boucle doit s'arreter et reprendre quand A se produit à nouveau.
Dans le code ci-dessus, la boucle s’arrête et s'effectuera complètement à nouveau lorsque la clôture de la prochaine bougie sera effectuée... Si ce n'est pas ce que tu veux faire, précises ta question en donnant ton code complet... Tu ne peux pas arrêter un traitement en cours et le reprendre lorsque l'une des conditions est OK, tu peux uniquement répéter ton code à chaque clôture de bougie en attendant que toutes tes conditions soient remplies...

+, koub. :)

Re: Boucle

par Raiko » 24 févr. 2015 23:01

FOR i=0 TO 5 DO
IF A


C'est ce qu'il me fallait, mon cerveau a pas voulu intégrer ca tout seul mais avec ton exemple Koub c'est bon. :mercichinois:
Maintenant lorsque result=1 se produit (dans ce cas lorsque B ne se produit pas), est-il possible d'avoir result=0 jusqu'à ce que "A" se produise à nouveau?
(Je change pour: FOR i=1 TO 5 pour pas avoir de "A" sur i=0)
Je l'ai coder comme ca, ca fonctionne:

Code : #

FOR i=1 TO 5 DO
          IF A[i] AND B THEN
                    Result = 0
          ELSIF A[i] AND NOT B [b]AND NOT (A[i] AND NOT B[1])[/b] THEN
                    Result = 1
                    BREAK
          ENDIF
                    Result = 0
NEXT

RETURN Result
Voila, je voulais savoir s'il y avait plus simple comme code mais en faite c'est pas si compliqué 8-)

Re: Boucle

par Raiko » 24 févr. 2015 23:03

J'ai voulu mettre en gras la partie du code modifié mais ca ne fonctionne pas dans un

Code : #

code!
:lol2:

Re: Boucle

par falex » 25 févr. 2015 14:28

Petit conseil en passant : Sous prt la boucle tu évites si tu ne veux pas que ton code mette 25 minutes à s’exécuter :musique:

Re: Boucle

par koub » 25 févr. 2015 18:45

Good job Raiko, content que tu te sois dépanné... :top:

je rejoins Falex pour les boucles, évites surtout l'imbrication...

+, koub. :)

Re: Boucle

par Raiko » 26 févr. 2015 13:22

Ok, j'ai testé mon code avec une boucle simple et ca me convient. Donc comme la pertinence du code est validée, j'ai remplacé la boucle par des condtions imbriquées. Le code est donc plus long à taper (vraiment tres long :mrgreen: ) mais le calcul de l'indicateur est plus rapide :top: .
Bonne journée.

Sujets similaires
ProOrder : création d'une boucle
Fichier(s) joint(s) par Blia » 24 juin 2018 20:29 (3 Réponses)
Changer de paire à chaque itération d'une boucle for
par Matthieuw31 » 03 févr. 2020 21:22 (4 Réponses)