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.
Téléchargements et liens
 
            Déclarations if/then             
            9m 49s             
                  
