You are on page 1of 86
>rogramariicatcutatoarelor aste un singur limbaj, executabil). Serierea si ineficienta. El este operatii si adrese evoluale (universale, FORTRAN, COBOL un astfel de limbaj se © al utilizatorului sunt ului sau de utilizare tame obiect executabile ramului sursit in enta software numitd nfa ile compilatorulu = presupune existe programului sursi smblare. Unele limbaje. spuse unei_prelucriri fa de transformare a gram cod obiect ita link-editor ule executabile din Solicit sau explicit de sbile din bibliotecile zit in executie cu Organizarea interna a datelor ” 2. ORGANIZAREA INTERNA A DATELOR Preluctarea automata a datelor presupune un sistem de organizare a acestora dupa metode si procedee specifice. Organizarea datelor este un proces complex care presupune identificarea, cl rea si descrierea proprietitilor ruparea lor in colectii, reprezentarea pe purttori tehnici, definirea gi realizarea procedurilor de prelucrare ete. Deoares sii cestora, date se memoreaza, de obicei, pe sup ehnici de informatii dar se prelucreaz numai cdnd sunt prezente in memoria interna, datele trebuie organizate at extern ct si intern, precizdndu-se totodati k modul in care se realizeaza ura intre cele doud niveluri de organizare. 2.1, Informatia, data, cunostinga Informatia este un concept de maxima generalitate, care poate fi definit prin raportarea la conceptele de materie i energie, Fondatorul cibemneticii. Norbert Wiener! considera informatia ca a treia forma de manifestare a rea yi obiective. apreciind cA ea nu este nici materie, nici energie, ci pur si simplu informatie. Se poate remarca faptul ca definitia anterioara este data in sens negativ Pentru a incerca o definitie afirmativa. se cuvine mai intai sa se faca distinc{ie intre doua maniere de a aborda conceptul pus in discutie: in ral, ca semnele care circula pe diferite canale intre elementele lumii reale, cu forme specifice de receptare la diferitele niveluri de manifestare a materiei vii in particular ind elementul receptor este omul, ca fiin erioari pe scara biologica. in acest ultim sens, informatia webuie considerata in raport cu procesul de cunoasiere si cu modul de reflectare a ezultatelor sale in constiinfa fiinjei umane. in literatura de specialitate sunt dentificate urmatoarele trasaturi definitorii ale informatie Norbert Wiener — Cyhermetics or Commo! anf Communication in the Animal and sine, Herman and ne Ma. Paris, The MIT Press, Cambridge (Mass), Wiley and Sons. New rk (1948), editia a doua revazuita si adaugita (dowd capltole noi), The MIT Press, ambridge (Mass), Wiley and Sons, New York, 1961 38 Bazele programe caleulatoarelor @ sen cu semnificarie: este obli toriu ca un mesaj sa fie consteuit inte-o limba (limba) cunoscuté de receptor; @ nousate: existi mesaje care, desi sunt redactate int cunoseuti © limba | nu contin nimic nou pentru receptor, pierzdndu-se calitatea de informatie: © ilitate: in raport cu interesele receptorului, este posibil ca un ‘mesaj cu caracter de noutate sa fie inutil pentru activitatea sa, pierzindu-si, de asemenea, calitatea de informatie. Corespunzator, se identifica urmatoarele niveluri la care se considera formatia: sintact semantic si pragmatic, Nivelul sintactic este asociat sistemului de semne si regulilor utilizate pentru a le reuni in constructii sintactice folosite pentru Feprezentarea informatiei in procesul de culegere, transmitere, inregistrare si prelucrare. Acestui nivel ii core punde conceptul de dard, care. folosind notajia formal BNF (Backus-Nour Form), poate fi def el ident initd ast : ator> . Regulile de sintaxa care formeaza multimnea producfilor pot fi specificate in ‘maj multe moduri. dinire care se remarea notajia formali BNF (Backus Normal Form) si diagramele de sintaxa. in notajia BNF. regulile sintactice (metadefinitiile) au forma desem parte-dreapta ‘az metavariabila (variabila neterminala) care se este un _metasimbol avand sensul de este prin defini -apta reprezinta definitia metavariabilei irl definiiei (parte-dreapta) se intélnese urmatoarele . categorie folosita in defini ‘metaconstanta, element al alfabetului terminal | care separa altemativele in definitie I care indica o construetie oprionala; {} care indica posibititatea repetarii construct. Altemativele se constituie prin justapunerea de metavariabile si/sau metaconstante, unde 2). Modelul de reprezentare a informatici, ..formula scrisi”, reprezintd 0 dati, Deosebirca Gintre informatie si data este echivalentd cu deosebirea dintre obiect $i modelul sau. Sub aspect seman iza_o serie de coneluzii clarificatoare a problematicii puse in di fi generat numai de sisteme cu numér n finit de stati ( informatia poate fi caracterizata ca semnificatie a datelor. Calculatoare! aetuale prelucreaza date pe baza cdirora rezultate (lot date) care. prin interpretare umana. capa devenind informatii se obi un sens, CE. Shannon a introdus notiunea de cantitate de informatie, care se poate defini astfel: fie un experiment X, avand un numa finit de evenimente elementare independente x).x2 PLPosoPs wre ‘se realizeazd cu probabilitayile xefssnas). Dac X repre: imtd_un sistem complet de evenimente: Osp,s]. pentru orice ke {1.2....n} (1) si Sp, = (2), atunei Cantitatea de informatie (entropia) se masoara dupa relatia: HQ), Posey) == Py lo (3) Cantitatea de informatie se exprima, cel mai adesea, in biti, Bitul poste fi definit ca informayia furnizata de un sistem cu doud stati echipro- babile: \ x-[e =) w 12 12} Aplicand formu la (3), se objine: HOP ParPa (122 os (1/2)—(1 20a, (1/2) Qrganizarea intent Prin dat accesibil unui at care se poate Procesele si abie In notayic Identifice de alte date si a« Valoares proprietate com: caractere etc. Dé este denumita datele constante adicd o astfel de justifies denumir exist gi posibilit un identificator p Atributele care aceasta va fi asocia unei date valorilor pe care | pot efectua cu ele! S pot asocia si valorilor in zone relucrarii (static, Data este 1 tin raport cu in <2re 0 prelucreazi =nan (nivel logic), nivel fizic, uni ime, situaté la Organizarea interna a datetor en ai si mesajului clarificatoare a > cunostinja si poate n 2 2). Modelul de 0 dat. Deosebirea birea dintre obiect si caracterizata ca te pe baza c&rora pau’ un sens. e informatie, care se & finit de evenimente cu probabilitatile sistem complet de 1 (2), atunei jesea, in biti. Bitul w doua stiri echipro- Prin datdi se desemneazi un model de reprezentare a informatiei accesibil unui anumit procesor (om, unitate central, program etc.), model cu care se poate opera pentru a objine noi informajii despre fenomenele, procesele gi obiectele lumii reale. In notajie BNF, semnificatia cuvintelor de definire este urmatoarea. Idemificatorul este un nume care se asociaz§ datei, pentru ao distinge de alte date si a 0 putea referi in procesele de prelucrare (referire prin nume). Valoarea daiei se poate preciza prin enumerare sau printr-o Proprietate comuna. Ea poate fi numér intreg, real, complex, logic, sir de caractere etc. Data care pastrea este denumit& constantd. in caz contrar, data se numeste variabila. Pentru aceeasi valoare pe tot parcursul preluc datele constante se foloseste, in general, drept identificator chiar valoarea, adic o astfel de dati se autoidentificd prin forma textuala a valorii, ceea ce justificd denumirea de literal. {n unele limbaje de programare, intre care si C, exist si posibilitatea definirii unor constante simbolice, cérora li se asociaza un identificator propriu Atributele precizeaza proprietiti ale datei gi ele determin’ modul in care aceasta va fi tratatd in procesul de prelucrare. Dintre atributele care se pot asocia unei date, cel mai important este tipul. El precizeazi multimea valorilor pe care le poate-avea o dat, precum si multimea de operatii care se pot efectua cu elementele multimii de valori ale datei. Pe Kinga tip, unei date i se pot asocia si alte atribute, ca: precizia reprezentarii interne, cadrarea valorilor in zona afectata, modul de alocare a memoriei pe parcursul prelucrari (static, dinamic), valoarea iniiala etc. 2.2, Data si structura de date Data este elementard (scalara) daca apare ca o entitate indivizibila, atat in raport cu informatia pe care o reprezinti, cit si in raport eu procesorul care 0 prelucreazii. O data scalara poate fi privité la nivelul unui procesor uman (nivel logic), respectiv la nivelul calculatorului, ca procesor (nivel fizic) La nivel fizic, unei date ti corespunde 0 zon de memorie de o anumiti marime, situati la 0 anumita adres, in care sunt memorate, in timp gi intr-o forma specifica, valorile acesteia. Bazele programa cateulatoarelor Organizarea in afara datelor scalare, in aplicafiile practice se utilizeazi colecyti de date, Intre elementele unei colectii de date pot fi identificate sau, eventual, pot fi introduse relajii care si determine pe multimea respectiva o anumiti structura, adied un mod de ordonare, astfel inca s8 se faciliteze prelucrarea. O colectie de date pe care s-a definit un mecanism de selectare a elementelor (componentelor), constituie 0 sruerurd de date. Ea este o entitate de sine statdtoare, individualizabilé prin nume. ale carei componente isi mentin propri ‘ajile (Lipul). Selectarea componentelor unei structuri se poate realiza folosind identificatorii asociai acestora (aecesul prin nume) sau prin pozitia pe care o ocupa in structurd, in conformitate cu ordinea specificat ° acces direct. la care © component poate fi selectata fara a tine seama de i modul de selectare a componentelor, se disting: strueturi cw lizarea unei celelalte componente: struciuri cu acces secvenfial, la care lo componente se face printr-un proces de parcurgere a mai multor componente, conform cu ordinea acestora (traversare), @ Dupa tipul componentelor. structurile de date pot fi impariite in omogene. ca d_componentele sunt de acelasi tip si meomogene, cand componentele sunt de tipuri diferite © Componentele unei structuri de date pot sa fie date elementare {scalare) sau s& fie ele insele structuri de date. Daca o structura de date se ‘compune din (sau se poate descompune in) structuri de acelasi tip. se spune c& structura respectiva de date este recursive @ Structurile de date se pot regisi in memoria intend (structui interne) sau pe un purtator extern (banda magnetic’, disc magnetic, discheta etc.), eaz in care se numese structuri externe (figiere). @ Dacci in reprezentarea structurii de date pe suportul de memorie se inregistreaza, impreuna cu componentele acesteia si date cate materializeaza rela{iile de ordonare, se spune c& aceasta e te 0 structurd explicina (altfe implicita), iar datele suplimentare, de obicei adres acestor date suplimentare apare in cazul reprezentirii dispersate a structurilor de date, in care componentele nu oc adiacent adiacente corespunde structurilor dense. Toate structurile de date care au I este . SE numese referinge sau pointeri, Necesitate zone Pe suportul de memorare, Reprezentarea componentelor in zone aceeasi organizare si sunt supuse acelorasi operajii formeaz’i un anumit tip de structura de date, extinzind nojiunea de tip de dati si asupra mulimilor ordonate de date, el de tip siaui memorie bi zonele de necesita Tipul dinan inn memoria it elementare introducere: exist anu acestor cole rezolva Prac masivul (1a aproape toa diferente s 44 multe dime denumirile acces direc sintactic’ n ume de ex Dive modalitagi mplemente: e=maril cateulatoaretor Organicarea interni a datelor 8 izeazA colectii de ate sau, eventual, pot espectiva o anumita teze prelucrarea. O tare a clementelor © entitate de sine onente isi menti cturi se poate realiza me) saui prin pozitia sting: siructuri cu 4a jine seama de care localizarea unei multor componente, ot fi impair jeomogene. fie date elementare structura de date se elasi tip, se spune ca a interna (structuri © magnetic, dischetd jortul de memorie se care materializeazi explicita (altel, lumese referinfe sau ste » cazul reprezentitii nu ocupa zone aponentelor in zone le de date are au az un anumit tip de i supra muhimilor © in functic de modul de alocare a zonelor de memorie se disting date de tip static sau dinamic, Pentru datele de tip static sunt alocate zone de memorie bine definite, in momentul compilarii. Pentru datele de tip dinamic. zonele de memorie sunt alocate in momentul executici, in functie de ccesitdti, find posibila chiar eliberar memoriei ocupate de unele date. Tipul dinamic corespunde tipului referinja (pointer). 2.3, Structurile de date interne in multe aplicatii practice apare necesitatea prezentei concomitente in memoria interna a calculatorului a mai multor date, Pe lingd datele elementare (scalare), fie ele constante sau variabile, frecvent este necesar’ ntroducerea in memoria inte a unor colectii de date intre elementele carora exista anumite relatii. Pentru a facilita prelucrarea. este necesara organizarea acestor colectii in forme care si rispunda atat posibilitajilor de adresare a nemoriei tne, edt si caracteristicilor generale ale problemelor ce se rezolva. Practica programarii a impus, ca structuri de date frecvent utilizate. masivul (tabloul) si articolul. Aceste structuri isi dovedese utilitatea in aproape toate aplicatiile practice, ceea ce explica implementarea lor ~ cui unele diferente si particularity in majoritatea limbajelor de programare. + Masivul este o structura de date omogend, cu una, dou’ sau mai multe dimensiuni, Pentru masivele uni, bi si tridimensionale se utilizeazi acces direct, referirea unui element fiind reatizata.printr-o constructie denumirile de vector, matrice, respectiv plane de matrice.[Structura este cu sintactica nu i variabilé indexatd, format din numele masivului si un numa de expresii indiciale (indici) corespunziind dimensiunilor acestuia, | Diversele limbaje de programare implementeaz& structura de masiv in modalitati diferite. Limbajul C. care face obiectul acestei lucra implementeaza jecontiguu, bazaindu-se pe adresarea prin pointer. % Anticohul este o structura de date eterogend. de tip arborescent ra 2.2.), Componentele structurii arborescente, numite cémpuri, sunt 44 Bazele programéritcalculatoarelor individualizate prin nume. Relajia de ordine ierarhica dintre camputi se precizeazi fie prin numere de nivel, fie prin incluziuni de articole in articole. Articolul este o structuré cu acces direct, adicd fiecare cimp (elementar sau grupat) poate fi referit direct prin numele siu, fia a face referir Articolul este 0 structur§ recursiva, deoarece datele de grup din interiorul ei corespunzdnd la celelalte elemente din structura inregistrari unor subarbori, conserva aceleasi proprietifi ca si structura in ansamblul siu Una din principalele utilizari ale acestei structuri de date apare in legatura cu figierele. Elementele din structura inregistrarii sunt: + edmpuri elementare corespunziind nodurilor terminale de pe ramur& a arborelui (In exemplul din figura 2.2: MARCA, NUME, ZI, LUNA, AN, OCUPATIE, SECTIE, ATELIER, ECHIPA); + edmpuri grupate (date de grup), corespunznd nodurilor neterminale (DATA-INCADRARII, LOC-MUNCA) i in ultima instant, chiar rad3cinii (PERSOANA). scare NIVEL Watca | Me] \ zi] [usa 2. Exemplu de articol Descrierea unei structuri de tip articol se face prin parcurgerea arborelui in preordine, astfel: se parcurge arborele de sus in jos si de la sténga la dreapta, cu conditia descrierii complete a fiecdrui subarbore. | tructurile dinamice de date Pentru anumite clase de probleme structurile statice de date nu numai c& nu sunt suficiente dar se dovedesc chiar imposibil de folosit datorita limitarilor la care sunt supuse. fn primul rand, spatiul de memorie program Spaiul r este in it al doilea spatiul 1 structuri admise © neat nu modifica ir rezolvare arul gramt ip dinan executiei ramarié calculatoarelor Organizarea iment a datetor 45 dintre cémpuri se xticole in articole. dict fiecare cémp zie su, fra a face Articolul este o cul ei corespunzind 2 in ansamblul su pare in leg’turd cu ninale de pe fiecare NUME, ZI, LUNA, odurilor neterminale anid, chiar ridacini EMUNCA] ...2 prin parcurgerea 2 jos si de la stinga ore. | atice de date nu il de folosit ul de memorie os aferent unor astfel de date se defineste si se rezerva in momentul compikatii programului (rezervare staticd), la 0 dimensiune maxima (cuprinzitoare). Spatiul nu poate fi disponibilizat si nici imparfit cu alte date, este in hiar dack nu regime utilizat in anumite momente ale executiei programului al doilea rand, componentele structurilor statice ocupa Jocuri prestabilite in tiul rezervat, determinate de relajia de ordonare specific’ fiecarei definese operatiile admise cu valorile componentelor, potrivit tipului de baza al structurii, astfel neat numairul maxim si ordinea componentelor structurii nu pot fi modificate. in aceste conditii, structurile statice sunt dificil de utilizat in structuri. fn al treilea rnd, limbajele de programare rezolvarea problemelor care prelucreazé. mulfimi de date pentru care numarul si ordinea componentelor se modific& frecvent in timpul executiei programului. Pentru astfel de situagii exist posibilitat tip dinamic, a utilizatii datelor de ora li se pot aloca si elibera zone de memorie pe parcursul execufiei programului 2.4.1, Grafuri Un graf (sau un graf neorientat) este o structura G = (V,E), unde V este o multime nevida iat E este 0 submultime (posibil vida) = muljimii perechilor neordonate cu componente distincte din V. Obiectele multimii V iar obiectele multimi e=(uv)¢E se spune c& muchi se numesc vai E se numese imuchii, Dacd wiv (este determinata de varfurile w si v). Graful G=(V,E) este finit daca V este 0 muljime finit jin continuare vor fi considerate in exclusivitate grafurile finite. chiar d: acest Jucru nu va fi precizat in mod explicit. Fie grafurile G=(V.E). Gpeste un subgraf al grafului G; dacd V, CV, si E, CE,. Daca G este un subgraf al lui G), Gp este un graf ¢ are ca extremit partial al lui G, dae’ V2=V), Un graf oriemat (digraf) este o structura D=(V.E) muljime nevida de obiecte numite conventional varfuri, iar E este o muljime (posibil vida) de perechi ordonate cu componente elemente distinete din V. Conventional, elementele multimi unde V este o E sunt numite arce sau muchii ordonate. 46 Buzele programéritcalewlatoarelor Organtzarea ime, Terminologia utilizata relativ la digrafuri este similar celei corespunzatoare grafurilor numeste graf ponderat o structurd (V,E,W), unde G=(V.E) este un graf; iar Wo functie, W: E—> (0,20). Functia W este numita pondere si asociazi fiecdrei muchii a grafului un cost/castig al pareurg. Fie G un wey drum dacs w= eri ei V.E) un graf, wveV. Secventa de varfuri F: uo, | UY, iss €E pentru i¢[0.n]. Lungimea drumutui notatd 1(P) este egala cu n, Conventional. se numeste drum trivial, un drum Feu l(r)=0. Cea ste cea intuitiv’, grafled: fiecare varf este figurat printr-un punct, respectiv muchiile sunt reprezentate simpli reprezentai prin segmente de dreapti orientate (in cazul digrafurilor furilor ponderate) sau nu, avand ca extremititi punctele corespunzitoare varfurilor care le determing au nu si etichetate (in cazul_ gra Exemple: |. Fie G=(V, E) un graf eu V= (1, 2, 3,4, 5). B= (1.2\(.3), 0 posibila reprezentare grafic& este: 2. Fie D=(V.E) digraf, eu V={1.2,3.4, = €(1.2).0.,3), 2,5).3,5),(1,5)}. Digraful 2, poate fi reprezentat Desi acest mod de reprezentare este foarte comod si sugestiv in special in cazul grafurilor cu numar mic de varfuri, pentru prelucrdri eu ajutorul calculatorului sunt necesare reprezentati prin intermediul structurilor de date. © mod Dacd G=(V,E) adiacena Ac unde ¥,, ¥ repre Se obs« este simetrie: caracterizeaza in timp ce, tn eel ais # aj. Exemplu: Graful din exe adiacenta: (¢ 1 Azi1 lc lc jin can asemAndtoare « ponderat G=(V, ande vj, y repre deci ponderea emnificatia de 2 ponderi ale g Una dint posibilitatea de ui varf al umele de cones ramarii caleulatvarelor Orguntzarea internd a datelor 1 clei corespunzitoare unde G=(V,E) este ete numits pondere si mcurgerii ei ri Ts Uo, Us,-tly este ungimea drumului, al, un drum 3, graficd chiile sunt reprezentat sau nu si etichetate extremitagi_punctele comod si sugestiv in pentru prelucr prin intermediul cu © modalitate de reprezentare este cea prin matrice de adiacenta. (V,E) este un graf (sau digraf) cu|V|=n, atunci matricea de nde v, vj reprezinta cel de-al lea, respectiv cel de-al j-lea nod din V. Se observa ca in cazul unui graf neorientat matricea de adiacenti hile de varfuri care simetrica - (V)ij=Tn.a, =a, (per ctetizeazi muchiile sunt neo sdonate, deci da we, atunci si weE), a timp ce, in cazul unui digraf, este posibil ca (v,.v,)€E, (v,.,)€E i ay) #4, Exemplu: 3. Graful din exemplul | si digraful din exemplul 2 sunt reprezentate prin matricele 100) (0.101) 0001) o ooo) 00 0 1) Pemtute g _|y g 9 g 1 {penu2 0000 ooo! ° oo 0000) in cazul grafurilor ponderate, reprezentarea matriceali este aseminitoare celei prezentate anterior. Mairicea ponderilor unui grat ponderat G=(V,E,W), |V| =n, WEMaui(O, [Ww,.v,). )) are componentele: dacd (v,.v,)€E * (a, altfel unde ¥,, ¥) reprezintd cel de-al i-lea, respectiv cel de-al j-lea nod din V, a =0 dacd ponderea are semnificatia de cfstig, respectiv a =codacd are semnificatia de pierdere, in cazul in care se doreste reprezentarea costurilor c ponder ale grafului Una dintre cele mai importante proprietati ale grafurilor 0 constituie posibil itatea de accesare, prin intermediul unei seevente de muchii (arce) nd dintr-un varf dat, proprietate cunoscuta sub numele de conexitate sau conexiunre. oricarui varf al grafului plec 48 Bazele programiril ealeulatoarelor Fie T: up, jot un drum in graful G=(V, Ug=Un- In caz contrar, F se numé T este un drum inchis da ste drum deschis. Drumul I este elementar daci oricare dowd varfuri din I sunt distincte, cu exceptia, eventual, a extremitailor. Drumul I este proces daci, pentru orice OSi¢j0. Reprezentarea unui arbore Sinar poate fi realizatA prin refinerea, pentru fiecare nod, a leg&turilor c&tre descendentii lui, absenta unui descendent puténd fi reprezentati prin valoarea nul (nil). cei doi identificator nod legaturd fiustanga | legaturé fiu dreapta Exemplu: Reprezentarea arborelui binar este: Tat 3 [nit sa Organicarea in Datorita particularitatii lor, arborii binari ofers posibilitatea aplicarii de noi metode de parcurgere (pe langa cele aplicabile pentru arborii generali): parcurgerile in preordine (RSD), inordine (SRD) si postordine (SDR). Regula de vizitare pentru aceste tipuri de parcu re revine la pareu ea subarborilor stang si drept corespunzétori varfului curent, care Ja momentul initial este chiar ridacina arborelui. Diferenga intre aceste trei tipuri de parcurgere este data de momentul in care devine vizitat fiecare vart al arborelui. in parcurgerea RSD (radacina-subarbore stan; drept), fiecare varf al arborelui este vizitat in momentul in care devine varf curent. in parcurgerea SRD (subarbore sti lécind-subarbore drept), vizitarea varfului este ata dy a fost parcurs subarborele stang. in parcurgerea SDR (subarbore sting-subarbore drept-radacin’ fiecirui varFeste efectuaté dupa vizitarea ce au fost parcursi subarborii aferenti lui Exemplu: Pentru arborele de la exemplul anterior. seeventele de varfuri rezultate prin aplicarea parcurgerifor RSD. SRD. SDR sun X. preordine: 1.2.4.7.5.3.6.8.9 % inordine: 4.7.2.5.1.8.6.9.3 X postordine: 74.5.2.8.9.6,3.1 2.4.3. Liste Lista este o struetui 'i dinamica de date format din mai multe nodwri Un nod este o structurd de date conjine doua pari distinete: 0 parte de informatie utila (mem 4 in nodul respectiv) si o parte de informayie de legatura (folosita pentru a identifica in memorie urmatorul nod din lista) Grafurile pot fi reprezentate prin intermediul Jistelor, permiyand utilizarea economic a spajiului de memorare si, in anumite cazuri, implementari mai eficiente pentru anumite clase de algoritmi, Varfurile fului se memoreaz’ intr-o lista, fiecare celula a listei avand o k atura cftre lista vecinilor acelui vart (varfi ie din graf adiacente cu varful corespunzittor acelei celule si indicat ca informatie utili), in cele ce urmeaza se consider un spajiu oarecare de memorie adresabili. Se noteaz multimea referinjelor din acest spatiu cu P si se addugi la ea o valoare referinja speciala, notatt mil. Se noteazi cu D multimea inf nditii, un n @0n asimetri (PU este refi iste asimeti 20 inldanguites (si direct’, cat § Fe succesor in ca: ind posibil imediat. Se dispersate in De aic particular, di iacent in sp devin de pris: Pentn calculatorulu asiguriind re, ‘ramirii caleulatoarelor Organtzarea imernit a datelor osibilitatea aplicarii bile pentru arborii SRD) $i postordine areurgere revine la rfului curent, care intre aceste trei c vizitat fiecare varl stng-subarbore n care devine varf subarbore drept) barborele stang. in ina) vizitarea i afereni lui ri rezultate_prin ai multe noduri, incte: o parte de de infe matic de nod din lista). lor, permiyand & anumite cazuri, ritmi, Varfurile ind o legi te cu varful urd faze de memorie u cu P si se Se noteazi cu D muljimea informatiilor care vor fi conjinute de nodurile unei liste. in aceste conditii, un nod poate fi desemnat prin perechea (dj,pj) cu dj¢D si pje P. @ Omukime 1, a =P} este 0 listd simpli inleinyuité sau asimetrica) daca pe La s-a definit 0 structurd liniar’ si sy=nil, iar s, 1) este referinta spre succesorul direct al lui dj. Pentru reprezentarea unei ste asimetrice. informatiile de legatura (pointerii) vor fi marcate prin eat, iar nil prin legdturd la pamdnt (figura 2.3.2). fan ss fa fa c a) c Inserarea unui nod Ja inceputul listei. Pentru inserarea intr-o list simetricA este necesarii crearea legiturilor intre noduri in ambele sensuri Singura diferenga fafa de inserarea intr-o lista asimetricd este inscrierea informatiei despre nodul precedent. Deoarece inserarea are loc la ceputul listei, nu va exista un nod precedent, deci informajia respectiva va primi valoarea nil. Primul nod din lista initial’ va avea acum ca precedent nodul nou creat p (figura 2.4). Se observa cA intotdeauna se modifica capul listei, nodul inserat devenind noul cap al listei gramérii calculatoarelor Grzanizarea internd a datelor entru a putea lucra cu najie: adresa primului sens se asociaza liste il, daca lista este vida. oaste adresa primului e operat: traversare, aperatiile de inserare caracterul dinamic al ste” si desereste” in noile componente si . structura gi numérul are este 0 operatic de a partea de informatie ig cu succes, adica cu in care lista este vida itd se poate realiza cu in care nu se mai face » se procedeaza direct suri inserarea se poate situl listei, dupa sau nserarea intr-o list’ ctric& este inscrierea are loc Ja inceputul 2 respectiva va primi n ca precedent nodul modifica capul listei, 2.4, Inserarea la inceputul listelor asimetrice (a) si simetrice (b) > Inserarea unui nod la sférsitu! listei. Pentru adaugarea unui nod la Sryitul listei se creeazi intai un nod nou cu informatia utila care trebuie serata, Deoarece va fi ultimul nod in list, nu exist un nod urmator dec aformajia de leg Daca lista este vid (va fi singurul nod din list), In caz contrar trebuie parcurs’ Aura spre nodul urmator va avea valoarea nil, atunci capul listei ia ca valoare adresa noului nod lista entru @ ajunge Ja ultimul nod, informatia de legaturd din acesta primind ca adresa noului nod creat. in cazul unei liste simetrice trebuie ereata 2.5), ar egatura in sens invers (figur (a ty is sh - 2.5. Inserarea la sfarsitul listelor asimetrice (a) si simetrice (b) 58 _ 7 Bazele programirti caleulatoarelor > Inserarea dupa un anumit nod al listei. Prima operafie necesara inser este localizarea nodului dupa care se face inserarea. Acesta poate fi xact, prin furnizarea unei chei a cirei sci in informatia utila a nodului cdutat, sau relativ, prin stabilitea unei conditii care trebuie si fie indeplinita de nod. in localizat in mai multe feluri: tn mod valoare trebuie si se regis continuare vom considera cazul cautdrii dupa cheie. Dac nu se gaseste nici un nod ca re SH corespundi criteriului de e&utare (cazul cautarii cu esee) sunt posibile mai multe decizii: nu se insereazi noul nod, se insereaz’ la finceputul liste sau se insereazi la sfirsitul listei. Inserarea inseamna -Tuperea” unei leg’ uri fntre dou’ noduri si crearea unor noi legituri astfel ca noul nod si se interpuni tn list& intre cele doua nodur a ciror legit fost ,.rupta", conform figurii 2.6. ig- 2.6, Inserare in lista asimetric& (a) si simetrica (b) 3. Stergerea. La el ca si inserarea, stergerea se realizeazti mai eficient si mai usor din punet de vedere algoritmic daca ea priveste nodul cap de lista, deoarece se reduce, in principiu, la actualizarea referintei de cap. Dac trebuie sters un nod interior listei, atunei stergerea propriu-zisa trebuie precedata de 0 cautare dup conjinutul informational I nodurilor. Daca listele simplu inkin{uite pot fi traversate iatr-un singur sens, in momentul in care s-a localizat nodul p de sters nu se mai cunoaste precedentul stu q care, pentru climinarea nodului p, (ai introducerea _unei referinge suplimentare q care, in procesul de traversare, si fie in urma lui p cu un nod. De aceea, p se numeste referinid de wrmérire. Initial, cénd p=nil, se atribuie aceeasi valoare lui q. Se precede atribuirea de valoare pentru p care schimba nodul curent, de atribuirea ¢ rebuie si fie legat de succesorul acestuia ura 2.7.a). Datorité acestei situafii, este necesari sgramarit ealeulatoarelor Oreanizarea intern a datelor 9 operatic necesara area. Acesta poate fi a unei chei a clei nodului céutat, sau deplinita de nod. in He nu se giseste nici clutirii cu egec) sunt od, se insereazé nserarea inseamna or noi legaturi astfel uri a cdvor legatura 2 ict (b) alizeaz mai eficient Fiveste nodul cap de ferintei de cap. Daca propriu-zisi trebuie al nodurilor. Daca sens, in momentul in cedentul sau q car succesorul acestuia ntroducerea_unei sf fie in urmea lui p Initial, cand p=nil, de valoare pentru p Fig, 2.7. Stergere in liste inkinquite Daci lista este dublu inlénquita, atunci nu numai ca se complica ergerea propriu-zisi (figura 2.7.b) dar apare o situafie nou’ si anume ergerea nodului de la celalalt capat fata de inceputul listet (spatele listei), Datoritii acestui fapt, trebuie si figureze ca parametru variabil gi referin pentru spatele liste 2.4.4. Stive i cori Stivele si cozile sunt liste particul we din punctul de vedere al peratiilor de stergere si inserare ale nodurilor din list imetrica (figura 2.8.a) la care operatii © Stiva (stack) este o lis de inserare, stergere si citire a informatiilor se fac numai in capul listei top). Stivele se mai numese si liste LIFO (Last-In-First-Out - ultimul ntrat, primul iesit), avand in vedere cA orice poate fi citit, ste un nou nod care devine cap de stiva. Un astfel de comportament este bine acees se poate face numai la sau in fata lui se poate insera altimul nod inserat. Aces sugerat de modul in care se gareaza si se scot vagoanele intr-o linke moarta inchisa) sau de modul in care se pot stivui si utiliza scdndurile intr-un depozit etc. Stiva este o structura frecvent folositi in gestionarea dinamica a spatiului de memorie si reprezint& un mecanism curent in procesul ransferului de parametri intre un apelator si un subprogram etc. * Coada (queue) este o lista asimetrica la care operatia de inserare se face la un capat, denumit spatele cozii, iar stergerea si citirea se fac de la cellilalt capat, denumit faja cozii (figura 2.8.b). Coada este denumita si lista FIFO (First-In-First-Out - primul intrat, primul iegit) avand in vedere ca Bacele programéri caleutatoaretor Algoriami. poate fi citit sau sters, adicd primul nod al liste Comportamentul unei astfel de structuri este de fapt un model abstract al 3.Al cozilor intilnite in diferite situalii: cozi de persoane, cozi de automobile etc. Al 2.8. Stiva si cond in timp ce pentru a trata corect o stiva este suficienti o refering spre top, pentru coada trebuie menginute dowd referinje: una pentru fata (f) si alta pentru spatele cozii (8). © coada este vida atunci cand de operati ijiale ale prezentare realizeazs calculator importanta masura, programari care se at structurate) de prezenta et al., 1987 jtmii s Eriimilor Prinei ® Ge tulara, ci Exemplu: = se va conce, Secritm pentra abexe®, a Parametti a @ Dete stionare a | ogramtirli caleulatoarelor primul nod al liste un model abstract al zi de automobile etc cientd o referints: spre 2 pentru fafa (f) si alta Algoritmi, Scheme logice structurate 61 3. ALGORITMI. SCHEME LOGICE STRUCTURATE Algoritmul desemne si univoc determinata © muljime exhausti de operatii, impreuna cu succesiunea in care trebuie aplicate asupra datelor sitiale ale problemei, pentru a obtine solufia. El este considerat mod de entare a procesului de rezolvare a problemelor si suport dupa care se lizeazi programele. In activitatea de rezolvare a problemelor cu ajutorul alculatorului, elaborarea algoritmilor reprei into etapa deloc usoat =portanta si obligatorie. De calitatea algoritmului proiectat depinde. in mare i, calitatea programelor si succesul execufiei acestora. in practica \gramarii se utilizeaza diverse forme de reprezentare a algoritmilor, dintre se amintesc: in cuvinte, pe pasi: scheme logice (nestructurate si sructurate); tabele de decizie: arbori de programare: pscudocoduri sau limbaje [Dodescu 1987] Din punct de vedere al claselor de probleme pe care le rezolva, rentare: pe niveluri de incluziune prin acolade (Warnier) et Zgoritmii se impart in: numerici, combinatoriali $i de cdutare. Din clasa goritmilor de cdutare fac parte si algoritmii de prelucrare a figierelor. 3.1. Caracteristicile algoritmilor Principalele caracteristici ale unui algoritm sunt © Generalitat: un algoritm nu trebuie conceput pentru o problems S=rticulara, ci pentru o clasd eneralai de probleme. Exemplu: se va concepe un algoritm pentru rezolvarea ecuatie} particulare Sx”-2x=7, ci un Soritm pentru rezolvarea ecuatiei de gradul al doilea cu o necunoscuta ax"+bs: Beabe. ‘ER, a¥0 sau, mai general, pentru rezolvarea ecuafiei de forma ax" +bx-+e=0. jiabexen, @ Determinare (claritate): jonare a tuturor situatiilor eare pot apfrea in rezolvarea probleme Igoritmul trebuie s& prevadai modul de a ele programéril calculatoarelor respective, intr-o maniera fri ambiguitéti sau neclaritaqi, lucru impus de sronie. Situafille pot fi grupate. caracterul de automat al. calculatorului dupa nevoie, in clase. indicdndu-se modul de tratare pentru fiecare din acestea; orice situafie trebuie s8 fie cuprinsa intr-o clas si numai in una. Exemplu: Si se elaboreze algoritmul pentru rezolvarea ecuatiei: ax’ + bx +e =0, abcxewR Ani iza arata ca exista patru situa posibile care trebuie cuprinse in algoritm 1.2 £0, ecuajie de gradul I: 2.a=0 sib £0, ccuatie de gradul I; 3.a=0sib=0sic#0, ecuajie imposibilas 4,a=03/b=0i c= 0. nedeterminare. Ramine sa fie rezolvate fiecare din aceste situatii sau unele din ele s8 fie grupate in functie de ceringe. © Finitudine: operatiile webuie astfel concepute incat algoritmul sa se termine intr-un numa finit de pasi. cunoscut sau necunoscut Exemple: X Pentru insumarea tuturor elementelor unui vector B. de dimensiune mn, formula de recurenta S = S + b, se repetd de m ori (numir cunoseut de pasi) % La determinarea celui mai mare divizor comun (CMMDC) dintre dou’ umere intr igi (A si B) se imparte A la B: A=B-Q+R. apoi se coi impartitorului (B) la rest (R 108 impartirea }, pana cnd se objine un rest nul. caz in care CMMDC este ultimul imparqitor (numar unoscut de pasi). Necesitatea terminarii algoritmului intr-un numar finit de iteragii este strains legata de problema convergentei algoritmului, Nu se poate vorbi despre convergent in general, ci doar strans legat de o problema dat fa este unul din criteriile de alegere a unui al mai multi posibili, Se op convergenta cét mai putin dependenté de datele de intrare. Pentru multi dintre algoritmi, procesul de calcul rezida in aproximari suecesive ale solugie’ spre rezolvare. De multe ori conv: itm din J, de asemen \ pentru un algoritm cu o tate, Astfel de metode constau in generarea de siruri de aproximatii convergente catre solujie si se regasesc in probleme numerice ca: rezolvarea ecuatilor algebs e si transcendente, rezolvarea sistemelor de ecuagii algebrice Algoritmi. liniare interpola i concentr generare depender stabilirea de aprox Exemph A Fie ecuat hima cc uatie i intervalul adaicina a(atbV2 sein. Int jumizand rezultd 8 c fatoritl orezelor racteriz Partilor p odificat h executiel trae, N cul deaun: remarii caleulatoaretor Agoritmi. Scheme te ice stractaraie 63 5, lucru impus de Baile pot fi grupate, & fiecare din acestea: fie grupate in i algoritmul s dimensiune m, cout de pasi) DC) dintre dous continua Impartirea 2 in care CMMDC de iteratii este S poate vorbi despre t8 spre rezolvare. = un algoritm cu o = Pentru multi dintre sccesive ale solutiei Suri de aprox eerie ca: rezolvarea nati oe de ecuatiialgebrice liniare, integrarea numerica, rezolvarea ecuatiilor diferentiale ordinare, nterpolarea ete in metoda aproximatiilor succesive atent 4 programatorului concentreazi asupra urmitoarelor aspecte mai importante: metoda de zenerare a sirului de aproximatii succesive: analiza converg dependenfei_ acesteia engei sirului gi de modul de generare a primului termen al sirului: stabilirea conditiei finale, ca un compromis intre numarul de iteratii si gradul sproximare a solutici pana la acel moment. Exempla: Algoritmul de rezolvare a unci ecuatii prin metoda injumatairii (bisectiei. Fie ecuafia fs) = 0. cu f(x) © funcyie continua pe intervalul [a,b] si fla)-f(b)<0. lrima condifie. in virtutea continuitajii funciei, garameaza existenta unei solutii a jatiei in intervalul [ab]. Pentru a asigura apropierea de solutie, se imparte fervalul in oui, mijlocul segmentului find a=(a+by/2. Daci fla)=0. a este dacind a ecuafiei: daca nu, solutia va fi cdutatd intr-unul din cele doud subintervale: =(a*by2] sau ((a*by/2.b]. si anume in acela in care f(x) ia, la capete, valori opt emn. Intervalul inifial [a,b] a fost astfel redus Ja jumftate si algoritmul continua byl amizénd intervale m. pein un nu din ce in ce mai mici continan« solutia: [ay.by}.[as.bo}. fa suficient de iterati, a= lima, =limb, si fla)-flay ezulté cd a este, la limita, radacina a ecuatie’ (a) =0 =1(«)=0, Daca radacina nu este unica (este posibil doar un numdr impar de ridBeini. rita continuitatii) algoritmu asi nu dep tuna dintre ele. Aproximajia solujie! te jumatatea ultimului interval: O0< « ~a, 2" In a potezelor destul de restrictive cerute de aplicarea algoritmului, metoda este formula de start VeVi — B formula recursiva, pentru i=1n Cand valorile obfinute prin numarare nu necesita pistrarea in memorie, nu necesare mai multe locajii- ci una singura. care va fi suprascrisé la fiecare tie v=o > formula de start, V+l > formula ree va, pentru IST. % A insuma cele m elemente ale unui vector A, inseamna a calculs sumele -s=--.Sy presupundind s) = 0, dupa relate: Si= 5+ Si= Spi Fy ‘Valoarea care interescaza este sy, fn procesul descris anterior se disting s > formula de start S=S+a > formula recursiva, pentru i=L.n X Produsul celor n elemente ale unui vector se determina folosind formula de si formula recursivd pp.ra, pentru iI.n. Cum sirul produselor parfiale == interesea7, inmultiea se poate face folosind o singurd locatie de memorie, care = i suprascrisd la fiecare iterayie: P=1 > formula de start P=Poa, D> formula recursiva, pentru i=1,n 6 Bazele programirit caleulatoarelor AUgoriunt. Si Utilizarea mai multor zone de memorie pentru ealeulele intermediare devine obligatorie in situatia multirecursivitay Practic, prin transferul dinamic al valorilor intermediare, sunt necesare atétea zone de memorie cate valori precedente sunt necesare calculului termenului Exemplu: Algoritmul lui Euclid pentru determinarea celui mai mare divizor comun a dou! numere A si B, Restul curent se caleuleaza pornind de la ultimul si penultimul rest, dupa relatia: ry He | ays cu mt Ai =B si k= 01.2. Pin] Lei] a expresiei. Ultimul rest ng se noteazé cu D variabi Sa notat partea intreag: ul reprezinta cel mai mare deimpartit, ct T variabila i cu R restul, formulele de start devin: Dea; Ib, Iteratiy, se calculeaza restul Re-D- divizor comun, Da itor § | 1 si'se executd transferurle: Det: IR, impaititorul devine noul deimpny jar ultimul rest obginut devine imparjitor in iterajia urmatoare a algoritmului Procesul iterativ conti Wud pnd se obfine restul zero. Ulkimul rest nenul reprezinta cel ‘mai mare divizor comun al numerelor A $i B. 3.3. Reprezentarea algoritmilor prin scheme logice este forma cea maj utilizatt de reprezemtare a algoritmilor. Ea se dovedeste util, jn Practica programarii calculatoarelor dovedeste c& schema logi special, in initierea in programare, deoarece ofer o ,,vizualizare” mai buna, 0 redare expresiva si sinteticd, usor de urmarit, a algoritmilor. $8 consideram un graf orientat in care arcele sunt etichetate cu anumite informetii formdnd aga- zisele blocuri. {n graf sunt admise urmitoarele blocuri: @ Blocul (RT este un arc etichetat cu cuvantul START, pentru care varful intial nu este pus explicit in evident’, deoarece in el nu pot sosi arce: START ® Blocul STOP este un arc etichetat cu cuvéntul STOP. pentru care varful final nu este pus explicit in eviden{a, deoareve din el nu pot pleca arce: STOP ® Blocul de citire este un arc etichetat cu informatia: citirea unor valori de corespunza eo. supotul ext tunor variab ol uunei expres corespunzai OL din acelas expresie relagiile: Rel poate fi sati: Pentru cazu aE bc sau STOP;

You might also like