Entrées et Sorties de variables

Nous avons déjà manipulé des variables. Les variables sont des objets permettant de stocker des valeurs, issues d'un choix de l'utilisateur ou de résultats de calcul. Ce que l'on appelle les Entrées et Sorties de variables correspond en fait à l'acquisition de valeurs et à l'affichage de valeurs, pour interagir avec l'utilisateur.

Acquisition de valeurs

La forme la plus courante d'affectation d'une valeur à une variable est effectuée par la commande =.

adresse = 'http://rapsodee.mines-albi.fr' ;

Il est possible d'interagir avec l'utilisateur pour attribuer une valeur à une variable. Pour cela, on utilise la fonction input.

Exemple

On peut facilement demander à l'utilisateur de nous donner une valeur. Cette valeur peut alors être affectée à une variable :

>> AgeCapitaine = input('Quel est l''âge du Capitaine ?\n') ;
Quel est l''âge du Capitaine ?
21
>> AgeCapitaine
AgeCapitaine =
21

La valeur (21) donnée par l'utilisateur est stockée dans la variable AgeCapitaine.

Remarque

Le caractère \n est un caractère spécial qui permet d'aller à la ligne. Si l'on veut ajouter une tabulation, on peut utiliser le caractère spécial \t.

Par défaut, la fonction input évalue ce qui est entré par l'utilisateur. Ainsi, si ce qui est attendu doit être une chaîne de caractères, il faut que l'utilisateur donne la valeur entre guillemets droits simples (') !

Si l'entrée de l'utilisateur ne doit pas être évaluée, vous pouvez utiliser la fonction input avec l'option 's'.

Exemple

Prenons un exemple où l'on attend explicitement une valeur correspondant à une chaîne de caractère :

>> choixLangage = input('Quel est votre langage de programmation préféré ?\n') ;
Quel est votre langage de programmation préféré ?
Matlab
Error using input
Undefined function or variable 'Matlab'.
 
Quel est votre langage de programmation préféré ?
'Matlab'

Si l'utilisateur donne une valeur de chaîne sans mettre les quotes ', cela conduit à une erreur, car MATLAB cherche à évaluer la valeur avant de l'affecter à la variable choixLanguage. Pour éviter ce désagrément, on peut écrire :

>> choixLangage = input('Quel est votre langage de programmation préféré ?\n','s') ;
Quel est votre langage de programmation préféré ?
Matlab
 
>> choixLangage
 
choixLangage =
 
Matlab

Affichage de valeurs

Toutes les commandes qui donnent lieu à un résultat (valeur numérique, matrice ou chaîne de caractères) affichent automatiquement le résultat obtenu.

Pour ne pas afficher cette sortie dans la fenêtre de commandes, il faut terminer la commande par le caractère ;.

Le simple appel d'une variable affiche sa valeur.

Exemple

a=sin(4/pi);
b=3+5/a;
c=1:pi/10:b;
NomLangage='MATLAB';

Si l'on veut afficher un résultat, il suffit d'appeler la variable qui le contient, par exemple, le code :

>> b
 
b =
 
    8.229821048259909
 
>> NomLangage
 
NomLangage =
 
    MATLAB

Remarqueformat

Ici, le format d'affichage est le format long : pour obtenir le même résultat que les exemples numériques présentés ici, il faut donc avoir lancé la commande format long.

La commande format short permet d'obtenir l'affichage par défaut.

Dans l'exemple précédent, on remarque que l'affichage direct d'une variable est précédé du nom de cette variable. Ce comportement par défaut n'est pas toujours souhaité : on peut vouloir afficher le contenu d'une variable, sans son nom.

Il est alors possible d'afficher le contenu d'une variable avec la fonction disp (pour display).

disp(b)
disp(NomLangage)

ou, en utilisant l'agrégation de chaîne de caractères (l'opérateur []) :

>> disp(['Le langage que l''on étudie est : ',NomLangage,' !']) ;
Le langage que l'on étudie est : MATLAB !

Remarque[ ]

L'opérateur [] ne peut que concaténer des chaînes de caractères entre-elles. En fait, c'est une construction de tableaux par blocs, chaque chaîne étant elle-même un tableau.

Si l'on veut afficher des valeurs numériques, il faut les convertir en chaînes avec la commande num2str :

>> disp(['La valeur de sin(4/pi) est ',num2str(a)]) ;
La valeur de sin(4/pi) est 0.95606

Formatage de valeurs

Pour personnaliser l'affichage, il est possible d'utiliser la fonction sprintf qui permet de construire des chaînes de caractères complexes, en formatant l'affichage des variables.

Syntaxe

La fonction sprintf créer et renvoie une chaîne de caractères en formatant une variable selon un format spécifié :

chaine_de_caracteres = sprintf(Chaine_de_Caracteres_avec_un_Format, variable_a_formater) ;

Exemple

>> str = sprintf('La valeur de sin(4/pi) est %8.6f',a) ;
>> disp(str)
La valeur de sin(4/pi) est 0.956056

La chaîne de caractère %8.6f est ce que l'on appelle un format. Un format commence toujours par le caractère %, et indique comment on doit représenter la variable qui suit. Le format est substitué par la variable formatée. Ici, le format signifie que l'on veut représenter la valeur de a comme un réel, sur 8 chiffres maximum, avec une précision de 6 chiffres après la virgule.

Pour afficher plusieurs variables, il suffit de d'écrire une chaîne de caractères ayant autant de formats que de variables à formater.

Syntaxe

La fonction sprintf peut créer et renvoyer une chaîne de caractères en formatant autant de variables que souhaitées selon les formats spécifiés :

chaine_de_caracteres = sprintf(Chaine_de_Caracteres_avec_Plusieurs_Formats, variable_a_formater_1, ..., variable_a_formater_N) ;

Exemple

>> x= '4/pi' ;
>> str = sprintf('La valeur de sin(x) est %12.10f,\n\t pour x valant %s',sin(eval(x)),x) ;
>> disp(str)
La valeur de sin(x) est 0.9560556573,
            pour x valant 4/pi

Remarque

La fonction eval permet d'évaluer la valeur d'une chaîne de caractères.

Complément

Pour en savoir plus sur les possibilités de format, consultez l'aide de Matlab :

https://fr.mathworks.com/help/matlab/matlab_prog/formatting-strings.html