Sunteți pe pagina 1din 16

Limbaje de programare

inginereti
Tema 10
MATLAB.
Elemente de programare

PROGRAME M-FILE
In limbajul MATLAB se poate lucra nu numai prin linii de comanda
individuale, dar si cu programe scrise in fisiere.
Fisierele care contin instructiuni MATLAB se numesc fisiere M sau M-files,
intrucat au extensia .m.
Un fisier M poate fi de doua tipuri, script sau functie. Ambele tipuri de fisiere
sunt scrise in format ASCII.
Sintactic, singura diferenta dintre cele doua tipuri de fisiere este aceea ca
fisierele de tip functie au o prima linie care declara numele functiei.
Aceste tipuri de fisiere M permit crearea unor noi functii care le pot completa
pe cele existente. Astfel MATLAB poate fi extins, permitand abordarea
anumitor aplicatii specifice din stiinta si inginerie.
Pentru creare lor se poate utiliza orice editor de texte. Se recomanda editorul
MATLAB care are niste facilitati proprii pentru programele MATLAB.

INCLUDEREA COMENTARIILOR SI A HELP-ULUI


INTR-UN PROGRAM
Introducerea unui comentariu intr-un program se realizeaza prin
adaugarea caracterului procent (%).
Comentariul care apare imediat dupa linia de declarare a functiei
sau incepand cu prima linie a unui script, constituie help-ul
fisierului respectiv. Daca se apeleaza : help nume_functie se
afiseaza liniile care incep cu semnul procent si sunt situate intre
prima linie dupa declararea functiei si prima linie libera sau prima
instructiune ce urmeaza acestui grup compact de linii.
Dupa ultima linie a help-ului se lasa o linie libera sau se trece
direct la o instructiune MATLAB.

FISIERE SCRIPT
Fisierele script sunt fisiere externe de tip text care contin
secvente de comenzi MATLAB.
Prin apelarea numelui fisierului, se executa secventele de
comenzi MATLAB continute in fisier.
Dupa executia completa a unui fisier script variabilele cu care
acesta a operat raman in workspace.
Aceste fisiere nu permit integrarea in programe mari, realizate pe
principiul modularizarii. Fisierele script pot fi folosite la
rezolvarea unor probleme care necesita un numar relativ mare de
instructiuni a caror lansare la linia de comanda ar deveni greoaie.

FISIERE SCRIPT
Aplicatie:
Sa se realizeze un fisier cu urmatorul continut si apoi sa se
execute:
% Program de rezolvare a unui sistem de ecuatii de tipul A*x=b
n=1500;
A = rand(n,n);
b = rand(n,1);
tic, x1 = inv(A)*b; toc
tic, x2 = A\b; toc

FISIERE FUNCTIE
In cazul in care prima linie a unui fisier M contine cuvantul cheie function
fisierul respectiv intra in categoria fisierelor de tip functie.
Un fisier de tip functie difera de un fisier de tip script prin faptul ca accepta
argumente de intrare.
Forma generala a primei linii a unui fisier functie este:
function [par_iesire1, par_iesire2 ... ] = nume_functie(par_intrare1,
par_intrare2 ... )
unde :
function reprezinta un cuvant cheie obligatoriu care declara ca fisierul este de
tip functie
nume_functie reprezinta numele functiei, adica numele sub care este salvat
fisierul, insa fara extensie. Numele functiei nu poate fi identic cu cel al unui
fisier M pre-existent.
par_iesire1, par_iesire2 reprezinta parametri de iesire care trebuiesc separati
prin virgula si cuprinsi intre paranteze drepte. Daca functia are un singur
parametru de iesire parantezele drepte nu mai au sens.
par_intrare1, par_intrare2 reprezinta parametri de intrare care trebuiesc
separati prin virgula si cuprinsi intre paranteze rotunde. Daca functia nu are
parametri de intrare parantezele rotunde nu mai au sens.

FUNCTIE VERSUS SCRIPT


Avantaje script:
- utile n cazul programelor mari cu secvente de comenzi care se repeta aleator
(nu sunt bucle pur si simplu) deci utile doar programatorilor avansati;
Dezavantaje script:
- creeaza si modifica variabile din zona de lucru fara nici un avertisment;
- sunt sursa unor erori greu detectabile;
- nu pot fi utilizate n expresii.
Avantaje functie:
- functia comunica cu programul apelant prin cele doua liste: lista-param-iesire
si lista-param-intrare.
- nu modifica datele din zona de lucru a programului apelant.
- permite organizarea structurala a programarii.
Dezavantaje functie :
- folosirea n exces a functiilor poate duce la farmitarea excesiva a
programului pierzndu-se din claritate.

INTERACTIUNEA PROGRAMELOR MATLAB CU


UTILIZATORUL
Exista trei modalitati de interactiune a unui program cu utilizatorul pe durata
executiei unui program MATLAB:
Obtinerea unui raspuns de la tastatura.
Definirea unei pauze pana cand utilizatorul apasa o tasta.
Constructia unei interfete grafice cu utilizatorul.
Obtinerea unui raspuns de la tastatura. Functia input afiseaza un prompt si
asteapta un raspuns al utilizatorului. Sintaxa functiei este:
n = input('prompt_string')
Functia afiseaza sirul de caractere prompt_string, asteapta raspunsul de la
tastatura, si apoi intoarce valoarea introdusa de la tastatura. Valoarea introdusa
trebuie sa fie un numar sau o expresie calculabila.
Functia input poate intoarce deasemenea un raspuns al utilizatorului de tip
string. Pentru un raspuns de tip string, se adauga 's' ca argument al functiei:
Adresa = input('Introduceti adresa: ','s');
Definirea unei pauze. Anumite fisiere M necesita definirea unor pauze intre
executiile anumitor pasi. Comanda pause, fara nici un argument, opreste
executia pana cand utilizatorul apasa o tasta. Pentru a face o pauza de n
secunde, se foloseste functia sub forma pause(n).

INTERACTIUNEA PROGRAMELOR MATLAB CU


UTILIZATORUL
Exista trei modalitati de interactiune a unui program cu utilizatorul pe durata
executiei unui program MATLAB:
Obtinerea unui raspuns de la tastatura.
Definirea unei pauze pana cand utilizatorul apasa o tasta.
Constructia unei interfete grafice cu utilizatorul.
Obtinerea unui raspuns de la tastatura. Functia input afiseaza un prompt si
asteapta un raspuns al utilizatorului. Sintaxa functiei este:
n = input('prompt_string')
Functia afiseaza sirul de caractere prompt_string, asteapta raspunsul de la
tastatura, si apoi intoarce valoarea introdusa de la tastatura. Valoarea introdusa
trebuie sa fie un numar sau o expresie calculabila.
Functia input poate intoarce deasemenea un raspuns al utilizatorului de tip
string. Pentru un raspuns de tip string, se adauga 's' ca argument al functiei:
Adresa = input('Introduceti adresa: ','s');
Definirea unei pauze. Anumite fisiere M necesita definirea unor pauze intre
executiile anumitor pasi. Comanda pause, fara nici un argument, opreste
executia pana cand utilizatorul apasa o tasta. Pentru a face o pauza de n
secunde, se foloseste functia sub forma pause(n).

CREAREA SI EDITAREA FISIERELOR M


Crearea si editarea fisierelor M se poate face in doua moduri:
-Folosind editorul MATLAB;
-Folosind orice editor de text.
Crearea si editarea fisierelor M poate fi efectuata eficient folosind
MATLAB Editor. MATLAB Editor pune la dispozitia
utilizatorului o interfata grafica performanta de editare clasica de
text. In afara functiilor de editare obisnuite, MATLAB Editor
prezinta si functii specifice.
Cand se foloseste un alt editor, este necesar ca fisierul sa iba
extensia .m si sa fie salvat in mod text (ASCII).

INSTRUCTIUNI DE CONTROL LOGIC


Instructiunea if. Instructiunea if impreuna cu else si elseif, executa un grup de
instructiuni in cazul in care este indeplinita o anumita conditie logica:
if expresie_logica
instructiuni
end
Daca expresie_logica este adevarata, MATLAB executa toate instructiunile
cuprinse intre if si end. Ulterior programul continua executia cu instructiunea
situata pe linia imediat dupa instructiunea end. Daca expresia logica este falsa,
MATLAB sare peste instructiunile cuprinse intre if si end si continua executia
incepand cu linia plasata imediat dupa instructiunea end.
Exemplu:
a=3;
b=2;
if a>b
disp('a este mai mare decat b')
elseif b>=a
disp('b este mai mare sau egal cu a')
end

INSTRUCTIUNI DE CONTROL LOGIC

Instructiunea switch. Instructiunea switch, impreuna cu case si otherwise,


executa diferite grupuri de instructiuni in functie de valoarea anumitor conditii
logice:
switch expresie
case valoare1
instructiuni % Executate daca expresie este valoare1
case valoare2
instructiuni % Executate daca expresie este valoare2
...
otherwise
instructiuni % Executate daca expresie nu ia nici o valoare amintita mai sus
end

INSTRUCTIUNI DE CONTROL LOGIC

Exemplu
var = 9
switch var
case 1
disp('1')
case {2,3,4}
disp('2 sau 3 sau 4')
case 5
disp('5')
otherwise
disp('altceva')
end

INSTRUCTIUNI DE CONTROL LOGIC

Instructiunea while. Instructiunea while executa un grup de instructiuni de un


numar indefinit de ori, avand la baza anumite conditii logice. Sintaxa
instructiunii while este:
while expresie_logica
instructiuni
end
Daca expresie_logica este adevarata sunt executate instructiunile cuprinse intre
while si end.
Exemplu:
n = 1;
while prod(1:n) < 1e100
n=n+1
end

INSTRUCTIUNI DE CONTROL LOGIC


Instructiunea for. Instructiunea for executa un grup de instructiuni de un
anumit numar impus de ori. Sintaxa instructiunii este:
for index = start:increment:end
instructiuni
end
Incrementul implicit este 1. Se poate specifica orice increment, inclusiv unul
negativ. Pentru indici pozitivi, executia se termina cand valoarea indexului
depaseste valoarea end; pentru increment negativ, bucla se incheie cand indexul
devine mai mic decat valoarea end.
Exemplu:
m=3;
n=5;
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1)
end
end

INSTRUCTIUNI DE CONTROL LOGIC


Instructiunea continue. Instructiunea continue cedeaza controlul iteratiei
urmatoare in cazul unei bucle for sau while, neglijand orice alta
instructiune existenta in corpul buclei, ca in exemplul de mai jos.
m=3;
n=5;
for i = 1:m
for j = 1:n
if ( i>2) continue
end
A(i, j) = 1/(i + j - 1)
end
end

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