o utils de p rogrammation mr. bendib. i maa, lamis laboratory, université de tébessa
TRANSCRIPT
OUTILS DE PROGRAMMATION
Mr. BENDIB. IMAA, LAMIS Laboratory, Université de
Tébessa
Chapitre 3
La Programmation sous MATLAB
Less m-Files
• Un m-file est un fichier contenant une suite d'instructions
que Matlab peut exécuter.
• Un m-file peut aussi être utilisé comme fichier de librairie
contenant des fonctions définies par l'utilisateur.
• Pour créer un m-file, utilisez le menu
File new Blank M-file.
1. Les Operateurs de bases:
• Ces operateurs sont valables pour les scalaires comme pour les
matrices.
• Matlab exécutera la bonne opération en fonction du type des
termes de l'operateur.
2. Les Operateurs Logiques:
3. Entrées / sorties:
• Parmi les commandes qui permettent l'interaction avec
l'utilisateur lors de l'exécution script d'un on trouves :
• L'utilisateur peut saisir un nombre que le script pourra alors
utiliser par la commande input.
• Dans le sens inverse la commande disp permet d'afficher des
variables a l'utilisateur.
• Exemple
n = input('Saisissez un nombre :') ; Saisie de
l'utilisateur
disp(n) ; Sortie vers
l'affichage Matlab
4. Le contrôle de l‘exécution:
4.1. Instruction de choix IF
• L'instruction IF est une instruction de choix.
• En fonction que sa condition sera évalué vrai ou faux.
• La commande exécutera un groupe d'instructions ou l'autre.
4. Le contrôle de l‘exécution:
4.1. Instruction de choix IF
• Exemple 01
clccleara=input (' Donner la valeur de a ');b=input (' Donner la valeur de b '); if a>b disp(a)else disp(b)end
4.1. Instruction de choix IF
• Exemple 02
n = 5 ;m = 8 ;if (n > 0) % Condition 1if ( n > 5 && m < 0) % Condition 1 et Condition 2disp ('ici 1') % Affichageelseif (n == 5) % Si Condition 1 et non Condition 2 et Condition 3disp ('ici 2') % Affichageelse % Si Condition 1 et non Condition 2 et non Condition 3disp('ici 3') % Affchageend %else % Si Condition 1 est fauxdisp('ici 4') % Affichageend %
4. Le contrôle de l‘exécution:
4.2. Instruction de choix SWITCH
• L'instruction SWITCH est une instruction de choix comme le IF
mais avec la particularité de pouvoir effectuer plus de
branchements que le IF.
• La commande SWITCH doit être utilisée dans le cas ou, par
exemple, en fonction de la valeur d'une variable, on effectue
différentes opérations. Attention toute fois, que le nombre de
valeurs possibles de cette variable doit être restreint pour
conserver une certaine lisibilité du code.
• Le mot clé break signifie que l'on arrête la commande SWITCH et
que l'on transfert l’exécution au mot clé end.
4.2. Instruction de choix SWITCH
• Exemple 01n = input('Pour sauver jack tapez 1, ...Jessy tapez 2, Brian tapez 3 :') ; % Demande de saisie de l'utilisateurswitch ncase 1 % Si n vaut 1disp('Jack est sauvé')breakcase 2disp('Jessy est sauvé')% Si n vaut 2breakcase 3disp('Brian est sauvé')% Si n vaut 3breakotherwisedisp('Vous n"avez sauvé personne') %Si n est différent de 1,2,3end
4.2. Instruction de choix SWITCH
• Exemple 01 Exécution
• Pour sauver jack tapez 1, ...Jessy tapez 2, Brian tapez 3
:2
• Jessy est sauvé
• Pour sauver jack tapez 1, ...Jessy tapez 2, Brian tapez 3
:5
• Vous n"avez sauvé personne
• >>
4. Le contrôle de l‘exécution:
4.3. Boucle FOR
• La boucle FOR permet d'effectuer des opérations pour un nombre
d’itérations définis.
• L'avantage de la boucle FOR sur la boucle WHILE est sa simplicité
d’écriture dans le cas d'un nombre d’itérations définis et bien
connu a l'avance (par exemple, le parcours d'un tableau).
• lors de l’exécution de la boucle FOR, la variable qui sert a boucler
est accessible en lecture et en écriture. Il est donc possible de
réduire ou d'augmenter le nombre d‘itérations au cours de
l‘exécution de la boucle.
4.2. Boucle FOR
• Exemple 01% | Exemple 1 |||||||||||||||||||||||||- %for n = 1 :5 % Boucle pour n allant de 1 a 5 inclus
par pas de 1disp(n) % Affichageend % Fin de boucle% | Exemple 2 |||||||||||||||||||||||||- %for n = 8 :-2 :0 % Boucle pour n allant de 8 a 0 par
pas de 2disp(n) % Affichageend % Fin de boucle% | Exemple 3 |||||||||||||||||||||||||- %for n = [ 1 9 3 5 6 7 ] % Boucle pour n égal chaque
valeur du vecteurdisp(n) % Affichageend % Fin de boucle
VOUS AVEZ DES QUESTIONS ?
4.2. Instruction de choix SWITCH
• Exemple 01n = input('Pour sauver jack tapez 1, ...Jessy tapez 2, Brian tapez 3 :') ; % Demande de saisie de l'utilisateurswitch ncase 1 % Si n vaut 1disp('Jack est sauvé')breakcase 2disp('Jessy est sauvé')% Si n vaut 2breakcase 3disp('Brian est sauvé')% Si n vaut 3breakotherwisedisp('Vous n"avez sauvé personne') %Si n est différent de 1,2,3end
2. Tableaux de nombres
Les tableaux de nombres réels ou complexes de dimension un ou deux suivent la syntaxe suivante :
un tableau est délimité par des crochets ;
les éléments sont entrés ligne par ligne ;
les éléments appartenant à la même ligne sont séparés par
des espaces (ou par des virgules) ;
les différentes lignes doivent comporter le même nombre
d’éléments et sont séparées par des points-virgules.
2. Tableaux de nombres (Suite)
Exemple
Les tableaux :
S’écrivent sous la forme :
[1 2 3 4 ] [1; 2; 3; 4 ] [4 5 6 ; 7 8 9 ; 10 11 12 ] :
1 1 2 3
2 4 5 6
1 2 3 4 3 7 8 9
4 10 11 12
2. Tableaux de nombres (Suite)>> [1 2 3 4 ]
ans =
1 2 3 4
>> [1; 2; 3; 4 ]
ans =
1 2 3 4
>> [4 5 6 ; 7 8 9 ; 10 11 12 ]
ans =
4 5 6 7 8 9 10 11 12
2. Tableaux de nombres (Suite)
Remarque : Toutes les lignes doivent contenir le même nombre d’éléments,
>> [1 2 ; 1 2 3]??? Error using ==> vertcatCAT arguments dimensions are not consistent.
• Dans la suite, on appellera :
vecteur un tableau de format (n, 1) i.e. ne comportant qu’une seule
colonne ;
liste ou vecteur-ligne un tableau de format (1, n) i.e. ne comportant
qu’une seule ligne ;
tableau un tableau au sens commun du terme, c’est `a dire une structure
organisée en lignes et colonnes.
3. Caractères et chaines de caractères
On écrit les caractères et les chaines de caractères,
entre apostrophes : ’a’, ’toto’. Matlab considère les
caractères comme des chaines de caractères de longueur
un et identifie chaines de caractères et liste de caractères.
• Exemple :
La liste de caractères [’a’ ’b’ ’c’ ’d’ ’e’] est identique à la
chaines de caractères [’abcde’],
Mieux encore, ’abcde’ ; [’abc’ ’de’] est identique à ’abcde’
3. Caractères et chaines de caractères (Suite)
>> ['a' 'b' 'c' 'd' 'e']
ans =
abcde
>> ['abcde']
ans =
abcde
>> 'abcde'
ans =
abcde
>> ['abc' 'de']
ans =
abcde
3. Caractères et chaines de caractères (Suite)
Cet exemple donne un idée du rôle des crochets [ ]. Les crochets sont le
symbole de l’opérateur de concaténation :
concaténation ”en ligne” lorsque le séparateur est un espace ou une virgule ;
concaténation ”en colonne” lorsque le séparateur est un point-virgule
comme dans les tableaux de nombres (il est alors nécessaire que les listes de
nombres ou de caractères ainsi concaténées possèdent le même nombre
d’eléments).
• Exemple :
>> ['abc' ; 'abcd']
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
Variables
• Une caractéristique de MATLAB est que les variables n’ont pas à être déclarées, leur nature se déduisant automatiquement de l’objet qui leur est affecté
1. IdentificateursLes règles de dénomination des variables sont très
classiques :
un identificateur débute par une lettre, suivie de lettres,
de chiffres ou du caractère souligné (_) ;
sa longueur est inferieure ou égale à 31 caractères ;
les majuscules sont distinctes des minuscules.
3. Identificateurs (Suite)
Voici quelques identificateurs prédéfinis :
ans : Résultat de la dernière évaluation
pi : 3,416..
eps : inf{ ≥ 0 tels que 1 < 1 + }
inf : Infini (1/0)
NaN : “Not a Number” (0/0)
i, j : i et j représentent tous deux le nombre imaginaire unité ()
realmin : plus petit nombre réel positif
realmax : plus grand nombre réel positif
2. AffectationLe symbole d’affectation de valeur à une variable est le
caractère = .
• Exemple :
>> a = [1 2 3 4 ]
a =
1 2 3 4
>> a = ’abc’
a =
abc
L’exemple ci-dessus montre bien que dans MATLAB les
variables ne sont ni déclarées ni typées.
Les commandes save, load et clear - fichiers.mat
Ces commandes permettent d’intervenir directement
sur l’environnement de travail.
save permet de sauver tout ou partie de l’espace de
travail sous forme de fichiers binaires appelés mat-files ou
fichiers .mat :
save : enregistre la totalité de l’espace de travail dans le
fichier matlab.mat ;
save nom de fichier : l’espace de travail est enregistre
dans le fichier nom de fichier ;
save nom de variable . . . nom de variable :
enregistre les variables indiquées (et les objets qui leurs
sont associes) dans un fichier .mat qui porte le nom de la
première variable ;
save nom de fichier nom de variable . . . nom de
variable : enregistre les variables dans le fichier dont le
nom a été indiqué;
load permet d’ajouter le contenu d’un fichier .mat à
l’espace de travail actuel ;
Le typage de données
Matlab effectue ce que l'on appel du typage dynamique.
il adapte le type des operateurs de manière a permettre
aux opérations de s'effectuer.
Cette pratique a des avantages comme des inconvénients.
Le programmeur n’est pas obliger de définir a l'avance le type
de chaque variable et d'être coincé tout au long de l’exécution
par ce type.
Matlab effectue des conversions de type implicites sans le
signaler, ce qui peut augmenter le temps d'exécution et
parfois mener a des résultats surprenant.
Il est cependant possible de forcer Matlab a faire des
conversions explicites.
Fonctions de conversions :
cast : Convertir la variable à un type de données différent.
double : Conversion en double précision
int8, int16, int32, int64 : Conversion en entier signé.
single : Conversion en double precision
typecast : Conversion de types de données sans modifier les
données
uint8, uint16, uint32, uint64 : Conversion en entier non signé.
Fonctions de conversions >> a=int8(5)a = 5
>> b=uint8(5)b = 5
>> c=double(5)c = 5
>> d=single(5)d = 5
Fonctions de conversions >> whos Name Size Bytes Class Attributes
a 1x1 1 int8 b 1x1 1 uint8 c 1x1 8 double d 1x1 4 single
>> a=a*26a = 127
>> a=a*2.5a = 13
Fonctions de conversions >> b=uint8(5)b = 5
>> b=b*26b = 130
>> b=uint8(16)b = 16
>> b=b*bb = 255
Fonctions de conversions >> h=uint8(266)h = 255
>> g = cast(h,'int8')g = 127
>> k= typecast(uint8(15), 'int8')k = 15
>> k= typecast(uint8(130), 'int8')k = -126
Fonctions de conversion string vers nombre:
• base2dec : Convertir une chaine de base N vers le décimale
• bin2dec : Convertir une chaine binaire vers le décimale
• cast : Convertir la variable à un type de données différent.
• hex2dec : Convertir une chaine hexadécimale vers le décimale
• hex2num : Convertir une chaine hexadécimale vers un reel double
• str2double : Convertir une chaine de caractères vers un reel double
Fonctions de conversion string vers nombre:
>> base2dec('111',3)ans = 13
>> bin2dec('010111')ans = 23
>> hex2dec('3ff')ans = 1023
>> hex2num('bff') ans = -1
Fonctions de conversion string vers nombre: >> b='1';>> a=str2double('1')a = 1>> whos Name Size Bytes Class Attributes
a 1x1 8 double b 1x1 2 char
>> str2double('123.45e7')ans = 1.2345e+009
VOUS AVEZ DES QUESTIONS ?