Documente Academic
Documente Profesional
Documente Cultură
Octombrie, 2013
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
2 / 63
Organizare
Structuri de date
Curs 1
Octombrie, 2013
3 / 63
Obiective
nsu sirea unei g andiri algoritmice dezvoltarea abilit a tilor de proiectare de solut ii algoritmice nsu sirea tehnicilor de utilizare a principalelor structuri de date evaluarea timpului de execut ie n cazul cel mai nefavorabil
Structuri de date
Curs 1
Octombrie, 2013
4 / 63
Abilit a ti
G andire algoritmic a: scriere de programe Int elegerea limbajului algoritmic: citire de programe Int elegerea puterii si a limitelor calculului Capacitatea de reprezentare a descrierii unei probleme ntr-un cadru computat ional
Structuri de date
Curs 1
Octombrie, 2013
5 / 63
Cunoa stere
Declarativ a x = y a. . 2 y = x , y >= 0
Imperativ a
Start cu G arbitrar if G 2 x STOP else G = (G + x /G )/2 Repeat step 2
(denit ie/axiom a)
(descriere deductiv a)
Structuri de date
Curs 1
Octombrie, 2013
6 / 63
Bibliograe
T.H. Cormen, C.E. Leiserson, R.L. Rivest: Introducere n algoritmi, Libris Agora, 2000 D. Lucanu, M. Craus: Proiectarea algoritmilor, Polirom, 2008 S. Skiena: The Algorithm Design Manual, Springer, 2008 R. Sedgewick, K. Wayne: Algorithms, 4th ed., Addison-Wesley, 2011
Structuri de date
Curs 1
Octombrie, 2013
8 / 63
Cursuri online
Algorithms: Design and Analysis, Part 1 https://www.coursera.org/course/algo Algorithms, Part I https://www.coursera.org/course/algs4partI Introduction to Algorithms http://ocw.mit.edu/courses/ electrical-engineering-and-computer-science/ 6-006-introduction-to-algorithms-fall-2011/
Structuri de date
Curs 1
Octombrie, 2013
9 / 63
Evaluare
forme:
activitatea la seminar(AS)
patru teste punctate cu note 1-10 participarea activ a la seminarii (maxim 2 puncte bonus) nota seminar: 90% teste + 10% prezent a + 20% bonus
criterii de promovare:
AS >= 6, TS >= 4
Structuri de date
Curs 1
Octombrie, 2013
10 / 63
Evaluare
Normele ECTS (European Credit Transfer System) Punctaj Final (PF) = 50%AS + 50%TS Nota nal a
<= 4 dac a sunt ndeplinite condit iile si NU sunt ndeplinite criteriile de promovare, = 10 dac a PF este in primii 5% din cei promovat i (A) = 9 urm atorii 10% din cei promovat i (B) = 8 urm atorii 20% din cei promovat i (C) = 7 urm atorii 30% din cei promovat i (D) = 6 urm atorii 25% din cei promovat i (E) = 5 ultimii 10% din cei promovat i
Structuri de date
Curs 1
Octombrie, 2013
11 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
12 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
13 / 63
Algoritmi
Problem a, Solut ie Algoritm: o secvent a nit a de pa si aranjat a ntr-o ordine logic a specic a, cu proprietatea c a, atunci c and este executat a, produce o solut ie pentru o problem a dat a. Exemple: ret eta culinar a, algoritmul lui Euclid, ciurul lui Eratostene
Algoritm calculator (computer algorithm) = un algoritm pentru care secvent a de pa si este executat a de un calculator Limbaj Algoritmic = un limbaj folosit pentru descrierea algoritmilor
Structuri de date
Curs 1
Octombrie, 2013
14 / 63
Algoritmi - etimologie
Muhammad ibn Musa al-Khwarizmi - matematician persan; a scris prima carte de algebra (cca 830) metode pentru adunarea, nmult irea si mp art irea numerelor
Structuri de date Curs 1 Octombrie, 2013 15 / 63
Structuri de date
Curs 1
Octombrie, 2013
16 / 63
Exemplu
o secvent a de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Structuri de date
Curs 1
Octombrie, 2013
17 / 63
Exemplu
o secvent a de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... secvent a Fibonacci denit ia matematic a: Fn = 0, 1, Fn1 + Fn2 , if n = 0 if n = 1 if n > 1
Structuri de date
Curs 1
Octombrie, 2013
17 / 63
Exemplu
o secvent a de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... secvent a Fibonacci denit ia matematic a: Fn = 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 ( n 1) + F ( n 2); } 0, 1, Fn1 + Fn2 , if n = 0 if n = 1 if n > 1
Structuri de date
Curs 1
Octombrie, 2013
17 / 63
Algoritmi - propriet a ti
intrare (input) zero sau mai multe entit a ti de date furnizate din exterior ie sire (output) algoritmul produce informat ie terminare pentru orice intrare, algoritmul execut a un num ar nit de pa si corectitudine algoritmul se termin a si produce ie sirea corect a pentru orice intrare; spunem c a algoritmul rezolv a problema dat a.
Structuri de date
Curs 1
Octombrie, 2013
18 / 63
Algoritmi - Ecient a
Un algoritm trebuie s a foloseasc a un volum rezonabil de resurse de calcul: memorie si timp Avem nevoie de algoritmi ecient i pentru:
a salva timpi de a steptare, spat iu de depozitare, consum energie, etc. scalabilitate: putem rezolva probleme de dimensiuni mari cu acelea si resurse (CPU, memorie, disc, etc.) solut ii optimizate
Structuri de date
Curs 1
Octombrie, 2013
19 / 63
Algoritmi - Ecient a
timp (secunde)
40
20
0 20
25
30
35 n
40
45
50
Comportamentul este diferit n funct ie de tipul implement arii; totu si diferent ele nu sunt at at de substant iale = Problema e algoritmul! (complexitate exponent ial a)
Structuri de date
Curs 1
Octombrie, 2013
20 / 63
Proiectarea algoritmilor
identicarea clasei din care face parte problema si a unui algoritm de construct ie a solut iei analiza corectitudinii si a ecient ei algoritmului implementarea algoritmului repet a (optimizare si generalizare)
Structuri de date
Curs 1
Octombrie, 2013
21 / 63
Descrierea algoritmilor
limbaj natural - u surint a n exprimare scheme logice: descrieri grace ale prelucr arilor din algoritm; rar utilizate n prezent pseudocod: limbaj articial bazat pe un vocabular si o sintax a; mai put in riguros ca un limbaj de programare limbaj de programare - precizie
Structuri de date
Curs 1
Octombrie, 2013
22 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
23 / 63
Limbaj algoritmic
expresiv pentru a descrie algoritmi simplu, pentru a u sor de nt eles abstract, n descrierea algoritmului focusul cade pe g andirea algoritmic a si nu pe detaliile de implementare un model computat ional adecvat pentru analiza complexit a tii algoritmilor, n special complexitatea timp
Structuri de date
Curs 1
Octombrie, 2013
24 / 63
Limbaj algoritmic
https://fmse.info.uaic.ro/tools/K/ examples alg
Variabil a
Instant a a variabilei
Structuri de date
Curs 1
Octombrie, 2013
26 / 63
Modelul de memorie
pointeri
Structuri de date
Curs 1
Octombrie, 2013
27 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
28 / 63
Tip de date
Structuri de date
Curs 1
Octombrie, 2013
29 / 63
Numere ntregi
valori: numere ntregi operat ii: +, -, ...
Numere reale
valori: numere rat ionale operat ii: +, -, ...
Valori booleene
valori: true, false operat ii: and, or, not
Structuri de date
Curs 1
Octombrie, 2013
30 / 63
Caractere
valori: a, b, ... operat ii: nu exist a
Pointeri
valori: adrese de variabile apart in and altui tip, valoarea NULL operat ii: nu referire indirecta: *p
Structuri de date
Curs 1
Octombrie, 2013
31 / 63
Structuri de date
Curs 1
Octombrie, 2013
32 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
33 / 63
Instruct iuni
In limbajul algoritmic alg: Stmt : : = Exp = Exp ; | Exp ; | | Stmts | w h i l e ( Exp ) Stmt | r e t u r n Exps ; [ s t r i c t ] | Exp ( I d s ) Stmts | i f ( Exp ) Stmt e l s e Stmt | i f ( Exp ) Stmt
Structuri de date
Curs 1
Octombrie, 2013
34 / 63
Instruct iuni
Expresii Condit ionale: if-else if Iterative: while repeat for Intreruperea secvent ei: return
Structuri de date
Curs 1
Octombrie, 2013
35 / 63
Instruct iuni
Atribuirea
Sintaxa: < variabila >< expresie > Sematica:
se evalueaz a < expresie > si rezultatul obt inut se memoreaz a n locat ia desemnat a de < variabila > este singura instruct iune cu ajutorul c areia se poate modica cont inutul memoriei
Exemplu:
Inainte de atribuire:
Dup a atribuirea u v u :
Structuri de date
Curs 1
Octombrie, 2013
36 / 63
Instruct iuni
Exemplu: p 10
Structuri de date
Curs 1
Octombrie, 2013
37 / 63
Instruct iuni
if
Sintaxa: if < expresie > then < secventa instructiuni1 > else < secventa instructiuni2 > if < expresie > then < secventa instructiuni1 > if < expresie > then < secventa instructiuni1 >; Observat ie: < expresie > este o expresie cu rezultat boolean dup a evaluare Semantica:
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 instruct iunea if se termin a
Structuri de date Curs 1 Octombrie, 2013 38 / 63
Exemplu if
Calcululul minimului a dou a numere: if a < b then min a else min b sau min a if b < a then min b
Structuri de date
Curs 1
Octombrie, 2013
39 / 63
Instruct iuni
while
Sintaxa: while < expresie > do < secventa instructiuni > Semantica:
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 execut ia instruct iunii while se termin a.
Structuri de date
Curs 1
Octombrie, 2013
40 / 63
Exemplu while
cel mai mic k astfel nc at 7k >= n pentru un n dat k0 sapte la k 1 while sapte la k < n do k k +1 sapte la k sapte la k 7
Structuri de date
Curs 1
Octombrie, 2013
41 / 63
Instruct iuni
repeat
Sintaxa: repeat < secventa instructiuni > until < expresie >; Semantica: Instruct iunea: repeat S until e ; simuleaz a execut ia urm atorului program: S while not e do S
Structuri de date
Curs 1
Octombrie, 2013
42 / 63
Exemplu repeat
cel mai mic k astfel nc at 7k >= n pentru un n dat k0 sapte la k 1 repeat k k +1 sapte la k sapte la k 7 until sapte la k >= n;
Structuri de date
Curs 1
Octombrie, 2013
43 / 63
Instruct iuni
for
Sintaxa: for < variabila >< expresie1 > to < expresie2 > do < secventa instructiuni > sau for < variabila >< expresie1 > downto < expresie2 > do < secventa instructiuni > Observat ie: < variabila > este o variabil a de tip ntreg, iar < expresie1 > si < expresie2 > sunt expresii cu rezultat ntreg dup a evaluare
Structuri de date
Curs 1
Octombrie, 2013
44 / 63
Instruct iuni
for
Semantica: for i e 1 to e 2 do S este echivalent a cu: i e1 temp e 2 while i <= temp do S i i +1
Structuri de date
Curs 1
Octombrie, 2013
45 / 63
Instruct iuni
for
Semantica: for i e 1 downto e 2 do S este echivalent a cu: i e1 temp e 2 while i >= temp do S i i 1
Structuri de date
Curs 1
Octombrie, 2013
46 / 63
Subprograme
Limbajul este modular: un program cont ine un num ar de module Un modul n limbajul prezentat este identicat cu un subprogram Subprograme:
Proceduri Funct ii
Structuri de date
Curs 1
Octombrie, 2013
47 / 63
Subprograme
Proceduri:
Sintaxa: Procedure nume (lista-parametri-formali) begin secventa-instructiuni end Apel: NUME(lista-parametri-actuali)
interfat a ntre o procedur a si modulul care o apeleaz a se realizeaz a doar prin intermediul parametrilor si a variabilelor globale
Structuri de date
Curs 1
Octombrie, 2013
48 / 63
Proceduri
Exemplu: Procedure SWAP (x,y) begin aux x x y y aux end Apel: SWAP(a, b) SWAP(b, c)
Structuri de date
Curs 1
Octombrie, 2013
49 / 63
Subprograme
Funct ii:
Sintaxa: Function nume (lista-parametri-formali) begin secventa-instructiuni end secventa-instructiuni cont ine m acar o instruct iune return < expr > Apel: NUME(lista-parametri-actuali) utilizat ntr-o expresie: valoarea ntoars a de funct ie este cea obt inut a prin evaluarea < expr >
Structuri de date
Curs 1
Octombrie, 2013
50 / 63
Funct ii
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
Structuri de date
Curs 1
Octombrie, 2013
51 / 63
Cont inut
Detalii curs
Curs1 Algoritmi-Introducere Limbaj algoritmic Tipuri de date Instruct iuni Tablouri si structuri
Structuri de date
Curs 1
Octombrie, 2013
52 / 63
Tablouri
Ansamblu omogen de variabile numite componentele tabloului Toate componentele apart in aceluia si tip Componentele sunt identicate cu ajutorul indicilor Tablourile sunt utilizate pentru a reprezenta mult imi, secvent e (ordinea elementelor este important a), matrici Tablourile pot :
unidimensionale (1-dimensionale) bidimensionale (2-dimensionale)
Structuri de date
Curs 1
Octombrie, 2013
53 / 63
Tablouri unidimensionale
Structuri de date
Curs 1
Octombrie, 2013
54 / 63
Tablouri unidimensionale
Memoria este o secvent a contigu a de locat ii Ordinea de memorare ordinea indicilor Operat iile se realizeaz a prin intermediul componentelor Exemple: for i 0 to n 1 do a [i ] 0 for i 0 to n 1 do c [i ] a[i ] + b [i ] Costul operat iilor
a[i ] : O (1) a[i ] v : O (1)
Structuri de date
Curs 1
Octombrie, 2013
55 / 63
Tablouri bidimensionale
Structuri de date
Curs 1
Octombrie, 2013
56 / 63
Tablouri bidimensionale
Structuri de date
Curs 1
Octombrie, 2013
57 / 63
Tablouri bidimensionale
Cu analogia de la matrici, un tablou 2-dimensional poate privit ca un tablou 1-dimensional n care ecare component a este un tablou 1-dimensional. Notat ie: a[0][0], a[0][1], . . . , a[0][n 1], . . . , a[m 1][0], a[m 1][1], . . . , a[m 1][n 1]
Structuri de date
Curs 1
Octombrie, 2013
58 / 63
Tablouri bidimensionale
Operat iile cu tablori 2-dimensionale se realizeaz a prin intermediul componentelor for i 0 to m 1 do for j 0 to n1 do c [i , j ] 0 for k 0 to p 1 do c [i , j ] c [i , j ] + a[i , k ] b [k , j ]
Structuri de date
Curs 1
Octombrie, 2013
59 / 63
S iruri de caractere
Pot considerate ca ind tablouri unidimensionale cu elemente de tip caracter Constantele sir de caracter se noteaz a utiliz and : S ir-de-caractere Operat ii: Concatenarea, notat a cu +: un sir + alt sir = un siralt sir
Structuri de date
Curs 1
Octombrie, 2013
60 / 63
Structuri
Structura: ansamblu eterogen de variabile numite c ampuri Structura are un nume si ecare camp are propriul nume si propriul tip Exemple: o structura pentru a reprezenta puncte in plan are doua campuri: x si y ; o structura pentru a reprezenta o persoana poate avea trei campuri: nume, varsta, adresa; Numele complet al unui c amp: punct.x, punct.y persoana.nume, persoana.varsta, persoana.adresa.strada dac a p este pointer la persoana: p > varsta
Structuri de date
Curs 1
Octombrie, 2013
61 / 63
Structuri (articole)
Memoria alocat a este o zon a contigu a; elementele sunt memorate n ordinea declar arii n structur a
Structuri de date
Curs 1
Octombrie, 2013
62 / 63
Structuri si pointeri
Structuri de date
Curs 1
Octombrie, 2013
63 / 63