• Aucun résultat trouvé

Listes Les listessont un type de variable partiulier que peut manipulerMAPLE

N/A
N/A
Protected

Academic year: 2022

Partager "Listes Les listessont un type de variable partiulier que peut manipulerMAPLE"

Copied!
5
0
0

Texte intégral

(1)

I - Avant de ommener

Quelquesrappelsavantdetravailler.Commenezhaquenouvelexerieparun

restart;

pour désaeter toutes les variables éventuellement utilisées dans un alul

préédent.

Sivousavez lané unalul quia l'airde ne pas vouloir seterminer, liquezsur

l'ineSTOP quin'estativequelorsqu'unalulestenours.

Chaunedevosentréesdébuteaprèsunprompt>,setermineparun; a

ouun : b

puisappuyez surla touhe Entrée . Sivous voulezpasserà laligne sansvalider

laligne préédente,tapez Shift* + Entrée .Pourrevenirplushaut, utilisezla

sourisoulesèhesdedéplaement.

II - Listes et séquenes

a. Listes

Les listessont un type de variable partiulier que peut manipulerMAPLE. Une

listese présente souslaforme d'une suite d'objetsséparés pardes virgules entre

rohets:

> L:=[1,2,a ,g, maman,ln(5) ,3/2, x ­>3

*

x+2,[7,9℄℄

Cettesuite est ORDONNÉE. Ses élémentssont don numérotés.On peut en ex-

traireunélémentpartiulier:

> L[5℄

oubientouslesélémentsdelaliste:

op(L)

oubienunesous-liste:

> L[3..6℄;

Onpeutonnaîtrelatailled'uneliste:

> nops(L );

Onpeutajouterunélémentàuneliste:

> L:=[op(L) ,nouveau℄

Onpeutonaténer deuxlistes:

> L1:=[1,2,3,4℄;

> L2:=[ a ,b, ℄;

> L:=[op(L1 ),op(L2 )℄

Lalistevidesenote:

> V:=[℄;

> nops(V );

Onpeuteetuerdesopérationssurunelistear'estuntypedevariableomme

unautre:

> S:= L1+[op(L2 ),d ℄;

> P:=3

* L1 ;

a. sivousvoulezquelerésultatsoitahé.

b. sivousvoulezqueMAPLEexéutesansaher.

(2)

b. Lesséquenes

Ellesressemblentauxlistesmaissanslesrohets.Ladiérenemajeureestpour-

tantqu'onnepeutpasréerdesséquenesdeséquenesalorsqu'onpeutréerdes

listesdelistes.

Plusaessoirement,onpeutmodierunélémentd'une listeà l'aide d'uneae-

tationmaisen'estpaspossiblepouruneséquene:

> S:= a,b ,, d,e ,f ;

> S[3℄;

> S[3℄:=4;

> L:=[ S℄;

> L[3℄:=4;

> L;

Engénéral,ellesserventàfabriquerdeslistes...

> S1:=10,20,30,40,50,6 0;

> S2:=seq(10

*

k ,k =3..10);

> S3:=10

*

k $ k =2..9;

> S4:= m $ 5;

III - Tests

a. Expressions booléennes

Une algèbrede Booleest un ensemble ontenantdeux élémentset muni de deux

loisdeompositioninterneETetOU.

En informatique, un booléen est un type de variable à deux états : true et

falsesurMAPLE.

Lesopérateurslogiquessontandet or.Ilyaaussinotquidonnelanégation.

Par exemple:

> (3>2) and (2=5);

> (3>2) or (2=5);

> (3>2) and not (2=5) ;

Onpeuttesterl'ordreetl'égalitéavedesopérateursrelationnels:<, <=, >, >=,

=, <>.

Quanduneexpressionneontientpasand,orounot,ilfaututiliserevalbouis:

> evalb(3>2);

type denombre

Onnepeutomparerquedesnombresdetypenumeri(i.e.integer,float

etfration) :

> evalb(3>2.);

> evalb(3>7/2);

> evalb(sqrt(2) >1) ;

> evalb(sqrt(2.) >1) ;

b. if...then...else

On utiliselavaleurd'untestpourexéuteruneinstrutiononditionnelledontla

syntaxeest:

if onditionthen instrution1elseinstrution2;

Parexemple:

> if (3>2) then print(' bonjour' ) else print('salut') fi;

> if (3<2) then print(' bonjour' ) else print('salut') fi;

Onpeutériredesinstrutionsonditionnellesenasade:

if ondition1theninstrution1elif ondition2theninstrution2elseinstrution3;

Parexemple:

> a:=1; b:=1; :=1;

> if (b^2­4

* a

*

>0)

then print(`2 solutions réelles`)

elif ( b^2­4

* a

* =0)

then print(`1 solution réelle`)

else print(`2 solutions omplexes onjuguées`)

fi;

(3)

IV - Proédures

Uneproédureestunefontionàlasyntaxepréisedépendantdeladonnéed'une

séried'argumentset d'uneséried'instrutions.

Lasyntaxegénéraleest:

> nom :=pro(argument1:: type1,argument2:: type2 ,...)

loal var1 , var2 ,... ;

instrutions

end:

Lesprinipauxtypessontfloat,integer,negint,nonnegint,fration,list,et.

Consultezl'aide:?type;

Les variables loales sont elles introduites dans la proédure et dont les noms

serontdésaetésà landelaproédure.

Par exemple:

> Table :=pro( n:: posint)

loal T,k ;

T:=[seq(n

*

k, k=1..10)℄;

printf("La table de %a est %a ",n ,T)

end:

Vous pourrez regarderla syntaxede printf. L'usagedes %a indiquequ'onva les

remplaerdans l'ordre parles variablesformellesqui sont listéesaprès lesguille-

mets.Pouravoirdesnombresottantsonutilise%f.

Par exemple,pourobtenirlatablede5ontape:

> Table (5) ;

On a souventbesoin durésultat d'une proédureet la petite phrasepour faire

jolipeutêtregênante.

Onpréférerauneproéduredeetteforme:

> Table :=pro( n:: posint)

loal k;

RETURN([seq( n

*

k,k =1..10)℄)

end:

Onpeutainsiaherledeuxièmeélémentdelatablede5:

> Table (5) [2℄;

QuedonneTable(­5)?

Onpeututiliserunestrutureonditionnelle:

> parite:=pro(n::integer)

if (irem(n,2) =0)

then RETURN(` pair `)

else RETURN(` impair`)

fi

end:

Àvotreavis,querenvoieirem(a,b)?

V - Programmation impérative

C'estletypedeprogrammationleplusrépandu.Onagitdiretementsurlamémoire

de l'ordinateur pour essayer de l'éonomiserà l'aide d'aetations. Nous verrons

queelapeutposerertainsproblèmes.

a. Boules itératives

On veuteetuer uneationunertainnombredefois;onutiliseuneinstrution

dutype:

for var from debut to fin by inrement do

instrutions;

od;

Parexemple:

> Somme :=pro( n:: posint)

loal S,k ;

S:=0;

for k from 1 to n by 1 do

S:= S+2

* k­1;

od;

RETURN( S)

end:

(4)

Onpeutarrêterl'itérationdèsqu'uneonditionaétéréalisée(etsepasserduto):

> Produit:=pro( n:: posint)

loal P,k ;

P:=1;

for k from 1 while P<n do

P:= P

* k ;

print(k ,P) ;

od;

end:

Expliquez....

Onpeutmêmesepasserdufor:

> quoquo:=pro(a ::nonnegint, b:: posint)

loal q;

q:=1;

while q

*

b<= a do

q:= q+1;

od;

RETURN(q­1) ;

end:

Expliquez...

VI - Programmation réursive

On réédes proéduresqui s'appellentelles-mêmes,unpeu selon leprinipe des

suitesdéniesparunerelationu

n+1

=f(u

n

)mais demanièreplusgénérale.

Reprenonsunexempleduparagraphepréédent:

> Somme_r:=pro( n:: posint)

if n =1 then 1

else Somme_r(n­1) +2

* n ­1;

fi;

end:

Ilfautonnaîtreunassimpleet unmoyendesimplierunasompliqué...

Onpeutobtenir lesrésultats intermédiairesave l'optionremember et endeman-

dantlequatrièmeopérandedelaproédure:

> Somme_r:=pro(n ::posint)

option remember;

if n =1 then 1

else Somme_r( n­1) +2

* n­1;

fi;

end:

Puis:

Somme_r(9) ;

op(4,eval(Somme_r));

Cette option est malgré tout plus intéressante dans le as de réursions mul-

tiples : les aluls intermédiairesétant stokés, ils n'ont pas à être realulés et

elagagnedutemps.

Parexemple,pourlasuitedeFibonaiu

n+2

=u

n+1 +u

n aveu

0

=u

1

=1 :

> fibo :=pro(n ::nonnegint)

option remember;

if n=0 then RETURN(1) ;

elif n =1 then RETURN(1) ;

else RETURN( fibo (n ­1) +fibo(n­2) ) ;

fi

end:

Sans l'option remember, fibo(30) prend pas mal de temps mais est instantané

quandonl'ajoute:à nepasoublier...

VII - Exeries

L Exerie1 Partieentière

Trouverunalgorithmeréursifpuisunalgorithmeimpératifdéterminantlapartie

entièred'unentier.

dansleasréursif,onsesouviendraquelapartieentièred'unnombreapparte-

nantà[0;1[estnulle,que[x℄=1+[x-1℄et que[x℄=-1+[x+1℄;

dans le asimpératif,onpartira de zéroet onse promènerasurl'axe des réels

enfaisantdespasdelongueur1.

(5)

L Exerie2 Caluls desommes

Donner des proédures impératives et réursives prenant omme argument une

fontionfunentiern

0

etunentiernet quialule n

X

k=n0 f(k).

L Exerie3 Maximum

Donnerdes proéduresimpérativeset réursivesdonnantlemaximumd'une liste

denombresréelsquelonques.

L Exerie4 Têteetqueue

La tête d'une liste est son premier élément. La queue d'une liste est la sous-

liste réée en lui oupant la tête. Donnez deux proédures tete(liste) et

queue(liste).

L Exerie5 Testderoissane

Donner des proédures impérativeset réursivesdéterminantsi une liste donnée

estroissante.Onpourraéventuellementutilisertete etqueue.

L Exerie6 Dihotomie

Pour résoudreuneéquationdu typef(x)=0,on reherhegraphiquementunin-

tervalle[a;b℄oùlafontionsemblehangerdesigne.

Onnoteensuitemlemilieudusegment[a;b℄.Onévaluelesignedef(m).

Si'estlemêmequeeluidef(a)onremplaeaparmetonreommene.Sinon,

'estbqu'onremplaeet onreommenejusqu'àobtenirlapréisionvoulue.

Donneruneproédureréursivepuisuneproédureimpérativeprenantommear-

gumentsunefontion f, les bornes del'intervalled'étude a et bet unepréision

dealuleps.

L Exerie7 Méthodedespartiesproportionnelles

Ilpeutêtreparfoispluseaedeneplusonsidérerlemilieude[a;b℄maisl'abs-

issede l'intersetiondela droitepassantparles points(a;f(a))et (b;f(b)) ave

l'axe desabsisses.Modiezlégèrementvosproédurespréédentesetomparez.

L Exerie8 AlgorithmedeHéron

Hérond'Alexandrieatrouvéuneméthodepermettantdedétermineruneapproxi-

mationdelarainearrée d'unnombrepositifvingt sièlesavantl'apparitiondes

ordinateurs.

Six

n

estuneapproximationstritementpositivepardéfautde p

a,alorsa/x

n est

uneapproximationparexèsde p

a (pourquoi?)et vie-versa.

Lamoyennearithmétiquedeesdeuxapproximationsest 1

2 x

n +

a

x

n

etonstitue

unemeilleureapproximationquelesdeuxpréédentes.

On peut montrer 'est uneapproximation par exès(en développant(x

n -

p

a) 2

parexemple).

Onobtientnaturellementunalgorithme...Donnezuneversionréursivepuisimpé-

rativeprenantenargumentlenombredontonherhelarainearrée,unepremière

approximationx

0

et unepréisioneps.

L Exerie9 Calulde300déimales de

Posonse

n

=1+ 1

1!

+ 1

2!

++ 1

n!

Alorsonaaussi

e

n

=1+1+ 1

2

1+ 1

3

1+ 1

4

1

n-1

1+ 1

n

Un exerielassiquemontreque e-e

n 6

n+2

n+1 1

(n+1)!

.

Ainsi,pourn=167,onobtiendra300bonnesdéimalesaumoins:trouvez-les!

L Exerie10 Méthodedesretangles

Trouvezuneversionréursiveet uneversionimpératived'unalgorithmealulant

uneapproximationd'uneintégraleparlaméthodedesretanglesétantdonnéf,les

bornesaet betdx

Références

Documents relatifs

On appelle p-liste sans répétition de F une p-liste de F où les éléments sont 2-à-2 distincts... Lycée Louis Barthou

Il faut alors être capable de sous-tirer de l'énergie électrique au moteur soit en la dissipant dans un rhéostat de dissipation (pour le moteur à courant continu, il faut en

Pierre tire un jeton, note le numéro et le replace dans le sac ; puis Jean tire à son tour un jeton.. Il y

(2) En d´ eduire la fonction supprime qui prend en arguments une liste L et un nombre n et supprime le premier ´ el´ ement de la liste ´ egal ` a n.. Cette fonction retournera True

Avec la fonction random afficher un flottant al´ eatoire entre 0 et 1.. (2) D´ efinir une liste L de 100 nombres

Écrire une fonction maxmin(L) qui renvoie le maximum, le minimum et les positions du minimum et du maximum des éléments de la liste de flottants L. Indication : on pourra utiliser

L'instruction continue peut être employée à l'intérieur d’une structure de type boucle (for ; while ; do …while ). Elle produit l’abandon de l’itération courante et fait

Les variables de ce paragraphe sont des variables discrètes ou à densité. Les résultats qui suivent sont valables quel que soit le type de variable aléatoire.. En effet, toute