@ccueil Colles

Programmation avec Scilab

Structures algorithmiques de base

Index Scilab

Condition et test if

Le traitement d'une condition se fait par l'algorithme
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.2,-5.1)(5.7,3)
\psline{->}(1,2.8)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\psline{->}(3.4,1)(4,1)(4,-1)
\pspolygon(2.5,-1)(5.5,-1)(5.5,-2)(2.5,-2)
\rput(4,-1.5){\blue Instructions}
\psline{->}(4,-2)(4,-3)(1,-3)
\psline(1,0)(1,-1.3)\psline{->}(1,-1.75)(1,-5)
\rput(2.9,1){\blue Vrai}
\rput(1,-1.5){\red Faux}
\end{pspicture}\]
En Scilab la syntaxe d'une instruction conditionnelle est, assez communément,
if test
   // instructions
end
Si le test est vrai les instructions situées entre if et end sont exécutées, pas dans le cas contraire.

Plus généralement, on peut compléter la structure conditionnelle précédente en indiquant aussi quoi faire si la condition n'est pas vraie, sinon (else en anglais),
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.6,-5.1)(6.6,3)
\psline{->}(1,2.8)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\psline{->}(3.4,1)(5,1)(5,-1.5)
\pspolygon(3.5,-1.5)(6.5,-1.5)(6.5,-2.5)(3.5,-2.5)
\rput(5,-2){\blue Instructions}
\psline{->}(5,-2.5)(5,-3.5)(1,-3.5)
\rput(2.9,1){\blue Vrai}
\pspolygon(-.5,-1.5)(2.5,-1.5)(2.5,-2.5)(-.5,-2.5)
\rput(1,-2){\red Instructions}
\rput(1,-.6){\red Faux}
\psline(1,0)(1,-.5)\psline{->}(1,-.8)(1,-1.5)\psline{->}(1,-2.5)(1,-5)
\end{pspicture}\]
voire même imbriquer plusieurs sinon. En Scilab, la syntaxe complète est:
if test 1
   // instructions
elseif test 2
   // instructions
elseif test 3
   // instructions
...
else 
   // instructions
end
Dès qu'un test est vrai, les instructions correspondantes sont effectuées puis on sort de l'ensemble des conditions, même si une condition après un autre elseif est vraie, elle est ignorée: l'ordre importe.

Opérateurs logiques

Pour définir un test, on peut utiliser les opérateurs logiques:
  • == : égalité
  • < , >, <= et >= : inférieur ou supérieur, strictement ou non
  • ~ : négation, par exempe x~=4 pour le test x différent de 4, équivalent à ~(x==4)
  • & : "et" logique
  • | : "ou" logique
Les résultats vrai (true) ou faux (false) correspondent aux constantes %T et %F.

Boucle for

La syntaxe générale d'une boucle for est la suivante, V étant un vecteur
for i=V
   // instructions
end
par exemple
V=[1 2 6 78];
for i=V
    disp(i);
end
qui retourne
    1.  
 
    2.  
 
    6.  
 
    78.  
Tout vecteur (voir création de matrices / vecteurs) peut être utilisé, numérique ou non:
for i=["a" "b" "c"]
    disp(i);
end
retourne a b c.
Un des cas le plus fréquent en pratique est celui où V=[1 2 3 … n]: on balaye successivement tous les entiers:
for i=1:n
   // instructions    
end

Boucle conditionnelle while

Le traitement d'une boucle conditionnelle, c'est-à-dire d'une boucle qui s'effectue sous certaines conditions, peut se représenter par l'algorithme
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.2,-2.2)(5.6,5.6)
\psline{->}(1,5.5)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\rput[l](2.6,1){\blue Vrai}\psline{->}(3.5,1)(4,1)(4,2.5)
\pspolygon(2.5,2.5)(5.5,2.5)(5.5,3.5)(2.5,3.5)
\psline{->}(4,3.5)(4,4.5)(1,4.5)
\rput(4,3){\blue Instructions}
\rput(1,-.6){\red Faux}
\psline(1,0)(1,-.4)\psline{->}(1,-.85)(1,-2)
\end{pspicture}\]
En Scilab, cette structure s'écrit:
while test
   // instructions
end


Voir aussi: Index Scilab