Sunteți pe pagina 1din 17

1. Noiune de Sistem, Sisteme Informaionale Economice (SIE), informaia economic (IE), Sistem Informatic (SIF).

Un sistem, reprezint un ansamblu de elemente (componente) interdependente, ntre care se realizeaz, pe baza unor reguli prestabilite, o interaciune dinamic, cu scopul atingerii unui anumit obiectiv. Sistemul informational economic reprezinta ansamblul de elemente implicate n procesul de colectare, de transmisie, prelucrare, a informatiei necesare procesului de conducere a unitatii economice. Sistemul informatic reprezint partea automatizat a sistemului informaional. Raportul dintre sistemul informaional i cel informatic este de ntreg-parte. Sistemul informatic este acea parte a sistemului informaional n care operaiile de culegere, de prelucrare, de stocare i de transmitere a datelor se realizeaz cu ajutorul calculatorului. Informaia economic reprezint acele date care aduc receptorului un spor de cunoatere privind ntreprinderea respectiv, ce i furnizeaz elemente noi, utilizabile n realizarea sarcinilor n cadrul firmei respective. 2. Sistemul Informatic Economic. Sistemul informatic economic este acea parte a sistemului informaional economic n care operaiile de culegere, de prelucrare, de stocare i de transmitere a datelor se realizeaz cu ajutorul calculatorului. 3. Bazele teoretice ale proiectrii i realizrii. Etapele de realizare a sistemului informatic: analiza, proiectarea sistemului, proiectarea obiectelor si implementarea. A. Analiza sistemului existent are scopul de a defini ce va face sistemul informatic. Pentru aceasta rezultatul analizei se concretizeaza ntr-un model al viitorului sistem calitativ superior fata de cel existent. 1. Definirea problemei - tema de realizat este definita de beneficiar sau de analist si cuprinde ceea ce se doreste a fi realizat n linii mari. 2. Initierea realizarii modelului obiectelor - descrie structura statica a sistemului, utiliznd o serie de simboluri grafice si diverse diagrame. Presupune n primul rnd identificarea obiectelor, claselor de obiecte, asocierilor dintre obiecte si clase de obiecte, atributele claselor si asocierilor. 3. Initierea realizarii modelului dinamic - este o etapa elaborata pe larg n cazul sistemelor cu un grad ridicat de interactivitate. Pentru a construi acest model trebuie identificate toate starile si evenimentele care conduc la trecerea dintr-o stare n alta. 4. Initierea realizarii modelului functional - modelul functional se construieste pentru fiecare proces si pune n evidenta modul n care sunt determinate valorile de iesire din valorile intermediare sau din valorile de intrare. Sunt identificate si restrictiile dintre obiecte. B. Proiectarea sistemului presupune realizarea urmatoarelor activitati: 1. Descompunerea n subsisteme - se realizeaza folosind diverse criterii de structurare. Subsistemele obtinute sunt formate dintr-un ansamblu de operatii, evenimente, asocieri, mesaje, avnd o interfata fixa cu restul sistemelor. 2. Identificarea subsistemelor concurente - aceste subsisteme sunt identificate pentru optimizarea implementarii prin utilizarea aceleasi platforme hardware. 3. Stabilirea necesaruluide resurse si a modului de implementare hardware si software pentru fiecare subsistem. 4. Alegerea modului de organizare a datelor si a tipurilor de acces la date. 5. Stabilirea controlului intern si extern pe fluxul evenimentelor sau pe fluxul prelucrarilor. 6. Stabilirea conditiilor limita care se refera la initializari, terminarea normala sau anormala, prioritati. C. Proiectarea obiectelor rafineaza modele obtinute n faza de analiza prin adaugarea detaliilor de impleementare. n cadrul acestei etape se desfasoara urmatoarele activitati: - Identificarea operatiilor; - Proiectarea algoritmilor; - Rafinarea, restructurarea modelului datelor; - Implementarea controlului; - Implementarea asocierilor; - Gruparea datelor si asocierilor n module.

D.Implementarea este etapa n cadrul careia se realizeaza transpunerea ntr-un limbaj de programare si transferul sistemului economic n cadrul organizatiei economice. 4. Noiuni generale: definiia unui sistem, componena, structura, obiectivele. Funciile sistemului informaional a. Decizional. Aceast funcie exprim rolul sistemului informaional n asigurarea elementelor necesare lurii deciziilor. b. Operaional. Sistemul informaional are drept scop declanarea aciunilor necesare realizrii obiectivelor societii comerciale. c. Documentare. Sistemul informaional permite dezvoltarea i perfecionarea personalului prin mbogirea cunotinelor. Principiile sistemului informaional 1. Subordonarea conceperii i funcionrii sistemului informaional cerinelor managementului firmei. 2. Corelarea sistemului informaional cu cel decizional i organizatoric. 3. Unitatea metodologic n tratarea informaiilor. 4. Concentrarea asupra abaterilor eseniale. 5. Asigurarea unui timp corespunztor de reacie sistemului decizional. 6. Asigurarea de maximum de informaii finale din fondul de informaii primare. 7. Flexibilitatea. 8. Eficacitatea i eficiena. Componentele sistemului informatic sunt: 1. Componenta fizic (hard) este constituit dintr-un ansamblu de echipamente pentru culegerea, pentru prelucrarea, pentru transmiterea i pentru stocarea datelor i informaiilor. 2. Componenta logic (soft) cuprinde sistemul de operare i programele de aplicaii. 3. Baza de date cuprinde un ansamblu de colecii de date i descrierea legturile dintre acestea. 4. Resursele umane cuprinde personalul de specialitate (operatori, programatori, analiti, ingineri de sistem). 5. Cadrul organizatoric cuprinde cadrul legal necesar funcionrii sistemului informatic (staii de calcul, oficiu de calcul, centru de calcul). 5. Sisteme economice. Metoda sistemic de abordare. Pe principiul de descompunere a sistemului real n subsisteme, se bazeaz analiza de sistem pentru a studia conexiunile dintre subsisteme n raport cu obiectivele lor i n funcie de resursele existente, dup care sunt reintegrate ntr-un nou sistem, mai performant, a crui proiectare constituie obiectivul principal al analizei de sistem. Interaciunea dinamic dintre componentele unui sistem, se materializeaz n fluxurile stabilite ntre aceste componente, fluxuri implicnd resursele existente. Conform teoriei sistemelor, orice organism economic este un sistem deoarece: prezint o structur proprie, constnd dintr-o mulime de elemente constitutive, ce interacioneaz ntre ele pe principii funcionale; fluxurile existente ntre componentele organizatorice, implic toate resursele organismului economic. n cadrul oricrui organism economic se produc, cel puin 3 mari categorii de fluxuri: fluxuri materiale (cecuri, bonuri fiscale, materii prime, semifabricate, produse finite etc); fluxuri financiare; fluxuri informaionale. Mulimea componentelor organizatorice i interaciunile dintre acestea, urmresc realizarea unui anumit obiectiv global i anume: funcionarea firmei n condiii optime, sau, atingerea unor obiective. 6. Structura SIE. Particularitile i varietile IE. Sistemul informaional economic (SIE) reprezint ansamblul mijloacelor i procedeelor de obinere, stocare i utilizare a informaiilor ntr-un perimetru al activitii economice, ca rezultat al investirii unor resurse umane de capital
2

Sistemul informaional are urmtoarele componente: data, informaia, suportul purttor de informaii, circuitul i fluxul informaional,procedura informaional i mijloacele de tratare a informaiilor. Data poate fi definit prin: noiune, fapt, eveniment, proces, obiect sau aciune din interiorul su din afara sistemului, reprezentat sub o form convenional adecvat comunicrii, interpretrii sau prelucrrii ei. Informaia poate fi definit ca un mesaj cu caracter de noutate despre evenimentele care au avut loc, au loc, sau care vor avea loc att n interiorul sistemului, ct i n exteriorul acestuia i prezint interes pentru receptor. Suportul purttor de informaie constituie mijlocul material pe care sunt nscrise informaii i care servete vehiculrii i stocrii acestora. Fluxul informaional reprezint totalitatea informaiilor transmise ntr-un interval de timp determinat, de la sursa de informare la receptor, printr-un sistem de canale informaionale. Circuitul informaional reprezint itinerarul parcurs de informaii de la locul de culegere lor pn la locul de utilizare sau stocare a acestora. Procedura informaional reprezint o secven de operatori cu un anumit grad de generalizare, cu caracter de rutin, a crei executare asigur rezolvarea unei probleme date, folosind mijloace i metode specifice. Mijloacele de tratare a informaiilor, componenta de baz a sistemului informaional, sunt reprezentate de totalitatea echipamentelor prin care se efectueaz operaii asupra unei mulimi de date i se obin informaiile necesare procesului de management din unitatea economic. Un prim criteriu de clasificare a informaiilor l constituie elementele sistemului de conducere. Potrivit acestui criteriu, informaiile pot fi: de conducere, cum ar fi deciziile emise de manageri, i de raportare, furnizate de subsistemul operaional, cu privire la realizarea sarcinilor n anumite etape prestabilite. Un al doilea criteriu de clasificare a informaiilor l reprezint caracteristicile lor funcionale, ele putnd fi: de stare, de intrare, de ieire, de cooperare i de execuie. Dup destinaie, informaiile se mpart n: informaii de programare, de pregtire-lansare, de control reglare, de evaluare i raportare. Dup perioada la care se refer, informaiile pot fi grupate, n: informaii active, pasive i previzionale. Dup modul de exprimare, informaiile pot fi grupate n: informaii scrise, orale i audio-vizuale. 7. Formele de reprezentare a IE, supori. Obiectul material folosit pentru pastrarea ,transmiterea sau prelucrarea informaiei se numete purtatori de informaie.Deosebim purttori statici i purttori dinamici de informaie. Purttorii statici se utilizeaz pentru pstrarea informaiei pentru transmiterea n timp. Informaia nregistrat pe un purttor static poate fi cictit n scopul prelucrrii sau utilizrii ulterioare .Primii purttori statici au fost pietrele, lutul ars ,papirusul. Un alt purttor static l constitue hrtia .Mesajele nregistrate pe hrtie sub form de manuscrise ,desene sau texte tiprite pot fi pstrate un timp foarte ndelungat.n calculatoare ca purttori statici se utilizeaz : Hrtia pentru imprimantele mecanice,cu get de cerneal ,laser etc.; Straturile active ale benzilor ,discurilor magnetice; Mediile reflectoare ale discurilor optice etc. Purttorii dinamici snt purttori ce transmit informaia n spaiu. n calitate de purttori dinamici tehnica actual folosete: Unde acustice n gaze sau lichide; Tensiuni i cureni electrici; Unde electromagnetice etc. ntruct transmiterea iformaiei se produce n spaiu i n timp ,cel puin o mrime fizic a purttorului de informaiei trebuie s se schimbe. 8. Clasificarea i codificarea IE. n procesul comunicrii IE, avem o serie de elemente constitutive, precum: Emitor, Receptor, Mesaj, Canal, nsoite de 3 aciuni specifice: Codificare, Decodificare i Feedback. Mesajul este transmis prin intermediul unui canal de comunicare caracterizat printr-un anumit limbaj.
3

Codificare transformarea mesajului ntr-o form sau limbaj acceptat de canalul comunicrii. Reversul acestei aciuni ntreprins de emitor, este decodificarea prin care receptorul sau beneficiarul informaiei analizeaz, interpreteaz i nelege mesajul n mod corect.

9. Etapele de prelucrare a IE. n etapa primar, se ndeplinete colectarea datelor iniiale, nregistrarea lor, formarea documentelor primare i transmiterea la centrul de calcul. Etapa pregtitoare cuprinde operaiile de primire, control i nregistrare a informaiei de intrare i de transfer al ei pe suporturi tehnice de informaii. Etapa de baz asigur crearea bazei de date, a fiierelor de lucru, procesarea nemijlocit a informaiei la computer, obinerea informaiei rezultative. n etapa final, se realizeaz emiterea informaiei rezultative sub form de documente finale, controlul i transmiterea lor utilizatorului. 10. Sistemul informaional al unitii economice. Sistemul informaional asigur cunoaterea permanent a proceselor economice i are un impact din ce n ce mai mare asupra desfurrii i eficienei activitii unitilor economice. Prin intermediul su se asigur informaiile necesare fundamentrii deciziilor, se furnizeaz datele necesare cunoaterii gradului de realizare a obiectivelor la anumite perioade prestabilite etc. 11. Sistemul informatic al UE. Sistemul informatic este considerat o grupare de echipamente de calcul, proceduri reunite, organizate pentru a prelucra date, n vederea realizrii anumitor performane msurabile prin criterii stabilite. 12. Locul, rolul i particularitile SI-al i a celui informatic respectiv. ntre sistemul informaional i sistemul informatic exist deosebiri, dei ca utilitate pentru activitatea de management au acelai rol. Sistemul informatic are obiective similare i ndeplinete aceleai funcii, dar pentru desfurarea proceselor informaionale utilizeaz procedeele oferite de tiina managementului, teoria sistemelor, cibernetica economic, cercetarea operaional etc., redate prin mijloace automatizate. 13. Strategii de proiectare i realizare a sistemului informatic. Strategiile de proiectare a sistemului informatic sunt: proiectarea structurata, proiectarea orientata obiect, prototipizarea, JAD (Join Application Development), RAD (Rapid Application Development). 14. Etapele de proiectare a sistemului informatic. 1. Definirea ariei de investigare, care const n: justificarea necesitii i oportunitii proiectri unui nou sistem informaional; culegerea datelor despre situaia existent; stabilirea obiectivelor generale pentru proiectare. 2. Proiectarea de detalii i stabilirea cerinelor fa de noul sistem informaional. 3. Pregtirea condiiilor de implementare a noului sistem informaional, care const n asigurarea echipamentelor i programelor necesare i punerea n practic a elementelor proiectate n etapa anterioar. 4. Exploatarea noului sistem informaional prin care la nceput se urmrete asigurarea funcionrii acestuia la capacitatea proiectat i eliminarea dificultilor care au aprut. 5. Asigurarea unei proporii raionale ntre necesarul i scopul folosirii informaiilor 6. Eliminarea distorsiunii (denaturarea informaiilor) care apar mai frecvent atunci cnd persoana care culege i transmite informaiile nu are o imagine clar despre fenomenul economic urmrit. 7. Eliminarea filtrajului informaiilor, care const ntr-o triere a celor negative sau pozitive cu scopul de al influena ntr-un anumit sens pe cel care le recepioneaz i analizeaz. 8. Ierarhizarea informaiilor n raport cu natura deciziilor adoptate pe nivele ierarhice. 16. Tipuri de date, structuri de date. Prin noiunea de tip de date se nelege:
4

o mulime de valori; o regul de codificare a acestora; o mulime de operaii definite pe mulimea datelor.

O structur de date este o metod sistematic de stocare a informaiilor i datelor ntr-un calculator, n aa fel nct ele s poat fi folosite n mod eficient. 17. Tipuri fundamentale. Tipurile de date fundamentale sunt incorporate in limbaj, deci ele nu trebuie definite de programator. Tipurile fundamentale de date ale limbajelor C si C++ sunt: int; float; double; char; bool (numai in C++), void. char reprezint caractere ASCII; int reprezint numere ntregi n intervalul [-32767, 32767]; float reprezint numere n virgul mobil, cu o precizie de cel puin 7 zecimale exacte; double reprezint numere n virgul mobil, cu o precizie de cel puin 15 zecimale exacte; In functie de modul de reprezentare in memoria calculatoarelor si de domeniul de definitie al acestor date, in C si C++ exista mai multe tipuri de date derivate, formate din tipurile de baza de mai sus, (char, int, float si double) precedate sau nu de modificatorii tipurilor de baza (signed, unsigned, short si long) 18. Tipuri derivate. Tipurile derivate sunt construite pornind de la tipurile fundamentale. Tipurile derivate sunt: tablourile funciile pointerii referinele structurile uniunile 19. Clase de memorie. Limbajul C prezinta 4 clase de memorie: automatica, externa, statica, registru. Variabilele automatice sint variabile locale fiecarui sau functii. O variabila care apare in corpul unei functii sau al unui bloc pentru care nu s-a facut nici o declaratie de clasa de memorie se considera implicit de clasa auto. O variabila auto este actualizata la fiecare intrare in bloc si se distruge in momentul cind controlul a parasit blocul. Ele nu isi retin valorile de la un apel la altul al functiei sau blocului si trebuie initializate la fiecare intrare. Variabilele externe sint variabile cu caracter global. Ele se definesc in afara oricarei functii si pot fi apelate prin nume din oricare functie care intra in alcatuirea programului. Aceste variabile exista si isi pastreaza valorile de-a lungul executiei intregului program. Variabilele statice se declara prin specificatorul de clasa de memorie static. Aceste variabile sint la rindul lor de doua feluri: interne si externe. Variabilele statice interne sint locale unei functii si se definesc in interiorul unei functii, dar spre deosebire de variabilele auto, ele isi pastreaza valorile tot timpul executiei programului. Variabilele statice externe se definesc in afara oricarei functii si orice functie are acces la ele. Aceste variabile sint insa globale numai pentru fisierul sursa in care ele au fost definite. Nu sint recunoscute in alte fisiere. O variabila registru se declara prin specificatorul de clasa de memorie register. Ca si variabilele auto ele sint locale unui bloc sau functii si valorile lor se pierd la iesirea din blocul sau functia respectiva. Variabilele declarate register indica compilatorului ca variabilele respective vor fi folosite foarte des. Numai citeva variabile din fiecare functie pot fi pastrate in registri (de obicei 2 sau 3); declaratia register este ignorata pentru celelalte variabile; numai tipurile de date int, char si pointer sint admise; nu este posibila referirea la adresa unei variabile register. 20. Date simple. Caracteristica datelor simple. a) numere singulare numere ntregi i numere reale b) simboluri grafice litere, cifre, semne de punctuaie, spaii libere, utilizare n texte caractere alfanumerice. c) informaii de tip A sau F informaii logice.
5

21. Masive unidimensionale, bidimensionale i n-dimensionale. Masivele sunt structuri de date omogene cu un numar finit si cunoscut de elemente, ce ocupa un spatiu contiguu de memorie. Se poate caracteriza prin nume, tip, dimensiune. Formatul comun de descriere a masivelor este: Tip nume [d1][d2][dn]; tip este tipul comun pentru toate elementele masivului. nume este numele masivului. d1, d2, dn sunt dimensiunile masivului, care indic numrul de elemente prezente n masiv. Masivele se clasific n: masiv unidimensional (o dimensiune) reprezint un ir de elemente aranjate uniform ntr-un rnd; fiecare element al unui masiv unidimensional are o coordonat: nr. de ordine a elementului n ir. masiv bidimensional (2 dimensiuni) reprezint o structur format din rnduri i coloane; fiecare element al unui masiv bidimensional are 2 coordonate: nr. rndului i nr. coloanei. masiv tridimensional (3 dimensiuni) reprezint o structur echivalent cu un cub n volum cu 3 dimensiuni: lungimea, limea, nlimea; fiecare element al unui masiv tridimensional are 3 coordonate: nr. rndului, nr. coloanei i nr. nlimii masiv multidimensional Iniializarea matricei se poate face la declarare printr-o construcie de forma: tip nume[n][m]={{lista_valori_1}, {lista_valori_2}, , {lista_valori_x}} 22. Liste de date. O lista liniara este o colectie de n noduri unde n>=0, ce poate fi si vida. Listele se pot aloca dinamic sau secvential. struct nod { int info: nod *adr_urm; } *v, *sf; Operaii principale asupra listelor liniare: init() iniializeaz o list; insert_inc(l,e) insereaz n faa primului element din lista l, elementul e; insert_sfirsit(l,e) - insereaz dup ultimul element din lista l, elementul e; insert_stinga(l,e,f) insereaz n faa elementului e din lista l, elementul f; insert_sfirsit(l,e,f) insereaz dup elementul e din lista l, elementul f; sterge_prim(l) terge primul element din lista l; sterge_ultim(l) terge ultimul element din lista l; sterge(l,e) - terge elemental e din lista l; distrugere(l) ncheie toate operaiile cu lista l, elibereaz eventual spaiul ocupat de list; Alte operaii: cauta(l,e) caut n lista l, elementul e; este_vida(l,e) testeaz dac lista l este vid(nu conine elemente); este_plina(l,e) testeaz dac lista l este plin(nu mai pot fi adugate elemente noi); 23. Liste liniare simplu nlnuite. O lista inlantuita este o consecutivitate de elemente numite noduri, aranjate astfel nct fiecare nod tie adresa umrtorului. Spre deosebire de un tablou, in care ordinea este determinata de indicii tabloului ,ordinea intr-o lista inlantuita este determinata de un pointer continut in fiecare obiect.Listele inlantuite asigura o reprezentare mai simpla si mai flexibila pentru multimi dinamice, suportand toate operatiile clasice : adauga element,elimina element,cauta element etc nu neaparat eficient. 24. Liste dublu nlnuite. O componenta a unei liste dublu inlantuite se declara ca o data structurata de tip inregistrare, formata din trei campuri: informatia propriu-zisa (care poate fi de orice tip: numeric, caracter, pointer, tablou, inregistrare) si informatiile de legatura (adresa la care e memorata urmatoarea componenta si adresa la care e
6

memorata precedenta componenta). Ultima componenta va avea informatia de legatura corespunzatoare urmatoarei adrese NULL (sau 0), cu semnificatia ca dupa ea nu mai urmeaza nimic (retine adresa nici o adresa a urmatoarei componente).La fel si in cazul primei componente pentru campul adresa precedenta. 27. Algoritmi recursivi i nerecursivi de prelucrare care utilizeaz liste. Algoritmii recursivi sunt potriviti pentru a descrie probleme care utilizeaza formule recursive sau pentru prelucrarea structurilor de date definite recursiv ( liste, arbori ), fiind mai eleganti si mai simplu de inteles si verificat.

28. Crearea listelor, adugarea unui element. struct nod {int info; nod *next;}; nod *p,*u ; // acceseaza primul respective ultimul nod int n; //numarul de noduri void cre_ad() //functia de creare si adaugare a unui nou element {nod *c; if(!p) //daca lista este vida (p==0) se aloca primul nod {p=new nod; cout<<"valoare primului nod "; cin>>p->info; u=p; } //la creare primul si ultimul nod vor fi identici else //altfel se adauga un nou element la sfarsit { c=new nod; //se aloca un nou nod cout<<"informatia utila :"; cin>>c->info; //se completeaza campul informatie utila u->next=c; //se adauga dupa ultimul nod u=c; } //se stabileste noul nod c ca fiind ultimul u->next=0; } //campul adresa urmatoare a ultimului nod este 0 29. Crearea listelor, inserarea de elemente n list. Inserarea unui element nou in lista se poate face inainte sau dupa un nod care retine o valoare data (continut util). Evident s-ar putea realiza si inserare pe o pozitie data astfel incat toate elemantele de la acea pozitie incepand se vor deplasa mai la "dreapta". In cazul in care inserarea se face "dupa" se avanseaza cu un nod intermediar c in lista pana la nodul dupa care se va face inserarea, se creaza un nou nod (nodul a) apoi se genereaza legaturile: mai intai de la a la c->next apoi de la c la a. Exista posibilitatea ca ultimul nod sa retina valoarea dupa care se realizeaza inserarea caz in care se modifica ultimul. In cazul in care inserarea se face "inainte" se avanseaza cu un nod intermediar c in lista pana la un nod situat inaintea celui cautat , se creaza un nou nod (nodul a) apoi se genereaza legaturile: mai intai de la a la c->next apoi de la c la a. Exista posibilitatea ca primul nod sa retina valoarea inainte de care se realizeaza inserarea caz in care se modifica primul. 30. Crearea listelor, eliminarea unui element. In cazul in care se realizeaza stergerea se avanseaza cu un nod intermediar c in lista pana la un nod situat inaintea celui cautat (nodul de sters), se genereaza noule legaturi intre precedentul si urmatorul nodului de sters, se elibereaza spatiul de memorie. 31. Numrarea elementelor listei. Parcurge lista si contorizeaza fiecare nod parcurs. 32. Tiprirea listei.
7

void afis() //functia de afisare parcurge elementele cu afisare {nod *c; c=p; //se porneste de la primul nod din lista while(c) //cat timp c retine o adresa nenula {cout<<c->info<<" ";//se afiseza campul informatie utila c=c->next;} //se avanseaza la urmatoarea adresa, la urmatorul nod cout<<endl; } 33. Concatenarea listelor. Concatenarea a doua liste simple presupune: - testeaz daca listele L1 si L2 sunt vide, caz in care rezultatul concatenarii este NULL - testeaz daca lista L1 este vida si L2 nu este vida, caz in care rezultatul concatenarii este lista L2 - testeaz daca lista L2 este vida si L1 nu este caz in care lista concatenata este chiar lista L1. Daca listele L1 si L2 sunt nevide, va rezulta o lista care contine elementele din ambele liste. Concatenarea este necomutativa, adica L1||L2 != L2||L1. Concatenarea a n liste simple presupune apelul procedurii de concatenare intr-o structura repetitiva in varianta in care: - se transmit ca parametri pointerii cu care se refera primul element din liste ca elemente ale unui vector de pointeri - se transmit pointerii ca informatie utila din elementele unei liste simple. 34.Caracteristicile elementelor listei. O list este o colecie de elemente de informaie (noduri), legate ntre ele prin referine, realizndu-se, astfel, o stocare necontigu a datelor n memorie. Lungimea unei liste este dat de numrul de noduri din list. Structura corespunztoare de date trebuie s permit determinarea eficient a primului sau ultimului nod din structur i care este predecesorul sau succesorul unui nod dat, dac exist. 35. Structuri tabelare. Numim tablou o colectie (grup, multime ordonata) de date, de acelasi tip, situate intr-o zona de memorie continua (elementele tabloului se afla la adrese succesive). Tablourile sunt variabile compuse (structurate), deoarece grupeaza mai multe elemente. Variabilele tablou au nume, iar tipul tabloului este dat de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului si indicii (numere intregi) care reprezinta pozitia elementului in cadrul tabloului. In functie de numarul indicilor utilizati pentru a referi elementele tabloului, putem intalni tablouri unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale). Ca si variabilele simple, variabilele tablou trebuie declarate inainte de utilizare. Modul de declarare: tip nume_tablou[dim_1][dim_2][dim_n]; unde: tip reprezinta tipul elementelor tabloului; dim_1,dim_2,...,dim_n sunt numere intregi sau expresii constante intregi (a caror valoare este evaluata la compilare) care reprezinta limitele superioare ale indicilor tabloului. 36. Gradul de umplere i reprezentarea matricelor, caracteristicile. Se definete gradul de umplere, densitatea, unei matrice prin raportul dintre numrul elementelor nenule i numrul total al elementelor sale: g=[p/(n*m)]*100% p-nr. de elemente nenule n-nr. de linii m-nr. de coloane Matricea e rar cnd densitatea e m. mic de 3%. Cazuri particulare 1) O matrice de tipul 1 n (deci cu o linie i n coloane) se numete matrice linie. 2) O matrice de tipul m 1 (cu m linii i o coloan) se numete matrice coloan. 3) O matrice de tip m n se numete nul (zero) dac toate elementele ei sunt zero. Se noteaz cu O.
8

4) Dac numrul de linii este egal cu numrul de coloane, atunci matricea se numete ptratic. 37. Operaii cu matrice: ncrcare, adunare, scdere; nmulire, inversare. ADUNARE Fie A = ( a i j ) , B = (bi j ) , C = ( ci j ) m, n ( C ) . Matricea C se numete suma matricilor A, B dac: c i j = a i j + bi j , ( i = , m , ( j = , n . ) 1 ) 1 Dou matrici se pot aduna dac sunt de acelai tip, adic dac au acelai numr de linii i acelai numr de coloane, deci A, B m, n (C ) . Proprieti ale adunrii matricilor ) A 1 (Asociativitatea adunrii). ( A + B ) + C = A + ( B + C ) , ( A, B, C m, n ( C ) . ) A 2 (Comutativitatea adunrii). A + B = B + A , ( A, B m, n (C ) . A 3 (Element neutru). ) A + Om ,n = A, ( A m, n (C ) . A 4 (Elemente opuse). A + ( A) = Om ,n . NMLUIRE nmulirea cu scalari a matricilor: A nmuli o matrice cu un scalar revine la a nmuli toate elementele matricii cu acest scalar. 1) Produsul AB a dou matrici nu se poate efectua ntotdeauna dect dac A m,n ( R ) , B n, p ( R ) , adic numrul de coloane ale lui A este egal cu numrul de linii ale lui B, cnd se obine o matrice C = AB m, p ( R ) . 2) Dac matricile sunt ptratice A, B n ( R ) atunci are sens ntotdeauna att AB ct i BA, iar, n general, AB BA adic nmulirea matricilor nu este comutativ. Proprieti ale nmulirii matricilor ) ) ) I1 (Asociativitatea nmulirii). ( AB )C = A( BC ) , ( A m, n (C ) , ( B n, p (C ) , ( C p, s ( C ) . I 2 (Distributivitatea nmulirii n raport cu adunarea). ( A + B )C = AC + BC , C ( A + B ) = CA + CB , ( A, B, C ) I 3 Dac I n n ( C ) este matricea unitate, atunci I n A = AI n = A, ( A n ( C ) . ) Se spune c I n este element neutru n raport cu operaia de nmulire a matricilor. INVERSAREA Fie A n ( C ) . Matricea A se numete inversabil dac exist matricea B n ( C ) cu proprietatea c A B = B A = I n , I n fiind matricea unitate. Matricea B din definiie se numete inversa matricii A i se noteaz B = A 1 . Deci A A 1 = A 1 A = I n . 39. Alocarea resurselor pentru stocarea matricelor. int x[30][30]- variabila de tip pointer constant( se aloca memorie pentru 30 de linii si 30 de coloane, fig.1) la intreg. Folosind a doua metoda de declarare a unei matrice folosim atat spatiu cat ne trebuie, alocandu-l dinamic in functie de cate linii si coloane avem. Alocarea dinamica presupune utilizarea memoriei intr-un mult mai eficient si anume se aloca memorie exact cat este necesar pentru memorarea matricei. Pentru a realiza aceasta se foloseste functia membru int** aloc_mat(int, int). 40. Alocarea dinamic a memoriei. Anumite variabile pot fi alocate dinamic. Asta inseamna ca: Spatiul necesar memorarii este rezervat intr-un segment special destinat acestui scop, numit HEAP. In memorie se rezerva spatiu in timpul executarii programului, atunci cand se utilizeaza un anumit operator. Atunci cand variabila respectiva nu mai este utila, spatiul din memorie este eliberat, pentru a fi rezervat, daca este cazul, pentru alte variabile.
9

Se declara o variabila pointer, s-o numim p, care permite memorarea unei adrese. Se aloca variabila dinamica prin operatorul new aplicat asupra unui tip, iar rezultatul este atribuit variabilei p. In urma acestor operatii variabila p retine adresa variabilei alocata dinamic. Orice acces la variabila alocata dinamic se face prin intermediul variabilei p. Operatorul new aloca spatiu in HEAP pentru o variabila dinamica. Dupa alocare, adresa variabilei se atribuie lui p, unde p este o variabila de tip pointer catre tip: p=new tip numarul de octeti alocati in HEAP este, evident, egal cu numarul de octeti ocupat de o variabila de tipul respectiv. durata de viata a unei variabile alocate in HEAP este pana la eliberarea spatiului ocupat (cu delete) sau pana la sfarsitul executarii programului. Operatorul delete elibereaza spatiul rezervat pentru variabila a carei adresa este retinuta in p. Dupa eliberare, continutul variabilei p este nedefinit.

41. Noiune de pointeri i referine, caracteristicile. Pointerii sunt variabile care conin adresa unei alte zone de memorie. Ei sunt utilizai pentru a date care sunt cunoscute prin adresa zonei de memorie unde sunt alocate. Sintaxa utilizata pentru declararea lor este: tip *variabila_pointer; Variabilele de tip pointer stocheaz adrese de memorie. Pot, de exemplu, s pstreze adrese de memorie ale altor variabile care, la rndul lor, conin alte valori. n lucrul cu pointeri se folosesc doi operatori unari: &: extragerea adresei unei variabile *: referirea coninutului zonei de memorie indicate de pointer (indirectare) Referinele, ca i pointerii, sunt variabile care conin adresa unei zone de memorie. Semantic, ele reprezint aliasuri ale unor variabile existente. Referinele sunt legate de variabile la declaraie i nu pot fi modificate pentru a referi alte zone de memorie. Sintaxa folosit pentru declararea unei referine este: Tip & referinta = valoare; Proprietile cele mai importante ale referinelor sunt: referinele trebuie s fie iniializate la declaraie (spre deosebire de pointeri care pot fi iniializai n orice moment); dup iniializare, referina nu poate fi modificat pentru a referi o alt zon de memorie (pointerii pot fi modificai pentru a referi alt zona) ntr-un program C++ valid nu exista referine nule 42. Crearea i distrugerea pointerilor. Pointerii se declar ca orice variabil, deosebirea constnd doar n faptul c numele lor este precedat de caracterul * care reprezeint operatorul unar de indirectare sau de derefereniere. Pentru iniializarea pointerilor se poate folosi operatorul unar &, numit operator de refereniere i care returneaz adresa argumentului su. Declararea pointerilor se face n modul urmtor: tip *nume_pointer; sau tip* nume_pointer; unde tip este un tip de date de baz sau tip utilizator, iar nume_pointer este un identificator folosit pentru pointerul care se declar. delete pointer; 43. nlnuiri de pointeri. O list nlntuit (list cu legturi = "Linked List") este o colectie de variabile structur, alocate dinamic, dispersate n memorie, dar legate ntre ele prin pointeri, ca ntr-un lant. Intr-o list liniar simplu nlntuit fiecare element al listei contine adresa elementului urmtor din list. Ultimul element poate contine ca adres de legatur fie constanta NULL (un "pointer ctre nicieri"), fie adresa primului element din list (list circular sau inel).

10

Adresa primului element din list este memorat ntr-o variabil cu nume (alocat la compilare) si numit cap de list ("list head"). Structura de list nlntuit are avantajul fat de un vector c lungimea listei este egal cu numrul efectiv de elemente introduse n list (nu este necesar o alocare estimativ). 45. Adugarea, inserarea, excluderea, navigarea n liste dinamice. 1. Operatia de creare. Odata declarata lista, pentru fiecare nod se adauga in lista o anumita valoare si se creaza legatura cu urmatorul nod. 2. Operatia de stergere. Pentru a sterge ne pozitionam pe nodul precedent celui pe care il stergem si cream legatura cu nodul antecedent, apoi stergem din memorie nodul depasit. 3. Operatia de inserare. Inserarea se face similar operatiei de creare cu exceptia faptului ca trebuie sa cream cu grija legaturile. Cream un nou nod, ii dam o valoare si facem legatura catre nodul urmator nodului curent, apoi cream legatura dintre nodul curent si noul nod. 4. Operatia de interschimbare. Fie nodurile i si j nodurile care vrem sa le interschimbam. Pentru nodul j ii atribuim legaturile nodului i si vice versa. 46. Stive i cozi. Cozile i stivele sunt structuri de date logice (implementarea este fcut utiliznd alte structuri de date) i omogene (toate elementele sunt de acelai tip). Ambele structuri au dou operaii de baz: adugarea i extragerea unui element. n afara acestor operaii se pot implementa i alte operaii utile: test de structur vid, obinerea primului element fr extragerea acestuia, Diferena fundamental ntre cele dou structuri este disciplina de acces. Stiva folosete o disciplin de acces de tip LIFO (Last In First Out), iar coada o disciplin de tip FIFO (First In First Out). 47. Modelul asociat pentru structura de date de tip stiva. Pentru implementarea unei stive folosind masive avem nevoie de un masiv V de dimensiune n pentru memorarea elementelor. Ultimul element al masivului va fi utilizat pentru memorarea numrului de elemente ale stivei. 48. Definirea stivelor. Stiv consecutivitate de noduri cu proprietatea c se tie vechimea introducerii elementului n stiv. Principiul LIFO. Singurul element din stiva la care avem acces direct este cel de la varf. Stiva este o structura de date abstracta,ce poate fi implementata in diverse moduri.De exemplu,putem implementa o stiva ca un vector in care retinem elementele stivei.Pentru ca acest vector sa functioneze ca o stiva,singurele operatii admise sunt cele caracteristice stivei. 49. Algoritmi de parcurgere a stivelor. Aadar, stiva este un caz particular de list, n care adugarea sau eliminarea elementelor se face numai n unul din capetele acesteia, iar pentru parcurgerea unei stive implementate pe o structur de tip list este suficient referina ctre primul element al listei. n cazul cnd stiva este implementat sub form de tablou, punerea i eliminarea elementelor se face la captul din dreapta (pe poziia din tablou cu cea mai mare valoare a indicelui). n acest fel, la efectuarea acestor operaii nu este necesar s se deplaseze celelalte elemente ale tabloului. 50. Crearea, adugarea, modificare stivei.

11

Creare. Pentru a crea o stiva vid se inializeaz vrful stivei cu 1 (vrful stivei indic ntotdeauna poziia ultimului element, acestea fiind memorate ncepnd cu poziia 0). Inserare. Pentru a insera un element e n vrful stivei S (operaia push) este necesar, n primul rnd, verificarea stivei pentru a stabili dac este sau nu plin. Dac acest lucru este ndeplinit, se memoreaz elementul i se incrementeaz dimensiunea; n caz contrar sarcina nu se poate ndeplini. Extragere. Pentru a extrage un element din vrful stivei (operaia pop) trebuie ca stiva s nu fie vid. Dac nu este, atunci se reine valoarea din vrful stivei ntr-o variabil e i se decrementeaz vrful. Vizitare. Accesarea/vizitarea elementului de la vrf stivei presupune determinarea valorii acestuia, valoare care se va reine ntr-o variabil e, fr a o extrage. Specific acestei structuri de date este faptul ca prelucrarile se fac intotdeauna la elementul de la acelasi capat, element pe care il vom numi varf. Functia push( ) , creaza stiva cand aceasta este vida sau adauga un nou element in caz contrar. Functia pop( ), elimina elementul din varful stivei. 52. Operaii cu cozi, proprieti. FIFO este o coad care funcioneaz dup principiul first in first out, primul intrat este primul servit. Prin urmare principalele prelucrri care se refer la aceast structur de date vor fi: creare coada listare coada (parcurgere) adugare la sfrit tergere elemente Specific acestei structuri de date este faptul ca adugarea se va face ntotdeauna dup ultimul nod, n timp ce tergerea se va face la cellalt capt. Pentru a prelucra o coad vor fi necesari doi pointeri: unul l vom numi vrful cozii (primul nod creat), n timp ce la captul opus ne vom referi la ultimul element. Funcia pune( ) , creeaz coada cnd aceasta este vida sau aduga un nou element la sfrit. Funcia scoate( ), elimin elementul din vrful cozii. 53. Arbori. Definiii. Un arbore este un graf conex fara nici un ciclu (n varfuri si n-1 arce). Legaturile existente intr-un arbore sunt de tip parinte-fiu. Nodul in care nu intra nici un arc se numeste radacina. Un nod in care intra un arc se numeste succesor sau fiu, iar cel din care iese un arc sau mai multe se numeste predecesor sau parinte. Nodurile sunt organizate pe nivele, iar cele de pe ultimul nivel se numesc frunze sau noduri terminale. Nodurile pot contine informatii utile ce poarta denumirea de chei ale arborelui. 55. Definirea arborilor ca structuri autoreferite. Contine: - definire clasa - definire structura autoreferita pentru noduri(pointeri, informatie utila - definire pointeri - definire constructor - definire destructor - definire metode corespunzatoare operatiilor definite pentru lucru cu arbori binari. 56. Arbori binari, arbori simetrici. Un arbore binar este o mulime de noduri care ndeplinesc urmtoarele condiii: fiecare nod are 0, 1 sau 2 succesori; fiecare nod are un singur predecesor, cu excepia rdcinii care nu are niciunul; succesorii fiecrui nod sunt ordonai (fiul stng, fiul drept; dac este unul singur trebuie menionat care). nod punct n care se ntlnesc doi subarbori; nivel numrul de noduri parcurse de la rdcin pn la un nod;
12

nod terminal nod fr descendeni; nlimea unui nod numrul maxim de niveluri.

57. Operaii cu arbori: creare, adugare. Procesul de creare consta n insertia cte unui nod ntr-un arbore binar ordonat, care initial este vid, astfel nct dupa insertie el sa ramna ordonat. Pentru aceasta se traverseaza arborele ncepnd cu radacina si se selecteaza fiul stng sau drept, dupa cum cheia de inserat e mai mica sau mai mare dect a nodului parcurs. Se repeta pna cnd se ajunge la un pointer nil care se inlocuieste cu pointerul spre noul nod creat. Pentru ca sortarea sa fie stabila, se trece la fiul drept chiar daca valoarea cheii e egala. 58. Algoritmi de parcurgere i prelucrare n arbori binari. Arborii binari pot fi parcuri prin metode specifice grafurilor: n adncime, lime. Metode specifice arborilor binari : Parcurgerea n inordine (stnga vrf dreapta SVD) se parcurge mai intai subarborele stng, apoi vrful, apoi subarborele drept. Parcurgerea n preordine (vrf stnga dreapta VSD) se parcurge mai nti vrful, apoi subarborele stng, apoi subarborele drept. Parcurgerea n postordine (stnga dreapta vrf SDV) se parcurge mai nti subarborele stng, apoi subarborele drept si la sfrit vrful. Parcurgerea BFS (Breadth First Search) a unui arbore t const n: vizitarea rdcinii, apoi a fiilor rdcinii (nodurile aflate la distana 1 fa de rdcin), apoi a nodurilor aflate la distana 2 fa de rdcin .a.m.d 59. Arbori. Alocarea memoriei. Se observ c pentru iniializarea corect, este necesar existena la un moment dat a pointerilor spre trei zone de memorie alocate dinamic i anume: pp - pointerul spre zona alocat nodului precedent (printe); pc - pointerul spre zona asociat nodului curent; pd - pointerul spre zona asociat primului descendent; 61. Principii de sortare a datelor. Metodele de sortare se clasifica in metode directe si metode avansate. Metodele directe se bazeaza pe algoritmi de dificultate redusa, usor de gasit si de inteles. Metodele directe pe care le vom lua in considerare sunt sortarea prin selectie (SelectSort), sortarea prin insertie (InsertSort) i sortarea cu bule (BubbleSort). Metodele avansate se bazeaza pe algoritmi putin mai complicati, dar care nu necesita unostinte avansate de algoritmica. Una dintre cele mai cunoscute este sortarea rapida (QuickSort). Analiznd complexitatea algoritmilor factorul cel mai important este timpul de executie. Trebuie s folosim mai multe criterii pentru evaluarea timpului de executie al algoritmului de sortare cum ar fi, numrul de pasi (de atribuiri) ai algoritmului si numrul de comparatii dintre elemente necesare pentru a sorta N elemente Al doilea factor important este cantitatea (volumul) de memorie suplimentar folosit de un algoritm de sortare. Metodele se mpart n trei tipuri: cei care sorteaz pe loc, nu folosesc memorie suplimentar, cu exceptie poate o mic tabel sau stiv; cei care au o reprezentare de list nlntuit deci folosesc N cuvinte de memorie n plus pentru pointerii listei; cei care au nevoie de memorie suplimentar pentru o copie a tabelei initiale. 62. Algoritmi de sortare: binar, prin inserie, Bubble, QuickSort Metoda binar Principiu: reprezinta o varianta a sortarii prin insertie, in care cautarea locului de inserare se face aplicind cautarea binara, stiind ca secventa a[1],...,a[i-1] este deja ordonata.

13

Metoda inseriei (Insertion Sort) Insertia direct apartine familiei de tehnici de sortare care se bazeaz pe metoda "juctorului de bridge". Este un algoritm aproape la fel de simplu ca Selection sort, dar poate mai flexibil. Considerm elementele A[1]...A[i-1] fiind sortate, inserm elementul A[i] n locul ce i revine. Fiind dat o tabel A cu N elemente nesortate, parcurgem tabela si le inserm fiecare element n locul propriu ntre celelalte elemente considerate sortate. Pentru fiecare i = 2..N , elementele A[1]A[i] sunt sortate prin inserarea lui A[i] ntre lista elementelor sortate: A[1]A[i-1]. Elementele aflate n stnga indexului sunt n ordine sortat dar nu sunt n pozitia lor final. Tabela este sortat complet cnd indexul ajunge la captul drept al tabelei. Insertion sort este un algoritm de sortare simplu, liniar: O(N) pentru tabele care contin N elemente aproape sortate. Timpul de executie al algoritmului depinde de numrul inversrilor, deci de ordinea initial al elementelor. n caz general sunt necesare N 2 /4 comparatii si interschimbri, N 2 /8 deci ordinea magnitudinii este O(N 2). n caz cel mai nefavorabil, cnd tabela este initial sortat n ordine invers, sortarea este de O(N2) .Dac tabela A contine nregistrri mari atunci e preferabil folosirea unei "tabele de index": P, accesnd tabela original doar pentru comparare, astfel costul este mai putin. Alt modalitate de mbunttire const n folosirea unei matrici de pointeri pentru nregistrri. Exemplu (irul iniial este :{5,6,7,10,1,2}) Nr. inter. 5 6 7 10 1 2 1 1 5 6 7 10 2 2 1 2 5 6 7 10 Metoda bulelor (BubbleSort) Acesta metoda se rezuma la a compara fiecare element cu celelalte, facandu-se interschimbarea daca elementul mai mare are indexul mai mic. Este cea mai simpla metode de sortare si nu necesita cunoasterea detaliata a limbajului de programare. Poate fi folosita cu succes de catre incepatori. Bubble sort este o metod de sortare simpl, eficient pentru un numr mic de elemente (mai putin de 15), dar nu pentru tabele mari. Nu necesit foate mult memorie, dar este de dou ori mai lent dect InsertionSort n aproape orice situatie. Timpul de executie depinde de input, adic de ordinea initial al elementelor. Dac tabela este deja sortat e nevoie de un singur pas, adic N-1 comparri. n cazul cel mai nefavorabil sunt necesare N(N-1)/2 comparri si N(N-1)/2 interschimbri. Performanta algoritmului n caz general este mai greu de analizat dar este asemntor cazului nefavorabil. Complexitatea timpului al Bubble sortului este O(N2). Exemplu de sortare (irul iniial este {6, 5, 4, 3, 2, 1}):
Nr. inter. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1 5 6 4 4 4 4 5 3 3 3 4 2 2 3 1 2 4 4 6 3 3 3 3 5 2 2 2 4 1 1 3 3 3 3 3 6 2 2 2 2 5 1 1 1 4 4 4 4 2 2 2 2 6 1 1 1 1 5 5 5 5 5 5 5 1 1 1 1 1 6 6 6 6 6 6 6 6 6 6 6

Sortare rapid (Quick Sort) n practic algoritmul de sortare cel mai rapid este Quicksort numit sortare rapid, care foloseste partitionarea ca idee de baz. Este mai rapid dect orice metod de sortare simpl, se execut bine pentru fisiere sau tabele mari, dar ineficient pentru cele mici. Strategia de baz folosit este "divide et impera", pentru c este mai usor de sortat dou tabele mici, dect una mare. Algoritmul este usor de implementat,
14

lucreaz destul de bine n diferite situatii si consum mai putine resurse dect orice alt metod de sortare n multe situatii. Necesit numai n jur de NlogN operati n cazul general pentru a sorta N elemente. Metoda QuickSort presupune gasirea pozitiei finale pe care o ocupa elemenetul de pe prima pozitie comparandu-l cu elementele din cealalta partitie a tabelului, acest algoritm realizandu-se pana cand partitia are 1 element. Potrivit algoritmului, fiecare element este comparat cu pivotul, adic operatiunea este de O(N), tabela este divizat n dou prti, fiecare parte este divizat iarsi n dou. Dac fiecare parte este mprtit aproximativ n jumtate, va rezulta log2N mprtiri. Deci timpul de executie al Quicksortului n caz mediu este de O(N log2 N), iar n caz nefavorabil O(N2) . Quicksort este o metod bun n caz general, dar nu si n caz nefavorabil cnd este preferabil folosirea a 3 indicii de impartire. Randomizarea este o idee important si folositoare, o unealt general pentru a mbuntti algoritmul. Quicksort este sensibil la ordinea datelor de intrare. Nu este o metod stabil. Dezavantajul algoritmului este c, e recursiv. Necesit n jur de N 2 de operatii n caz nefavorabil. Este fragil, o simpl greseal n implementare poate cauza o executare gresit pentru anumite fisiere. 64. Cutarea datelor: metoda binar, liniar, fanionului, interpolar, irurilor de caractere. Algoritmul de cutare binar este un algoritm de cutare folosit pentru a gsi un element ntr-o list ordonat (tablou unidimensional/vector). Algoritmul funcioneaz pe baza tehnicii divide et impera. Valoarea cutat este comparat cu cea a elementului din mijlocul listei. Dac e egal cu cea a acelui element, algoritmul se termin. Dac e mai mare dect acea valoare, algoritmul se reia, de la mijlocul listei pn la sfrit, iar dac e mai mic, algoritmul se reia pentru elementele de la nceputul listei pn la mijloc. ntruct la fiecare pas cardinalul mulimii de elemente n care se efectueaz cutarea se njumtete, algoritmul are complexitate logaritmic. Considerm un tablou unidimensional v de n elemente deja sortat, i trei variabile: i=inceput, s=sfrit i m=mijloc. Metoda verific de mai multe ori dac mijlocul vectorului/tabloului unidimensional este egal cu elementul cutat: n cazul n care este egal, variabila m reprezint poziia elementului n vector; dac nu se ndeplinete condiia de egalitate se trece la verificarea poziiei elementului cutat n vector astfel: dac elementul cutat este mai mic dect elementul din mijlocul vectorului, variabila "s" ia valoarea lui "m" iar dac nu variabila i ia valoarea lui m. Totul se repet ct timp i este mai mic dect s. Cautarea liniara Se compara pe rind elementele tabloului cu x pina cind, fie se gaseste egalitatea a[i]=x, fie s-a ajuns la sfirsitul tabloului. Tehnica fanionului Tabloul a se prelungeste cu inca un element (fanion) caruia i se asigneaza valoarea x, apoi se aplica metoda de cautare liniara. Avantajul acestei metode consta in simplificarea condi- tiei de ciclare, in sensul ca nu mai este nevoie sa se verifice daca indicele nu depaseste dimensiunea tabloului, deoarece in tablou exista sigur cel putin un element cu valoarea cautata. Cautarea prin interpolare Este similara cu cautarea binara, dar foloseste o alta formula pentru calculul lui "m", si anume: m:=s+(x-a[s])*(d-s) div (a[d]-a[s]) ceea ce conduce la o delimitare mai rapida a zonei din tablou in care s-ar putea gasi x. Ca principiu, metoda este inspirata dupa procedeul cautarii intr-o carte de telefon. Aplicarea cautarii prin interpolare necesita ca elementul de cautat, x, sa se afle in interiorul intervalului
15

a[1],..,a[N], altfel apare riscul ca valoarea calculata a lui "m" sa depaseas- ca N. Cutarea irurile de caractere Cautarea se face de la stanga la dreapta, iar functia intoarce adresa subsirului care incepe cu prima aparitie a caracterului c. Daca nu este gasit caracterul, functia returneaza 0. Diferenta dintre adresa sirului initial si cea a subsirului returnat reprezinta chiar pozitia caracterului cautat in sirul dat. 65. Declararea i utilizarea structurilor de nivel jos. Structuri de nivel jos: structuri, uniuni, enumerri, clase STRUCTURI O structura este o colectie de valori eterogene, stocate intr-o zona compacta de memorie. Componentele unei structuri, denumite campuri, sunt identificate prin nume simbolice, denumite selectori. Campurile unei structuri pot fi de orice tip, simplu sau derivat, dar nu void sau functie. Declararea structurilor se face folosind cuvantul cheie struct: struct nume_structura{ lista_campuri //declaratii de forma tip_campi nume_campi; }lista_declaratori; //variabile de tip structura Selectarea unui camp al unei variabile structura se realizeaza folosind operatorul de selectie . . Campul selectat se comporta ca o variabila de acelasi tip, deci i se pot aplica aceleasi prelucrari ca oricarei variabile de tipul respectiv. variabila_structura.nume_camp UNIUNI Aceeasi zona de memorie poate fi utilizata pentru pastrarea unor obiecte (date) de diferite tipuri, prin declararea uniunilor. Uniunile sunt similare cu structurile, singura diferenta constnd n modul de memorare. Declararea uniunilor: union identificator_tip_uniune lista_identificatori_variabile; Spatiul de memorie alocat corespunde tipului membrului de dimensiune maxima. Tipul uniune foloseste aceeasi zona de memorie, care va contine informatii organizate n mai multe moduri, corespunzator tipurilor membrilor. ENUMERRI Tipul enumerare asociaza fiecarui identificator o consatanta ntreaga. Sintaxa declaratiei: enum identificator_tip_enumerare lista_identif_variabile; Din declaratie pot lipsi fie identificator_tip_enumerare, fie lista_identif_variabile. Pentru fiecare element al enumerarii, constanta poate fi asociata n mod explicit (ca n declaratia anterioara), fie implicit. n modul implicit nu se specifica nici o constanta, iar valoarea implicita este 0 pentru primul element, iar pentru restul elementelor, valoarea precedenta incrementata cu 1. Enumerarile se folosesc n situatiile n care variabilele pot avea un numar mic de valori ntregi, asociind un nume sugestiv pentru fiecare valoare. CLASE O sintaxa simplificata a declararii unei clase este urmatoarea: class NumeClasa {...declaratii variabile membre ...declaratii functii membre...} Dupa cum se poate observa din aceasta alcatuire a declaratiei, clasa este asemanatoare cu o structura din limbajul C, dar care poate avea in componenta sa membri atat de tip variabila cat si de tip functie. Asa cum spuneam si in capitolul precedent, pentru datele din interiorul clasei se utilizeaza de obicei termenul de date membre, iar pentru functii denumirea de functii membre sau metode. O clasa permite incapsularea in interiorul sau a datelor si a codului. Intocmai ca in limbajul C, pentru a putea utiliza efectiv un tip de date (in cazul de fata o clasa), trebuie sa definim o variabila de acel tip. Intr-un mod similar declaratiei int i; putem scrie: NumeClasa variabila

16

66. Utilizarea variabilelor dinamice n limbajele de programare. Variabilele dinamice trebuie sa aiba tipul bine definit, si sunt identificate prin variabile de tip pointeri spre anumite tipuri de variabile. Alocarea dinamica este mijlocul prin care un program poate obtine memorie pe parcursul executiei sale intr-o zona de memorie speciala, diferita de zona de memoria a programului, numita zona heap. Se cunoaste ca declarararea unui tip de data nu necesita alocarea de memorie. Alocarea memoriei aferente se face in timpul compilarii programului in momentul intalnirii declaratiei unei variabile sau constante de un anumit timp, lungimea zonei alocate fiind calculata corespunzator tipului asociat variabilei. Un asemenea mod de alocare este specific variabilelor alocate in mod static. In timpul compilarii, la intalnirea unei variabile alocate dinamic, se va aloca o zona de memorie de patru bytes care, dupa alocarea dinamica pe parcursul executarii programului, va contine adresa de memorie din zona heap a primei locatii de memorie libera unde se va aloca spatiul necesar pentru variabila referita sau adresata de variabila dinamica. Dupa cum s-a precizat, alocarea dinamica a spatiului de memorie din zona heap pentru variabila referita de variabila dinamica (pointer catre variabila referita) se face cu functia malloc() dupa cum urmeaza: tip_variabila_referita *ptr_variabila_reterita; ptr_variabila_reterita = malloc(size_t numar_de_octeti); unde: - ptr_variabila_reterita este un pointer (variabila dinamica) catre o variabila de un tip precizat de tip_variabila_referita. - tip_variabila_referita este tipul variabilei referita de variabila de tip pointer si poate fi un tip standard sau definit de utilizator. - numar_de_octeti este numarul de octeti precizat sau calculat ai zonei de memorie din zona heap, alocata dinamic, unde se va memora variabila referita de variabila dinamica (ptr_variabila_reterita). Eliberarea spatiului de memorie ocupat de variabila referita prin variabila dinamica (ptr_variabila_reterita) se face cu functia free() cu sintaxa: free(ptr_variabila_reterita). 67. Pointeri i referine coincidene i deosebiri. referinele trebuie s fie iniializate la declaraie (spre deosebire de pointeri care pot fi iniializai n orice moment); dup iniializare, referina nu poate fi modificat pentru a referi o alt zon de memorie (pointerii pot fi modificai pentru a referi alt zona) 68. Lucrul cu structurile arborescente n-are. Fratele din dreapta devine fiul din dreapta. 69. Arbori binari. Definiii. Scheme de prezentare Un arbore binar este o mulime de noduri care ndeplinesc urmtoarele condiii: fiecare nod are 0, 1 sau 2 succesori; fiecare nod are un singur predecesor, cu excepia rdcinii care nu are niciunul; succesorii fiecrui nod sunt ordonai (fiul stng, fiul drept; dac este unul singur trebuie menionat care). Prezentarea poate fi prin schem sau tabel. 72. Algoritmi de sortare intern de programare. Daca datele pe care dorim sa le ordonam, adica sa le sortam, sunt in memoria interna, atunci procesul de rearanjare a colectiei il vom numi sortare interna, iar daca datele se afla intr-un fisier (colectie de date de acelasi fel aflate pe suport extern), atunci procesul il vom numi sortare externa. 73. Structuri de date elementare i de nivel jos. Elementare: incluse in compilator (nr. intregi, nr. reale, boolean, pointeri) De nivel jos: struct, union, class, enum, masiv care au date elementare

17

S-ar putea să vă placă și