Vous êtes sur la page 1sur 9

Programmation avec SCILAB

Rappel

Prof. : Hicham ATATRI Classe : ECT-ECS


Email: hichamatatri@gmail.com Centre : CPGE Omar EL Khayam.

Contents
1 VARIABLES 2

2 MISE EN ROUTE 2

3 LES STRUCTURES CONDITIONNELLES EN SCILAB 3

4 LES BOUCLES EN SCILAB 4

5 LES FONCTIONS EN SCILAB 5

6 CONSTRUCTION DE VECTEURS ET DE MATRICES NUMERIQUES 7


6.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

7 EXERCICES 9

page 1 of 9
Statistique en Scilab October 10, 2020

Programmation avec SCILAB


Rappel

Prof. : Hicham ATATRI Classe : ECT-2-eme


Email: hichamatatri@gmail.com Centre : CPGE Omar EL Khayam.

1 VARIABLES

2 MISE EN ROUTE
a- Premiers pas
La ligne de commande dans la console permet de taper des opérations élémentaires, comme pour une
calculatrice scientifique. Il faut taper tous les opérateurs, et bien mettre des parenthèses autour de la
formule.
Une fois la formule correctement entrée, appuyer sur la touche ”entrée” affiche le résultat.
Par exemple :
1 --> 1+1
2 ans =
3 2.

b- Variables
Scilab permet de stocker, manipuler et récupérer des valeurs. Ces valeurs sont stockées dans des
variables, désignées par un nom, et qui possèdent un contenu. Le nom d’une variable doit toujours
commencer par une lettre, et peut contenir des chiffres, des lettres et le symbole , mais pas d’espace,
caractères accentués ou autre symbole. La commande x = 9 permet à Scilab de créer une variable de
nom x (si elle n’existe pas déjà), et de stocker dans celle-ci la valeur 9. L’opérateur d’affectation est
ainsi =, et la formule générale est
1 --> nom = contenu

Les variables peuvent contenir divers types de valeurs : des entiers, des réels, des chaı̂nes de caractères,
des vecteurs, des matrices, etc....
ans est l’abréviation de answer, il s’agit du nom de la variable où la réponse est stockée. Remarque :
On peut effectuer plusieurs commandes sur une même ligne : pour cela on sépare deux commandes
successives par un ; si on ne désire pas que le résultat s’affiche à l’écran (lorsqu’on effectue un calcul
intermédiaire par exemple). Si au contraire on veut voir le résultat affiché, il faut séparer les deux
commandes par un ,

1 --> a=2; b=2;3*a+8*b^3 // le resultat de ce dernier calcul sera affiche


2 ans =
3 70.

c- Exemple
Les donnes d’un traitement specifique dans un programme est stocker dans des variables.
Pour un triangle ABC rectangle en A tel que AB=5 et AC=3.
On sait que BC 2 = AB 2 + AC 2

page 2 of 9
Statistique en Scilab October 10, 2020

1 -->AB=5
2 AB =
3 5.
4

5 -->AC=3
6 AC =
7 3.
8

9 -->BC=sqrt(AB**2+AC**2)
10 BC =
11 5.8309519

d- Suppression
Lorsque on n’a plus besoin d’une variable, on peut la supprimer. Cela libère l’espace mémoire qu’elle
occupait.
On utilise pour cela la fonction clear.
1 -->clear AB // Permet de supprimer la variable AB
2 -->clear // Permet de supprimer toutes les variables

e- Liste des variables


La fonction who Les variables ont un point commun avec les clefs : on ne se souvient plus de ce qu’on
en a fait quand on en a besoin, Scilab propose la variable who qui permet d’afficher la liste de toutes
les variables utilisees dans notre programme.
1 -->who

3 LES STRUCTURES CONDITIONNELLES EN SCILAB


1. Structure conditionnelle if :
L’instruction if permet d’exécuter une instruction si une condition est satisfaite. if utilise une variable
booléenne pour effectuer son choix : si le booléen est vrai, alors l’instruction est exécutée.

Une condition est fermée lorsque le mot clé end est rencontré.

1 if ( \%t ) then
2 disp("Bonjour !");
3 end;

Si la condition n’est pas satisfaite, l’instruction else permet d’exécuter une instruction alternative,
comme dans le script suivant.

1 if ( \%f ) then
2 disp("Hello !");
3 else\\
4 disp("Goodbye !");
5 end;

Lorsque nous devons combiner plusieurs conditions, l’instruction elseif est utile.

page 3 of 9
Statistique en Scilab October 10, 2020

1 i=input("saisir un nombre")
2 if ( i == 1 ) then
3 disp("Bonjour !");
4 elseif ( i == 2 ) then
5 disp("Goodbye !");
6 elseif ( i == 3 ) then
7 disp("Tchao !");
8 else
9 disp("Au Revoir !");
10 end;

4 LES BOUCLES EN SCILAB


Une structure répétitive, également appelée structure itérative ou encore boucle, permet de répéter
plusieurs fois l’ exécution d’une ou plusieurs instructions. On identifie en règle générale deux types de
répétitive :
• for

• while

1. Boucle for
L’instruction for permet d’effectuer des boucles, c’est-à-dire d’effectuer une action donnée plusieurs
fois. La plupart du temps, une boucle est effectuée sur des valeurs entières, qui vont d’une valeur
d’index de départ à une valeur d’index de fin.

• Syntaxe

1 for compteur=debut:pas:fin
2 instructions ..
3 end

Dans le script Scilab suivant, nous affichons la valeur de i, de 1 à 5.

1 for i = 1 : 5
2 disp(i)
3 end

Nous pouvons utiliser une forme plus complète afin d’afficher les entiers impairs de 1 à 5. Pour ce
faire, nous définissons le pas

1 for i = 1 : 2 : 5
2 disp(i)
3 end

2. Boucle while
L’instruction while permet d’effectuer une boucle tant qu’une expression booléenne est vraie. Au
début de la boucle,si l’expression est vraie, les instructions dans le corps de la boucle sont exécutées.
Lorsque l’expression devient fausse (unévénement qui doit survenir à un certain moment), la boucle
est terminée.

• Syntaxe

page 4 of 9
Statistique en Scilab October 10, 2020

while(condition) //instructions si la condition est vraie end Dans le script suivant, nous calculons la
somme des nombres de 1 à 10 avec une instruction while.
1 s=0
2 i=1
3 while ( i<= 10 )
4 s=s+i
5 i=i+1
6 end

3. Instructions break et continue


L’instruction break permet d’interrompre une boucle. Habituellement, nous utilisons cette instruction
dans les boucles où, une fois que certaines conditions sont satisfaites, les boucles ne doivent pas être
continuées.
L’instruction continue permet de passer à la boucle suivante, de sorte que les instructions dans le corps
de la boucle ne sont pas exécutées cette fois. Lorsque l’instruction continue est exécutée, Scilab ig-
nore les autres instructions et passe directementà l’instruction while ou for et évalue la boucle suivante.

• Exemple

1 disp("debut")
2 for i=1:10
3 if(i==5)then
4 break
5 end
6 disp(i)
7 end
8 disp("fin")

le programme affichera :
1 debut
2 1
3 2
4 3
5 4
6 fin

5 LES FONCTIONS EN SCILAB


1. Définition d’une fonction
Pour définir une fonction (ou procédures) en Scilab, la méthode la plus courante est de l’écrire dans
un fichier, dans lequelon pourra d’ailleurs mettre plusieurs fonctions (en regroupant par exemple les
fonctions qui correspondent à un même thèmeou une même application). Chaque fonction doit com-
mencer par l’instruction :

1 function [y1,y2,...,yn]=nomfonction(x1,x2,...,xp)\\
2 <instructions>\\
3 endfunction\\

page 5 of 9
Statistique en Scilab October 10, 2020

où les xi sont les arguments d’entrée (ou paramètres), les yj étant les arguments de sortie (ou résultats).
Une fonction peutavoir 0, 1 ou plusieurs paramètres (placés entre parenthèses) ainsi que 0, 1 ou
plusieurs résultats (placés entre crochets).Dans l’exemple suivant, nous définissons la fonction myfunc-
tion, qui prend l’argument d’entrée x, le multiplie par 2, et renvoie la valeur dans l’argument de sortie y.

1 function y = myfunction ( x )
2 z=2*x
3 endfunction

l’instruction function y = myfunction (x) est l’en-tête de la fonction tandis que le corps de la fonction
est constitué de l’instruction y = 2 * x. Le corps d’une fonction peut contenir une, deux ou plusieurs
instructions.
Supposons que la fonction simplef est définie avec 2 arguments d’entrée et 2 arguments de sortie,
comme suit.

1 function [y1 , y2] = simplef ( x1, x2 )


2 y1 = 2 * x1
3 y2 = 3 * x2
4 endfunction

En fait, le nombre d’arguments de sortie d’une telle fonction peut être 0, 1 ou 2. Lorsqu’il n’y a pas
d’argument de sortie,la valeur du premier argument de sortie est stockée dans la variable ans. Nous
pouvons également définir la variable y1 uniquement. Enfin, nous pouvons utiliser tous les arguments
de sortie, comme prévu. l’exemple suivant présente toutes ces séquences d’appel.

1 --> simplef ( 1 , 2 )
2 ans =
3 2.
4

5 --> y1 = simplef ( 1 , 2 )
6 y1 =
7 2.
8

9 --> [y1,y2] = simplef ( 1 , 2 )


10 y2 =
11 6.
12 y1 =
13 2.

2. Instruction return
Dans le corps d’une fonction, return permet de revenir immédiatement, c’est-à-dire qu’elle quitte
immédiatement lafonction en cours. Cette déclaration peut être utilisée dans les cas où le reste de
l’algorithme n’est pas nécessaire.
La fonction suivante calcule la somme des entiers de istart à iend. Dans des situations normales, il
utilise la fonction sum poureffectuer son travail. Mais si la variable istart est négative ou si la con-
dition istart ¡= iend n’est pas satisfaite, la variablede sortie y est mise à 0 et la fonction retourne
immédiatement.

1 function y = mysum ( istart , iend )


2 if ( istart < 0 ) then

page 6 of 9
Statistique en Scilab October 10, 2020

3 y=0
4 return
5 end
6 if ( iend < istart ) then
7 y=0
8 return
9 end
10 y = sum ( istart : iend )
11 endfunction

l’exemple suivant permet de vérifier que l’instruction return est correctement utilisée par la fonction
mysum.

1 --> mysum ( 1 , 5 )
2 ans =
3 15.
4

5 --> mysum ( -1 , 5 )
6 ans =
7 0.
8

9 --> mysum ( 2 , 1 )
10 ans =
11 0.

6 CONSTRUCTION DE VECTEURS ET DE MATRICES NUMERIQUES


6.1 Vecteurs
1. Création d’un vecteur en donnant la liste des éléments
Pour définir un vecteur de petite taille, on donne la liste des éléments du vecteur entre crochets,
séparés par des virgules (ou des espaces) pour un vecteur ligne et séparés par des points-virgules pour
un vecteur colonne.
Par exemple :
1 --> v=[2,-3*%pi,7] // vecteur ligne
2 v =
3 2. - 9.424778 7.
4 --> w=[2;-3*%pi;7] // vecteur colonne
5 w =
6 2.
7 - 9.424778
8 7.

La commande ’ permet de basculer d’un vecteur ligne à un vecteur colonne (et réciproquement).
1 --> w=[2,-3*%pi,7]’ // vecteur transpose
2 w =
3 2.
4 - 9.424778
5 7.

page 7 of 9
Statistique en Scilab October 10, 2020

2. Création d’un vecteur dont les éléments forment une suite arithmétique
Pour un vecteur ligne v dont les éléments forment une suite arithmétique de premier terme a, de raison
r et ne dépassant pas b, on utilise la commande : v = a : r : b.
Par exemple :
1 --> v=-3:2:14 //vecteur increment constant
2 v =
3 - 3. - 1. 1. 3. 5. 7. 9. 11. 13.

3. Création d’un vecteur avec linspace


Pour un vecteur ligne de pas constant (pas forcément déterminé à l’avance mais que Scilab calcule),
dont le nombre de termes, le premier terme et le dernier terme sont imposés, on utilise la commande
v=linspace(début, fin, nombre de valeurs).
1 --> v=linspace(-5,8,6)
2 v =
3 - 5. - 2.4 0.2 2.8 5.4 8

6.2 Matrices
1. Création d’une matrice de petite taille
Pour définir une matrice de petite taille, on donne la liste des éléments de la matrice entre crochets,
les éléments de chaque ligne étant séparés par des virgules (ou des espaces) et les lignes étant séparées
par des points-virgules.
Par exemple :
1 --> A=[1,2,3;4,5,6]
2 A =
3 1. 2. 3.
4 4. 5. 6.

2. Création d’une matrice de grande taille


Pour une matrice de grande taille, on peut lorsque c’est possible, définir chaque ligne comme on définit
un vecteur, les lignes étant toujours séparées par des points-virgules.
1 --> A=[1:4;2:5;3:6]
2 A =
3 1. 2. 3. 4.
4 2. 3. 4. 5.
5 3. 4. 5. 6.

3. Matrices prédéfinies

• ones(n,m) matrice à n lignes et m colonnes dont tous les éléments sont égaux à 1.
• zeros(n,m) matrice à n lignes et m colonnes dont tous les éléments sont égaux à 0.
• eye(n,m) matrice à n lignes et m colonnes avec des 1 sur la diagonale et des 0 ailleurs.

4. Opérations sur les matrices

La concaténation :
permet de juxtaposer vecteurs et matrices dont les formats sont compatibles.
Par exemple :

page 8 of 9
Statistique en Scilab October 10, 2020

1 --> u=1:3; v=[u,u,u]


2 v =
3 1. 2. 3. 1. 2. 3. 1. 2. 3.

Remqraue : Il ne faut pas confondre virgule et point-virgule.


1 --> u=1:3; v=[u;u;u]
2 v =
3 1. 2. 3.
4 1. 2. 3.
5 1. 2. 3.

Opérations arithmétiques classiques


On considère deux matrices A et B, pour lesquelles les opérations ci-dessous sont possibles, un réel k
et un entier n.
1 --> A=[1,0,0;0,2,0;0,0,3]; B=[1,1,1;2,2,2;3,3,3]; A+B, A*B
2 ans =
3 2. 1. 1.
4 2. 4. 2.
5 3. 3. 6.
6 ans =
7 1. 1. 1.
8 4. 4. 4.
9 9. 9. 9.

Opérations arithmétiques pointées


Ce sont des opérations élément à élément. On considère deux matrices A = (ai,j ) et B = (bi,j ) de
même format et un entier n.
1 --> A=[1,0,0;0,2,0;0,0,3]; B=[1,1,1;2,2,2;3,3,3]; A.*B, A./B
2 ans =
3 1. 0. 0.
4 0. 4. 0.
5 0. 0. 9.
6 ans =
7 1. 0. 0.
8 0. 1. 0.
9 0. 0. 1.

7 EXERCICES
EXERCICE 1 Construire de trois manières différentes, le vecteur ligne de taille 200 qui comporte les 200
premiers carrés des nombres entiers.

EXERCICE 2 Construire de trois manières différentes, la matrice de taille 12 qui comporte des zéros
partout sauf sur les premières et dernières ligne et colonne qui ne comportent que des 1

EXERCICE 3i Construire sans effectuer de boucles la matrice 10*10 donnant les résultats de la table de
multiplication

page 9 of 9

Vous aimerez peut-être aussi