Matlab - laborator 3
instructiuni si functii de control (II)
Instructiunea return
comanda iesirea normala din fisierul-M catre functia apelanta sau c& 525i822f #259;tre tastatura.
function z=radical_modificat(x)
if x<0
z=0;
return;
else
z=sqrt(x);
disp z)
end;
Instructiunea error
permite afisarea unor mesaje la întâlnirea unei erori:
function y=radical(x)
if x<0
error('Ati introdus un numar negativ !');
else
y=sqrt(x);
end;
Instructiunea "switch"
switch variabila
case caz_1
grup_de_instructiuni_1
case caz_2
grup_de_instructiuni_2
case caz_(n-1)
grup_de_instructiuni_(n-1)
otherwise
grup_de_instructiuni_n
end
Exemplu:
Sa se construiasca si sa se apeleze o functie care ofera reduceri pentru o companie de transport în functie de ziua din saptamâna în care se efectueaza cursa. Functia va avea ca argument de intrare indicele zilei saptamânii si va furniza valoarea reducerii.
function y=reducere(zi)
if (zi>=1)&(zi<=7)
switch zi
case 1
y=100;
case 2
y=80
case 3
y=50;
case 4
y=20;
otherwise
y=0;
end;
else
error('Nu exista ziua respectiva !');
end;
Functii de control
permit testarea conditiilor relationale si logice în tablouri de date sau matrice;
se utilizeaza împreuna cu instructiunea "if".
exist: verifica daca variabilele sau functiile argument sunt definite; testeaza totodata existenta unei variabile sau a unui fisier, situatie în care numele variabilei sau fisierului trebuie sa fie scris între apostrofuri:
any: testeaza daca cel putin un element al unei matrice verifica o conditie logica;
all: testeaza daca toate elementele unei matrice verifica o conditie logica;
find: returneaza indicii elementelor diferite de zero;
isnan: testeaza daca elementele unei matrici sunt NaN;
isinf: testeaza daca elementele unei matrice sunt infinite;
finite: testeaza daca elementele unei matrice sunt finite;
isempty: returneaza 1 daca o matrice este goala si 0 în caz contrar.
clear
A 1 0 5; 2 0 6; -4 7 9]
B 1 1/0 3; 0/0 2 5]
C
x=exist('A')
z=any(A>3)
t=all(A>3)
u=find(A)
g=isnan B)
h=isinf B)
m=finite(A)
n=finite B)
p=isempty(C)
Vectorizarea calculelor:
de câte ori este posibil, se recomanda ca în locul ciclurilor for si while sa se utilizeze vectorizarea calculelor;
solutia reduce semnificativ timpul de calcul.
t=
z=pi/6*t;
y=sin(z)
Exercitii propuse:
Sa se scrie un program care calculeaza suma patratelor numerelor de la 1 la 100.
Sa se scrie un program care citeste elementele unei matrice si le numara pe cele care sunt mai mari ca 10.
Sa se scrie un program care atribuie o reducere unui grup de turisti în functie de numarul lor si de lungimea destinatiei (exista mai multe variante de realizare a programului).
Sa se scrie o functie care calculeaza radacinile reale ale ecuatiei de gradul II. Daca nu exista radacini reale, se va afisa un mesaj de eroare.
Sa se scrie o functie care afiseaza numele si numarul de zile ale unei luni în functie de indicele acesteia.
|