Opérande
Les opérandes sont les composants individuels qui composent les Expressions en Pascal. Au départ, il peut s'agir d'objets de données individuels tels que des constantes et des variables qui sont utilisés simplement en écrivant leur valeur ou leur nom.
Ensuite, il y a la possibilité de sélectionner des sous-composants de variables en utilisant des opérations dites de sélection:
- Un élément d'un tableau est sélectionné par indexation.
Une expression d'index est donnée entre crochets après l'opérande. Le type d'une telle opérande est le type d'élément du tableau. Les tableaux multidimensionnels peuvent bien sûr être indexés plusieurs fois. Exemple:a [i], matrice [i-1, j + 1]
. - Dans le cas des variables d'Enregistrement, un champ spécifique peut être
sélectionné en spécifiant une variable et le nom du champ. Le type d'une
telle opérande est le type du champ sélectionné.
Exemple:rec.feld
. - Les variables de pointeur peuvent être déréférencées à l'aide de
l'opérateur ^. Le type d'une telle opérande est le type de base du type
pointeur. Exemple:
p^
.
Voici un exemple:
La variable dir est déclarée comme un tableau de pointeurs vers des enregistrements. Nous sélectionnons d'abord un élément de ce tableau (dir[i]). A ce moment, nous avons un pointeur. Ceci est déréférencé (dir[i]^) et nous obtenons un enregistrement. À partir de là, le nom du champ est maintenant sélectionné par (dir[i]^.Name).dir[i]^.name
Les constructeurs d'Ensembles permettent de construire des valeurs d'ensembles
à partir de la spécification de leurs éléments. Une liste d'éléments ou de
plages d'éléments est indiquée entre crochets. Non seulement les éléments
constants, mais aussi les variables et les expressions sont autorisés.
Exemples:
Les appels de fonction sont également considérés comme des opérandes. Une fonction est appelée et exécutée avec les paramètres courants spécifiés, et seule la valeur de retour est utilisée comme opérande. Exemples:[ ] { ensemble vide } [ 2, 3, 5, 7, 11, 13, 17, 19 ] { quelques nombres premiers } [ k ] { ensemble qui ne contient que k } [ 1 .. k-1 ] { Tous les éléments de 1 à k-1 } [ 'A' .. 'Z', 'a' .. 'z' ] { Lettres majuscules et minuscules }
Pour le transfert des paramètres actuels, voir Appel de procéduretangente := sin(x) / cos(x)
Les casts dits types peuvent également être utilisés en tant qu'opérandes. Ils se composent du nom du type à convertir, suivi de l'expression à convertir entre parenthèses. Le tout ressemble à appeler une fonction avec un paramètre. Exemples:
Une distinction doit être faite entre deux types de conversion de type:type punkt = record x, y: integer end; var p : punkt; l : longint; i : integer; begin p := punkt(l); i := punkt(l).x; end.
- La conversion de type de variables suppose que l'expression à convertir est une variable (éventuellement avec des opérations de sélection) et que les types source et cible occupent exactement la même quantité d'espace de stockage (ici, x et y, des integer, occupent la même place qu'un longint)
- La conversion des valeurs affecte n'importe quelle expression, mais les deux types doivent être des types ordinaux ou des pointeurs.