Sunteți pe pagina 1din 10

Programare si limbaje I

Anul I, AR+ITT

A. Recapitularea elementelor de limbaj MATLAB

1. Laborator 1, Laborator 2, Curs 2

1.1 Instrucțiuni

help
more
doc
demo
format

1.2 Funcţii

plus()
uplus()
minus()
uminus()
mtimes()
times()
mpower()
power()
mldivide()
mrdivide()
rdivide()
eq()
ne()
lt()
gt()
le()
ge()
and()
or()
not()
xor()
any()
all()
bitand()
bitcmp()
bitor()
bitmax()
bitxor()
bitset()
bitget()
bitshift()
union()
unique()
intersect()
setdiff()
setxor()
ismember()
length()
sort()
sum()
prod()
min()
max()
mean()
geomean()
cumsum()
cumprod()

1|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
1.3 Caractere speciale

[]
, spațiu
;
:

1.4 Operatori

Aritmetici
Relaţionali
Logici
Pe biţi
Pe mulţimi

.’

1.5 Variabile

ans
pi
eps
i
j
inf
nan

2. Laborator 3, Laborator 4, Curs 3

2.1 Instrucțiuni

diary
save
load
edit
open
type
echo

2.2 Funcţii

size()
zeros()
ones()
eye()
rand()
randn()
diag()
magic()
sparse()
full()
spy()
round()
speye()
nnz()
issparse()
spones()
triu()
tril()
repmat()
find()
isprime()
nonzeros()
det()
inv()
2|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
edit()
open()
type()
input()
sscanf()
display()
disp()
sprintf()

2.3 Caractere speciale

[] (tabloul vid)
: (toate elementele)
%
%%

2.4 Operatori


.’

3. Laborator 5, Laborator 6, Curs 4 (algoritmi)

3.1 Instrucțiuni

3.2 Funcţii

sin()
cos()
plot()
title()
xlabel()
ylabel()
figure()

3.3 Caractere speciale

3.4 Operatori

4. Laborator 7 (algoritmi), Laborator 8 (algoritmi), Curs 5

4.1 Instrucțiuni

if-end
if-else-end
if-elseif-end
switch-case-otherwise-end

4.2 Funcţii

isprime()
isscalar()
num2str()

4.3 Caractere speciale

4.4 Operatori

3|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
5. Laborator 9, Laborator 10

5.1 Instrucțiuni

for-end
while-end
break
continue
return

5.2 Funcţii

factorial()
strcmpi()
str2num()

5.3 Caractere speciale

5.4 Operatori

4|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor

Curs 6b. Instrucţiuni de control al ciclurilor (instrucțiuni repetitive)

Cu ajutorul instrucţiunilor de control al ciclurilor se poate executa în mod repetat un bloc de comenzi, revenind la
începutul blocului, în funcţie de o anumită condiţie. Pentru a executa blocul de comenzi de un număr specificat de
ori, se foloseşte instrucţiunea for. Pentru a executa repetitiv anumite instrucţiuni cât timp o condiţie continuă să
fie adevărată sau falsă, se foloseşte comanda while. Instrucţiunile continue şi break oferă un control suplimentar
asupra ciclurilor. Instrucţiunea return permite încheierea execuţiei programului.

6.1 Instrucţiunea for-end

Instrucţiunea for este folosită pentru executarea unui grup de instrucţiuni de un număr predeterminat de ori.
Corespunde structurii iterative din programarea structurată.

Sintaxă:
for i = vi:pas:vf
instrucţiuni
end

Descriere:
În momentul execuţiei instrucţiunii for, variabila i parcurge intervalul [vi, vf], cu pasul de parcurgere stabilit prin
pas. Pentru fiecare valoare a lui i, se execută în mod repetat una sau mai multe instrucţiuni.
Incrementul implicit este 1. În acest caz el nu mai trebuie specificat. Incrementul poate lua şi valori negative, caz
în care valoarea i descreşte.

Exemple:

1. Să se construiască şirul x, conţinând primele n puteri ale lui 2. Valoarea n se va citi de la tastatură.

Script 1. Fişierul C6script1.m


% Script pentru calculul puterilor lui 2
n = input('Introduceti numarul de elemente: ');
x = []; % sau clear x
x(1)=1;
for i = 2:n
x(i) = 2 * x(i - 1);
end
display(x)

Pentru n = 10, se obţin următoarele rezultate:

Introduceti numarul de elemente: 10


x =
1 2 4 8 16 32 64 128 256 512

2. Se citeşte de la tastatură o matrice pătrată A. Se cere să se determine suma elementelor de deasupra


diagonalei secundare.

Script 2. Fişierul C6script2.m


% suma elementelor de deasupra diagonalei secundare
%% initializare
A = [];
suma = 0;
%% citire matrice
disp('Introduceti matricea A:')
A = input('');
%% verificari
[m n] = size(A);
if m~=n
disp('Matricea nu este patrata!')

5|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
return
end
%% calcul suma
for i = 1:n-1
for j=1:n-i
suma = suma + A(i, j);
end
end
%% afisare
disp(['Suma este: ', num2str(suma)])

Cazul 1
Introduceti matricea A:
[1 2 3 4;
5 6 7 8;
9 0 -1 -2;
-3 -4 -5 -6]
Suma este: 26

Cazul 2
Introduceti matricea A:
[1 2 3;
4 5 6]
Matricea nu este patrata!

6.2 Instrucţiunea while-end

Instrucţiunea while corespunde structurii repetitive condiţionate anterior, din programarea structurată.

Sintaxă:
while expresie
instrucţiuni
end

Descriere:
Instrucţiunea while este folosită pentru executarea unui grup de instrucţiuni în mod repetat, cât timp expresia de
control este adevărată.
Dacă expresie este evaluată la o matrice (nu este un scalar), atunci toate elementele acesteia trebuie să aibă
valoarea logică adevărat, pentru ca execuţia să continue.

Exemple:

1. Să se determine primul număr întreg n pentru care n! este un număr cu 50 de cifre. Se va folosi funcţia
factorial().

Script 3. Fişierul C6script3.m


% primul numar intreg n pentru care n! este un numar cu 50 de cifre
n = 1;
while factorial(n) < 1e49 % 10^49 are 50 de cifre
n = n + 1;
end
disp(['Numarul este: ', num2str(n)])
disp(['n! = ', num2str(factorial(n))])

În urma rulării, rezultă:

Numarul este: 41
n! = 33452526613163803000000000000000000000000000000000

6.3 Instrucţiunea break

6|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor

Instrucţiunea break întrerupe


execuţia unui ciclu for sau while.

Sintaxă:
break

Descriere:
Instrucţiunile care apar după instrucţiunea break, din corpul unui ciclu for sau while, vor fi ignorate. Următoarea
instrucţiune care se execută este cea care urmează după instrucţiunea end, de închidere a ciclului.

Exemple:

1. Să se citească de la tastatură un şir de maxim 30 de caractere care să nu conţină caracterul punct (.). Citirea se
va încheia dacă se introduce caracterul punct.

Script 4. Fişierul C6script4.m


% citire sir max 30 caractere, fara punct
str = [];
disp('Introduceti sirul de caractere.')
disp('Tastati enter dupa fiecare caracter introdus:')
n = 1;
while n <= 30
str(n) = input('','s');
if str(n) == '.'
break
end
n = n + 1;
end
disp(['Sirul introdus este: ', char(str)])

În urma rulării, rezultă:

Introduceti sirul de caractere:


a
e
r
t
y
u
1
@
#
$
.
Sirul introdus este: aertyu1@#$.

6.4 Instrucţiunea continue

Instrucţiunea continue transferă controlul următoarei iteraţii a unui ciclu for sau while.

Sintaxă:
continue

Descriere:
Instrucţiunile care rămân în corpul unui ciclu, după instrucţiunea continue, vor fi ignorate. Execuţia se reia de la
începutul ciclului unde a fost întâlnită instrucţiunea continue.

Exemple:

1. Să se citească de la tastatură un şir de 10 de caractere. În cazul în care se citeşte caracterul punct (.), acesta se
va ignora.
7|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor

Script 5. Fişierul C6script5.m


% citire sir 10 caractere, fara punct
str = [];
disp('Introduceti sirul de caractere.')
disp('Tastati enter dupa fiecare caracter introdus:')
n = 1;
while n <= 10
str(n) = input('','s');
if str(n) == '.'
continue
end
n = n + 1;
end
disp(['Sirul introdus este: ', char(str), ' si are ',num2str(n-1), ' caractere.'])

În urma rulării, rezultă:

Introduceti sirul de caractere.


Tastati enter dupa fiecare caracter introdus:
1
2
w
s
.
f
g
.
;
g
f
d
Sirul introdus este: 12wsfg;gfd si are 10 caractere.

6.5 Instrucţiunea return

Sintaxă:
return

Descriere:
Instrucţiunea return, de control al terminării programului, permite ieşirea din program din orice punct al său,
înainte de punctul normal de terminare.
return mai este folosit şi pentru a incheia modul keyboard. (În versiunile mai noi de MATLAB, în acest scop se
folosește instructiunea dbcont).

6.6 Precizări privind utilizarea caracterelor speciale în MATLAB

. Punct zecimal

325/100, 3.25 şi .325e1 reprezintă acelaşi lucru.

. Operaţii cu tablouri

Operaţiile multiplicative element cu element sunt obţinute folosind operatorii prefixaţi cu punct: .* , .^ , ./ , .\ sau
.'. De exemplu, C = A ./ B este matricea având elementele c(i,j) = a(i,j)/b(i,j).

( ) Parantezele rotunde

Sunt folosite pentru a indica precedenţa în expresii aritmetice şi pentru a cuprinde argumentele funcţiilor. Mai
sunt folosite pentru a delimita indicii vectorilor şi matricelor.

8|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
Dacă X şi V sunt vectori, atunci X(V) reprezintă concatenarea elementelor X(V(1)), X(V(2)),..., X(V(N)), unde
dimensiunea lui X(V) este 1xN dacă X este un vector linie, sau Nx1 dacă X este un vector coloană. Componentele
lui V trebuie să fie întregi şi sunt folosite pe post de indici. Dacă oricare dintre indici este mai mic decât 1 sau mai
mare decât lungimea lui X, va fi afişat un mesaj de eroare.

Parantezele sunt suportate de toate tipurile de date MATLAB, incluzând tablourile tradiţionale în dublă precizie,
precum şi structurile, celulele şi tablourile de caractere.

Exemple:
X(3) este al treilea element al lui X.
X([1 2 3]) reprezintă primele trei elemente ale lui X.
Dacă X are N componente, expresia X(N:-1:1) le reprezintă în ordine inversă.
X(X>0.5) returnează elementele lui X care sunt > 0.5.

Acelaşi mod de adresare indirectă este utilizat în matrice şi tablouri. Dacă V are M componente şi W are N
componente, atunci A(V,W) este matricea MxN formată din elementele lui A, ale cărui indici sunt elementele lui V
şi W. De exemplu, A([1,5],:) = A([5,1],:) interschimbă liniile 1 şi 5 ale lui A.

Apelare funcţii

nume_functie(par_de_intrare)

[ ] Parantezele pătrate

Sunt folosite pentru a construi vectori şi matrice.

Exemple:
[6.9 9.64 sqrt(-1)] este un vector cu trei elemente separate prin spaţii.
[6.9, 9.64, sqrt(-1)] reprezintă acelaşi lucru.
Vectorii [1+i 2-i 3] şi [1 +i 2 -i 3] nu sunt identici. Primul are trei elemente, iar al doilea cinci.
[11 12 13; 21 22 23] este o matrice 2x3. Caracterul (;) marchează sfârşitul primei linii.

, Virgula

Este folosită pentru a separa indicii matricelor şi argumentele transmise funcţiilor De asemenea, delimitează
instrucţiunile în liniile cu mai multe instrucţiuni.

Se folosește și pe post de separator al elementelor, la definirea de vectori linie sau linii de matrice.

; Punct virgulă

Se utilizează în interiorul parantezelor pătrate pentru a indica sfârşitul liniilor într-o matrice. Mai este folosit după
o expresie sau instrucţiune atunci când se doreşte suprimarea afişării rezultatului în fereastra de comenzi.

: Două puncte

Este unul dintre cei mai utili operatori în MATLAB. Creează vectori, indici de tablouri şi iteratori pentru ciclurile
for.
Operatorul (:) foloseşte următoarele reguli pentru crearea vectorilor cu elemente echidistante:
j:k este la fel cu [j,j+1,...,k]
j:k este vid dacă j > k
j:i:k este la fel cu [j,j+i,j+2i, ...,k]
j:i:k este vid dacă i == 0, dacă i > 0 şi j > k, sau dacă i < 0 şi j < k,

unde i, j şi k sunt scalari.


Definiţiile care descriu utilizarea caracterului (:) pentru extragerea liniilor, coloanelor şi elementelor vectorilor,
matricelor şi tablourilor multidimensionale sunt prezentate mai jos:

9|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 6. Instrucţiuni de control al ciclurilor
A(:,j) este coloana j a matricei A
A(i,:) este linia i a matricei A
A(:,:) este tabloul bidimensional echivalent. Pentru matrice, este acelaşi lucru cu A.
A(j:k) reprezintă elementele A(j), A(j+1),...,A(k)
A(:,j:k) reprezintă A(:,j), A(:,j+1),...,A(:,k)
A(:,:,k) este pagina k a tabloului tridimensional A.
A(i,j,k,:) este un vector din tabloul A cu patru dimensiuni. Vectorul include: A(i,j,k,1), A(i,j,k,2),
A(i,j,k,3) etc.
A(:) reprezintă toate elementele lui A, privite ca o singură coloană. În partea stângă a unei instrucţiuni
de atribuire, A(:) umple tabloul A, păstrându-i forma iniţială. În acest caz, membrul drept al
instrucţiunii trebuie să conţină acelaşi număr de elemente ca şi A.
Exemple:
Folosirea operatorului (:) cu întregi,
D = 1:4
generează
D =
1 2 3 4
Folosirea operatorului (:) pentru crearea unui vector cu un increment real între valoarea iniţială şi cea finală,
E = 0:.1:.5
produce
E =
0 0.1000 0.2000 0.3000 0.4000 0.5000
Completare:
>> M4=magic(4)
M4 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> A=1:16
A =
1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16
>> M4(:)=A
M4 =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

10 | P a g e

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