Curs 01
Curs 01
Limbaj algoritmic
SD 2014/2015
Continut
Algoritmi. Introducere
Limbaj algoritmic
Tipuri de date
Tablouri si structuri
FII, UAIC
Curs 1
SD 2014/2015
2 / 55
Exemplu
I
FII, UAIC
Curs 1
SD 2014/2015
3 / 55
Exemplu
I
secventa Fibonacci
0,
1,
definitia matematica: Fn =
Fn1 + Fn2 ,
FII, UAIC
Curs 1
if n = 0
if n = 1
if n > 1
SD 2014/2015
3 / 55
Exemplu
I
secventa Fibonacci
0,
1,
definitia matematica: Fn =
Fn1 + Fn2 ,
I
if n = 0
if n = 1
if n > 1
implemetare C++
int F( int n) {
i f ( n == 0 ) r e t u r n 0 ;
e l s e i f ( n == 1 ) r e t u r n 1 ;
else
r e t u r n F ( n1) + F ( n 2);
}
FII, UAIC
Curs 1
SD 2014/2015
3 / 55
Algoritmi: etimologie
Curs 1
SD 2014/2015
4 / 55
Algoritmi: definit, ie
I
Cambridge Dictionary:
A set of mathematical instructions that must be followed in a fixed
order, and that, especially if given to a computer, will help to
calculate an answer to a mathematical problem.
Curs 1
SD 2014/2015
5 / 55
Algoritmi: definit, ie
Wikipedia:
In mathematics and computer science, an algorithm is a step-by-step
procedure for calculations. Algorithms are used for calculation, data
processing, and automated reasoning. An algorithm is an effective
method expressed as a finite list of well-defined instructions for
calculating a function. Starting from an initial state and initial input
(perhaps empty), the instructions describe a computation that, when
executed, proceeds through a finite number of well-defined successive
states, eventually producing output and terminating at a final
ending state. The transition from one state to the next is not
necessarily deterministic; some algorithms, known as randomized
algorithms, incorporate random input.
FII, UAIC
Curs 1
SD 2014/2015
6 / 55
instruct, iuni
sintaxa - descrie sintactic pas, ii de procesare;
semantica - descrie pas, ii de procesare realizat, i de execut, ia unei
instruct, iuni; n general este data de o relat, ie de tranzit, ie peste
configurat, ii (sistem tranzit, ional).
Curs 1
SD 2014/2015
7 / 55
FII, UAIC
Curs 1
SD 2014/2015
8 / 55
I will, in fact, claim that the difference between a bad programmer and a
good one is whether he considers his code or his data structures more
important. Bad programmers worry about the code. Good programmers
worry about data structures and their relationships. Linus Torvalds
FII, UAIC
Curs 1
SD 2014/2015
8 / 55
Algoritmi: proprietati
input (intrare) zero sau mai multe entitati de date furnizate din
exterior.
FII, UAIC
Curs 1
SD 2014/2015
9 / 55
Algoritmi: eficienta
solutii optimizate.
FII, UAIC
Curs 1
SD 2014/2015
10 / 55
Algoritmi: eficienta
timp (secunde)
60
40
Ruby
Scheme
Python
C
Java
C-gcc
20
0
20
25
30
35
n
40
45
50
Curs 1
SD 2014/2015
11 / 55
Proiectarea algoritmilor
definirea problemei
I
implementarea algoritmului;
(optimizare si generalizare).
FII, UAIC
Curs 1
SD 2014/2015
12 / 55
Descrierea algoritmilor
I
formal:
semiformal:
I
FII, UAIC
Curs 1
SD 2014/2015
13 / 55
Continut
Algoritmi. Introducere
Limbaj algoritmic
Tipuri de date
Tablouri si structuri
FII, UAIC
Curs 1
SD 2014/2015
14 / 55
Limbaj algoritmic
FII, UAIC
Curs 1
SD 2014/2015
15 / 55
Variabila
Nume
Adresa
Instanta a variabilei
FII, UAIC
Curs 1
SD 2014/2015
16 / 55
Modelul de calcul
I
variabile
pointeri
FII, UAIC
Curs 1
SD 2014/2015
17 / 55
Continut
Algoritmi. Introducere
Limbaj algoritmic
Tipuri de date
Tablouri si structuri
FII, UAIC
Curs 1
SD 2014/2015
18 / 55
Tip de date
Operatii
FII, UAIC
Curs 1
SD 2014/2015
19 / 55
Numere ntregi
I
I
Numere reale
I
I
Valori booleene
I
I
FII, UAIC
Curs 1
SD 2014/2015
20 / 55
Caractere
I
I
valori: a, b, ...
operatii:
Pointeri
I
I
I
FII, UAIC
Curs 1
SD 2014/2015
21 / 55
operatie
a+b
...
FII, UAIC
timp(operatie)
cost uniform cost logaritmic
O(1)
O(max(loga, logb))
Curs 1
SD 2014/2015
22 / 55
Instructiuni
Expresii
Conditionale: if if-else
FII, UAIC
Curs 1
SD 2014/2015
23 / 55
Instructiuni
Atribuirea
I
Sematica:
I
se evalueaz
a < expresie > si rezultatul obtinut se memoreaz
a n locatia
desemnat
a de < variabila >
este singura instructiune cu ajutorul c
areia se poate modifica continutul
memoriei
FII, UAIC
Curs 1
SD 2014/2015
24 / 55
Atribuirea
Exemplu:
I
Inainte de atribuire:
Dupa atribuirea u v u:
FII, UAIC
Curs 1
SD 2014/2015
25 / 55
Instructiuni
Sintaxa:
< variabila pointer >< expresie >
Sematica:
I
se evalueaz
a < expresie > si rezultatul obtinut se memoreaz
a n locatia
de la adresa stocat
a n < variabila pointer >
Exemplu: p 10
FII, UAIC
Curs 1
SD 2014/2015
26 / 55
Instructiuni
I
if
I
Sintaxa:
if < expresie > then
< secventa instructiuni1 >
else
< secventa instructiuni2 >
if < expresie > then
< secventa instructiuni1 >
Observatie: < expresie > este o expresie cu rezultat boolean dupa
evaluare
Semantica:
I
FII, UAIC
Se evalueaz
a < expresie >. Dac
a rezultatul este true, atunci se execut
a
< secventa instructiuni1 > iar dac
a rezultatul este false, atunci se
execut
a < secventa instructiuni2 > dup
a care instructiunea if se
termin
a
Curs 1
SD 2014/2015
27 / 55
Instructiunea if
I
FII, UAIC
Curs 1
SD 2014/2015
28 / 55
Instructiuni
while
I
Sintaxa:
while < expresie > do
< secventa instructiuni >
Semantica:
I
I
FII, UAIC
Se evalueaz
a < expresie >
Dac
a rezultatul este true atunci se execut
a < secventa instructiuni >
dup
a care se reia procesul ncep
and cu pasul 1. Dac
a rezultatul este
false atunci executia instructiunii while se termin
a.
Curs 1
SD 2014/2015
29 / 55
Exemplu while
FII, UAIC
Curs 1
SD 2014/2015
30 / 55
Instructiuni
I
repeat
I
Sintaxa:
repeat
< secventa instructiuni >
until < expresie >;
Semantica:
Instructiunea:
repeat
S
until e;
simuleaza executia urmatorului program:
S
while not e do
S
FII, UAIC
Curs 1
SD 2014/2015
31 / 55
Exemplu repeat
FII, UAIC
Curs 1
SD 2014/2015
32 / 55
Instructiuni
for
I
Sintaxa:
for < variabila >< expresie1 > to < expresie2 > do
< secventa instructiuni >
sau
for < variabila >< expresie1 > downto < expresie2 > do
< secventa instructiuni >
Observatie: < variabila > este o variabila de tip ntreg, iar
< expresie1 > si < expresie2 > sunt expresii cu rezultat ntreg dupa
evaluare
FII, UAIC
Curs 1
SD 2014/2015
33 / 55
Instructiuni
for
I
Semantica:
for i e1 to e2 do
S
este echivalenta cu:
i e1
temp e2
while i <= temp do
S
i i +1
FII, UAIC
Curs 1
SD 2014/2015
34 / 55
Instructiuni
for
I
Semantica:
for i e1 downto e2 do
S
este echivalenta cu:
i e1
temp e2
while i >= temp do
S
i i 1
FII, UAIC
Curs 1
SD 2014/2015
35 / 55
Subprograme
Subprograme:
I
I
Proceduri
Functii
FII, UAIC
Curs 1
SD 2014/2015
36 / 55
Subprograme
Proceduri:
I
Sintaxa:
Procedure nume (lista-parametri-formali)
begin
secventa-instructiuni
end
Apel: NUME(lista-parametri-actuali)
I
FII, UAIC
Curs 1
SD 2014/2015
37 / 55
Proceduri
Exemplu:
Procedure SWAP (x,y)
begin
aux x
x y
y aux
end
Apel:
SWAP(a, b)
SWAP(b, c)
FII, UAIC
Curs 1
SD 2014/2015
38 / 55
Subprograme
Functii:
I
Sintaxa:
Function nume (lista-parametri-formali)
begin
secventa-instructiuni
end
secventa-instructiuni contine macar o instructiune return < expr >
Apel: NUME(lista-parametri-actuali)
utilizat ntr-o expresie: valoarea ntoarsa de functie este cea obtinuta
prin evaluarea < expr >
FII, UAIC
Curs 1
SD 2014/2015
39 / 55
Functii
I
Exemplu:
Function max3(x,y,z)
begin
temp x
if y > temp then
temp y
if z > temp then
temp z
return temp
end
Apel:
max3(a, b, c)
2*max3(a, b, c) > 5
FII, UAIC
Curs 1
SD 2014/2015
40 / 55
Continut
Algoritmi. Introducere
Limbaj algoritmic
Tipuri de date
Tablouri si structuri
FII, UAIC
Curs 1
SD 2014/2015
41 / 55
Tablouri
unidimensionale (1-dimensionale)
bidimensionale (2-dimensionale)
FII, UAIC
Curs 1
SD 2014/2015
42 / 55
Tablouri unidimensionale
FII, UAIC
Curs 1
SD 2014/2015
43 / 55
Tablouri unidimensionale
FII, UAIC
Curs 1
SD 2014/2015
44 / 55
Tablouri
Costul operatiilor:
operatie
a[i]
a[i] v
timp(operatie)
cost uniform cost logaritmic
O(1)
O(i + logai )
O(1)
O(i + logv )
FII, UAIC
Curs 1
SD 2014/2015
45 / 55
Tablouri bidimensionale
FII, UAIC
Curs 1
SD 2014/2015
46 / 55
Tablouri bidimensionale
I
I
FII, UAIC
Curs 1
SD 2014/2015
47 / 55
Tablouri bidimensionale
FII, UAIC
Curs 1
SD 2014/2015
48 / 55
Tablouri bidimensionale
FII, UAIC
Curs 1
SD 2014/2015
49 / 55
Siruri de caractere
FII, UAIC
Curs 1
SD 2014/2015
50 / 55
Structuri
I
FII, UAIC
Curs 1
SD 2014/2015
51 / 55
Structuri
FII, UAIC
Curs 1
SD 2014/2015
52 / 55
Structuri si pointeri
FII, UAIC
Curs 1
SD 2014/2015
53 / 55
Structuri
Costul operatiilor:
operatie
S.x
S.x v
FII, UAIC
timp(operatie)
cost uniform cost logaritmic
O(1)
O(logSx )
O(1)
O(logv )
Curs 1
SD 2014/2015
54 / 55
x 0
i 1
while i < 6 do
x x 10 + i
i i +2
FII, UAIC
Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1
Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6
1
1
1
3
3
3
5
5
5
7
7
0
0
0
1
1
1
13
13
13
135
135
135
SD 2014/2015
55 / 55
x 0
i 1
while i < 6 do
x x 10 + i
i i +2
FII, UAIC
Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1
Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6
1
1
1
3
3
3
5
5
5
7
7
0
0
0
1
1
1
13
13
13
135
135
135
SD 2014/2015
55 / 55
I
I
x 0
i 1
while i < 6 do
x x 10 + i
i i +2
FII, UAIC
Pasul
0
1
2
3
4
5
6
7
8
9
10
11
12
Curs 1
Instruct, iunea
x 0
i 1
1<6
x x 10 + i
i i +2
3<6
x x 10 + i
i i +2
5<6
x x 10 + i
i i +2
7<6
1
1
1
3
3
3
5
5
5
7
7
0
0
0
1
1
1
13
13
13
135
135
135
SD 2014/2015
55 / 55