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

Post on 04-Apr-2015

121 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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 ?

top related