Déclarations if/then

Q-SYS Control 101 Training (French) : Contrôle de flux

3 ) Communication simple

12m 48s

4 ) Blocs de contrôle

19m 7s

5 ) Notions de base sur les scripts

32m 5s

6 ) Contrôle de flux

34m 20s

7 ) Conclusion du Control 101

1m 43s

Description de la leçon

Déclarations if/then 9m 49s

Explorez le processus de prise de décision de l'instruction If / Then et utilisez-le pour créer des instructions conditionnelles contrôlant votre conception Q-SYS.

Transcription Vidéo

Déclarations if/then 9m 49s
0:08
Ça y est ! Nous y voilà ! Tous les commentaires et impressions, les métadonnées de l'arbre de contrôle,
0:13
les fonctions et les variables, tout cela n'était que des pièces du puzzle. Maintenant, nous allons pouvoir
0:18
en faire quelque chose.
0:20
Présentons l’instruction conditionnelle Si/Alors qui s'écrit If/Then. C'est l'élément décisionnel de base de
0:25
notre script. Si ceci est vrai, alors faites X. Si cela est vrai, alors faites Y. Si vous appuyez sur
0:32
l'accélérateur, alors la voiture avance. Si notre première prise est la bonne, alors nous n’avons pas à
0:38
revenir samedi.
0:40
Maintenant, nous avons pu avoir déjà l'impression d'aborder ce processus de prise de décision, lorsque
0:44
nous avons commencé à combiner l’EventHandler et les fonctions.
0:48
Après tout, nous avons utilisé l’EventHandler pour lancer une fonction qui a ensuite effectué sa tâche. Il
0:53
semblerait que si vous appuyez sur le bouton, alors la fonction se produit. Mais il n'y a pas réellement de
0:59
prise de décision ou d'analyse dans ce cas, car la fonction fera toujours exactement la même chose à
1:05
chaque déclenchement de l’EventHandler, que le bouton soit activé ou désactivé.
1:11
Mais maintenant, avec notre instruction If/Then, nous pouvons donner des instructions conditionnelles
1:15
qualificatives.
1:16
Le corps d'une instruction If/Then ressemble à ceci :
1:19
If qui signifie « si » [instruction qualificative]
1:22
Then qui signifie « alors » [résultat]
1:24
end qui signifie « fin »
1:26
Nous pourrions utiliser cela pour nous assurer que le résultat n'est obtenu que sous certaines
1:30
conditions. Par exemple, nous vous avons déjà vu un fader qui devenait jaune en atteignant le haut de
1:35
sa course. Nous pourrions le faire avec une instruction If/Then comme celle-ci :
1:39
Lorsque Controls-point-MisterFader-point-EventHandler est déclenché, cela lance une fonction
1:47
If Controls-point-MisterFader-point-Value est supérieure à 0
1:51
then Controls-point-MisterFader-point-Color = yellow
1:56
end (une fois pour l'instruction if/then)
1:59
puis end une deuxième fois pour la fonction.
2:02
Quand nous déplaçons le fader, son EventHandler est constamment déclenché, mais sa fonction ne
2:07
changera la couleur du contrôleur que si la valeur du contrôleur est dans la plage spécifiée.
2:11
Mais… nous n'avons encore rien prévu pour changer la couleur du fader lorsqu'il revient en dessous de
2:16
0 décibel. Vous pouvez maintenant ajouter une deuxième instruction If/Then après la première qui dit
2:25
« Si la valeur est inférieure à 0, changez la couleur en… aqua », mais il y a un moyen plus efficace de le
2:33
faire. Le corps de notre instruction If/Then peut aussi inclure un « else » qui signifie « sinon ».
2:40
« Else » nous permet de spécifier un autre résultat qui se produira si l'instruction qualificative n'est pas
2:45
respectée. Dans ce cas, nous n'avons pas besoin de cette deuxième instruction If/Then, car elle peut être
2:51
résumée par une simple instruction Else dans le corps de la première instruction If/Then.
2:57
Vous pouvez voir que cela fonctionne parfaitement : notre fader est de couleur yellow au sommet de sa
3:01
course, et aqua partout ailleurs.
3:04
Nous pouvons en fait continuer à modifier notre instruction If/Then avec un autre outil, appelé
3:09
« elseif ». Ce sont d'autres instructions qualificatives qui seront analysées, dans l'ordre, si la précédente
3:16
n'est pas respectée. Alors que notre simple instruction If/Then actuelle n'a que deux résultats possibles,
3:22
l'ajout d'elseifs peut rendre possibles un nombre illimité de résultats.
3:28
Je vais commencer simplement avec ce fader, et ajouter une troisième couleur lorsque le contrôleur est
3:34
proche du bas de sa course. J'ajouterai donc un elseif… Value est inférieure à −40, alors Color égale
3:42
« gray ». Maintenant si le contrôleur ne correspond pas à la première qualification consistant à être au-
3:48
dessus de 10, il sera vérifié s'il correspond à la deuxième : être au-dessous de −40. Si c'est le cas, il
3:55
devient gris. Sinon, alors il est ramené à la condition Else, donc à la couleur aqua.
4:00
N'oubliez pas non plus d'utiliser les variables à votre avantage. Je peux rendre cette instruction If/Then
4:05
plus facile à taper si je définis au début une variable globale en haut telle que Y = Controls-point-
4:13
MisterFader. Maintenant, je n'ai plus à taper ça à chaque fois, je peux juste utiliser Y-point-Value et Y-
4:20
point-Color, ce qui rend aussi la lecture un peu plus conviviale.
4:24
N'oubliez pas non plus qu'il s'agit d'une instruction très simple. Plusieurs choses pourraient se produire
4:29
pour chacun de vos résultats, ciblant un nombre quelconque de contrôleurs différents et leurs
4:33
nombreuses propriétés d'arbre de contrôle telles que Value, String, ou vous pourriez à la place cibler
4:39
une des méthodes d'un contrôleur, ce qui permettrait d'activer un Trigger qui pourrait être connecté à
4:45
autre chose dans votre projet comme un snapshot. Vous pouvez rendre vos résultats très compliqués
4:50
pour qu’un grand nombre de choses se produisent.
4:53
Vous pouvez également complexifier vos instructions qualificatives. Par exemple, vous pourriez spécifier
4:59
que deux choses différentes doivent être vraies avec une instruction « and », ou que l'une ou l'autre doit
5:06
satisfaire la condition avec une instruction « or ». Vous pouvez également combiner ces idées en
5:12
utilisant des parenthèses pour établir des conditions extrêmement spécifiques.
5:17
N'oubliez pas d'utiliser aussi vos outils d'impression et de commentaire. Vous pouvez ajouter une
5:22
commande Print dans le corps de votre résultat, de façon à avoir une trace de ce qui s'est passé. C'est un
5:28
excellent moyen de recueillir la preuve du bon travail de votre fonction. Et au fur et à mesure que votre
5:34
script grandit, ajoutez un commentaire pour rappeler en termes simples, à vous ou à quelqu'un d'autre,
5:39
ce que signifie chaque morceau de code.
5:42
Vous pouvez également choisir de reformater votre script en faisant référence à des fonctions dans vos
5:47
fonctions. Par exemple, cette instruction If/Then devient difficile à lire. À la place, je vais prendre tout le
5:53
résultat un et le définir comme une fonction nommée ici au début du script.
5:59
Nommons littéralement cette fonction « result1 ». Je vais ensuite ajouter « end » pour la terminer, et
6:05
puis dans l'instruction If/Then, je peux faire référence à la fonction plutôt que de taper tout cela.
6:12
Maintenant, je vais faire la même chose pour « result2 ». Je vais le couper ici et le redéfinir là au début
6:17
de mon script comme sa propre fonction et ensuite faire référence à cette fonction dans mon instruction If/Then.
6:24
Maintenant, mon instruction If/Then est beaucoup plus facile à lire, puisque j'ai remplacé ces affreuses
6:29
et longues commandes par le nom de la fonction, qui ne sera lancée que si les conditions sont remplies.
6:35
Il y a une chose que vous avez peut-être remarquée dans cette dernière fonction et dont je dois vous
6:39
avertir, c'est l'utilisation du double signe égal. Passons à un script très simple pour pouvoir nous
6:45
concentrer là-dessus. Ici, j'ai un seul bouton. Quand sa valeur est 1, on imprime « on », sinon on
6:52
imprime « off ». Le code me semble plutôt propre, mais dans la fenêtre de débogage, nous obtenons
6:58
une erreur. Pourquoi cela ?
7:00
Pour vous et pour moi, ce signe égal a un sens linguistique parfait : « Si la valeur est égale à 1, fais la
7:07
chose prévue ». Mais pour un ordinateur, un signe égal est en fait un appel à l'action. Cela lui dit de
7:13
changer une chose en une autre, alors que nous ne voulons rien changer ici ! Donc, si vous comparez
7:18
simplement deux choses, vous devez utiliser le double signe égal, qui est le symbole de l'équivalence.
7:24
En langage informatique, cela dit : « si la valeur du contrôleur est équivalente à 1 », alors faisons
7:31
quelque chose. On se trompe facilement quand on commence à écrire des instructions If, alors faites attention !
7:37
Si nous repensons aux composants de contrôle, vous vous rappelez je l'espère que nous avons accompli
7:43
des tâches simples avec les fonctions de contrôle. Il y a ici une trentaine de fonctions différentes, qui
7:49
sont essentiellement des blocs de script prédéfinis. Le bloc Logic AND, par exemple, exige que ses deux
7:56
entrées aient une valeur de 1 pour que sa sortie soit de 1.
8:01
Eh bien, c'est la même chose que cette instruction If/Then : si Controls-point-Inputs 1 et 2 sont
8:07
équivalents à 1, alors Controls-point-Outputs-point-Value est égal à 1. Sinon, la valeur est 0. Ainsi, vous
8:16
pouvez maintenant probablement voir comment ces fonctions de contrôle sont utiles pour les chemins
8:21
logiques simples, mais elles n'ont pas la personnalisation qu’offre la rédaction de votre propre script. Les
8:25
instructions qualificatives et les résultats de ces fonctions de contrôle sont gravés dans la pierre et ne
8:30
font qu'une chose, tandis qu'un script a toute la flexibilité souhaitée.
8:34
Enfin, voyons comment construire des instructions If/Then dans le Block Controller. Vous trouverez le
8:40
bloc « if » dans la catégorie « Flow Control ». La dénomination ici est If/Do, mais c'est le même concept.
8:48
Vous pouvez définir votre instruction qualificative avec l’encoche « If », et construire le résultat désiré ici
8:55
dans l’encoche « Do ».
8:57
Si vous cliquez sur l'icône de roue dentée, vous pouvez restructurer le corps de ce bloc pour inclure une
9:03
instruction « Else », et autant d'instructions « Else If » que vous le souhaitez. Comme dans un script Lua,
9:09
vous pouvez empiler plusieurs commandes dans chaque section « do », faire référence à d'autres
9:14
fonctions ou variables que vous avez définies ailleurs, ajouter plus d'opérateurs logiques dans vos
9:20
encoches « if » et « else if » pour plus de complexité, et attacher des blocs de débogage et des blocs de
9:27
commentaires pour garder tout bien organisé.
9:30
Alors, allez vous amuser un peu ! Retournez au Cahier d'exercices Q-SYS Contrôle et faites les exercices
9:35
sur les instructions If/Then, et n'hésitez pas à faire preuve de créativité et à voir ce que vous pouvez
9:40
accomplir d'autre, en incorporant tout ce que vous avez appris jusqu'ici. Puis passez à la vidéo suivante
9:45
quand vous êtes prêt.