Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere...

60
Algoritmi. Limbaj algoritmic SD 2017/2018

Transcript of Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere...

Page 1: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi. Limbaj algoritmic

SD 2017/2018

Page 2: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC Curs 1 SD 2017/2018 2 / 55

Page 3: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Exemplu

I o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

I secventa Fibonacci

definitia matematica: Fn =

0, if n = 01, if n = 1

Fn−1 + Fn−2, if n > 1

I implemetare C

i n t F ( i n t n ) {i f ( n == 0) return 0 ;e l s e i f ( n == 1) return 1 ;e l s e

return F ( n−1) + F ( n−2);}

FII, UAIC Curs 1 SD 2017/2018 3 / 55

Page 4: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Exemplu

I o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

I secventa Fibonacci

definitia matematica: Fn =

0, if n = 01, if n = 1

Fn−1 + Fn−2, if n > 1

I implemetare C

i n t F ( i n t n ) {i f ( n == 0) return 0 ;e l s e i f ( n == 1) return 1 ;e l s e

return F ( n−1) + F ( n−2);}

FII, UAIC Curs 1 SD 2017/2018 3 / 55

Page 5: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Exemplu

I o secventa de numere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

I secventa Fibonacci

definitia matematica: Fn =

0, if n = 01, if n = 1

Fn−1 + Fn−2, if n > 1

I implemetare C

i n t F ( i n t n ) {i f ( n == 0) return 0 ;e l s e i f ( n == 1) return 1 ;e l s e

return F ( n−1) + F ( n−2);}

FII, UAIC Curs 1 SD 2017/2018 3 / 55

Page 6: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: etimologie

Muhammad ibn Musa al-Khwarizmi - matematician persan; a scris primacarte de algebra (cca. 830).

I metode pentru adunarea, ınmultirea si ımpartirea numerelor.

FII, UAIC Curs 1 SD 2017/2018 4 / 55

Page 7: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: definit, ie

I Nu exista o definit, ie standard pentru not, iunea de algoritm.

I Cambridge Dictionary:

“A set of mathematical instructions that must be followed in a fixedorder, and that, especially if given to a computer, will help tocalculate an answer to a mathematical problem.”

I Schneider and Gersting 1995 (Invitation for Computer Science):

“An algorithm is a well-ordered collection of unambiguous andeffectively computable operations that when executed produces aresult and halts in a finite amount of time.”

I Gersting and Schneider 2012 (Invitation for Computer Science, 6ndedition):

“An algorithm is ordered sequence of instructions that is guaranteedto solve a specific problem.”

FII, UAIC Curs 1 SD 2017/2018 5 / 55

Page 8: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: definit, ie

I Wikipedia:

“In mathematics and computer science, an algorithm is a step-by-stepprocedure for calculations. Algorithms are used for calculation, dataprocessing, and automated reasoning. An algorithm is an effectivemethod expressed as a finite list of well-defined instructions forcalculating a function. Starting from an initial state and initial input(perhaps empty), the instructions describe a computation that, whenexecuted, proceeds through a finite number of well-defined successivestates, eventually producing “output” and terminating at a finalending state. The transition from one state to the next is notnecessarily deterministic; some algorithms, known as randomizedalgorithms, incorporate random input.”

FII, UAIC Curs 1 SD 2017/2018 6 / 55

Page 9: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: model de calcul, problema rezolvata

Toate definit, iile au ceva ın comun:

I datele/informat, ia s, i procesarea acestora/acesteia ın pas, i. Acesteasunt descrise ın general de un model de calcul.Un model de calcul este format din:

I memorie - modul de reprezentare a datelor.

I instruct, iunisintaxa - descrie sintactic pas, ii de procesare;semantica - descrie pas, ii de procesare realizat, i de execut, ia uneiinstruct, iuni; ın general este data de o relat, ie de tranzit, ie pesteconfigurat, ii (sistem tranzit, ional).

I un algoritm trebuie sa produca un rezultat, adica un algoritm trebuiesa rezolve o problema.O problema este ın general reprezentata de o pereche(input, output), unde input reprezinta descrierea datelor de intrare(instant, a) iar output descrierea datelor de ies, ire (rezultatul).

FII, UAIC Curs 1 SD 2017/2018 7 / 55

Page 10: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi s, i Structuri de date

I Algoritm: metoda de rezolvare a unei probleme.

I Structuri de date: metoda de a pastra/reprezenta informat, ia.

Algorithms + Data Structures = Programs. — Niklaus Wirth

I will, in fact, claim that the difference between a bad programmer and agood one is whether he considers his code or his data structures moreimportant. Bad programmers worry about the code. Good programmersworry about data structures and their relationships. — Linus Torvalds

FII, UAIC Curs 1 SD 2017/2018 8 / 55

Page 11: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi s, i Structuri de date

I Algoritm: metoda de rezolvare a unei probleme.

I Structuri de date: metoda de a pastra/reprezenta informat, ia.

Algorithms + Data Structures = Programs. — Niklaus Wirth

I will, in fact, claim that the difference between a bad programmer and agood one is whether he considers his code or his data structures moreimportant. Bad programmers worry about the code. Good programmersworry about data structures and their relationships. — Linus Torvalds

FII, UAIC Curs 1 SD 2017/2018 8 / 55

Page 12: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: proprietati

I input (intrare) – zero sau mai multe entitati de date furnizate dinexterior.

I output (ies, ire) – algoritmul produce informatie.

I terminare – pentru orice intrare, algoritmul executa un numar finitde pasi.

I corectitudine – algoritmul se termina si produce iesirea corectapentru orice intrare; spunem ca algoritmul rezolva problema data.

FII, UAIC Curs 1 SD 2017/2018 9 / 55

Page 13: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: eficienta

I Un algoritm trebuie sa foloseasca un volum rezonabil de resurse decalcul: [spat, iu de] memorie si timp [de execut, ie].

I Avem nevoie de algoritmi eficienti pentru:I a salva timpi de asteptare, spatiu de depozitare, consum energie, etc.;

I scalabilitate: putem rezolva probleme de dimensiuni mari cu aceleasiresurse (CPU, memorie, disc, etc.);

I solutii optimizate.

FII, UAIC Curs 1 SD 2017/2018 10 / 55

Page 14: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Algoritmi: eficienta

20 25 30 35 40 45 500

20

40

60

n

tim

p(s

ecu

nd

e)

RubySchemePython

CJavaC-gcc

Figura : Executia algoritmului recursiv F (Fibonacci).

Observat, ie: Comportamentul este diferit ın functie de tipul implementarii; totusi diferentele nu

sunt atat de substantiale =⇒ Problema e algoritmul! (complexitate exponentiala)

FII, UAIC Curs 1 SD 2017/2018 11 / 55

Page 15: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Proiectarea algoritmilor

Rezolvarea algoritmica a problemelor presupune urmatoarele etape:

I definirea problemeiI abstractizeaza detaliile irelevante;

I identificarea clasei din care face parte problema s, i a unui algoritm deconstruct, ie a solut, iei;

I analiza corectitudinii s, i a eficient, ei algoritmului;

I implementarea algoritmului;

I (optimizare si generalizare).

FII, UAIC Curs 1 SD 2017/2018 12 / 55

Page 16: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Descrierea algoritmilor

I informal: limbaj natural.

I formal:

I notat, ie matematica (mas, ini Turing, lambda-calcul (Church), funct, iirecursive, etc.);

I limbaje de programare: de nivel inalt, de nivel jos, declarative (e.g.,programare funct, ionala, programare logica). Acesta poate fi s, i unmodel informal daca nu exista o semnatica formala pentru limbaj.

I semiformal:

I pseudo-cod: combina notat, ia formala a limbajelor de prgramare culimbajul natural;

I notat, ie grafica: scheme logice, automate (state machines), diagramede activitat, i.

FII, UAIC Curs 1 SD 2017/2018 13 / 55

Page 17: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC Curs 1 SD 2017/2018 14 / 55

Page 18: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Limbaj algoritmic

Avem nevoie de un limbaj care este

I simplu: pentru a fi usor de ınteles;

I expresiv: pentru a descrie algoritmi;

I abstract, ın descrierea algoritmului accentul cade pe gandireaalgoritmica si nu pe detaliile de implementare;

I un model de calcul adecvat pentru analiza complexitatii algoritmilor,ın special complexitatea timp.

FII, UAIC Curs 1 SD 2017/2018 15 / 55

Page 19: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Variabila

I Nume

I Adresa

I Atribute (tip de date asociat valorilor memorate)

I Instanta a variabilei

FII, UAIC Curs 1 SD 2017/2018 16 / 55

Page 20: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Modelul de calcul

I Memoria: structura liniara de celule

I variabile

I pointeri

FII, UAIC Curs 1 SD 2017/2018 17 / 55

Page 21: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC Curs 1 SD 2017/2018 18 / 55

Page 22: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tip de date

I Domeniu (colectia de obiecte)

I Operatii

I Categorii de tipuri de date:I Tipuri de date elementare

I Tipuri de date structurate de nivel josI operatiile la nivel de componenta

I Tipuri de date de nivel ınaltI operatiile implementate de algoritmi utilizator

FII, UAIC Curs 1 SD 2017/2018 19 / 55

Page 23: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tipuri de date elementare

I Numere ıntregiI valori: numere ıntregiI operatii: +, -, ...

I Numere realeI valori: numere rationaleI operatii: +, -, ...

I Valori booleeneI valori: true, falseI operatii: and, or, not

FII, UAIC Curs 1 SD 2017/2018 20 / 55

Page 24: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tipuri de date elementare

I CaractereI valori: ’a’, ’b’, ...I operatii: —

I PointeriI valori: adrese de variabile apartinand altui tip, valoarea NULLI operatii: —I referire indirecta: *p

FII, UAIC Curs 1 SD 2017/2018 21 / 55

Page 25: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tipuri de date elementare

I Operatori pentru numere ıntregi:

I aritmetici: a+b, a-b, a*b, a/b, a%b

I relationali: a==b, a!=b, a<b, a<=b, a>b, a>=b

operatietimp(operatie)

cost uniform cost logaritmic

a + b O(1) O(max(loga, logb))

...

FII, UAIC Curs 1 SD 2017/2018 22 / 55

Page 26: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I Expresii

I Compuse (bloc): {instructiuni}

I Conditionale: if if-else

I Iterative: while repeat for

I Intreruperea secventei: return

FII, UAIC Curs 1 SD 2017/2018 23 / 55

Page 27: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I Atribuirea

I Sintaxa: < variabila >←< expresie >

I Sematica:I se evalueaza < expresie > si rezultatul obtinut se memoreaza ın locatia

desemnata de < variabila >I este singura instructiune cu ajutorul careia se poate modifica continutul

memoriei

I cost uniform O(1), cost logaritmic O(log < expresie >)

FII, UAIC Curs 1 SD 2017/2018 24 / 55

Page 28: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Atribuirea

Exemplu:

I Inainte de atribuire:

I Dupa atribuirea u ← −v ∗ u:

FII, UAIC Curs 1 SD 2017/2018 25 / 55

Page 29: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I Atribuirea ın cazul pointerilor

I Sintaxa:∗ < variabila pointer >←< expresie >

I Sematica:I se evalueaza < expresie > si rezultatul obtinut se memoreaza ın locatia

de la adresa stocata ın < variabila pointer >

I Exemplu: ∗p ← 10

FII, UAIC Curs 1 SD 2017/2018 26 / 55

Page 30: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

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 dupaevaluare

I Semantica:I Se evalueaza < expresie >. Daca rezultatul este true, atunci se executa

< secventa− instructiuni1 > iar daca rezultatul este false, atunci seexecuta < secventa− instructiuni2 > dupa care instructiunea if setermina

FII, UAIC Curs 1 SD 2017/2018 27 / 55

Page 31: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiunea if

I cost uniform O(1), cost logaritmic O(1)

I Exemplu: calcululul minimului a doua numere:

if a < b thenmin← a

elsemin← b

saumin← aif b < a then

min← b

FII, UAIC Curs 1 SD 2017/2018 28 / 55

Page 32: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I while

I Sintaxa:while < expresie > do

< secventa− instructiuni >

I Semantica:I Se evalueaza < expresie >I Daca rezultatul este true atunci se executa < secventa− instructiuni >

dupa care se reia procesul ıncepand cu pasul 1. Daca rezultatul estefalse atunci executia instructiunii while se termina.

FII, UAIC Curs 1 SD 2017/2018 29 / 55

Page 33: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Exemplu while

I cel mai mic k astfel ıncat 7k >= n pentru un n datk ← 0sapte la k ← 1while sapte la k < n do

k ← k + 1sapte la k ← sapte la k ∗ 7

FII, UAIC Curs 1 SD 2017/2018 30 / 55

Page 34: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I repeat

I Sintaxa:repeat

< secventa− instructiuni >until < expresie >;

I Semantica:Instructiunea:

repeatS

until e;

simuleaza executia urmatorului program:

Swhile not e do

S

FII, UAIC Curs 1 SD 2017/2018 31 / 55

Page 35: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Exemplu repeat

I cel mai mic k astfel ıncat 7k >= n pentru un n datk ← 0sapte la k ← 1repeat

k ← k + 1sapte la k ← sapte la k ∗ 7

until sapte la k >= n;

FII, UAIC Curs 1 SD 2017/2018 32 / 55

Page 36: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I forI Sintaxa:

for < variabila >←< expresie1 > to < expresie2 > do< secventa− instructiuni >

saufor < variabila >←< expresie1 > downto < expresie2 > do

< secventa− instructiuni >

Observatie: < variabila > este o variabila de tip ıntreg, iar< expresie1 > si < expresie2 > sunt expresii cu rezultat ıntreg dupaevaluare

FII, UAIC Curs 1 SD 2017/2018 33 / 55

Page 37: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I forI Semantica:

for i ← e1 to e2 doS

este echivalenta cu:i ← e1temp ← e2while i <= temp do

Si ← i + 1

FII, UAIC Curs 1 SD 2017/2018 34 / 55

Page 38: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Instructiuni

I forI Semantica:

for i ← e1 downto e2 doS

este echivalenta cu:i ← e1temp ← e2while i >= temp do

Si ← i − 1

FII, UAIC Curs 1 SD 2017/2018 35 / 55

Page 39: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Subprograme

I Limbajul este modular: un program contine un numar de module

I Un modul ın limbajul prezentat este identificat cu un subprogram

I Subprograme:I ProceduriI Functii

FII, UAIC Curs 1 SD 2017/2018 36 / 55

Page 40: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Subprograme

I Proceduri:

I Sintaxa:

Procedure nume (lista-parametri-formali)begin

secventa-instructiuniend

I Apel: NUME(lista-parametri-actuali)I interfata ıntre o procedura si modulul care o apeleaza se realizeaza doar

prin intermediul parametrilor si a variabilelor globale

FII, UAIC Curs 1 SD 2017/2018 37 / 55

Page 41: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Proceduri

I Exemplu:

Procedure SWAP (x,y)begin

aux ← xx ← yy ← aux

end

Apel:SWAP(a, b)SWAP(b, c)

FII, UAIC Curs 1 SD 2017/2018 38 / 55

Page 42: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Subprograme

I Functii:I Sintaxa:

Function nume (lista-parametri-formali)begin

secventa-instructiuniend

secventa-instructiuni contine macar o instructiune return < expr >

I Apel: NUME(lista-parametri-actuali)

utilizat ıntr-o expresie: valoarea ıntoarsa de functie este cea obtinutaprin evaluarea < expr >

FII, UAIC Curs 1 SD 2017/2018 39 / 55

Page 43: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Functii

I Exemplu:

Function max3(x,y,z)begin

temp ← xif y > temp then

temp ← yif z > temp then

temp ← zreturn temp

end

Apel:max3(a, b, c)2*max3(a, b, c) > 5

FII, UAIC Curs 1 SD 2017/2018 40 / 55

Page 44: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Continut

Algoritmi. Introducere

Limbaj algoritmic

Tipuri de date

Tablouri si structuri

FII, UAIC Curs 1 SD 2017/2018 41 / 55

Page 45: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri

I Ansamblu omogen de variabile numite componentele tabloului

I Toate componentele apartin aceluiasi tip

I Componentele sunt identificate cu ajutorul indicilor

I Tablourile sunt utilizate pentru a reprezenta multimi, secvente(ordinea elementelor este importanta), matrici

I Tablourile pot fi:I unidimensionale (1-dimensionale)I bidimensionale (2-dimensionale)

FII, UAIC Curs 1 SD 2017/2018 42 / 55

Page 46: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri unidimensionale

FII, UAIC Curs 1 SD 2017/2018 43 / 55

Page 47: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri unidimensionale

I Memoria este o secventa contigua de locatii

I Ordinea de memorare – ordinea indicilor

I Operatiile se realizeaza prin intermediul componentelorExemple:

for i ← 0 to n − 1 doa[i ]← 0

for i ← 0 to n − 1 doc[i ]← a[i ] + b[i ]

FII, UAIC Curs 1 SD 2017/2018 44 / 55

Page 48: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri

Costul operatiilor:

operatietimp(operatie)

cost uniform cost logaritmic

a[i ] O(1) O(i + logai )

a[i ]← v O(1) O(i + logv)

unde a este un tablou de dimensiune n, cu valorile a[0], ..., a[n − 1]

FII, UAIC Curs 1 SD 2017/2018 45 / 55

Page 49: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri bidimensionale

FII, UAIC Curs 1 SD 2017/2018 46 / 55

Page 50: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri bidimensionale

I Memorie contigua de mxn locatiiI Componentele sunt identificate cu ajutorul a 2 indici:

I primul indice are valori {0, 1, . . . ,m − 1}I al doilea indice are valori {0, 1, . . . , n − 1}I variabilele componente :

a[0, 0], a[0, 1], . . . , a[0, n − 1], a[1, 0], a[1, 1], . . . , a[1, n − 1], . . . , a[m −1, 0], a[m − 1, 1], . . . , a[m − 1, n − 1]

I Ordinea de memorare a componentelor este data de ordinealexicografica a indicilor

FII, UAIC Curs 1 SD 2017/2018 47 / 55

Page 51: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri bidimensionale

I Cu analogia de la matrici, un tablou 2-dimensional poate fi privit caun tablou 1-dimensional ın care fiecare componenta este un tablou1-dimensional.

I Notatie: a[0][0], a[0][1], . . . , a[0][n − 1], . . . , a[m − 1][0], a[m −1][1], . . . , a[m − 1][n − 1]

FII, UAIC Curs 1 SD 2017/2018 48 / 55

Page 52: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Tablouri bidimensionale

I Operatiile cu tablori 2-dimensionale se realizeaza prin intermediulcomponentelor

for i ← 0 to m − 1 dofor j ← 0 to n–1 do

c[i , j ]← 0for k ← 0 to p–1 do

c[i , j ]← c[i , j ] + a[i , k] ∗ b[k, j ]

FII, UAIC Curs 1 SD 2017/2018 49 / 55

Page 53: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Siruri de caractere

I Pot fi considerate ca fiind tablouri unidimensionale cu elemente de tipcaracter

I Constantele sir de caracter se noteaza utilizand “ ”:“Sir-de-caractere”

I Operatii: Concatenarea, notata cu +:“un sir” + “alt sir” = “un siralt sir”

FII, UAIC Curs 1 SD 2017/2018 50 / 55

Page 54: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Structuri

I Structura: ansamblu eterogen de variabile numite campuri.

I Structura are un nume si fiecare camp are propriul nume si propriultip.

I Exemple: o structura pentru a reprezenta puncte ın plan are douacampuri: x s, i y ; o structura pentru a reprezenta o persoana poateavea trei campuri: nume, varsta, adresa;

I Numele complet al unui camp:punct.x, punct.ypersoana.nume, persoana.varsta, persoana.adresa.stradadaca p este pointer la persoana: p− > varsta

FII, UAIC Curs 1 SD 2017/2018 51 / 55

Page 55: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Structuri

I Memoria alocata este o zona contigua; elementele sunt memorate ınordinea declararii ın structura

FII, UAIC Curs 1 SD 2017/2018 52 / 55

Page 56: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Structuri si pointeri

FII, UAIC Curs 1 SD 2017/2018 53 / 55

Page 57: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Structuri

Costul operatiilor:

operatietimp(operatie)

cost uniform cost logaritmic

S .x O(1) O(logSx)

S .x ← v O(1) O(logv)

FII, UAIC Curs 1 SD 2017/2018 54 / 55

Page 58: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Execut, ia unui algoritm

I Calcul: succesiunea de pas, i elementari determinat, i de execut, iainstruct, iunilor ce compun algoritmul.

I Configurat, ie: starea memoriei + instruct, iunea curenta;I In exemplul de mai jos calculul este dat de secvent, a de configurat, ii

(c0 7→ c1 7→ · · · 7→ c12).

x ← 0i ← 1while i < 6 do

x ← x ∗ 10 + ii ← i + 2

Pasul Instruct, iunea i x0 x ← 0 – –1 i ← 1 – 02 1 < 6 1 03 x ← x ∗ 10 + i 1 04 i ← i + 2 1 15 3 < 6 3 16 x ← x ∗ 10 + i 3 17 i ← i + 2 3 138 5 < 6 5 139 x ← x ∗ 10 + i 5 13

10 i ← i + 2 5 13511 7 < 6 7 13512 7 135

FII, UAIC Curs 1 SD 2017/2018 55 / 55

Page 59: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Execut, ia unui algoritm

I Calcul: succesiunea de pas, i elementari determinat, i de execut, iainstruct, iunilor ce compun algoritmul.

I Configurat, ie: starea memoriei + instruct, iunea curenta;

I In exemplul de mai jos calculul este dat de secvent, a de configurat, ii(c0 7→ c1 7→ · · · 7→ c12).

x ← 0i ← 1while i < 6 do

x ← x ∗ 10 + ii ← i + 2

Pasul Instruct, iunea i x0 x ← 0 – –1 i ← 1 – 02 1 < 6 1 03 x ← x ∗ 10 + i 1 04 i ← i + 2 1 15 3 < 6 3 16 x ← x ∗ 10 + i 3 17 i ← i + 2 3 138 5 < 6 5 139 x ← x ∗ 10 + i 5 13

10 i ← i + 2 5 13511 7 < 6 7 13512 7 135

FII, UAIC Curs 1 SD 2017/2018 55 / 55

Page 60: Algoritmi. Limbaj algoritmic - profs.info.uaic.rosd/curs/curs-01.pdf · Algoritmi. Introducere Limbaj algoritmic Tipuri de date Tablouri ˘si structuri ... I Algoritm: metod a de

Execut, ia unui algoritm

I Calcul: succesiunea de pas, i elementari determinat, i de execut, iainstruct, iunilor ce compun algoritmul.

I Configurat, ie: starea memoriei + instruct, iunea curenta;I In exemplul de mai jos calculul este dat de secvent, a de configurat, ii

(c0 7→ c1 7→ · · · 7→ c12).

x ← 0i ← 1while i < 6 do

x ← x ∗ 10 + ii ← i + 2

Pasul Instruct, iunea i x0 x ← 0 – –1 i ← 1 – 02 1 < 6 1 03 x ← x ∗ 10 + i 1 04 i ← i + 2 1 15 3 < 6 3 16 x ← x ∗ 10 + i 3 17 i ← i + 2 3 138 5 < 6 5 139 x ← x ∗ 10 + i 5 13

10 i ← i + 2 5 13511 7 < 6 7 13512 7 135

FII, UAIC Curs 1 SD 2017/2018 55 / 55