o utils de p rogrammation mr. bendib. i maa, lamis laboratory, université de tébessa

45
OUTILS DE PROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Upload: josue-chatelain

Post on 04-Apr-2015

121 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

OUTILS DE PROGRAMMATION

Mr. BENDIB. IMAA, LAMIS Laboratory, Université de

Tébessa

Page 2: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Chapitre 3

Page 3: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

La Programmation sous MATLAB

Page 4: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Less m-Files

Page 5: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

• 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.

Page 6: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa
Page 7: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 8: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

2. Les Operateurs Logiques:

Page 9: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 10: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 11: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 12: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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 %

Page 13: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 14: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 15: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

• >>

Page 16: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 17: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 18: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

VOUS AVEZ DES QUESTIONS ?

Page 19: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa
Page 20: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 21: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 22: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 23: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 24: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 25: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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’

Page 26: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 27: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 28: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Variables

Page 29: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

• 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.

Page 30: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 31: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 32: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Les commandes save, load et clear - fichiers.mat

Page 33: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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 ;

Page 34: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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 ;

Page 35: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Le typage de données

Page 36: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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.

Page 37: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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é.

Page 38: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Fonctions de conversions >> a=int8(5)a = 5

>> b=uint8(5)b = 5

>> c=double(5)c = 5

>> d=single(5)d = 5

Page 39: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 40: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Fonctions de conversions >> b=uint8(5)b = 5

>> b=b*26b = 130

>> b=uint8(16)b = 16

>> b=b*bb = 255

Page 41: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 42: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 43: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

Fonctions de conversion string vers nombre:

>> base2dec('111',3)ans = 13

>> bin2dec('010111')ans = 23

>> hex2dec('3ff')ans = 1023

>> hex2num('bff') ans = -1

Page 44: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

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

Page 45: O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa

VOUS AVEZ DES QUESTIONS ?