Les fonctions

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

Les fonctions 6m 41s

Créez des fonctions répétables, puis exécutez-les avec des paramètres variables dans Lua et dans le  Block Controller.

Transcription Vidéo

Les fonctions 6m 41s
0:08
Dans un script, une fonction est une action ou série d'actions initiée par un stimulus particulier. D'autres
0:15
langages de codage appellent cela une procédure ou une sous-routine. Jusqu'à présent, tout ce que
0:20
nous avons écrit s'est exécuté automatiquement dès le lancement du script, mais une fonction est une
0:25
action que vous définissez dans le script, et que vous pouvez ensuite exécuter quand et comme vous le voulez.
0:32
La construction d'une fonction dans Lua comprend cinq parties. Tout d'abord, vous saisissez le mot
0:37
« function » puis, si vous le souhaitez, vous pouvez donner un nom à la fonction. Si vous le faites, cela
0:43
vous permet de rappeler rapidement le même processus à plusieurs reprises et à divers endroits, plutôt
0:48
que de le réécrire à chaque fois que vous voulez l'exécuter.
0:52
Ensuite, entre parenthèses, vous incluez tous les arguments que vous voulez faire passer dans la
0:56
fonction. Vous pouvez considérer un argument comme une variable locale – c'est une chose qui va être
1:03
utilisée dans la fonction.
1:05
Ensuite, nous écrivons le corps de la fonction, qui est la liste des actions que la fonction doit effectuer, et
1:12
enfin vous clôturez la fonction avec le mot « end ».
1:16
Ici nous avons une fonction très simple nommée « f » et qui a deux arguments – x et y. Dans le corps de
1:23
cette fonction, nous imprimons le résultat de x plus y. Le mot « end » termine la fonction. Maintenant
1:30
nous pouvons lancer cette fonction rien qu’en saisissant son nom, et inclure les arguments que nous
1:34
voulons lui soumettre dans nos parenthèses.
1:37
Par exemple, si je saisis « f(1,2) », cela imprime « 3 » comme résultat. Notez que la fonction attend dans
1:44
ce cas deux arguments, donc elle renverra une erreur si je rappelle la fonction sans lui fournir toutes les
1:49
informations dont elle a besoin. Si au contraire j’ajoute ici un troisième argument, elle ne fera rien avec
1:56
cette information car elle n'a aucune instruction pour faire quelque chose avec un troisième argument.
2:01
Si cela vous semble familier, c'est parce que vous avez déjà utilisé une fonction nommée… print. La
2:07
commande print est une fonction, et tout ce que vous mettez entre parenthèses dans son unique
2:11
argument, c’est l'information que cette fonction envoie à la fenêtre de débogage.
2:19
Lorsque vous accédez à des fonctions plus avancées, il peut arriver que vous ne sachiez pas combien
2:23
d'arguments vous allez traiter. Dans ce cas, vous pouvez utiliser « trois points » à la place des
2:29
arguments, ce qui force la fonction à s'adapter au nombre d'arguments qu’elle reçoit.
2:34
À l’opposé, si votre fonction ne nécessite aucun argument, vous avez toujours besoin des parenthèses
2:39
pour compléter la structure de la fonction, mais il n'y aura tout simplement rien entre elles. Par
2:45
exemple, voyons quelques autres fonctions simples.
2:48
Voici une fonction appelée « goblue », sans argument. Le corps de la fonction change simplement le
2:54
paramètre « point-Color » d'un contrôleur particulier en « bleu » avant de se terminer. Puisque cette
3:00
fonction ne fait qu'une chose, sans variables, nous n'avons pas besoin d'informations entre parenthèses.
3:06
Ici, créons une fonction mathématique simple appelée « plus5 » Elle comprendra un argument, A. Nous
3:14
utiliserons cette fonction pour ajouter 5 à la valeur d'un contrôleur. Donc le corps de la fonction
3:19
ressemblera à ceci : nous prendrons la valeur A-point-Value reçue et la redéfinirons comme son état
3:25
actuel plus 5.
3:27
Et pour faire bonne mesure, imprimons la nouvelle valeur A-point-Value avant de clore la fonction.
3:33
Maintenant, nous pouvons exécuter cette fonction et choisir n'importe quel contrôleur comme
3:37
argument, cela ajoutera 5 à la valeur de ce contrôleur.
3:41
Vous pouvez également ajouter une commande return dans le corps de votre fonction, qui affichera à la
3:47
fin de la fonction toutes les informations que vous aurez spécifiées. Par exemple, en reprenant notre
3:52
première fonction, plutôt que d'y inclure une instruction d'impression, je vais définir la variable locale
3:58
« m » comme notre « X+Y ». Je ne peux donc plus imprimer « m » car c'est une variable locale,
4:05
inaccessible à ma commande d'impression.
4:08
Mais si j'ajoute l'expression « return m » à la fin de notre fonction, alors cela ordonne à notre fonction
4:15
de recracher cette réponse. Je peux donc maintenant choisir d'imprimer la fonction elle-même – (print
4:21
(f(1,2)), qui donne « m », lui-même envoyé à ma fenêtre de débogage.
4:28
Une dernière chose pendant que nous sommes ici côté Lua, vous avez peut-être remarqué cette petite
4:32
icône à gauche de votre fonction. Si vous cliquez dessus, toute la structure de la fonction se replie en
4:37
une seule ligne de code afin de ne pas encombrer le reste de votre écran. Vous pouvez toujours la
4:42
redévelopper pour continuer à l'éditer ou la replier à nouveau pour faciliter la lecture.
4:48
Dans le Block Controller, vous pouvez définir une fonction en allant dans la section Variables et
4:53
Fonctions. Vous y trouverez deux blocs « define function », l'un avec une option « return » et pas l'autre.
5:01
Ainsi, si vous voulez que cette fonction retourne les informations, vous pouvez ajouter cette variable à
5:06
ce stade, alors que cette fonction est un point de non-retour. JE PLAISANTE !
5:13
Bien, donnons un nom à notre fonction, et si vous voulez inclure des arguments à traiter dans cette
5:19
fonction, vous pouvez cliquer sur l'icône de roue dentée et ajouter des « inputs » dans le corps de ce
5:25
bloc. Ici, je vais ajouter deux arguments, et si je veux que cette fonction imprime leur somme, je peux
5:30
aller dans la section Système et prendre une commande Debug Print, puis prendre dans la section
5:35
Opérateurs un bloc d'addition mathématique.
5:39
Je peux prendre les arguments en haut de ce bloc de fonction pour les ajouter à son corps. Amenez
5:43
simplement votre souris sur l'argument et les blocs qui s'y rapportent s’affichent. Je vais faire glisser x et
5:50
x1 dans mon bloc arithmétique. Maintenant, pour lancer cette fonction, je peux la retrouver comme
5:55
fonction disponible dans ma liste Variables et Fonctions.
5:58
J'ai simplement besoin de remplir les deux arguments avec des informations réelles, et quand mon
6:03
script Block Controller sera lancé, il exécutera la fonction. Comme toujours, je vous encourage à
6:09
regarder le code Lua généré par ces blocs pour renforcer votre apprentissage du script. Vous pouvez voir
6:15
que la fonction est construite comme nous venons de l'apprendre, et qu'elle est ensuite exécutée en
6:19
utilisant les deux valeurs que nous avons entrées dans les sections arguments.
6:24
Dans la section suivante, nous parlerons de la création de conditions d’exécution d’une fonction comme
6:29
celle-ci. Mais d'abord, nous avons pour vous quelques exercices sur les fonctions que vous devez
6:33
effectuer dans le Cahier d'exercices Q-SYS Contrôle. Quand vous les aurez faits, passez à la vidéo suivante.