Valeur (informatique) - Value (computer science)

En informatique , une valeur est la représentation d'une entité qui peut être manipulée par un programme. Les membres d'un type sont les valeurs de ce type.

La "valeur d'une variable" est donnée par le mappage correspondant dans l' environnement . Dans les langages à variables assignables , il devient nécessaire de faire la distinction entre la valeur r (ou contenu) et la valeur l (ou emplacement) d'une variable.

Dans les langages déclaratifs (de haut niveau), les valeurs doivent être référentiellement transparentes . Cela signifie que la valeur résultante est indépendante de l'emplacement de l'expression nécessaire pour calculer la valeur. Seuls le contenu de la localisation (les bits, qu'ils soient à 1 ou à 0) et leur interprétation sont significatifs.

Affectation : valeurs l et valeurs r

Certains langages utilisent l'idée de valeurs l et de valeurs r , dérivant du mode d'évaluation typique sur les côtés gauche et droit d'une déclaration d'affectation. Une valeur l fait référence à un objet qui persiste au-delà d'une seule expression. Une valeur r est une valeur temporaire qui ne persiste pas au-delà de l'expression qui l'utilise.

La notion de valeurs l et de valeurs r a été introduite par le langage de programmation combiné (CPL). Les notions dans une expression de valeur r, valeur l et valeur r/valeur l sont analogues aux modes de paramètre du paramètre d'entrée (a une valeur), du paramètre de sortie (peut être affecté) et du paramètre d'entrée/sortie (a une valeur et peut être attribué), bien que les détails techniques diffèrent selon les contextes et les langues.

Valeurs R et adresses

Dans de nombreux langages, notamment la famille C , les valeurs l ont des adresses de stockage qui sont accessibles par programme au programme en cours d'exécution (par exemple, via un opérateur d'adresse comme "&" en C/C++), ce qui signifie qu'il s'agit de variables ou de dé- références référencées à un certain emplacement mémoire. Les valeurs R peuvent être des valeurs l (voir ci-dessous) ou des valeurs non-l - un terme utilisé uniquement pour distinguer les valeurs l. Considérons l'expression C 4 + 9. Lorsqu'il est exécuté, l'ordinateur génère une valeur entière de 13, mais parce que le programme n'a pas explicitement désigné où dans l'ordinateur ce 13 est stocké, l'expression est une valeur non l. D'un autre côté, si un programme C déclare une variable x et attribue la valeur de 13 à x, alors l'expression xa une valeur de 13 et est une valeur l.

En C, le terme l-value signifiait à l'origine quelque chose qui pouvait être assigné (d'où le nom, indiquant qu'il se trouve à gauche de l'opérateur d'assignation), mais comme le mot réservé const(constante) a été ajouté à la langue, le terme est maintenant « valeur l modifiable ». En C++11, un glyphe sémantique spécial &&existe (à ne pas confondre avec l' &&opérateur utilisé pour les opérations logiques), pour indiquer l' utilisation/l'accès à l'adresse de l'expression pour le compilateur uniquement ; c'est-à-dire que l'adresse ne peut pas être récupérée à l'aide de l' &opérateur address-of pendant l' exécution du programme (voir l'utilisation de la sémantique de déplacement ).

Ce type de référence peut être appliqué à toutes les valeurs r, y compris les valeurs non-l ainsi que les valeurs l. Certains processeurs fournissent une ou plusieurs instructions qui prennent une valeur immédiate , parfois appelée « immédiate » en abrégé. Une valeur immédiate est stockée dans le cadre de l'instruction qui l'emploie, généralement pour la charger, l'ajouter ou la soustraire d'un registre. Les autres parties de l'instruction sont l' opcode et la destination. Ce dernier peut être implicite. (Une valeur non immédiate peut résider dans un registre, ou être stockée ailleurs dans la mémoire, nécessitant que l'instruction contienne une adresse directe ou indirecte [par exemple, l'adresse du registre d'index] à la valeur.)

L'expression de valeur l désigne (fait référence à) un objet. Une valeur l non modifiable est adressable, mais non assignable. Une valeur l modifiable permet de modifier et d'examiner l'objet désigné. Une valeur r est toute expression, une valeur non-l est toute expression qui n'est pas une valeur l. Un exemple est une "valeur immédiate" (regardez ci-dessous) et par conséquent non adressable.

En langage assembleur

Une valeur peut être pratiquement n'importe quel type de données par un type de données donné , par exemple une chaîne, un chiffre, une seule lettre.

Les processeurs prennent souvent en charge plus d'une taille de données immédiates, par exemple 8 ou 16 bits, en utilisant un code opération et un mnémonique uniques pour chaque variante d'instruction. Si un programmeur fournit une valeur de données qui ne s'adaptera pas, l'assembleur émet un message d'erreur "Out of range". La plupart des assembleurs permettent d'exprimer une valeur immédiate sous forme de données ASCII , décimales , hexadécimales , octales ou binaires . Ainsi, le caractère ASCII 'A'est le même que 65ou 0x41. L' ordre des octets des chaînes peut différer entre les processeurs, selon l'assembleur et l'architecture de l'ordinateur.

Remarques

Les références

Liens externes