Sunteți pe pagina 1din 9

Software de analiza numerica si simbolica 1

CURS 3

PROGRAMAREA ÎN LIMBAJUL MATLAB (continuare)

2. Instrucțiuni de salt și bucle (instrucțiuni pentru controlul derulării unui program)


În MATLAB există mai multe tipuri de instrucțiuni de control al buclelor:
ü if, else și elseif;
ü switch, case și otherwise;
ü for;
ü while;
ü break;
ü continue;
ü return;
ü try, catch;
ü error.

Toate instrucțiunile de control folosesc comanda end pentru a indica sfârșitul blocului respectiv.

Instrucțiunile if, if-else, if-elseif, if-elseif-else


Execută un grup de instrucțiuni pe baza unei condiții logice (identitate sau inegalitate); poate lucra cu
șiruri de caractere doar împreună cu funcția strcmp care compară șiruri de caractere;
Ø if simplu

Sintaxa Schema logică


if expresie_logica
grup de instructiuni
end

Exemplu:
i=2;
j=input('j='); %se da controlul la tastatura pt. introducerea valorii
if i+j>10
disp(['i+j=' num2str(i+j)])
end
Software de analiza numerica si simbolica 2

Ø if-else

Sintaxa Schema logică


if expresie_logica
grup1 de instructiuni
else
grup2 de instructiuni
end

Exemplu:
x=input('x=');
if x>0
disp('x este pozitiv')
else
fprintf('x este negativ sau nul\n') %\n pt. a trece pe o linie noua
end

Ø if-elseif

Sintaxa Schema logică


if expresie_logica_1
grup1 de instructiuni
elseif expresie_logica_2
grup2 de instructiuni
end

Exemplu:
u=input('u=');
v=input('v=');
if u>v
disp('u este mai mare ca v')
elseif u<v
disp('u este mai mic ca v')
end
Software de analiza numerica si simbolica 3

Ø if-elseif-else

Sintaxa Schema logică


if expresie_logica_1
grup1 de instructiuni
elseif expresie_logica_2
grup2 de instructiuni
else
grup3 de instructiuni
end

Exemplul 1:
u=input('u=');
v=input('v=');
if u>v
disp('u este mai mare ca v')
elseif u<v
disp('u este mai mic ca v')
else
disp('u este egal cu v')
end

Exemplul 2: Stabilirea parității sau imparității unui număr întreg strict pozitiv
n=input('n=');
if n<=0
disp('valoarea tastata trebuie sa fie strict pozitiva');
elseif rem(n,2)==0 %functia rem returneaza restul impartirii la 2
disp('n este par');
else %daca n este pozitiv si impar
disp('n este impar');
end

Exemplul 3: Compararea șirurilor de caractere împreună cu funcția strcmp. Funcția strcmp(S1,S2)


compară șirurile de caractere S1 și S2: dacă sunt identice returnează 1 (true), în caz contrar 0 (false)
figura=input('Tastati triunghi, dreptunghi sau cerc: ','s');% 's' string
if strcmp(figura,'triunghi')==1
b=input('Tastati valoarea numerica a bazei in [mm]=');
h=input('Tastati valoarea numerica a inaltimii in [mm]=');
aria=b*h/2;
disp(['aria triunghiului=', num2str(aria), '[mm^2]']);
Software de analiza numerica si simbolica 4

elseif strcmp(figura,'dreptunghi')==1
a=input('Tastati valoarea numerica a bazei in [mm]=');
b=input('Tastati valoarea numerica a inaltimii in [mm]=');
aria=a*b;
disp(['aria dreptunghiului=', num2str(aria), '[mm^2]']);
elseif strcmp(figura,'cerc')==1
r=input('Tastati valoarea numerica a razei in [mm]=');
aria=pi*r^2;
disp(['aria cercului=', num2str(aria), '[mm^2]']);
else
disp('ati tastat altceva decat triunghi, dreptunghi sau cerc');
end

Instrucțiunile switch, case, otherwise


Execută diverse grupuri de instrucțiuni pe baza condiției logice de identitate, putând compara și șiruri
de caractere.

Sintaxa Schema logică


switch expresie
case valoare_1
grup 1 de instructiuni
case valoare_2
grup 2 de instructiuni
.
.
case valoare_n
grup n de instructiuni
otherwise
grup n+1 de instructiuni
end

Exemplul 1:
figura=input('Tastati triunghi, dreptunghi sau cerc: ','s');
switch figura
case 'triunghi'
b=input('Tastati valoarea numerica a bazei in [mm]=');
h=input('Tastati valoarea numerica a inaltimii in [mm]=');
aria=b*h/2;
disp(['aria triunghiului=', num2str(aria), '[mm^2]']);
Software de analiza numerica si simbolica 5

case'dreptunghi'
a=input('Tastati valoarea numerica a bazei in [mm]=');
b=input('Tastati valoarea numerica a inaltimii in [mm]=');
aria=a*b;
disp(['aria dreptunghiului=', num2str(aria), '[mm^2]']);
case 'cerc'
r=input('Tastati valoarea numerica a razei in [mm]=');
aria=pi*r^2;
disp(['aria cercului=', num2str(aria), '[mm^2]']);
otherwise
disp('ati tastat altceva decat triunghi, dreptunghi sau cerc');
end

Instrucțiunea switch poate rezolva mai multe condiții într-un singur caz prin folosirea acoladelor {}.
Exemplul 2:
variabila=input('variabila=');
switch variabila
case 1, disp('1')
case {2,3,4}, disp('2 sau 3 sau 4')
case 5, disp('5')
otherwise, disp('alta valoare')
end

Comparație între switch și if

switch-case if-elseif

mai ușor de scris/înțeles mai greu de scris/înțeles

poate compara șiruri de caractere pentru a compara șiruri de caractere


trebuie folosită funcția strcmp

Testează doar pe baza condiției logice Testează pe baza condițiilor logice de


de identitate identitate sau inegalitate
Software de analiza numerica si simbolica 6

Instrucțiunea for
Execută un grup de instrucțiuni de un număr fixat de ori.

Sintaxa Schema logică


for index=start:increment:end
grup de instructiuni
end

Exemplul 1: Să se calculeze suma numerelor 1, 3, 5, 7, 9 și 11


x=1:2:11; %sau x=[1 3 5 7 9 11];
suma=0; %initializez variabila suma
for i=1:length(x)
suma=suma+x(i);
end
suma %afisez variabila suma

Exemplul 2: Să se genereze 6 numere egale cu dublul celui anterior (primul fiind 1)


x(1)=1;
for n=2:6
x(n)=2*x(n-1);
end
x %afisez variabila x

Se pot scrie instrucțiuni for în corpul unei alte instrucțiuni for (for imbricat):
Exemplul 3: Să se genereze o matrice cu m linii și n coloane cu elementele B(i,j)=1/(i+j-1)
m=input('linii m=')
n=input('coloane n=')
for i=1:m %se repeta de m ori
for j=1:n %se repeta de m x n ori
B(i,j)=1/(i+j-1);
end
end
B
Software de analiza numerica si simbolica 7

Exemplul 4: Combinarea instrucțiunilor if și for. Să se determine numărul de valori strict pozitive


dintr-un șir numeric dat.
a=input('Tastati sir numeric=');%exemplu [1 -2 3 -9 4 1]
contor=0; %initializez variabila contor
%numar cate elemente din sir (vectorul a) sunt strict pozitive
for i=1:length(a)
if a(i)>0
contor=contor+1;
end
end
contor

Instrucțiunea while
Execută un grup de instrucțiuni de un număr nedefinit de ori pe baza unei condiții logice.

Sintaxa Schema logică


while expresie logica
grup de instructiuni
end

Exemplul 1: Să se calculeze suma numerelor 1, 3, 5, 7, 9 și 11


x=1:2:11; %sau x=[1 3 5 7 9 11];
suma=0; %se initializeaza variabila ”suma”
i=1; %se initializeaza indicele ”i” cu valoarea 1
%calculez suma elementelor vectorului x
while i<=length(x)
suma=suma+x(i); %se recalculeaza variabila ”suma”
i=i+1; %se indexeaza indicele ”i”
end
suma %afisez variabila suma
Software de analiza numerica si simbolica 8

Rutina este analoagă cu următoarea:


x=1:2:11; %sau x=[1 3 5 7 9 11];
suma=0; %se initializeaza variabila ”suma”
i=0; %se initializeaza indicele ”i” cu valoarea 0
%calculez suma elementelor vectorului x
while i<length(x)
i=i+1; %se indexeaza indicele ”i”
suma=suma+x(i); %se recalculeaza variabila ”suma”
end
suma %afisez variabila suma

Se pot scrie instrucțiuni while în corpul unei alte instrucțiuni while (while imbricat):
Exemplul 2: Să se genereze o matrice cu m linii și n coloane cu elementele B(i,j)=1/(i+j-1)
m=input('linii m=')
n=input('coloane n=')
i=1; %se initializeaza indicele ”i” cu valoarea 1
while i<=m %se repeta de m ori de 1 la m
j=1; %se initializeaza indicele ”j” cu valoarea 1
while j<=n %se repeta de m x n ori
B(i,j)=1/(i+j-1);
j=j+1; %se indexeaza indicele ”j”
end
i=i+1; %se indexeaza indicele ”i”
end
B %afisez variabila B

Rutina este analoagă cu următoarea:


m=input('linii m=')
n=input('coloane n=')
i=0; %se initializeaza indicele ”i” cu valoarea 0
while i<m %se repeta de m ori de la 0 la m-1
i=i+1; %se indexeaza indicele ”i”
j=0; %se initializeaza indicele ”j” cu valoarea 0
while j<n %se repeta de m x n ori
j=j+1; %se indexeaza indicele ”j”
B(i,j)=1/(i+j-1);
end
end
B %afisez variabila B
Software de analiza numerica si simbolica 9

Observație: este mai dificilă gestionarea indicilor în cazul folosirii ciclului while decât în cazul ciclului
for.

Bibliografie
1. ***, Fundamente de Matlab, telecom.etti.tuiasi.ro/
2. Iulian Lupea, Curs Matlab
3. Nicoleta Breaz ș.a., Modelarea matematică prin Matlab
4. ***, MATLAB User’s Guide, The Mathworks Inc., SUA

S-ar putea să vă placă și