Matlab - laborator 2
instructiuni si functii de control (I)
Operatori relationali
Operator |
Semnificatie |
Observatii |
< |
mai mic |
compara doar partea reala a operanzilor; ignora partea imaginara |
<= |
mai mic sau egal |
compara doar partea reala a operanzilor; ignora partea imaginara |
> |
mai mare |
compara doar partea reala a operanzilor; ignora partea imaginara |
>= |
mai mare sau egal |
compara doar partea reala a operanzilor; ignora partea imaginara |
identic 10210e424k |
trateaza atât partea reala cât si cea imaginara |
|
diferit |
trateaza atât partea reala cât si cea imaginara |
sunt utilizati pentru a compara doua matrice de dimensiuni egale, element cu element;
returneaza o matrice cu aceeasi dimensiune a matricelor care se compara, cu elemente 1 atunci când relatia este adevarata si cu elemente 0 atunci când relatia este falsa;
forma generala de utilizare:
rezultat = expresie_1 oper_rel expresie_2
Exemple:
A=[1 2 3;4 5 6;7 8 9];
B=[0 2 4; 3 5 7;6 8 10];
C=A<B
D=A<=B
E=A>B
F=A>=B
G=A==B
H=A~=B
A=[1+i 2+3i 3-5i;4+4i 5 6-i;7-2i 8+i 9];
B=[0-i 2+3i 4-2i; 3 5+i 7+3i;6+6i 8-i 10];
C=A<B
D=A<=B
E=A>B
F=A>=B
G=A==B
H=A~=B
Operatori logici
Operator |
Simbol |
Prioritate |
NU (NOT) | ||
sI (AND) |
& | |
SAU (OR) |
compara doua matrice element cu element;
operatorii & si | returneaza 1 (Adevarat) pentru orice valoare diferita de zero si 0 (FALS) pentru valoare nula;
operatorul ~ (complementul logic) returneaza 0 daca A este diferit de 0 si 1 daca A este nul;
operatorii & si | au prioritate mai mica decât operatorii relationali si aritmetici.
Exemple:
A=[1 2;5 6;0 0];
B=[3 0;4 0;5 0];
C=~A
D=A&B
E=A|B
F=~A<B
H=~(A<B)
G=A<B&A~=B
I=(A<B)&(A~=B)
Instructiunea "for"
for contor=expresie
grup_de_instructiuni
end
"expresie" este, de cele mai multe ori de forma:
i=valoare_initiala:pas:valoare_finala
daca pasul este omis, se considera ca are valoarea 1.
Exemple:
1. Sa se construiasca un vector având ca elemente patratele primelor 10 numere naturale nenule.
for i=1:10
A(i)=i^2;
end
disp(A)
clear
2. Sa se construiasca un vector având ca elemente patratele primelor 10 numere naturale nenule pare.
for i=2:2:20
A(i)=i^2;
end
disp('A=')
disp(A)
for j=
B(j)=A(2*j);
end
disp('B=')
disp(B)
clear
Instructiunea "while"
while expresie
grup_de_instructiuni
end
"expresie" este, de cele mai multe ori de forma:
expresie_1 operator_relational conditie_2
daca expresia este întotdeauna adevarata logic, bucla devine infinita; iesirea dintr-o bucla infinita se face fortat, prin apasarea simultana a tastelor Ctrl si C.
Exemple:
1. Sa se calculeze suma numerelor naturale consecutive pâna când aceasta depaseste valoarea 50.
s=0;
i=0;
while s<=50
s=s+i;
i=i+1;
end
disp('Suma primelor ');
disp(i-1);
disp(' numere naturale este ');
disp(s);
clear
2. Sa se împarta numarul 500 succesiv la 2, pâna când rezultatul devine mai mic decât 2. Sa se afiseze acest rezultat.
s=500;
while s>2
s=s/2;
end;
disp(s)
clear
Instructiunea" if":
a) Instructiunea" if" simpla:
if expresie_logica
grup_de_instructiuni
end
b) Clauza "else"
if expresie_logica
grup_de_instructiuni_1
else
grup_de_instructiuni_2
end
c) Clauza "elseif"
if expresie_logica_1
grup_de_instructiuni_1
elseif expresie_logica_2
grup_de_instructiuni_2
elseif expresie_logica_(n-1)
grup_de_instructiuni_(n-1)
else
grup_de_instructiuni_n
end
Exemple:
1. Sa se numere elementele pozitive nenule ale unui vector dat si sa se afiseze rezultatul.
A=[1 6 -2 8 -5 -3 2 0 9];
s=0;
for i=1:length(A)
if A(i)>0
s=s+1;
end;
end;
disp('Numarul de elemente pozitive nenule ale vectorului:');
disp(s)
2. Sa se precizeze, pentru fiecare din elementele unui vector de numere naturale dat, daca sunt pare sau impare.
A=[1 6 3 8 15 12 2 0 9];
for i=1:length(A)
if rem(A(i),2)==1
disp('Impar')
else
disp('Par')
end;
end;
clear
3. Sa se numere separat elementele pozitive nenule, elementele nule si elementele negative nenule ale unui vector dat si sa se afiseze rezultatele.
A=[1 -6 3 -8 15 -12 2 0 9];
s=0;
t=0;
u=0;
for i=1:length(A)
if A(i)>0
s=s+1;
elseif A(i)==0
t=t+1;
else
u=u+1;
end;
end;
disp('Numarul elementelor pozitive nenule:');
disp(s);
disp('Numarul elementelor nule:');
disp(t);
disp('Numarul elementelor negative nenule:');
disp(u);
clear
Instructiunea "break"
break
se utilizeaza pentru a iesi dintr-o bucla "for" sau "while" înainte ca aceasta sa se fi terminat;
în cazul ciclurilor imbricate, "break" realizeaza iesirea din ciclul interior.
Exemplu:
Sa se construiasca un vector B ale carui elemente reprezinta radacinile patrate ale elementelor unui vector A dat. Daca vectorul A are valori negative printre elemente, sa se întrerupa executia programului.
A=[1 9 4 25 -6 36]
for i=1:length(A)
if A(i)<0
break;
end
B(i)=sqrt(A(i))
end
Exercitii propuse:
1. Sa se construiasca si sa
se afiseze vectorul cu elementele de forma , k = 1.10. Sa
se afiseze numarul elementelor mai mici ca 0.02 .
2. Sa se scrie un program care aduna elementele unui vector, pâna la întâlnirea unui numar mai mare ca 100. Sa se afiseze suma calculata si numarul elementelor totalizate.
3.
Sa se construiasca matricea cu elementele de forma , i = 1.5, j = 1.5.
4. Sa se construiasca un vector B pornind de la un vector A, astfel:
daca elementul corespunzator din vectorul A este strict mai mare ca 4, elementul vectorului B se calculeaza ca radacina patrata a acestuia;
altfel, elementul corespunzator din vectorul B are valoarea 0.
Sa se numere elementele nule ale vectorului B
|