Trier avec scilab (1)
Fiche Élève 2e
La commande trier de scilab retourne une liste de nombres donnée après l’avoir ordonnée
dans l’ordre croissant. Nous ne savons pas comment cette commande est programmée. Nous
allons étudier ci-dessous une commande de tri plus transparente.
Trier dans l’ordre croissant, c’est très simple : un vecteur (une liste) de nombres noté Aétant
donné, on appellera Aneuf ce vecteur quand il sera rangé dans l’ordre croissant. Au début,
Aneuf est vide (Aneuf=[ ]). On commence par déterminer le plus petit nombre mde A, on
compte combien de fois nle nombre mfigure dans A, on ajoute à Aneuf la suite m, …, m(mécrit n
fois) et enfin, on efface tous les mqui figurent dans A. Si la nouvelle valeur de An’est pas vide,
on recommence. Cela se traduit par l’algorithme suivant :
Algorithme 1 : Trier à l’aide de la commande find
Entrées :
A, liste d’au moins 2 nombres ;
Sorties :
Aneuf, liste Arangée dans l’ordre croissant ;
début
Au départ, Aneuf est le vecteur vide ;
while An’est pas vide do
mdésigne le minimum de A
ndésigne le nombre d’occurrences de mdans A
Aneuf Aneuf,m,…,m(mrépété nfois)
AAdont on a retiré tous les m
end
Afficher Aneuf
fin
Pour mettre cet algorithme sous une forme exécutable par scilab, nous nous autorisons à utiliser
les commandes min et find - taper help min et help find si nécessaire - que l’on pourrait
elles-mêmes programmer comme des fonctions scilab.
1.a - Pour comprendre la commande find et préparer la programmation de l’algorithme 1,
exécuter le script téléchargeable Exercice.sce suivant :
A= [ 1 , 2 , 3 , 2 , 4 , 5 , 2 , 6 , 7 , 2 ] ;
B=find (A==2) ;
a f f i c h e r ( ”B␣ e st ␣ é gal à ) ;
a f f i c h e r (B) ;
n=t a i l l e (B ) ;
a f f i c h e r ( ”2 f i g u r e ”+ string ( n ) + f o i s dans ␣A” ) ;
A(B) = [ ] ;
a f f i c h e r ( ”La nou v e l le ␣ valeur ␣de␣A␣ e s t ␣ ) ;
a f f i c h e r (A) ;
Aneuf =[2* ones(B) ,A ] ;
a f f i c h e r ( ” Aneuf e s t égal ␣à ) ;
a f f i c h e r ( Aneuf ) ;
 
1
1.b - Quelle est la commande du script ci-dessus qui efface les 2 de A? Que signifie ones(B) ?
Commentaire : On voit maintenant comment effacer les mde la liste Adans l’algorithme 1.
2 - Écrire cet algorithme sous une forme exécutable par scilab.
3 - La commande ci-dessous permet d’engendrer une liste de 100 000 nombres à 4 décimales
entre 0 et 1 :
A=t i r a g e _ e n t i e r ( 10 000 0 , 0 , 99 99) /1 000 0 ;
 
3.a - Calculer le vecteur Aneuf obtenu en rangeant Adans l’ordre croissant.
3.b - Afficher les 15 derniers termes de Aet de Aneuf.
3.c - Combien de fois le nombre 0.5 figure-t-il dans A?
3.d - Ordonner Aavec la commande trier de scilab. Que constate-t-on ?
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !