Xcas permet d'écrire des programmes, comme n'importe quel langage de programmation. Voici ses principales caractéristiques.
function_diff(f)
ou bien function_diff(x->x^2)
.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.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 | |
< |
> |
||
<= |
>= |
||
&& |
et | || |
ou |
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 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)}