9.4.12 Les affectations infixées : => := =<
:= => =< sont des opérateurs infixés qui permettent de
stocker une valeur dans une variable, mais leurs arguments de => et de
:= =< ne sont pas dans le même ordre !
De plus := et =< n’ont pas le même effet lorsque le premier
argument est un élément d’une liste (ou matrice) contenu dans une variable.
En effet, =< modifie lélément d’une liste (ou matrice) par
référence (voir 9.4.14)
-
=> est la version infixée de sto.
=> stocke le premier argument dans la variable donnée comme deuxième
argument.
On tape :
4=>a
Ou on tape :
sto(4,a)
On obtient :
4 et la variable a contient 4
- := et =< ont comme arguments, un nom de variable et la valeur
à stocker.
On tape :
a:=4
Ou on tape :
a=<4)
On obtient :
4 et la variable a contient 4
On tape :
A:=[0,1,2,3,4]
B:=A
puis par exemple pour modifier A[3], on tape :
A[3]=<33
puis
A,B
On obtient :
[0,1,2,33,4],[0,1,2,33,4]
Les variables A et B contiennent toutes les deux la liste
[0,1,2,33,4], en effet :
A:=[0,1,2,3,4] fait pointer A sur la liste [0,1,2,3,4],
puis
B:=A fait pointer B sur A donc sur la liste
[0,1,2,3,4],
A[3]=<33 modifie la liste pointée par A donc modifie la liste
[0,1,2,3,4] en la liste [0,1,2,33,4] et donc B est modifié.
Il en serait de même si on avait mis B[3]=<33 au lieu de
A[3]=<33, les variables A et B contiendraient toutes les
deux la liste [0,1,2,33,4].
Remarque
On peut faire plusieurs affectations à la fois en utilisant les séquences
ou les listes.
On tape :
[a,b,c]:=[1,2,3]
On obtient :
[1,2,3]
a contient 1, b contient 2 et c contient 3
Ou on tape :
(a,b,c):=(1,2,3)
On obtient :
(1,2,3)
a contient 1, b contient 2 et c contient 3
Attention
Si a contient 5 et que l’on tape :
(a,b):=(2,a)
alors a contient 2 et b contient 5
Si a contient 1 et que l’on tape :
(a,b):=(2,a)
alors a contient 2 et b contient 1
(a,b):=(b,a+b)
alors a contient 1 et b contient 3