Documente Academic
Documente Profesional
Documente Cultură
Recursivitate
29 noiembrie 2004
Marius Minea
TDA = un model matematic cu un set de operat ii asupra lui o structur a de date + funct ii care opereaz a pe ea not iunea de clas a din programarea orientat a pe obiecte Pentru implementarea TDA n C: n sierul .h se declar a minimul necesar pentru a putea compila programul (pentru structuri, adesea doar un typedef pt. pointer la tip) si declarat ii de funct ii care manipuleaz a tipul respectiv structura tipului si denit iile funct iilor: ascunse n implementare (.c) typedef struct node *list_t; /* ^ n fi sierul typedef struct node { /* ^ n fi sierul int info; /* sau/ si alte struct node *nxt; } node_t; /* tip vizibil .h */ .c cu implementarea */ c^ ampuri */ doar ^ n fi sierul .c */
utilizatorul, care include doar sierul .h nu are acces la structura intern a a tipului (node_t); accesul e permis doar prin funct ii care citesc sau modic a componentele unei variabile de acest tip (ca si pt. FILE)
Programarea calculatoarelor 2. Curs 9 Marius Minea
Recursivitatea: Exemple
n tipuri de date recursive Codul se scrie natural pornind de la denit ia recursiv a a structurii: Ex. o list a este vid a sau un element urmat de o list a Se pot deni atunci: membru : e primul element, sau membru n coada listei sterge : primul element, sau sterge din coada listei, etc. La fel, se pot deni recursiv funct ii care copiaz a sau transform a liste. n analiza sintactic a Product iile din gramatica unui limbaj sunt tipic recursive: expresie ::= termen | expresie + termen | expresie - termen termen ::= factor | termen * factor | termen / factor factor ::= num ar | ( expresie ) Primele dou a product ii sunt recursive la st anga, pentru c a neterminalul din partea st ang a a lui ::= apare si ca prim element ntr-o variant a se pot transforma si implementa (vezi exemplu) folosind cicluri
Programarea calculatoarelor 2. Curs 9 Marius Minea