 
 
 
9.4.14  Les différences entre :=, =< et copy
Attention, := et =< ne sont pas équivalents car =< modifie
lélément d’une liste ou matrice par référence.
L’affectation =< ne diffère de := que si on modifie un 
élément d’une liste (ou matrice) contenue dans une variable, par exemple si 
A contient la liste [0,1,2,3,4] i.e. si on a tapé 
A:=[0,1,2,3,4] et que l’on
veut modifier la valeur de A[3] et changer 3 en 33, on peut 
écrire dans ce cas, A[3]:=33 ou A[3] =< 33 mais ces deux 
instructions sont différentes. 
En effet A pointe vers une liste car A:=[0,1,2,3,4], et 
A[3] =< 33 modifie cette liste en la liste [0,1,2,33,4], ainsi 
toutes les variables de 
Xcas qui pointent vers cette liste seront modifiées. Alors qu’avec
A[3]:=33 la liste est dupliquée, la copie est modifiée et A 
pointe vers la copie. Il faut donc utiliser =< avec précautions car 
tous les objets pointant sur cette liste (ou matrice) 
seront modifiés.
-  
On tape :
A:=[0,1,2,3,4] B:=A A[3]=<33 A,B ou :A:=[0,1,2,3,4] B:=A B[3]=<33 A,B On obtient :[0,1,2,33,4],[0,1,2,33,4] En effet la liste [0,1,2,3,4] a été modifiée par
l’instruction A[3]=<33 (ou par B[3]=<33) en la liste
[0,1,2,33,4]. Les listes A et B 
pointent sur cette liste donc A et B sont modifiées toutes les 
deux.
- On tape :
A:=[0,1,2,3,4] B:=A A[3]:=33 A,B On obtient :[0,1,2,33,4],[0,1,2,3,4] car A[3]:=33 fait une copie de la liste [0,1,2,3,4] et modifie 
cette copie en [0,1,2,33,4] puis A pointe sur cette copie et cela ne modifie pas B.
On tape :A:=[0,1,2,3,4] B:=A B[3]:=33 A,B On obtient :[0,1,2,3,4],[0,1,2,33,4] car B[3]:=33 fait une copie de la liste [0,1,2,3,4] et modifie 
cette copie en [0,1,2,33,4] puis B pointe sur cette copie et cela ne modifie pas A.
- On tape :
A:=[0,1,2,3,4] B:=copy(A) Puis, si on tape :A[3]=<33 A,B On obtient :[0,1,2,33,4],[0,1,2,3,4] On tape :A:=[0,1,2,3,4] B:=copy(A) B[3]=<33 A,B On obtient :[0,1,2,3,4],[0,1,2,33,4] En effet B pointe sur la copie de A, donc une modifiucation par 
référence de A[3] (respB[3]) ne modifie pas B (resp 
A).
 
 
