Sunteți pe pagina 1din 5

Urm arim o prezentare general a a structurilor de date, independent a de un limbaj de programare sau altul - pentru descrierea algoritmilor vom

folosi limbajul Pseudocod.

Algoritmi
Domeniile SD si al algoritmilor (de manipulare a acestor structuri) se interconecteaz a. Aspecte de baz a legate de algoritmi - ecient a algoritmilor cantitatea de resurse utilizate timp spat iu m asurarea ecient ei: analiz a asimptotic a (complexitate timp si spat iu) analiza empiric a

Limbajul Pseudocod
Vom folosi dou a tipuri de propozit ii pseudocod: 1. propozit ii standard, ecare av and sintaxa si semantica sa; 2. propozit ii nestandard (texte care descriu p art i ale algoritmului nc a incomplet elaborate). Aceste propozit ii ncep ntotdeauna cu semnul @. Comentariile vor cuprinse ntre acolade. citirea datelor se face folosind propozit ia standard:
citeste lista

tip arirea rezultatelor se face folosind propozit ia standard:


tipare ste lista

Atribuirea se va simboliza prin . Instruct iunea alternativ a va avea forma:

Daca expresie logica atunci instructiuni altfel instructiuni SfDaca

unde sect iunea altfel poate lipsi. Structura repetitiv a cu num ar cunoscut de pa si:
Pentru contor = li, lf, pas instructiuni SfPentru executa

unde contorul ia valori de la valoarea init ial a li, la valoarea nal a lf , la ecare pas ad aug andu-se valoarea pas. Pasul poate lipsi ind implicit egal cu 1. Structura repetitiv a cu num ar necunoscut de pa si condit ionat a anterior (test init ial):
CatTimp expresie logica executa instructiuni SfCatTimp

Structura repetitiv a cu num ar necunoscut de pa si condit ionat a posterior (test nal):


Repeta instructiuni PanaCand expresie logica

Denirea unui subalgoritm se va face folosind propozit ia standard:


Subalgoritm nume(...) instructiuni SfSubalgoritm

Denirea unei funct ii se va face folosind propozit ia standard:


Functia nume(...) instructiuni SfFunctia

Pentru a specica rezultatul ntors de o funct ie vom folosi numele funct iei. Exemplu:
Functia minim(a, b) min a; Daca a < b atunci min b; SfDaca minim min; SfFunctia

Apelul unei proceduri se face folosind:


nume(< lista parametri actuali >)

apelul unei funct ii se face scriind ntr-o expresie numele funct iei urmat de lista parametrilor actuali (ex: m minim(2, 3)).

Extensii si convent ii
Dac a vrem s a declar am o variabil a i de tip Intreg , atunci vom folosi notat ia i : Intreg . In cazul n care dorim s a declar am un tablou unidimensional t cu elemente de tip TElement vom folosi notat ia t : T Element[]. Dac a se dore ste precizarea exact a a limitelor de variat ie a unui indice, vom folosi notat ia care se bazeaz a pe tipul subdomeniu: T Element[M IN ..M AX ] O nregistrare (un vector av nd lungimea n si elementele de tip TElement) o vom reprezenta sub forma Vector n:Intreg e:TE[] Accesul la elementele unei nregistr ari l vom face folosind caracterul . Dac a ne referim la o variabil a v de tip V ector, atunci prin: v.n - ne vom referi la num arul de elemente ale vectorului; v.e[i] - ne vom referi la al i-lea element din vector. Pentru a indica pointeri (adrese ale unor zone de memorie), vom folosi caracterul , cu alte cuvinte dac a vrem s a declar am un pointer p care refer a un num ar ntreg, acest lucru l vom scrie n urm atoarea manier a: p : Intreg Cont inutul locat iei referite de pointerul p l vom nota [p]. Pointerul nul (care nu refer a nimic) l vom nota prin NIL. Operat iile de alocare, respectiv dealocare a pointerilor le vom nota: aloca(p) dealoca(p)

Convent ii folosite n specicat ii.


In specicarea operat iilor prin precondit ii si postcondit ii, c and folosim numele unei variabile ne referim la valoarea acesteia.

Av and o variabil a i de tip T ip (i : T ip), notat ia i T ip (exemplu: i Intreg ), va folosit a pentru a evindent ia faptul c a valoarea variabilei apart ine domeniului de denit ie a tipului T ip (Intreg ). Datorit a faptului c a valorile variabilelor pot modicate n urma execut arii unei operat ii, este necesar a delimitarea dintre valoarea variabilei nainte de efectuarea operat iei si cea de dup a execut ia ei. Vom conveni s a folosim caracterul (apostrof) pentru a specica valoarea variabilei dup a aplicarea operat iei. De exemplu, av and o operat ie dec care decrementeaz a valoarea unei variabile x (x : Intreg ), atunci specicat ia operat iei va :

dec(x) pre : x Integer post : x = x 1

Tip de date generic


Pentru generalitate, vom considera c a elementele unui TAD sunt de un tip de date generic TElement cu o interfat a minimal a format a din urm atoarele operat ii: atribuire
atribuie(x, y ) - notat ie x y pre : x, y T Element post : x = y

testarea egalit a tii


egal(x, y ) - notat ie x = y pre : x, y T Element adevarat, x = y post : egal = f als, x=y

Pentru simplitate, vom folosi notat iile x=y n locul apelului funct iei egal(x,y) pentru a ilustra egalitatea a dou a elemente de tip TElement. x y n locul apelului ssubalgoritmului atribuie(x,y) pentru a ilustra operat ia de atribuire.

Dac a pe domeniul valorilor unui tip de date se poate deni o relat ie de ordine ( ), vom deni si tipul generic TComparabil, care deriv a din tipul TElement; pe l ang a interfat a acestuia, TComparabil admite si urm atoarea operat ii:

compararea a dou a elemente


compar a(x, y ) pre : x, y T Comparabil ax<y 1, dac 0, dac ax=y post : compara = 1, dac ay>x

Pentru simplitate, vom folosi notat iile x<y, x y, x>y, x y pentru a ilustra relat iile corespunz atoare ntre elemente de tip TComparabil.