Prg->Nouveau programme
. Le menu
Prg
de l'éditeur permet d'entrer facilement les structures
de programmation. On peut ensuite sauvegarder le texte du programme
indépendamment de la session de travail pour l'utiliser ensuite
dans une autre session de travail.
Voici un programme qui donne le quotient et le
reste de la division euclidienne de 2 entiers en utilisant les fonctions
iquo
qui renvoie le quotient et irem
qui renvoie le reste (c'est la fonction iquorem
de Xcas).
idiv2 | |
idiv2(a,b):={ |
idiv2(a,b):={ |
local q,r; |
local q,r; |
if (b!=0) { |
si b!=0 alors |
q:=iquo(a,b); |
q:=iquo(a,b); |
r:=irem(a,b);} |
r:=irem(a,b); |
else { |
sinon |
q:=0; |
q:=0; |
r:=a; |
r:=a; |
} |
fsi |
return [q,r]; |
retourne [q,r]; |
} |
} |
OK
) puis sauvegardez par exemple sous le nom
idiv2.cxx
. Vous pouvez utiliser cette fonction
dans une ligne de commande, en tapant par exemple idiv2(25,15)
.
Vous pourrez utiliser cette fonction dans une autre session Xcas,
en utilisant la commande
read("idiv2.cxx")
ou en l'ouvrant depuis un
éditeur de programme (et en le validant par OK).
Voici maintenant deux versions du calcul du PGCD de deux entiers, une version itérative, puis une version récursive.
pgcd_iteratif | |
pgcdi(a,b):={ |
pgcdi(a,b):={ |
local r; |
local r; |
while (b!=0) { |
tantque b!=0 faire |
r:=irem(a,b); |
r:=irem(a,b); |
a:=b; |
a:=b; |
b:=r; |
b:=r; |
} |
ftantque |
return a; |
retourne a; |
}:; |
}:; |
pgcd_recursif | |
pgcdr(a,b):={ |
pgcdr(a,b):={ |
if (b!=0) return a; |
si b!=0 alors retourne a;fsi |
return pgcdr(b,irem(a,b)); |
retourne pgcdr(b,irem(a,b)); |
}:; |
}:; |
Il arrive parfois qu'un programme ne fonctionne pas du premier coup
comme prévu (!)
Il est alors possible de l'exécuter en mode pas-à-pas pour le mettre
au point, avec la
commande debug
. Pour plus de détails consulter le menu
Aide->Interface
. Par exemple, pour le programme idiv2
,
on lance la mise au point en tapant :
debug(idiv2(25,15))
Le débuggueur affiche automatiquement la valeur des paramètres a,b
puis
des variables locales q,r
lors de l'exécution instruction par
instruction avec le bouton sst
.