STS TP
Xcas et son module de programmation
Xas 1
estunlogiiellibredealul formel.
Les exemples i-dessous présentent la syntaxe des prinipalesinstrutions de programmation de Xas.
L'entréedansl'éditeurdeprogrammesefaitavelaommandeAlt+P.
1 La suite de Fibonai
LéonarddePise,lsdeBonai,s'estintéresséen1202aufameuxproblèmedeslapins:unoupledonne
naissane,àpartirdudeuxièmemoisàunouplehaquemois,lesnouveauxouplessuivantlamêmeloi
dereprodution;ombienyaura-t-ildelapins(supposésimmortels...)auboutde
n
mois? Ils'agitdond'étudier lasuite( F n )
dénie par:F 0 = F 1 = 1 F n+2 = F n + F n+1
Onpeutérirela(double!)réursion diretement:
fibore(n):={ // délaration de la fontion
if n<2
then return(1);
else fibore(n-1)+fibore(n-2);
end_if
}:;
Listing1suitedeFibonnaienréursifbrut
Trèsfaile....maispeueaearil fautunevingtainedeseondesàXCASpouralulerfibo(30).En
eet, la réursion est double et néessite une pile très importante. Mieux vautreourir à une fontion
impérative 2
.
Onobtientles15premierstermesenfaisantseq(bore(j),j=0..14).
fiboimp(n):={
loal q;
loal fib:=[1,1℄;// réation d'une liste dont les deux premiers termes
sont 1 et 1.
for q from 2 to n-1 by 1 do
fib[q℄:=fib[q-1℄+fib[q-2℄;
end_for;
return(fib);
}
:;
Listing2suitedeFibonnaienimpératifaveXCAS
Laommandeboimp(15) donneralalistedes15premieresvaleurs.
1. Téléhargementsurhttp://www-fourier.ujf-gr eno ble. fr/ ~par isse /ir em.h tml
1 Onpeutdénir
n !
endisantque1! = 1
etquen ! = n. ( n − 1)!
1. Erireunefontionréursiveetunefontionitérativepouraluler
n !
.Comparerlesdeuxfontionsentermesd'eaité.
2. Utiliserlafontionpréédentepourdénirlesfontions
A p
n
etC p
n
.2 Érire une fontion retournant le triangle de Pasal jusqu'a un entier
n
. On utilisera une matrien × n
pourreprésenteruntableauet onutiliseralaformuledepasalC p
n = C p − 1
n − 1 + C p
n − 1
pouralulerlestermesdiérentsde1.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
3 Modierleprogrammepréédentande remplaertouslesnombrespairsparuneétoileet tousles
STS Solution
Xcas et son module de programmation
fatorielle(n):={
loal fat:=1;// réation d' une variable loale (non typée ).
for q from 1 to n by 1 do
fat:=fat*q;
end_for;
return(fat);
}
:;
Listing 3FatorielleenimpératifaveXCAS
fatoriellere(n):={
if n<2
then return(1);
else return(n*fatoriellere(n-1));
end_if
}
:;
Listing 4FatorielleenréursifaveXCAS
arrangement(n,p):=
{return(fatorielle(n)/fatorielle(n-p));
}
:;
ombinaison(n,p):=
{return(fatorielle(n)/(fatorielle(n-p)*fatorielle(p)));
}
:;
Listing5Arrangementet ombinaison
Pasal(n):={
loal T,j,i;
T:=matrix(n,n);
pour j de 0 jusque n-1 faire
pour i de 0 jusque n-1 faire
si j>i alors T[i,j℄:="" ;
sinon si j==0 alors T[i,j℄:=1 ;
sinon si i==j alors T[i,j℄:=1;
sinon si (i>0) et (j>0) alors
T[i,j℄:=T[i-1,j℄+T[i-1,j-1℄;
fsi;fsi;fsi;fsi;
fpour;
fpour;
retourne(T);
}
:;
Listing6TriangledePasal
pour j de 0 jusque i faire
si irem(T[i,j℄,2)==0
alors T[i,j℄:="";
sinon T[i,j℄:="*";
fsi;
fpour;
fpour;