3-9 Les reports

3-9-1. Propagation des reports à l'intérieur des macros
3-9-2. Trouver un report esclave ou un report maître

3-9-3. Reports aiguilleurs

Exemple 1: Aiguiller entre plusieurs reports esclaves

Exemple 2: Aiguiller entre plusieurs reports maîtres

Un truc: Comment utiliser la souris pour sélectionner le report esclave?

 

Les reports sont des modules spéciaux, qui premettent de faire des liaisons invisibles entre opérateurs pour rendre le graphique plus clair. Il y a deux types de reports : le report maître et le report esclave.

Par exemple:

est équivalent à:

3-9-1. Propagation de reports à l'intérieur de macros

Les reports peuvent se propager à l'intérieur des macros. Par exemple:

est complètement équivalent à :

Un report maître peut être relié à plusieurs reports esclaves , sous la condition que les esclaves ont le même nom que le maître et sont au même niveau que lui, ou à l'intérieur d'une boîte intérieure.

Noter que le nom des reports peut inclure plusieurs mots, pas seulement une étiquette d'un mot. Ils peuvent donc être très explicites.

Attention : le nom des reports est sensible à la casse !

3-9-2. Trouver un report esclave ou un report maître

Pour trouver le report maître associé avec un report esclave, ou trouver les reports esclave associés à un report maître, faire seulement Majuscule-Clic sur le report : le report associé apparaît sélectionné en rouge. Si le report esclave est localisé à l'intérieur d'une macro, la macro est sélectionnée : cliquez deux fois autant de fois que nécessaire sur les modules sélectionnés jusqu'à ce que le report apparaisse.

3-9-3. Reports aiguilleurs

Le report aiguilleur est un module très spécial qui n'est relié à aucune autre boîte, mais change le nom d'un ou plusieurs reports intérieurs.

C'est un report maître classique sans connexion dont le nom est entré sur deux lignes séparées par un retour chariot : le nom du module et le nom de l'esclave. Le report aiguilleur ne doit être lié à aucune boîte.

Le " Nom du module " simplement autorise à distinguer entre un report maître aiguilleur et un autre.

Le " Nom de l'Esclave " est le nom qui doit être donné aux reports intérieurs. Chaque exemplaire du report aiguilleur sera lié implicitement au report esclave dont le nom est " Nom de l'Esclave " . Les exemples ci dessous devraient clarifier cela.

Exemple 1 : Aiguiller entre plusieurs reports esclaves

Dans ce cas le report aiguilleur se reporte à un report esclave "normal" à 2 lignes.

Supposons que l'algorithme que nous venons de programmer a deux modes de fonctionnement : en arrière et en avant (pensez à l'estimation d'une matrice du covariance par exemple). Les reports aiguilleurs autorisent à commuter entre les comportements en avant et en arrière à plusieurs endroits de l'algorithme:

Si le nom " En avant " est entré sur la deuxième ligne du report aiguilleur, alors tous les reports à 2 lignes à l'intérieur de la fenêtre ou à des niveaux inférieurs sont reliés implicitement aux reports esclaves "En avant", comme dans la figure ci-dessus.

Note : Il n'y a aucune liaison entre les reports aiguilleurs et les autres reports, mais il y a une liaison entre les reports esclaves à deux ligne et les reports maîtres classiques :

Maintenant si nous entrons le mot "En arrière" au lieu de " En avant " sur la deuxième ligne du report aiguilleur, le mot "En arrière" est écrit sur la deuxième ligne du report esclave à 2 lignes automatiquement. Donc, les connexions implicites sont faites avec les reports esclaves "En arrière" et les paramètres sont changés :

Cette capacité puissante agit comme " drapeau d'aiguillage global " dans un langage classique. Il permet de sélectionner à plusieurs pas de l'algorithme le calcul qui doit être fait, seulement en changeant le nom sur la deuxième ligne du report maître aiguilleur.

Notez que tous les calculs possibles n'ont pas besoin d'avoir le même nombre de dimensions. Dans le cas précité, le paramètre 2 est égal à un scalaire pour l'algorithme En avant, mais devient égal à un vecteur de deux éléments selon la variable t dans le cas En arrière.

Exemple 2: Aiguiller entre plusieurs reports maîtres

Dans ce cas le report aiguilleur se refère à un report maître à 2 lignes "normal".

Dans l'exemple ci dessous, l'utilisateur peut aiguiller entre deux modes pour tracer une courbe : le tracé comme un signal réel habituel, ou le tracé comme un signal complexe avec sa partie imaginaire nulle. Le choix est fait par un report aiguilleur, mais le dessin est toujours fait dans la même fenêtre graphique. Un report maître à 2 lignes transmet la fenêtre graphique à une macro de tracé ou à l'autre :

Dans le cas précité, le mot "réel " est entré dans la deuxième ligne du report aiguilleur. Ce mot est donc copié dans la deuxième ligne du report maître. En conséquence, une liaison est créé implicitement entre ce report à 2 lignes (c'est à dire, la fenêtre graphique) et le report esclave " Réel " (c'est à dire, la macro attendant un signal réel). En effet, la fenêtre Courbe montre un signal réel.

Maintenant, si nous entrons le mot " complexe " dans le report aiguilleur, il est copié dans le report maître à 2 lignes. Donc, la liaison implicite est maintenant entre la fenêtre graphique et la macro de tracé attendant un signal complexe. La fenêtre Courbe montre donc un signal complexe avec partie imaginaire nulle :

Note: Les macros >View/t et >View c/t dans le grape ci-dessus sont des macros du chapitre Sorties de la Bibliothèque standard de MUSTIG qui ont été déverrouillées et modifiées légèrement, afin que la fenêtre graphique dans laquelle elles opèrent soit transmise sur la borne du haut, au lieu d'être initialisée à l'intérieur des macros :

Macro >Visu/t

Macro >Visu C/t

Un truc : Comment utiliser la souris pour sélectionner le report esclave?

Nous faisons référence à l'exemple 1 précité pour commodité. Reportez vous aux interfaces Souris si vous n'êtes pas familier avec la construction des interfaces souris avec MUSTIG.

Au lieu de devoir écrire le nom de la méthode explicitement (En avant ou En arrière) à chaque fois que nous voulons le changer, nous aimerions être capable de le changer seulement en cliquant sur une boîte de choix avec la souris. Pour cela, nous avons seulement à inclure le report maître aiguilleur dans un module d'interface souris "Vecteur ->Scalaire ". Ce dernier se trouve dans la Bibliothèque MUSTIG standard dans les Utilites / Interfaces Souris / Vector - >Scalaire.

Nous allons chercher le module de la Bibliothèque et modifions son contenu comme montré ci-dessous:

Maintenant nous devons seulement remplacer le report maître aiguilleur dans notre exemple par ce module souris :

Chaque fois que l'utilisateur clique sur " En avant " ou " En arrière " sur le module Vecteur - >Scalaire, le choix est encadré par une ligne noire mince. Le nom des reports esclaves est modifié en conséquence et les paramètres de l'algorithme sont mis à leur valeur correcte.

Nous pouvons créer aussi une macro à partir du programme précité (voyez Créer une macro), et un tableau de bord associé (voyez Comment créer un tableau de bord) dans lequel nous allons chercher, par exemple, le module d'interface souris pour choisir la méthode, et la valeur des paramètres 1 et 2. Le résultat pourrait ressembler à ceci :

Le choix de la méthode peut être fait directement à partir du tableau de bord qui utilise la souris, la valeur des paramètres est changée automatiquement et est affichée.