Lycée A. Malraux 2009/2010
Seconde 2 L’algorithmique et Scilab Quelques exemples
Il est temps de faire le point sur l’utilisation
de Scilab pour mettre en scène des algorithmes
que nous avons écrits, découverts ou modifiés
depuis la rentrée.
Ce sera aussi l’occasion de se convaincre, si
tel n’était pas encore le cas, que l’algorithmique
est un outil essentiel pour la résolution de cer-
tains problèmes.
La lecture de ce qui suit vous permettra de
consolider1vos connaissances du logiciel et la
pratique de l’algorithmique.
Nous allons passer en revue les différents al-
gorithmes étudiés depuis la rentrée, pas néces-
sairement dans le même ordre.
Bonne lecture :-)
1 Quelques rappels pas inutiles
1.1 Affectations
Vous vous souvenez quel est l’effet sur l’affichage lorsque l’on met ; à la suite d’une affectation?
3
3
4
3
Qu’a-t-on fait avec les variables xet y?
¡4 3 ¢
1je ne me fais pas d’illusion, dans ce qui suit, tout n’est pas acquis par tout le monde :-(
1
Cela permet de rappeler ce que représente [x y]
Voici un fichier source Scilab qui donne exemple permettant de manipuler les entrées, sorties
et les affectations.
Listing 1: Fichier identite.sce
N=input ( ’N= ) ;
P=input ( P= ) ;
Q=2*N*P;
N=N^2;
P=P^2;
N=NQ+P;
disp ( ’ le rée l obtenu vaut +string(N) )
 
Un autre algorithme:
A entier naturel compris entre 0 et 9
B entier naturel compris entre 0 et 9
A
B
10A+B
XA
YB
YX+Y
XYX
YYX
AX
BY
10A+B
Celui-la, vous pouvez le programmer et l’exécuter pour valider les premières instructions algo-
rithmiques.
1.2 Instruction conditionnelle IF THEN ELSE
0.2113249
Perdu
Qui peut expliquer pourquoi Perdu est affiché?
Nous avons découvert cette instruction lorsque l’on s’est posé la question suivante:
2
Trois points A;Bet Cétant donnés, comment savoir si le triangle ABC est isocèle en A?
Une solution en langage Scilab:
Listing 2: Fichier isocele.sce
/ / s a i s i s s o n s l e s coordonnées des t r o i s poi nts
xA=input ( abscisse de A = ’ )
yA=input ( ordone de A = ’ )
xB=input ( abscisse de B = ’ )
yB=input ( ordonnée de B = ’ )
xC=input ( abscisse de C = ’ )
yC=input ( ordonnée de C = ’ )
/ / calculons l e s ca rrés des d ista nce s AB AC et BC
ab=(xBxA)^2+(yByA)^2;
ac=(xCxA)^2+(yCyA)^2;
bc=(xCxB)^2+(yCyB)^2;
/ / te st o ns s i ABC i s o c è l e en A
i f ab+ac==bc then disp ( ABC est isocèle en A ’ )
else disp ( ABC pas isocèle en A ’ ) , end
 
1.3 Boucle
Un exemple:
1
4
9
16
25
Nous avons aussi été amenés à nous poser le problème suivant:
1. À l’aide de votre calculatrice, simuler le tirage de 100 réels choisis au hasard entre 1 et 6.
Placer ces nombres dans la liste L1.
2. Recommencer l’expérience en plaçant les cent nouveaux nombres dans la liste L2.
3. Pour chaque valeur de i, calculer les cent sommes L2(i)+L1(i) que vous placerez dans la
liste L3.
4. Calculer la fréquence d’apparition du 2 dans la liste L3.
On peut envisager la question sous forme algorithmique de la manière suivante:
3
n nombre entier
L1liste de nombres réels
L2liste de nombres réels
L3liste de nombres réels
f nombre réel
ncombien de lancers?
con initialise le compteur à 0
L1(i)f loor (6r and())+1
L2(i)f loor (6r and())+1
L3(i)L1(i)+L2(i)
L3(i)=2
cc+1on compte le nombre de 2 dans L3
fc
n
f
Une solution
Listing 3: Fichier LancerDeDes.sce
n=input ( n= ’ )
c=0;
for i =1:n
L1 ( i )= floor (6*rand ())+1;
L2 ( i )= floor (6*rand ())+1;
L3 ( i )=L1 ( i )+L2 ( i ) ;
i f L3( i )==2 then c=c +1;end
end ,
f=c/n ;
disp ( la fréquence d ’ ’ apparition du 2 vaut f= +string ( f ) ) .
 
Vous pourrez modifier l’algorithme, de telle sorte qu’il détermine la fréquence d’apparition de
chaque somme possible. (2 à 12)
Dans la foulée, nous nous sommes intéressés au calcul de la médiane d’une série statisitique,
dans un premier temps rangée dans l’ordre croissant.2
1. Déclarer la liste de nombres x=[4 6 3 17 8], puis écrire x=g sor t(x,0g0,0i0).
Que fait la commande g sor t?
2. À l’aide des commandes rand() et floor, écrire une liste de 100 nombres entiers compris
entre 0 et 20.
2nous verrons plus tard comment trier une liste de nombres réels.
4
3. Ranger la liste xdans l’ordre croissant.
4. Écrire et exécuter un algorithme qui calcule la moyenne x, puis la médiane Mde la série
statistique x.
5. Modifier l’algorithme pour qu’il calcule la moyenne, puis la médiane d’une série statistique
xcomprenant Nnombres réels compris entre 0 et 50, générés aléatoirement, et calculés
avec 20 chiffres significatifs, le nombre Nayant été saisi en entrée.
Une solution aux différents problèmes posés écrit en langage Scilab3.
Listing 4: Fichier mediane.sce
/ / commande gso r t
x=[4 6 3 17 8]
x=gsort ( x , g , i ’ )
/ / générons 100 nb e n t i e r s ent re 0 e t 20 e t t ri o n s la l i s t e
for i =1:100 , x ( i )= floor(21*rand ());end
x ;
disp ( ’ rangeons la l i s t e dans l ’ ordre croissant ) ,
x=gsort ( x , g , i ’ )
disp ( l e f f e c i f t ot al vaut 100 donc la médiane
est obtenue en faisant la moyenne de la donnée de rang 50 et 51 ’ )
M=(x(50)+x ( 5 1) )/2;
disp ( ’ la médiane de cette série de 100 nb est égale à +string(M) )
halt ( ’ presser la touche ENTER pour relancer le programme ’ )
/ / reprenons l e problème : on s a i s i t tout d abord N
N=input ( L e f f e c t i f t otal vaut N= ) ;
/ / Générons N nombres r é e l s entre 0 e t 50 avec 3 décimales
format (25)
for i =1:N y ( i )=50*rand ();end
/ / rangeons la l i s t e y dans l ordre cr o iss ant
y=gsort ( y , g , i ) ;
/ / te s ton s la parit é de N et calculons la diane M
k=N/2;
i f k==floor (k) then M=(y ( k)+y ( k + 1) )/ 2; else M=y ( floor(k)+1);end
disp ( ’ la médiane de cette séri e s tati s tiqu e vaut M= +string(M) )
 
1.4 Instruction TANT QUE
0.5
0.3333333
0.25
0.2
Au passage, on rappelle comment obtenir plus de chiffres significatifs.
0.3333333
3la commande halt permet de faire une pause dans l’exécution du programme, puis, en tapant sur ENTER de le
relancer.
5
1 / 8 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 !