Fonctions polymorphes

Aide LabVIEW 2014

Date d'édition : June 2014

Numéro de référence : 371361L-0114

»Afficher les infos sur le produit
Télécharger l'aide (Windows uniquement)

Le polymorphisme est la capacité qu'ont les VIs et les fonctions de s'adapter automatiquement aux différents types de données en entrée. Les fonctions sont polymorphes à des degrés variables : aucune, certaines ou toutes leurs sorties peuvent être polymorphes. Certaines entrées de fonctions acceptent des valeurs numériques ou booléennes. Certaines acceptent des valeurs numériques ou des chaînes. Certaines acceptent non seulement les valeurs numériques scalaires mais aussi les tableaux de valeurs numériques, les clusters de valeurs numériques, les tableaux de clusters de valeurs numériques, et ainsi de suite. Certaines acceptent uniquement des tableaux à une seule dimension, même si les éléments de tableau peuvent être de n'importe quel type. Certaines fonctions acceptent tous les types de données y compris les valeurs numériques complexes. Vous pouvez aussi créer et utiliser des unités polymorphes.

Conversion numérique

Vous pouvez convertir toute représentation numérique en toute autre représentation numérique. Lorsque vous câblez plusieurs entrées numériques de représentations différentes à une fonction, la fonction renvoie habituellement les données dans la représentation la plus grande ou la plus large. Les fonctions contraignent les petites représentations dans la représentation la plus large avant l'exécution et LabVIEW place un point de coercition sur le terminal où la conversion a lieu.

Certaines fonctions, telles que Diviser, Sinus et Cosinus, produisent des sorties nombre flottant par défaut. Si vous câblez des entiers à leurs entrées, ces fonctions convertissent ces entiers en nombres à virgule flottante double précision avant d'effectuer le calcul. Cependant, vous pouvez configurer la plupart des fonctions numériques pour qu'elles renvoient le type de données que vous spécifiez.

Pour représenter une quantité scalaire de type flottant, il est recommandé d'utiliser des nombres à virgule flottante double précision. Les nombres à virgule flottante simple précision ne font gagner que peu de temps d'exécution, sinon pas du tout, et ils sont davantage sujets au débordement. Les bibliothèques d'analyse, par exemple, utilisent des nombres à virgule flottante double précision. N'utilisez les flottants à précision étendue que lorsque cela est nécessaire. Les performances et la précision de l'arithmétique de type précision étendue varient suivant les plates-formes.

Pour représenter des entiers, il est habituellement préférable d'utiliser un entier 32 bits signé.

Si vous câblez une sortie à une destination dont la représentation numérique est différente, LabVIEW convertit les données en fonction des règles suivantes :

  • Nombre entier signé ou non signé en nombre flottant — LabVIEW convertit les données en la valeur la plus proche possible. Cette conversion est exacte lorsque le nombre à virgule flottante est plus précis que le nombre entier. Si le nombre entier est plus précis que le nombre à virgule flottante, LabVIEW maintient la précision autant que possible dans la conversion.
  • Nombre à virgule flottante en entier signé ou en entier non signé — LabVIEW fait passer les valeurs hors gamme à la valeur minimale ou à la valeur maximale de l'entier. La plupart des objets entiers, comme le terminal d'itération d'une boucle For, arrondissent les flottants. LabVIEW arrondit la partie fractionnaire de 0,5 à l'entier pair le plus proche. Ainsi, LabVIEW arrondit 6,5 à 6 plutôt qu'à 7.
  • LabVIEW traite les énums comme des entiers non signés — Par exemple, si vous convertissez –1, un nombre à virgule flottante, en énum, LabVIEW contraint la valeur dans la gamme de l'énum. Si la gamme de l'énum va de 0 à 25, LabVIEW convertit la valeur à 0.
  • Entier à entier — LabVIEW ne fait pas passer les valeurs hors gamme à la valeur minimale ou à la valeur maximale de l'entier. Si la source est plus petite que la destination, LabVIEW étend le signe d'une source signée et place des zéros dans les bits supplémentaires d'une source non signée. Si la source est plus grande que la destination, LabVIEW copie uniquement les bits de poids faible de la valeur.
  • Entier, nombre à virgule flottante ou à virgule fixe en nombre à virgule fixe — LabVIEW contraint les valeurs qui se trouvent en dehors de la gamme désirée du nombre à virgule fixe pour qu'elles soient entre les valeurs maximale et minimale du nombre à virgule fixe.

Polymorphisme pour les fonctions numériques

Les fonctions arithmétiques utilisent des données en entrée numériques. À quelques exceptions près, mentionnées dans les descriptions des fonctions, la sortie par défaut a la même représentation numérique que l'entrée ou, si les entrées ont des représentations différentes, que la plus grande des entrées. Par exemple, si vous ajoutez un entier 8 bits et un entier 16 bits, la sortie par défaut est un entier 16 bits. Si vous configurez la sortie d'une fonction numérique, les paramètres que vous spécifiez sont utilisés à la place du comportement par défaut.

Les fonctions arithmétiques peuvent être utilisées avec des nombres, des tableaux de nombres, des clusters de nombres, des tableaux de clusters de nombres, des nombres complexes, et ainsi de suite. Le type de données autorisé peut être défini de manière formelle et récursive comme suit :

Type numérique = scalaire numérique OU tableau [type numérique] OU cluster [types numériques]

Les scalaires numériques peuvent être des nombres à virgule flottante, des entiers ou des nombres complexes à virgule flottante. LabVIEW ne vous permet pas d'utiliser des tableaux de tableaux.

Les tableaux peuvent avoir n'importe quel nombre de dimensions, lesquelles peuvent être de toute taille. Les clusters peuvent avoir n'importe quel nombre d'éléments. Le type de sortie des fonctions a la même représentation numérique que le type d'entrée. En ce qui concerne les fonctions à une seule entrée, les fonctions traitent chaque élément du tableau ou du cluster.

Avec les fonctions à deux entrées, vous pouvez utiliser les combinaisons d'entrées suivantes :

  • Similaire — Les deux entrées ont la même structure et la sortie a la même structure que les entrées.
  • Un scalaire — Une des entrées est un scalaire numérique, l'autre est un tableau ou un cluster, et la sortie est un tableau ou un cluster.
  • Tableau de — Une des entrées est un tableau numérique, l'autre est le type numérique même, et la sortie est un tableau.

Dans le cas d'entrées similaires, LabVIEW exécute la fonction sur chaque élément des structures. Ainsi, LabVIEW peut ajouter deux tableaux élément par élément. Les deux tableaux doivent être de la même dimension. Si vous ajoutez des tableaux dont les nombres d'éléments diffèrent, la sortie de l'addition aura le même nombre d'éléments que la plus petite entrée. Les clusters doivent avoir le même nombre d'éléments, et les éléments doivent tous être du même type.

Pour les opérations impliquant un scalaire et un tableau ou un cluster, LabVIEW exécute la fonction sur le scalaire et sur les éléments respectifs de la structure. Ainsi, LabVIEW peut soustraire un nombre de tous les éléments d'un tableau, sans tenir compte de la dimension du tableau.

Pour les opérations impliquant un type numérique et un tableau de ce type, LabVIEW exécute la fonction sur chaque élément du tableau. Ainsi, un graphe est un tableau de points et un point est un cluster de deux types numériques, x et y. Pour décaler un graphe de cinq unités dans la direction de x et de huit unités dans la direction de y, vous pouvez ajouter le point (5,8) au graphe.

L'illustration suivante montre les combinaisons polymorphes possibles pour la fonction Additionner.

Polymorphisme pour les fonctions booléennes

Les fonctions logiques acceptent les données en entrée booléennes et numériques, ainsi que les clusters d'erreur. Si l'entrée est numérique, LabVIEW effectue l'opération en fonction des bits. Si l'entrée est un entier, la sortie a la même représentation. Si l'entrée est un nombre à virgule flottante, LabVIEW l'arrondit à un entier 32 bits, et la sortie est un entier 32 bits. Si l'entrée est un cluster d'erreur, LabVIEW ne passe que la valeur Vrai ou Faux du paramètre état du cluster d'erreur au terminal d'entrée.

Les fonctions logiques traitent les tableaux de nombres ou de valeurs booléennes, les clusters de nombres ou de valeurs booléennes, les tableaux de clusters de nombres ou de valeurs booléennes, et ainsi de suite.

Le type de données autorisé peut être défini de manière formelle et récursive comme suit :

Type logique = scalaire booléen OU scalaire numérique OU tableau [type logique] OU cluster [types logiques]

exceptés les nombres complexes et les tableaux de tableaux qui ne sont pas autorisés.

Les fonctions logiques à deux entrées peuvent avoir les mêmes combinaisons d'entrée que les fonctions arithmétiques. Cependant, les opérations de base des fonctions logiques ne peuvent s'effectuer qu'entre deux valeurs booléennes ou deux nombres. Ainsi, vous ne pouvez pas avoir un ET entre une valeur booléenne et un nombre. L'illustration suivante présente des combinaisons de valeurs booléennes pour la fonction ET.

Polymorphisme pour les fonctions de tableaux

La plupart des fonctions de tableau acceptent les tableaux à n dimensions de tout type. Cependant, les diagrammes de câblage des descriptions des fonctions affichent les tableaux numériques comme type de données par défaut.

Polymorphisme pour les fonctions de chaîne

Les fonctions Longueur d'une chaîne, En majuscules, En minuscules, Inverser une chaîne et Rotation dans une chaîne acceptent les chaînes, les clusters et les tableaux de chaînes, et les tableaux de clusters. Les fonctions En majuscules et En minuscules acceptent aussi les nombres, les clusters de nombres et les tableaux de nombres, en les interprétant comme des caractères de code ASCII. Les entrées de largeur et de précision doivent être scalaires.

Polymorphisme pour les fonctions de conversion de chaînes

Les fonctions Chemin en chaîne et Chaîne en chemin sont polymorphes. Par conséquent, elles traitent les valeurs scalaires, les tableaux de scalaires, les clusters de scalaires, les tableaux de clusters de scalaires, et ainsi de suite. La sortie a la même composition que l'entrée, mais elle est du nouveau type.

Polymorphisme pour les fonctions Chaîne en nombre supplémentaires

Les fonctions Nombre en chaîne décimale, Nombre en chaîne hexadécimale, Nombre en chaîne octale, Nombre en chaîne au format ingénieur, Nombre en chaîne fractionnaire et Nombre en chaîne exponentielle acceptent les clusters et les tableaux de nombres et produisent des clusters et des tableaux de chaînes. Les fonctions Chaîne décimale en nombre, Chaîne hexadécimale en nombre, Chaîne octale en nombre et Chaîne Fract/Exp en nombre acceptent les clusters et les tableaux de chaînes et produisent des clusters et des tableaux de nombres. Les entrées de largeur et de précision doivent être scalaires.

Polymorphisme pour les fonctions de cluster

Les fonctions Assembler et Désassembler n'affichent pas le type de données de leurs terminaux d'entrée et de sortie tant que vous ne câblez pas d'objets à ces terminaux. Lorsque vous les câblez, ces terminaux ont une apparence similaire à celle des types de données des terminaux de la commande ou de l'indicateur de face-avant correspondants.

Polymorphisme pour les fonctions de comparaison

Les fonctions Comparaison Égaux ?, Différents ? et Sélectionner utilisent des entrées de tout type, mais les entrées de chaque fonction doivent être du même type.

Les fonctions Supérieur ou Égal ?, Inférieur ou Égal ?, Inférieur ?, Supérieur ?, Max. et min. et Dans la gamme ? acceptent des entrées de tout type sauf les complexes, les chemins et les refnums, tant que les entrées sont du même type. Vous pouvez comparer des nombres, des chaînes, des valeurs booléennes, des tableaux de chaînes, des clusters de nombres, des clusters de chaînes, et ainsi de suite. Cependant, vous ne pouvez pas comparer un nombre à une chaîne, ou une chaîne à une valeur booléenne, et ainsi de suite.

Les fonctions qui comparent des valeurs à zéro acceptent les scalaires numériques, les clusters et les tableaux de nombres. Ces fonctions sortent des valeurs booléennes de même structure de données que l'entrée.

La fonction Pas un nombre/chemin/refnum accepte les mêmes types d'entrée que les fonctions qui comparent des valeurs à zéro. Cette fonction accepte aussi les chemins et les refnums. La fonction Pas un nombre/chemin/refnum ? sort des valeurs booléennes de même structure de données que l'entrée.

Les fonctions Chiffre décimal ?, Chiffre hexa ?, Chiffre octal ?, Imprimable ? et Espace blanc ? acceptent une chaîne scalaire ou un nombre en entrée, des clusters de chaînes ou des nombres non complexes, des tableaux de chaînes ou des nombres non complexes, et ainsi de suite. La sortie se compose de valeurs booléennes de même structure de données que l'entrée.

La fonction Chemin/Chaîne vide ? accepte un chemin, une chaîne scalaire, des clusters de chaînes, des tableaux de chaînes, et ainsi de suite. La sortie se compose de valeurs booléennes de même structure de données que l'entrée.

Vous pouvez utiliser les fonctions Égaux ?, Différents ?, Pas un nombre/chemin/refnum ?, Chemin/Chaîne vide ? et Sélectionner avec des chemins et des refnums, mais aucune autre fonction de comparaison n'accepte les chemins et les refnums comme entrées.

Les fonctions de comparaison qui utilisent des tableaux et des clusters produisent habituellement des tableaux et des clusters de booléens de même structure. Si vous voulez que la fonction renvoie une seule valeur booléenne, cliquez avec le bouton droit sur la fonction et sélectionnez Mode de comparaison»Comparer des ensembles dans le menu local pour comparer des ensembles.

Polymorphisme pour les fonctions logarithmiques

Les fonctions logarithmiques acceptent des données numériques en entrée. Si l'entrée est un entier, la sortie est un flottant double précision. Sinon, la sortie a la même représentation numérique que l'entrée.

Ces fonctions traitent les nombres, les tableaux de nombres, les clusters de nombres, les tableaux de clusters de nombres, les nombres complexes, et ainsi de suite. Le type de données autorisé peut être défini de manière formelle et récursive comme suit :

Type numérique = scalaire numérique OU tableau [type numérique] OU cluster [types numériques]

mais les tableaux de tableaux ne sont pas autorisés.

Les tableaux peuvent être de toute taille et peuvent comporter n'importe quel nombre de dimensions. Les clusters peuvent avoir n'importe quel nombre d'éléments. Le type de sortie est de la même représentation numérique que l'entrée, et les fonctions s'exécutent sur chaque élément du cluster ou du tableau. Les combinaisons suivantes sont autorisées pour les types d'entrée des fonctions logarithmiques à deux entrées :

  • Similaire — Les deux entrées ont la même structure et la sortie a la même structure que les entrées.
  • Un scalaire — L'une des entrées est un scalaire numérique, l'autre est un tableau ou un cluster numérique, et la sortie est un tableau ou un cluster.

CET ARTICLE VOUS A-T-IL ÉTÉ UTILE ?

Pas utile