Section : Programmation
Avant : Programmation
Après : Quelques exemples

Le langage

Xcas permet d'écrire des programmes, comme n'importe quel langage de programmation. Voici ses principales caractéristiques.

$ \bullet$
C'est un langage fonctionnel. L'argument d'une fonction peut être une autre fonction. Si c'est le cas, on peut soit donner le nom de la fonction argument dans la commande, soit sa définition : par exemple function_diff(f) ou bien function_diff(x->x^2).
$ \bullet$
Il n'y a pas de distinction entre programme et fonction : une fonction renvoie la valeur de la dernière instruction évaluée ou ce qui suit le mot réservé return. Comme pour tous les environnements de calcul, programmer consiste à étendre Xcas en lui rajoutant les fonctions souhaitées. Structurer la programmation consiste à hiérarchiser les différentes fonctions qui s'appellent entre elles.
$ \bullet$
Le langage est non typé. On distingue seulement les variables globales, qui ne sont pas déclarées, et les variables locales, déclarées en début de fonction.

Dans un programme, lorsqu'on appelle une variable munie d'un indice, c'est une table qui est créée, et non une liste. Une table est un conteneur d'objets analogue aux listes et aux séquences. La différence est qu'elle peut être indicée par autre chose qu'un entier, par exemple une chaîne de caractères. Si a est une variable formelle, la commande a[1]:=2 crée une table a. Pour que a soit une liste, il faut d'abord affecter a avec une liste, et la modifier ensuite. Par exemple a:=[0$10] (si on connaît a priori la taille de la liste) ou a:=[]; (affecter la liste vide). Même si le langage est non typé, il est donc recommandé d'initialiser les variables avant de les utiliser.

La syntaxe de déclaration d'une fonction est la suivante.


nom_fonction(var1,var2,...):=
{
local var_loc1, var_loc2,... ;
  instruction1;
  instruction2;
  ...
}

La syntaxe des tests et des boucles est celle du langage C++. Pour les tests :


if (condition) {clause_vraie} else {clause_fausse}
(le else est facultatif). La condition est un booléen, résultat d'une expression logique, utilisant les opérateurs habituels.
Opérateurs logiques
== $ =$ != non
< $ <$ > $ >$
<= $ \leq$ >= $ \geq $
&& et || ou
Par exemple :

testif(a,b):={
if ( (a==10) || (a<b) )
    b:=b-a;
else 
    a:=a-b;
return [a,b];
};

La syntaxe de for est la suivante.


for(initialisation;test;incrementation){ corps_de_boucle }
Par exemple :

testfor(a,b):={
local j,(s:=0);
for (j:=a;j<=b;j++)
   s:=s+1/j^2;
   return s;
};

Attention, i désigne $ \sqrt{-1}$ et ne peut pas être utilisé comme variable de boucle. L'instruction break; permet de sortir d'une boucle et continue; de passer immédiatement à l'itération suivante. De nombreuses variantes sont reconnues en particulier en mode de compatibilité avec Maple, Mupad et les TI89/Voyage 200. On peut capturer des erreurs d'exécution par


try {bloc_erreurs_capturees} 
catch (variable)
    {bloc_execute_si_erreur}
Par exemple :

try{A:=idn(2)*idn(3)} 
catch(erreur) 
{print("l'erreur est "+erreur)}


Section : Programmation
Avant : Programmation
Après : Quelques exemples

R. De Graeve, B. Parisse, B. Ycart 2006