Découvrir Scilab/Programmation

Un livre de Wikibooks.

Table des matièresIndex



5. Programmation


Scilab est un langage de programmation, il accepte un certain nombre d’instructions autres que mathématiques, permettant l'exécution d'algorithmes.

L'écriture de programmes se fait idéalement avec SciPad ; celui-ci met en exergue les instructions en couleurs, les parenthésages (correspondance entre les paires de parenthèses et de crochets), et surligne les lignes continuées avec un fond jaune. On peut aussi utiliser un autre éditeur de texte en sauvegardant le fichier avec l'extension .SCE. Lorsque l'environnement le permet, on peut faire du copier-coller depuis l'éditeur de texte externe vers SciPad ou bien l'éditeur de ligne de commande.

Sections

[modifier] Interaction avec l'utilisateur

[modifier] Entrées

La fonction input permet à l'utilisateur de rentrer une valeur. la syntaxe est :

x = input(message)

message est une chaîne de caractères qui s'affiche et x est la variable dans laquelle sera mise la valeur (ou la matrice) entrée par l'utilisateur. Pour entrer une chaîne de caractères, il faut écrire x = input(message,'string') ou : x = input(message,'s')

Lorsqu'une variable nom_de_variable existe, alors editvar nom_de_variable ouvre une fenêtre permettant de modifier la contenu de cette variable.

La fonction halt arrête l'exécution du programme jusqu'à ce que l'utilisateur appuie sur une touche.

[modifier] Sorties

La fonction print(%io(2),a) affiche le contenu de la variable a à l'écran. On peut aussi utiliser write(%io(2),a). La fonction disp(a) affiche le contenu de a sans faire figurer « a =  » devant.

La fonction warning(message) affiche la chaîne de caractère message sous la forme d'un avertissement, c'est-à-dire précédé de « WARNING:  ». La fonction error(message) affiche la chaîne de caractère message sous la forme d'un message d'erreur, c'est-à-dire précédé de « !--error 9999 ».

[modifier] Structures de contrôle (boucles et branchements conditionnés)

Scilab possède des structures de contrôle :

  • branchement conditionné if condition then, …, else, …, end
  • boucle itérative for variable = début : fin, …, end ou for variable = début : pas : fin, …, end
  • boucle itérative antéconditionnée : while condition do, …, end ou while condition do, …, else, …, end

La fonction break permet d'interrompre une boucle, qu'elle soit itérative ou conditionée.

[modifier] Fonctions extérieures

Il est possible de définir des fonctions avec passage de paramètres.

Nous avons déjà vu l'utilisation des instructions deff et function pour définir une formule (voir Calcul numérique).

Mais la fonction peut aussi être utilisée comme un sous-programme avec ses variables propres, et qui peut contenir des boucles, des branchements conditionnés… Par exemple, la fonction suiviante calcule la puissance n-ième (n entier positif)

-->function [y] = puissance(x,n)
-->y = 1
-->if n > 0 then
-->for i = 1:n
-->y = y*x
-->end
-->end 
-->endfunction

-->puissance(2,3)
 ans  =

    8.

On remarque qu'entre function et endfunction, l'éditeur en ligne ne saute pas de ligne après le retour chariot.

On peut également utiliser la fonction interne deff, le programme est alors entre les guillemets ou apostrophes, et les instrucitons sont séparées par des virgules ou des points-virgules :

deff('[y] = puissance(x,n)', 'y = 1, if n > 0 then,...
for i = 1:n, y = y*x, end, end')

Le résultat d'un calcul à l'intérieur d'une fonction n'est jamais affiché (que ce soit avec deff ou function), l'utilisation de virgules ou de points-virgules est donc indifférente.

[modifier] Chargement d'une fonction

Une fonction peut définie dans un fichier texte, puis intégrée dans Scilab avec l'instruction exec('nom_de_fichier'), où nom_de_fichier est le nom du fichier texte contenant la fonction (il faut indiquer l'extension du nom du fichier). Par exemple, le programme enregistré dans le fichier ma_fonction.TXT peut être lancé par

exec('ma_fonction.txt')

La première ligne du fichier doit contenir l'instruction function.

On peut aussi mettre plusieurs fonctions dans un fichier, puis les charger dans le programme ; elles s'utilisent alors comme si elles avaient été écrite dans le programme. Le chargement se fait avec la commande getf('nom_de_fichier'),

[modifier] Mise en forme du code

Lorsque la fonction est tapée dans un éditeur de texte, il est conseillé d'utiliser, pour faciliter la lecture, des commentaires ainsi que des décalages de colonnes (indentations) pour marquer les imbrications de structures de contrôle ; ce sont des « bonnes pratiques de programmation » générales. Les commentaires sont introduits par deux barres de fraction //.

Par exemple, la fonction décrite ci-dessus aurait la forme

function [y] = puissance(x,n)

// calcule la puisance n-ieme 

y = 1 // valeur de y^0, et valeur initiale si n>0
if n > 0 then 
   for i = 1:n
      y = y*x // on multiplie n fois x par lui-meme
   end
end 

endfunction

[modifier] Lancement d'un programme

Un programme (fichier .SCE) peut être lancé depuis SciPad, en cliquant sur le menu Execute puis en choisissant Load into Scilab. On peut aussi utiliser la combinaison de touches CTRL+l.

[modifier] Voir aussi

Dans Wikipédia

[modifier] Notes



Graphiques et sons < > Environnement