Nous avons déjà vu lors des sessions précédentes que si une instruction se termine par une virgule ou un retour à la ligne alors le résultat de son évaluation est affiché dans la fenêtre Scilab. L'affichage n'aura par contre pas lieu si l'instruction est terminée par un point virgule ou si l'instruction fait partie du corps d'une fonction.
Pour afficher explicitement la valeur d'une variable ou d'une
expression on peut utiliser les fonctions disp ou
print. Le premier argument de la fonction
print permet de contrôler où se fera l'affichage. On peut
indiquer un nom ou un descripteur de fichier (voir la commande
file) ou bien utiliser %io(2)
qui permet l'affichage
dans la fenêtre Scilab :
Il est possible de contrôler le format utilisé pour l'affichage des nombres par les fonctions disp et print au moyen de la fonction format. On notera aussi qu'il est possible de sauver les variables de l'environnement courant au moyen de la commande save. On recharge alors les variables dans l'environnement courant avec la commande load. Les commandes save et load utilisent un format binaire machine indépendant. Les sauvegardes se font donc sans pertes de précisions et sont portables.
Pour contrôler plus finement le formatage des entrées sorties
plusieurs fonctions sont disponibles dans Scilab.
Les fonctions write et read sont basées sur des
formatages Fortran
. Les descripteurs de fichiers acceptés par
ses deux fonctions sont obtenus au moyen de la commande
file. Les sorties et entrées dans la fenêtre Scilab étant
obtenus par les descripteurs %io(2)
et %io(1)
.
Nous ne nous étendrons pas plus sur ces fonctions et nous allons plutôt décrire ici les fonctions Scilab qui émulent les fonction d'entrées sorties que l'on utilise en C. Ces fonctions permettent l'écriture et la lecture formatée ou binaire sur des fichiers, sur les sorties et entrées standard de la fenêtre Scilab et sur des chaînes de caractères.
|
La fonction mopen interface la fonction C,fopen et sa syntaxe est la suivante :
[fd,err]=mopen(filename , mode, swap )filename est une chaîne décrivant un nom de fichier. L'argument mode est une chaîne d'au plus trois caractères (dont la valeur par défaut est 'rb') qui permet de préciser si le fichier doit être ouvert en lecture ('r'), en écriture ('w'), en complétion ('a') ou en lecture/écriture ('r+'). L'ajout du caractère 'b' précise que le fichier est un fichier binaire.
Les fonctions d'écriture et de lecture formatées sont proches des fonctions de noms voisins présentes dans la librairie C. La spécification des formats par exemple suit la spécification des formats des fonctions C. L'aspect vectoriel qui est une caractéristique de Scilab est intégré aux fonctions de lecture écriture. Pour l' écriture, les formats sont utilisés sur les lignes des arguments vectoriels donnés et pour la lecture on peut préciser le nombre de fois où il faut utiliser le format (voire l'utiliser jusqu'à atteindre une fin de fichier). L'exemple suivant illustre cela :
Nous donnons maintenant un autre exemple de lecture formatée avec des données de type chaîne de caractères et nombres mélangées. On cherche à lire au moyen de la fonction mfscanf le fichier mfscanf.dat dont le contenu est :
// un exemple avec lecture d' un fichier avec separateur de type '[ ]*,[ ]*' // ------------------------------------------------------------------------- Agen , 47000 , 56 Aigues Juntes , 09000 , 78 Aiguilhe , 43000 , 78 Ainac , 04000 , 56 Ajaccio , 20000 , 23 Ajoux , 07000 , 34 Albi , 81000 , 23 Alencon , 61000 , 12
Pour permettre une écriture binaire qui soit machine indépendante les fonctions Scilab que nous verrons dans la suite écrivent les nombres dans les fichiers au format little endian. Ce mode par défaut peut-être supprimé au moyen du paramètre swap en lui donnant la valeur 0. Dans ce dernier cas les lectures écritures se font avec le mode natif de la machine utilisée.
La fonction mopen retourne un descripteur de fichier fd et éventuellement un indicateur d'erreur.
La fonction mclose permet de fermer un fichier qui a été précédemment ouvert par une commande mopen et de libérer ainsi le descripteur du fichier ouvert (Le nombre de fichiers que l'on eut ouvrir simultanément est limité). On notera qu'il est possible de fermer tous les fichiers ouverts avec l'instruction mclose(file()).
Les fonctions décrites dans la table 5 permettent la lecture écriture de données binaires. Les fonctions mget et mput utilisent le mode de lecture (petit ou grand ``endian'') qui est précisé lors de l'ouverture d'un fichier avec mopen. Mais il est toujours possible de forcer une lecture en petit ou grand ``endian'' en utilisant un paramètre adéquat.
|
On pourra se reporter aux fonctions Scilab contenues dans le répertoire SCI/macros/sound où des fonctions de lecture écriture de fichier de sons constituent d'excellent exemples d'utilisation des fonctions de la table 5. Nous donnons simplement ici un exemple sommaire de lecture écriture d'une matrice dans un format binaire.