### 2.5.2 L’affectation : = := => sto Store

On peut utiliser les fonctions infixées := comme en Pascal ou = ou => comme le "sto" des calculatrices pour réaliser une affectation ou encore,
les fonctions préfixées, sto ou Store, d’arguments la valeur à affecter et le nom d’une variable.
:= (ou = ou => ou sto ou Store) permet d’affecter une variable.
On tape (attention à l’ordre des arguments !) :

a:=4

ou

a=4

ou

4=>a

ou

sto(4,a)

ou

Store(4,a)

On obtient :

4

:= ou => permettent aussi de définir des fonctions.
On tape :

f(x):=sin(x)/x

ou

sin(x)/x=>f(x)

ou encore

f:=x->sin(x)/x

ou

x->sin(x)/x=>f

On peut aussi définir une fonction par morceaux :

- une fonction définie par 2 valeurs,
  par exemple, pour définir la fonction g qui vaut 1 si x>0 et -1 si x≤ 0 on tape : On tape :
  g(x):=ifte(x>0,1,-1)
  ce qui est équivalent à :
  g(x):=if x>0 then 1; else -1; end_if
  On tape (voir plus loin la différence avec ifte) :
  g(x):=when(x>0,1,-1)
  ou
  g(x):=quand(x>0,1,-1)
  ou
  g(x):=IFTE(x>0,1,-1)
  ou
  g(x):=(x>0)?1:-1
  En effet ifte (ou when ou quand ou IFTE) a trois arguments : une condition et deux expressions et ? est infixé avec la conditionà gauche entre des parenthèses et à droite on met les deux expressions séparées par :.
  Si la condition est vraie, ifte (ou when ou quand ou IFTE ou ?) renvoie la première expression et sinon ifte (ou when ou quand ou IFTE ou ?) renvoie la deuxième expression.

  Remarque
  La condition x != a peut être remplacée par le rèel r=x−a :
  si r==0 la condition est fausse et sinon elle est vraie.
  On tape pour définir la fonction qui vaut partout 0 sauf en 1 où elle vaut 1 :

  h(x):=when(x-1,0,1)

  est équivalent à :

  h(x):=when(x!=1,0,1)

  Remarque : Différence entre ifte et les autres when....
  On tape : f(x):=ifte(x>0,1,0);
  g(x):=when(x>0,1,0) ou g(x):=quand(x>0,1,0)
  puis on tape f(x)
  on obtient :
  Ifte: Unable to check test Error: Bad Argument Value
  ici x n’a pas de valeur : avec ifte ou if then else end_if il faut que la variable x soit affectée pour pouvoir tester la condition (quand on définit une fonction ce qui suit le := n’est pas évalué donc la définition de f(x) ne pose pas de problème).
  Pour la définition de g avec when...., la variable x n’a pas besoin dêtre affectée.
  On tape g(x)
  on obtient :
  ((x>0)? 1 : -1)
  car ? est la version infixée de when.

- une fonction définie par n valeurs,
  par exemple, pour définir la fonction g qui vaut -1 si x<−1, 0 si −1≤ x≤ 1 et 1 si x>1, on tape :
  g(x):=piecewise(x<-1,-1,x<=1,0,1)
  piecewise utilise des paires condition/valeur ou valeur est renvoyée si sa condition est vraie ce qui implique que les conditions précédentes sont fausses. Si le nombre d’arguments est impair, la dernière valeur est la valeur par défaut (comme dans un switch).
  piecewise est la généralisation de when.
  Pour définir la fonction f qui vaut -2 si x<−2, 3x+4 si −2≤ x <−1, 1 si −1 ≤ x<0 et x+1 si x ≥ 0, on tape :
  f(x):=piecewise(x<-2,-2,x<-1,3x+4,x<0,1,x+1)
  On peut alors faire le graphe de f en tapant :
  plotfunc(f(x))