Sunteți pe pagina 1din 31

1 1.

Definirea notiunii de Sistem n general, un sistem se defineste ca fiind un ansamblu de elemente fizice si logice interconectate si interconditionate prin relatii fizice, economice, sociale sau de alta natura, care functioneaza in vederea realizarii unui obiectiv. Sistem informaional Sistemul informational reprezinta ansamblul mijloacelor, metodelor si procedurilor pentru culegerea, transmiterea, prelucrarea si pastrarea informatiilor necesare conducerii pentru fundamentarea deciziilor. Intr-un sistem economic, sistemul informational asigura legatura in ambele sensuri intre sistemul condus (de executie) si sistemul conducator (decizional). Sistemul informational realizeaza legatura intre sistemul conducator si sistemul condus, fiind de fapt componenta modelatoare a sistemului condus Sistem informational economic Sistemul informational economic reprezinta un ansamblu organizat de informatii economice complexe, care se obtin prin prelucrarea datelor furnizate de anumite surse si care sunt necesare pentru organizarea, conducerea si desfasurarea activitatii economice. Un sistem este definit ca un ansamblu de oameni, masini, programe si procedee, al carui tel este de a furniza informatiile necesare functionarii unei intreprinderi sau unui organism. rincipala functie a SI! este aceea de a furniza informatiile necesare cunoasterii activitatii economice in vederea luarii deciziilor pe toate treptele organizatorice. SI! are urmatoarea structura" ansamblul informatiilor economice complexe, prelucrarea datelor sau informatiilor economice, sursele de date si informatii economice. Informatiile economice- Informatia economica reprezinta o comunicare, o stire sau un mesaj ce contine elemente noi de cunoastere a unor stari sau a conditiilor de manifestare a anumitor fenomene sau procese economice din trecut, prezent sau viitor. Informatiile reprezinta elemente noi in raport cu alte cunostinte prealabile. !xpresiile concrete, suportul pe baza carora se obtin informatiile poarta denumirea de date. #atele sunt reprezentative prin diferite cuvinte, cifre, semne, propozitii etc. $a randul lor datele isi au suportul material intr-o serie de mijloace materiale sau te%nice care se numesc purtatori de date. !i au calitatea de a conserva, stoca si restitui datele. rincipalii purtatori de date sunt documentele economice, diferitele registre, anumite situatii si purtatorii te%nici de date" benzi si cartele perforate, benzi si discuri magnetice, disc%ete, microfilme etc. 2 NOTIUNE DE SISTEM INFO M!TI"& Sistemul informatic este acea parte a sistemului informa'ional in care opera'iile de culegere, transmitere, prelucrare si stocare a datelor se realizeaz( cu ajutorul calculatorului electronic in scopul solu'ion(rii obiectivelor sistemului. Sistemele informatice au la baza doua principii " ) introducerea unica a datelor ) prelucrarea multipla a datelor. *nsamblul de elemente implicate +n procesul de prelucrare si transmitere a datelor pe cale electronica alcatuiesc un sistem informatic. ,ntr-un sistem informatic pot intra " calculatoare, sisteme de transmisie a datelor, alte componente %ard-are, soft-er-ul, datele prelucrate, etc. #. Sistem informational economic Sistemul informational economic reprezinta un ansamblu organizat de informatii economice complexe, care se obtin prin prelucrarea datelor furnizate de anumite surse si care sunt necesare pentru organizarea, conducerea si desfasurarea activitatii economice. Un sistem este definit ca un ansamblu de oameni, masini, programe si procedee, al carui tel este de a furniza informatiile necesare functionarii unei intreprinderi sau unui organism. rincipala functie a SI! este aceea de a furniza informatiile necesare cunoasterii activitatii economice in vederea luarii deciziilor pe toate treptele organizatorice. SI! are urmatoarea structura" ansamblul informatiilor economice complexe, prelucrarea datelor sau informatiilor economice, sursele de date si informatii economice. *ctivitatile economico-sociale si SI! se delimiteaza in timp si spatiu. #elimitarea in timp se realizeaza pe perioade de gestiune sau exercitii economico-financiare. #elimitarea in spatiu se face in cadrul unor verigi organizatorice ale economiei nationale numite unitati patrimoniale.

. Importanta SI! consta in faptul ca organizarea si conducerea activitatii economice la nivel micro si macroeconomic presupune cunoasterea permanenta a starii si functionarii unitatilor patrimoniale. /onducerea in general si conducerea activitatii economice in special nu mai este considerata numai o arta in care intuitia joaca un rol insemnat in luarea deciziilor, ci ca o stiinta de sine statatoare. SI! ne ajuta sa observam modul de utilizare a resurselor, sa sesizam si sa examinam critic deficientele existente si sa punem in valoare efectele pozitive.

4. Realizarea i exploatarea SIE presupune respectarea unui ansamblu de principii, principalele fiind" 1. /riteriul eficien'ei economice0 .. 1rientarea spre utilizatori0 2. Utilizarea de solu'ii performante0 3. *bordarea global( modular(0 4. *sigurarea unicit('ii introducerii datelor0 5. Solu'ie general(, independenta de configura'ia actual( a sistemului informatizat. 6. osibilitatea de dezvoltare ulterioara. 7. *lte principii. *utomatizarea proceselor informa'ional-decizionale a devenit o necesitate care nu suport( o amanare, in condi'iile in care, agen'ii economici sunt angrena'i in mediul pie'ei concuren'iale. Sistemele informatice 8i te%nologiile informa'ionale reprezint( pentru sporirea performan'elor unit('ilor economice stimulentul principal, atat moral cat 8i material. 9ealizarea, ins(, a sistemelor informatice este un proces complex de durat( care necesit( resurse apreciabile (informa'ionale, umane, materiale, te%nice, financiare) 8i ample activit('i de organizare 8i dirijare a acestui proces. In condi'iile economiei de pia'( 8i ale unui sistem economic aflat intr-o continu( dezvoltare, un sistem informatic are un ciclu de via'( limitat. !l incepe cand sistemul este conceput pentru realizarea obiectivelor 8i cerin'elor func'ionale ale US! 8i se termin( cand el nu mai corespunde cerin'elor actuale, in rezultatul modific(rilor esen'iale in te%nologiile informa'ionale sau extinderii domeniului de activitate ale unit('ilor. :arietatea 8i complexitatea activit('ilor de realizare, implementare 8i exploatare a sistemelor informatice, durata mare de desf(8urare, volumul apreciabil de resurse implicate, inclusiv resursele umane, se prezint( ca argumente ale necesit('ii managementului intregului proces de realizare 8i exploatare a sistemelor informatice . #eci, conform celor mai multor metodologii se consider( c( etapizarea ciclului de via'( al unui sistem informatic poate fi urm(toarea" ;<studiul 8i analiza sistemului informa'ional existent0 ;<proiectarea general( (conceptual() a SI0 ;<proiectarea de detaliu (fizic() a SI0 ;<implementarea SI0 ;<exploatarea curent( 8i men'inerea in func'iune a sistemului informatic. =iecare etap(, la randul ei, are obiectivele proprii 8i este format( dintr-o gam( de activit('i urm(rite pe subetape, faze sau subfaze, abordate in raport de complexitatea sistemului. In aceea8i ordine de idei, pot fi enun'ate etapele de realizare a $roiectelor informatice (conform altor viziuni/abordri%& ;<=ormularea cerin'elor0 ;<*naliza0 ;</oncep'ia0 ;<=inalizarea. 4.Definirea notiunii de Sistem

2 In general, un sistem se defineste ca fiind un ansamblu de elemente fizice si logice interconectate si interconditionate prin relatii fizice, economice, sociale sau de alta natura, care functioneaza in vederea realizarii unui obiectiv. *stfel, unitatea economica este un sistem constituit din ansamblul resurselor materiale si umane strans legate prin relatii comerciale, economice, te%nice si sociale. Scopul functionarii unui astfel de sistem este producerea de bunuri materiale, lucrari sau servicii in diverse domenii, /aracteristic notiunii de sistem, este posibilitatea ca ansamblul de componente fizice si logice sa poata fi divizat in subsisteme. Structurarea sistemului in subsisteme se face dupa reguli stabilite in functie de scopul urmarit. #e exemplu, sistemul corespunzator unei unitati economice productive poate fi descopumpus in urmatoarele subsisteme " planificare-dezvoltare, productie, aprovizionare-desfacere, financiar-contabilitate, personal. In raport cu originea lor, sistemele se pot clasifica dupa cum urmeaza " ) Sisteme naturale, care corespund fenomenelor naturale (factori climatici, geografici etc.) ) Sisteme umane, care sunt create de catre om In raport cu posibilitatea de modificare , sistemele se pot clasifica dupa cum urmeaza " ) Sisteme stabile, care raman nemodificate in raport cu perioade lungi de functionare ) Sisteme nestabile, care se pot sc%imba structural sau functional in raport cu anumiti factori ) Sisteme autoreglabile, care au proprietatea de a actiona cu mijloace proprii in cazul diverselor pertubari si de asi pastra in anumite perioade autocontrolul in functionare. Sistemele caracterizate prin autoreglare sunt denumite sisteme cibernetice. '."racterul dinamic al $roceselor si fenomenelor economice( com$le)itatea si di*ersitatea acestora , au impus ca o preocupare permanenta a factorilor decizionali, perfectionarea continue a metodelor si te%nicilor orientate spre conducerea eficienta a acestora, atit la nive macro, cit si la nivel microeconomic. /aracteristicile relevante ale proceselor si fenomenelor economice impun in mod necesar tratarea sistematica a lor, avind ca obiective organizarea si conducerea acestora, prin aplicarea celor mai noi rezultate furnizate de discipline conexe asa cum sunt" cercetarea operationala, teoria jocurilor, statistica, cibernetica economica, teoria deciziei, stimulrea, informatica aplicata. In acest context utilizarea conceptului de sistem si a metodei abordarii sistemice au marcat o evidenta extensie de la procesele pur te%nice , la cele economice, fapt ce reprezinta unul dintre cele mai importante rezultate ale cercetarii stiintifice din ultimile decenii, care au permis relevarea unor noi cai pentru imbunatatirea organizarii si conducerii sistemelor in economie. >etoda abordarii sistemice esste fundamentala in teoria ganerala a sistemelor ce are in vedere inmbinarea logica a etapei de analiza si a celei de sinteza(proiectare a sistemelor). Inlocuirea unor metode analitice, deosebit de utile intr-o serie de discipline, in care sporirea cunoasterii impunea descompunerea intregului in partile componente, cu abordarea sistematica, interogatoare, a condus la obtinerea unor rezultate valoroase, atit pe plan teoretic cit si pe plan aplicativ. +. !cti*itatile economico-sociale si SIE se delimitea,a in tim$ si s$atiu . #elimitarea in timp se realizeaza pe perioade de gestiune sau exercitii economico-financiare. #elimitarea in spatiu se face in cadrul unor verigi organizatorice ale economiei nationale numite unitati patrimoniale. Importanta SI! consta in faptul ca organizarea si conducerea activitatii economice la nivel micro si macroeconomic presupune cunoasterea permanenta a starii si functionarii unitatilor patrimoniale. /onducerea in general si conducerea activitatii economice in special nu mai este considerata numai o arta in care intuitia joaca un rol insemnat in luarea deciziilor, ci ca o stiinta de sine statatoare. SI! ne ajuta sa observam modul de utilizare a resurselor, sa sesizam si sa examinam critic deficientele existente si sa punem in valoare efectele pozitive. Informatiile economice- notiune( clasificari Informatia economica reprezinta o comunicare, o stire sau un mesaj ce contine elemente noi de cunoastere a unor stari sau a conditiilor de manifestare a anumitor fenomene sau procese economice din trecut, prezent sau viitor. Informatiile reprezinta elemente noi in raport cu alte cunostinte prealabile. !xpresiile concrete, suportul pe baza carora se obtin informatiile poarta denumirea de date. #atele sunt reprezentative prin diferite cuvinte, cifre, semne, propozitii etc. $a randul lor datele isi au suportul material intr-o serie de mijloace materiale sau te%nice care se numesc purtatori de date. !i au calitatea de a conserva, stoca si restitui datele. rincipalii purtatori de date sunt documentele economice, diferitele registre, anumite situatii si purtatorii te%nici de date" benzi si cartele perforate, benzi si discuri magnetice, disc%ete, microfilme etc. "lasificarea informatiilor economice

3 Informatiile economice fiind variate, se pot clasifica dupa diferite criterii" a) #upa continutul lor informatiile economice pot fi de planificare sau de programare, efective si de control. ) Informatiile de planificare sau de programare se concretizeaza sub forma obiectivelor prevazute in planurile si programele de activitate ale fiecarei unitati patrimoniale si reflecta dinamica si proportiile acestei activitati, pentru diferite perioade de gestiune viitoare. ) Informatiile efective caracterizeaza operatiile si procesele economice efectuate intr-un anumit loc si timp. ) Informatiile de control rezulta din compararea infirmatiilor efective cu informatiile de planificare sau de programare, cu prevederile legale, cu %otararile conducerii unitatii si ec%ipei manageriale. !le reflecta abaterile de la obiectivele prevazute. b) #upa forma de prezentare se deosebesc informatiile orale, scrise si audiovizuale. ) Informatiile orale sunt folosite in comunicarile directe dintre oameni, prin viu grai, in cadrul activitatilor zilnice. ) Informatiile scrise sunt consemnate in carti, documente, registre, note de serviciu, circulare, scrisori, procese verbale etc. ) Informatiile audiovizuale se obtin prin intermediul comunicatiilor facute le telefon, fax, radio, televizor, prin grafice, sc%eme, filme etc. c) #upa etaloanele informationale folosite pentru exprimarea lor informatiile economice pot fi cantitative si valorice. ) Informatiile cantitative permit cunoasterea fenomenelor si proceselor economice din punct de vedere cantitativ, cu ajutorul etaloanelor informationale corespunzatoare. ) Informatiile valorice exprima aceste fenomene si procese economice in etalon banesc. d) #upa sfera de cuprindere informatiile economice pot fi" sintetice si analitice. ) Informatiile sintetice asigura cunoasterea generala, de ansamblu a activitatiilor economice. !le se intalnesc la nivelul unitatilor de baza ale economiei nationale si la nivelul organelor de sinteza ale statului. ) Informatiile analitice fac posibila cunoasterea detaliata a activitatilor desfasurate, caracterizand amanuntit si concret aceste activitati din fiecare unitate patrimoniala si subunitatile sale organizatorice. e) #upa scopul pentru care sunt folosite pot exista informatii de conducere sau dirijare, de raportere si de reglare. ) Informatiile de conducere sau de dirijare se concretizeaza sub forma dispozitiilor, %otararilor, deciziilor, recomandarilor etc. emise de organele de conducere catre organele inferioare acestora. ) Informatiile de raportare sunt furnizate de sistemul condus catre sistemul conducator privind starea si compotamentul verigilor organizatorice ale unitatilor patrimoniale. ?ot in aceasta categorie intra si informatiile transmise departamentelor si ministerelor, organelor de sinteza. ) Informatiile de reglare urmaresc indreptarea, corectarea activitatilor economice, atunci si acolo unde apar dereglari in desfasurarea fenomenelor si proceselor economice. 9eglarea acestora se face pe baza informatiilor de control. f) In functie de reflectarea in timp a proceselor si fenomenelor economice deosebim" informatii active sau dinamice, pasive si previzionale. ) Informatiile active fiind culese in timpul desfasurarii proceselor si fenomenelor economice, influenteaza evolutia actuala si ulterioara a acestora (informatii privind derularea contractelor de aprovizionare, calitatea produselor fabricate, cererea de marfuri pe piata). ) Informatiile pasive se mai numesc si istorice. !le reflecta fenomene si procese economice petrecute, servind la analiza activitatii desfasurate (bilantul contabil, contul de profit si pierdere, anexa la bilant, raportarile statistice). ) Informatiile previzionale se refera la procese si fenomene economice ce se vor desfasura in perioada viitoare de gestiune (programele de activitate, bugetele intreprinderii). 9. "lasificarea informaiei du$- natura sa #up( natura sa, informa'ia se prezint( sub form( de" - date (numerice, alfabetice, alfanumerice), care apar +n toate domeniile" activitate economic(, cercetare 8tiin'ific(, proiectare te%nologic(, statistic(, administra'ie etc. *supra datelor se aplic( opera'ii aritmetice 8i logice 8i diverse func'ii0 - te)te, organizate sub form( de documente, pagini, paragrafe, fraze, cuvinte 8i caractere. *ceast( informa'ie este destinat( prelucr(rii cu programe de editare 8i te%noredactare a textelor, control gramatical (sintactic) al cuvintelor. Urmeaz( punerea +n form( 8i apoi +n pagin( a textului redactat. 1 pagin( de text ocup( circa 5 @A0

4 - documente .rafice (imagini fixe), destinate perceperii vizuale de c(tre utilizator, scrierii la imprimant( sau la alte dispozitive de realizare a desenelor (plotter), microfotografierii. Un astfel de document poate con'ine, ca imagini prelucrate grafic, date sub form( de rapoarte 8i situa'ii, texte explicative, reprezent(ri grafice, desene, sc%i'e te%nice, imagini foto etc.0 - sec*ene audio, generate de vocea uman(, fenomene ale naturii, instrumente muzicale sau sintetizatoare electronice. *stfel, 1B secunde de sunet de joas( calitate ocup( .BB @A0 1B secunde de sunet de +nalt( fidelitate pot ajunge la 1,7 >A0 - sec*ene *ideo de natur- animat- sau filme, percepute de camerele de luat vederi sau generate de programe de grafic( bi- sau tridimensional(. *cestea sunt de cele mai multe ori +nso'ite de informa'ie sonor( (voce sau alte sunete). ,n acest caz, 1B secunde de imagine video f(r( sunet pot ocupa 4 >A, iar cu sunet, 6 >A. "lasificarea informaiei din $unct de *edere al su$ortului acesteia #up( acest criteriu, distingem" - informa'ie aflat( pe su$orturi te/nice de informa'ii, clasificate la rCndul lor +n" magnetice" benzile, discurile, cartelele magnetice0 optice" dispozitive de tipul /#-urilor. Informa'ia memorat( pe suporturi te%nice este +nregistrat( 8i poate fi citit( numai cu ajutorul unor dispozitive te%nice de citireDscriere pe suporturi magnetice, sau a unit('ilor de lectur( optic(. - informa'ie aflat( pe su$orturi .rafice de informa'ii, clasificate la rCndul lor +n" suporturi opace realizate din %Crtie, pentru" documente clasice, documente informatice sau birotice ob'inute la imprimant(, documente realizate cu ajutorul mesei de desen tip plotter. ,n locul %Crtiei se pot utiliza +nlocuitori sintetici cu caracteristici 8i calit('i grafice asem(n(toare sau superioare, toate avCnd menirea de fi consultate vizual de c(tre utilizator, sau multiplicate tipografic sau xerografic0 suporturi transparente realizate din pelicul( fotografic(, de film, microfilm etc. *cest gen de suport poate fi utilizat numai dup( opera'ia de m(rire a imaginii +nregistrate. 10.Eta$ele de $relucrare a IE rin prelucrarea datelor se intelege efectuarea unei serii de operatii functionale, logice si de calcul asupra unui fond de date informationale. 1peratiile functionale constau in consemnarea datelor in documente si ve%icularea lor dupa anumite reguli. 1peratiile logice se concretizeaza in sortarea, gruparea si aranjarea datelor luand in considerare continutul calitativ al informatiilor. 1peratiile de calcul iau in considerare continutul cantitativ al datelor informationale. #atele economice, din momentul aparitiei lor si pana in cel al valorificarii ca informatii in cadrul procesului de gestiune si decizional, trec prin mai multe etape operationale care formeaza ciclul de prelucrare a datelor, denumit in literatura de specialitate Efluxul informational economic&. *ceste etape sunt" ) *paritia (primirea) informatiei ) /ulegerea informatiei ) relucrarea informatiei ) ?ransmiterea si manipularea informatiei ) *naliza si utilizarea informatiei ) astrarea (stocarea) informatiei economice. SI! se compune dintr-un ansamblu de fluxuri informationale. In procesul de prelucrare a datelor se folosesc diferite mijloace materiale si te%nice precum si procedee, care alcatuiesc continutul acestui proces. Sistemul de prelucrare a datelor este un ansamblu de procedee, de mijloace materiale si te%nice folosite in procesul complex de culegere, prelucrare, transmitere, folosire si pastrare a tuturor informatiilor economice. >ijloacele te%nice de prelucrare a datelor constau din masini de calcul de birou, masini de birou specializate si ec%ipamente electronice. rocedeele de prelucrare a datelor reprezinta partea logica a prelucrarii datelor in vederea obtinerii informatiilor si indicatorilor economico-financiari. !le se intemeiaza pe principiile metodei contabilitatii. /ircuitele informationale desemneaza drumul, itinerarul pe care-l parcurg informatiile intre emitent si prelucrator, intre emitent si utilizator, implicit returul lor. 11(12.Unitatea economica

5 Unitatea economica este un sistem constituit din ansamblul resurselor materiale si umane strans legate prin relatii comerciale, economice, te%nice si sociale. Scopul functionarii unui astfel de sistem este producerea de bunuri materiale, lucrari sau servicii in diverse domenii, /aracteristic notiunii de sistem, este posibilitatea ca ansamblul de componente fizice si logice sa poata fi divizat in subsisteme. Structurarea sistemului in subsisteme se face dupa reguli stabilite in functie de scopul urmarit. #e exemplu, sistemul corespunzator unei unitati economice productive poate fi descopumpus in urmatoarele subsisteme " planificare-dezvoltare, productie, aprovizionare-desfacere, financiar-contabilitate, personal. 9olul sistemului informational este de a transmite informatia intre diferite elemente . #e exemplu, in cadrul unei unitati economice, roulul sistemului informational este de a asigura persoanele din conducere cu informatii necesare pentru luarea diferitelor decizii economice sau de alta natura.. 1#. Sistemul informational reprezinta ansamblul mijloacelor, metodelor si procedurilor pentru culegerea, transmiterea, prelucrarea si pastrarea informatiilor necesare conducerii pentru fundamentarea deciziilor. Intr-un sistem economic, sistemul informational asigura legatura in ambele sensuri intre sistemul condus (de executie) si sistemul conducator (decizional). Sistemul informational realizeaza legatura intre sistemul conducator si sistemul condus, fiind de fapt componenta modelatoare a sistemului condus rin perfectionarea sistemului informational ( rationalizare ) se urmareste realizarea urmatoarelor deziderate " ; Imbunatatirea calitatii informatiei ; /irculatia rationala a informatiei ; *sigurarea legaturilor inverse in reglarea sistemului ; =inalizarea circuitului informational printr-o decizie sau actiune ; /irculatia eficienta a informatiei prin eliminarea paralelismelor de informare si prelucrare repetata Sistemul informatic este acea parte a sistemului informa'ional in care opera'iile de culegere, transmitere, prelucrare si stocare a datelor se realizeaz( cu ajutorul calculatorului electronic in scopul solu'ion(rii obiectivelor sistemului. Sistemele informatice au la baza doua principii " ) introducerea unica a datelor ) prelucrarea multipla a datelor. *nsamblul de elemente implicate +n procesul de prelucrare si transmitere a datelor pe cale electronica alcatuiesc un sistem informatic. ,ntr-un sistem informatic pot intra " calculatoare, sisteme de transmisie a datelor, alte componente %ard-are, soft-er-ul, datele prelucrate, etc. 11. E*oluia ra$id- a te/nolo.iilor informaionale 2i e)tinderea domeniilor de utili,are a informaticii au impus realizarea unor strategii de proiectare 8i realizare a SI. In prezent aceste strategii pot fi clasificate in modul urm(tor" 1) In funcie de rolul SI in cadrul USE se disting 2 categorii de strategii& a) strategia ameliorativ(0 b) strategia inovatoare0 c) strategia adaptiv(. Strategia ameliorativ urm(re8te automatizarea activit('ilor 8i opera'iilor care au caracter repetitiv sau de rutin(. Sistemele informatice, elaborate dup( asemenea strategie, nu impun modific(ri in sistemul unit('ii, au un grad redus de complexitate, sunt lipsite de flexibilitate, nu folosesc personal numeros, iar timpul de implementare este scurt. Strategia inovatoare consider( c( implementarea SI trebuie inso'it( de sc%imb(ri importante in organizarea 8i func'ionarea sistemului US!. *ceste strategii presupun un timp mai mare pentru realizarea noului sistem, mai multe c%eltuieli, personal de inalt( calificare, dar care asigur( valorificarea facilit('ilor oferite de calculator. Strategia adaptiv se bazeaz( pe principiul invaria'iei sau modific(rilor lente impuse de existen'a proceselor 8i structurilor de baz( ale unit('ilor economice. !lementele informa'ionale invariante sunt surprinse in baza informa'ional( (AI) care ocup( locul central in cadrul SI. Strategia adaptiv( asigur( flexibilit('i sporite datorit( utiliz(rii conceptului de baz( informa'ional( care se transpune in colec'ii de date 8i care impreun( cu procedurile de creare, actualizare 8i exploatare constituie nucleul SI.

6 rin compara'ie, strategia ameliorativ( pleac( de la un set bine determinat de ie8iri in func'ie de care se determin( toate celelalte elemente ale sistemului (atribute de intrare, AI, algoritmi 8i proceduri de prelucrare etc.), in timp ce strategia adaptiv( incepe prin determinarea setului de intr(ri strict necesare asigur(rii AI in a8a fel incat aceasta s( modeleze cat mai complet sistemul unit('ii. .) In funcie de modalitatea de a3ordare 2i reali,are a SI se disting . categorii de strategii" a) strategia ascendent( F evolutiv( (botton F up)0 b) strategia descendent( (top F do-n) . Strategia ascendent evolutiv (de jos in sus) se bazeaz( pe principiul definirii 8i asambl(rii componentelor de nivel inferior in cadrul celor de nivel superior, cu precizarea c( integrarea componentelor s( fie f(cut( succesiv, pe m(sur( ce sunt definitivate. *dic(, in conformitate cu aceasta strategie, rezolvarea unei anumite probleme incepe cu rezolvarea problemelor minore. Solu'iile sunt agregate in vederea solu'ion(rii unei probleme mai complexe. Se procedeaz( astfel pan( ce se ajunge la varf, la solu'ionarea problemei generale (la nivel de US!). vanta!ul acestei strategii se explic( prin aceea c( SI se dezvolt( treptat in corela'ie cu cerin'ele reale ale utilizatorului. Unitatea economic( poate beneficia mai repede de rezultatele prelucr(rii automate a datelor, deoarece se familiarizeaz( cu noul sistem treptat. "ezavanta!ul acestei strategii se explic( prin necesitatea cunoa8terii in detaliu al domeniului problemei de rezolvat, inainte de trecerea la rezolvarea propriu-zis(. #e asemenea, prin gradul redus de integrare al aplica'iilor, datorit( unei concep'ii de ansamblu care poate conduce la reproiectarea anumitor aplica'ii. Strategia descendent este opusa celei ascendente, abordand problema de la general la particular, de sus in jos. *re principiul diviz(rii unui sistem complex pe niveluri succesive de detaliere pan( la ob'inerea unor componente simple 8i independente abordate 8i dezvoltate separat. *ceast( strategie confer( SI o structur( modular( de tip arborescent, in care componentele fiec(rui nivel sunt controlate 8i coordonate de componentele nivelului imediat superior. *ceasta strategie prezint( avanta!ul ca ofer(, in orice moment, o imagine de ansamblu asupra problemei de rezolvat. Strategia prezint( 8i unele dezavanta!e, cum ar fi" angrenarea unui personal numeros privind analiza complex( a sistemului informa'ional existent 8i crearea modelului de ansamblu al SI, prelungirea timpului de realizare a SI, eventualitatea erorilor in definirea structurii 8i a rela'iilor dintre componentele SI care pot afecta activitatea ulterioar(. #e men'ionat c(, strategiile ascendent( 8i descendent( se pot folosi in practic( intr-o form( combinat(, prin definirea modular(, de ansamblul a SI. >odulele proiectate pot fi determinate prin metoda descendent(, iar asamblarea acestora se realizeaz( prin strategia ascendent(. In concluzie, alegerea uneia dintre strategii depinde de sistemul proiectat 8i poate influen'a costurile de realizare, m(rindu-le sau mic8orandu-le. >ultitudinea strategiilor de realizare a SI impune succesiunea parcurgerii unor etape 8i faze privite ca stadii succesive de dezvoltare a SI . 14. 5rinci$alele eta$e de $arcurs $entru reali,area unui sistem informatic sunt & *naliza sistemului existent F se studiaza sistemul informatic existent si se stabilesc neajunsurile sale si cerintele ce urmeaza a fi satisfacute de viitorul sistem informatic. ,n acesta etapa se stabileste rentabilitatea folosirii sistemului informatic. roiectarea sistemului informatic F se concepe sistemul, elementele componente ale acestuia, structura lor si modul de realizare.#atorita complexitatii, aceasta etapa este la rCndul ei descompusa +n doua etape " roiectarea de ansamblu F se stabileste ar%itectura de ansamblu, modul de descompunere pe componente, intrarile si iesirile sistemului. Se finalizeaza printr-o sc%ema de ansamblu a sistemului +n care sunt incluse toate aceste elementele. roiectarea de detaliu F fiecare element descris +n etapa anterioara este descris +n detaliu. !laborarea programelor F se scriu programele sistemului +ntr-umn limbaj ales anterior. Implementarea sistemului F dupa ce a fost realizat sistemul se trece la implementarea sa. !xploatarea si +ntretinerea sistemului F aceasta este faza finala a proiectului +n care se trece la exploatarea acestuia. !ste necesara +n paralel si o serie de operatii de +ntretinere a acestuia.

7 1+.Ti$uri de date. Structuri de date. Un ti$ de date nu este altceva dec+t o mul'ime de valori pe care sunt definite anumite operatii. !xemple" +n ascal tipul boolean este o mul'ime cu dou( elemente. *ceste dou( elemente se noteaz( +n ascal cu false 8i true. =alse 8i true se numesc de aceea valori booleene. ?ipul integer este tot o mul'ime care include, printre altele, ni8te elemente (valori) care +n ascal se noteaz( cu -., -1, B, 1, ., 2 etc. ?ipul integer este un tip interesant, pentru c( +8i propune s( mimeze mul'imea matematica G a numerelor +ntregi, dar nu reu8e8te prea bine, pentru c( mul'imea integer este finit(, iar G nuH !lementele tipului integer sunt numite valori +ntregi O structur- de date este o metod( de stocare a informa'iilor +ntr-un calculator +n a8a fel +ncCt ele s( poat( fi folosite +n mod eficient. #eseori o alegere bine f(cut( a structurii de date va permite 8i implementarea unui algoritm eficient. Structura de date aleas( este derivat( de multe ori dintr-un tip de dat( abstract. 1 structur( de date bine conceput( permite efectuarea unei variet('i de opera'ii de baz(, utilizCnd pu'ine resurse (ca de exemplu memoria necesar( 8i timpul de execu'ie). 16.Ti$uri fundamentale $imbajul ascal (standard) con'ine patru tipuri gata construite. e acestea le numim tipuri fundamentale. !le sunt" real, integer, c%ar, boolean entru boolean am v(zut boolean I J false, true K entru integer am putea scrie ceva de genul integer # $n%& ' limita!os ( n ) limitasus* limitajos 8i limitasus depind de dialectul de ascal folosit. entru ?urbo ele sunt (dup( cum am zis) -2.657, respectiv 2.657. entru c%ar lucrurile sunt grele pentru c( exist( unele caractere care nu au o reprezentare evident(H ?ot ce putem spune este c( aceast( mul'ime include mul'imea JLaL, LbL, ...L*L, LAL, ..., LBL, ..., LHL, ...K a caracterelor care pot fi tip(rite. Iar pentru real lucrurile sunt 8i mai +nc+lcite, pentru c(, de8i real se dore8te o imagine a mul'imii 9 a numerelor reale, +n realitate real este finit( 8i are elementele distribuite +ntr-un mod foarte ciudat pe axa real( (nici m(car dou( elemente ale ei nu sunt ec%idistante)H *ceasta mul'ime este subiectul analizei numerice, care studiaz( cum putem face calcule c+nd putem manipula numai aproxim(ri ale valorilor. 17.Ti$uri deri*ate. ?ipurile derivate sunt tipuri definite de c(tre utilizator, bazate pe tipurile de date de baza. *ceste tipuri derivate permit prelucrarea global a unor grupe complexe de date. !lementele unei astfel de grupe de date pot fi la rCndul lor grupe de alte date. .B. "lase de memorie& automatic-( e)tern-( static-( re.istru.8aria3ile automatice sint variabile locale fiec(rui bloc sau func'ii. !le se declar( prin specificatorul de clas( de memorie auto sau implicit prin context. 1 variabil( care apare +n corpul unei func'ii sau al unui bloc pentru care nu s-a f(cut nici o declara'ie de clas( de memorie se consider( implicit de clas( auto. 1 variabil( auto este actualizat( la fiecare intrare +n bloc 8i se distruge +n momentul c+nd controlul a p(r(sit blocul. !le nu +8i re'in valorile de la un apel la altul al func'iei sau blocului 8i trebuie ini'ializate la fiecare intrare. #ac( nu s+nt ini'ializate, con'in valori reziduale. Mici o func'ie nu are acces la variabilele auto din alt( func'ie. ,n func'ii diferite pot exista variabile locale cu acelea8i nume, f(r( ca variabilele s( aib( vreo leg(tur( +ntre ele. 8aria3ile e)terne :ariabilele externe s+nt variabile cu caracter global. !le se definesc +n afara oric(rei func'ii 8i pot fi apelate prin nume din oricare func'ie care intr( +n alc(tuirea programului. ,n declara'ia de defini'ie aceste variabile nu necesit( specificarea nici unei clase de memorie. $a +nt+lnirea unei defini'ii de variabil( extern( compilatorul aloc( 8i memorie pentru aceast( variabil(. *ceste variabile exist( 8i +8i p(streaz( valorile de-a lungul execu'iei +ntregului program. entru ca o func'ie s( poat( utiliza o variabil( extern(, numele variabilei trebuie f(cut cunoscut func'iei printr-o declara'ie. #eclara'ia poate fi f(cut( fie explicit prin utilizarea specificatorului extern, fie implicit prin context. #ac( defini'ia unei variabile externe apare +n fi8ierul surs( +naintea folosirii ei +ntr-o func'ie particular(, atunci nici o declara'ie ulterioar( nu este necesar(, dar poate fi f(cut(. #ac( o variabil( extern( este referit( +ntr-o func'ie +nainte ca ea s( fie definit(, sau dac( este definit( +ntr-un fi8ier surs( diferit de fi8ierul +n care este folosit(, atunci este obligatorie o declara'ie extern pentru a lega apari'iile variabilelor respective. #ac( o variabil( extern( este definit( +ntr-un fi8ier surs( diferit de cel +n care ea este referit(, atunci o

N singur( declara'ie extern dat( +n afara oric(rei func'ii este suficient( pentru toate func'iile care urmeaz( declara'iei. =unc'iile s+nt considerate +n general variabile externe afar( de cazul c+nd se specific( altfel. :ariabilele externe se folosesc adeseori +n locul listelor de argumente pentru a comunica date +ntre func'ii, c%iar dac( func'iile s+nt compilate separat. 8aria3ile statice se declar( prin specificatorul de clas( de memorie static. *ceste variabile s+nt la r+ndul lor de dou( feluri" interne 8i externe. :ariabilele statice interne s+nt locale unei func'ii 8i se definesc +n interiorul unei func'ii, dar spre deosebire de variabilele auto, ele +8i p(streaz( valorile tot timpul execu'iei programului. :ariabilele statice interne nu s+nt create 8i distruse de fiecare dat( c+nd func'ia este activat( sau p(r(sit(0 ele ofer( +n cadrul unei func'ii o memorie particular( permanent( pentru func'ia respectiv(. *lte func'ii nu au acces la variabilele statice interne proprii unei func'ii. !le pot fi declarate 8i implicit prin context0 de exemplu 8irurile de caractere care apar +n interiorul unei func'ii cum ar fi argumentele func'iei printf (vezi capitolul 11) s+nt variabile statice interne. :ariabilele statice externe se definesc +n afara oric(rei func'ii 8i orice func'ie are acces la ele. *ceste variabile s+nt +ns( globale numai pentru fi8ierul surs( +n care ele au fost definite. Mu s+nt recunoscute +n alte fi8iere. ,n concluzie, variabila static( este extern( dac( este definit( +n afara oric(rei func'ii 8i este static intern( dac( este definit( +n interiorul unei func'ii. ,n general, func'iile s+nt considerate obiecte externe. !xist( +ns( 8i posibilitatea s( declar(m o func'ie de clas( static. *ceasta face ca numele func'iei s( nu fie recunoscut +n afara fi8ierului +n care a fost declarat(. 8aria3ile re.istru se declar( prin specificatorul de clas( de memorie register. /a 8i variabilele auto ele s+nt locale unui bloc sau func'ii 8i valorile lor se pierd la ie8irea din blocul sau func'ia respectiv(. :ariabilele declarate register indic( compilatorului c( variabilele respective vor fi folosite foarte des. #ac( este posibil, variabilele register vor li plasate de c(tre compilator +n regi8trii rapizi ai calculatorului, ceea ce conduce la programe mai compacte 8i mai rapide. :ariabile register pot fi numai variabilele automatice sau parametrii formali ai unei func'ii. ractic exist( c+teva restric'ii asupra variabilelor register care reflect( realitatea %ard-are-ului de baz(. *stfel" O numai c+teva variabile din fiecare func'ie pot fi p(strate +n regi8tri (de obicei . sau 2)0 declara'ia register este ignorat( pentru celelalte variabile0 O numai tipurile de date int, c%ar 8i pointer s+nt admise0 O nu este posibil( referirea la adresa unei variabile register. 21.date sim$le. ti$ de date I colectie de entitati de tip data (obiecte) si un set de operatii peste aceste obiecte. pot fi de urm(toarele tipuri de date elementare" - numeric - care includ numerele +ntregi, reale 8i complexe 8i asupra c(rora se pot realiza opera'ii de adunare, sc(dere, etc.0 - logic (boolean) - folosite pentru precizarea valorilor Dst(rilor de adev(r (?9U!, P!S) sau neadev(r (=*$S!, M1)0 asupra acestora se pot efectua opera'ii logice" *M#, 19, M1?0 - caracter (c%ar)- care con'in o mul'ime de caractere alfanumerice, +n cadrul acestora putCndu-se defini opera'ii de concatenare, ordonare etc.0 - pointer - care con'in adrese c(tre alte date elementare0 un pointer are ca valoare o adres( de memorie la care se afl( o alt( valoare, cea referit(0 tipurile de pointeri sunt Elegate&, c%iar la compilare, de tipurile valorilor referite0 - etic%et( Dreferin'( - care con'in valori ce localizeaz( instruc'iuni +n programe. ?oate aceste tipuri de date sunt elemente indivizibile ale limbajelor de programare, iar structura lor intern(, nu este accesibil( programatorului. #ate elementare 22. date sim$le.re$re,entare. e$re,entarea intern- a datelor numerice naturale 9:ntre.i f-r- semn% :irgul( fix( aritmetic( (1 sau . octeti ). /odul utilizat" cod directD laja de valori" QB, .7-1R 1 B e$re,entarea intern- a datelor numerice :ntre.i 9:ntre.i cu semn% :irgul( fix( algebric( (1, . sau 3 octe'i). ) /odul utilizat" - pentru numere pozitive" cod direct - pentru numere negative" cod complementar ) laja de valori" Q-.6, .6-1R s 6 5 1 B e$re,entarea intern- a datelor numerice reale :irgul( mobil( Mormalizare" n I (-1)la put. s S 1,frac'ie S . la put. !xponent /aracteristica I exponent T 1.6 simpl( precizie /aracteristica I exponent T 1B.2 dubl( precizie ) /odul utilizat" cod direct ) laja de valori" 6

1B - simpl( precizie" Q-1B27, 1B27R - dubl( precizie" Q-1B2B6, 1B2B6R e$re,entarea intern- a datelor alfa3etice 2i alfanumerice /odul *S/II un caracter pe octet .45 de caractere distincte e$re,entarea intern- a datelor lo.ice ) adev(rat - 1 reprezentat +n virgul( fix(, pe un octet ) fals - B reprezentat +n virgul( fix(, pe un octet 2#. masi*e unidimensionale( 3idimensionale. Un masiv(tablou) este un ansamblu omogen de variabile, numite componentele tabloului, in care toate variabilele componente apartin aceluiasi tip si sunt identificate cu ajutorul indicilor. Un tablou unidimensional este un tablou in care componentele sunt identificate cu ajutorul unui singur indice. #e exemplu, daca numele variabilei tablou este a si multimea valorilor pentru indice este JB0 10 .0 ...0 n1K,atunci variabilele componente sunt aQBR, aQ1R, aQ.R, ..., aQn-1R. >emoria alocata unui tablou 1-dimensional este o secventa de locatii, cite o locatie pentru fiecare componenta. 1rdinea de memorare a componentelor este data de ordinea indicilor. 1peratiile asupra tablourilor se realizeaza prin intermediul componentelor. rezentam ca exemplu initializarea tuturor componentelor cu B"for iIB to n-1 do aQiR B Un tablou bidimensional este un tablou in care componentele sunt identificate cu ajutorul a doi indici. #e exemplu, daca numele variabilei tablou este a si multimea valorilor pentru primul indice este JB0 10 .0 ...0 n-1K, iar multimea valorilor pentru cel de-al doilea indice este JB0 10 .0 ...0 m-1K atunci variabilele componente sunt aQB,BR, aQB,1R,..., aQB,m-1R, ..., aQm-1,BR, aQm-1,1R,..., aQm-1,n-1R. /a si in cazul tablourilor 1-dimensionale, memoria alocata unui tablou bidimensional este o secventa de locatii, cite o locatie pentru fiecare componenta. 1rdinea de memorare a componentelor este definita peste indici.

>asive n-dimensionale Iun masiv cu mai multe dimensiuni, se declara astfel"tip nume;n1<;n2<. . .;n$< E)&lon. 3;7<;+<;6<;;4<= am declarat un tablou cu 1 dimensiuni, unde tipul de baza este lon. 21.>iste de date. $ista este o mulime dinamic, inelegand prin aceasta faptul c ea are un numr variabil de elemente. $a inceput lista este o mulime vida. In procesul execuiei programului se pot aduga elemente noi listei i totodat pot fi eliminate diferite elemente din list. 1rdonarea elementelor unei liste se face cu ajutorul pointerilor care intra in compunerea elementelor listei. #atorita acestor pointeri, elementele listei devin structuri recursive. $istele organizate in acest fel se numesc liste inlantuite. 5rin definitie( o multime dinamica de structuri recursi*e de acelasi ti$( $entru care sunt definite una sau mai multe relatii de ordine cu a?utorul unor $ointeri din com$unerea structurilor res$ecti*e( se numeste lista inlantuita. !lementele unei liste se numesc noduri. #aca intre nodurile unei liste exista o singura relatie de ordine, atunci lista se numeste sim$lu inlantuita. In mod analog, lista este du3lu inlantuita daca intre nodurile ei sunt definite doua relatii de ordine. 1 lista este n-inlantuita daca intre nodurile ei sunt defi-nite n relatii de ordine. 1peratii ce tin de o lista inlantuita" a) crearea listei inlantuite0 b) accesul la un nod oarecare al listei0 c) inserarea unui nod intr-o lista inlantuita0 d) stergerea unui nod dintr-o lista inlantuita0

11 e) stergerea unei liste inlantuite. #0."rearea listelor( eliminarea unui element. $a crearea unei liste simplu inlantuite se realizeaza urma-toarele" a) Se initializeaza pointerii prim si ultim cu valoarea zero, deoarece la inceput lista este vida. b) Se rezerva zona de memorie in memoria %eap pentru nodul cu-rent. c) Se incarca nodul curent cu datele curente, daca exista si apoi se trece la pasul d). *ltfel lista este creata si se revine din functie. d) Se atribuie adresa din memoria %eap a nodului curent pointeru-lui" ultim -U urm, daca lista nu este vida0 prim -U urm, daca lista este vida. e) Se atribuie lui ultim adresa nodului curent. f) ultim -U urm I B g) rocesul se reia de la punctul b) de mai sus pentru a adauga un nod nou la lista. Se au in vedere urmatoarele cazuri" a) stergerea primului nod al listei simplu inlantuite0 b) stergerea unui nod precizat printr-o c%eie0 c) stergerea ultimului nod al listei simplu inlantuite. =unctiile de stergere utilizeaza functia elibnod. *ceasta functie elibereaza zona de memorie alocata nodului care se sterge, precum si eventualele zone de memorie alocate suplimentar prin intermediul functiei incnod pentru a pastra diferite compo-nente ale unui nod (de exemplu componente de tip sir de carac-tere). 24.O >ista liniara-?ipul de date abstract $$IM- 1 lista liniara simplu inlantuita este o inlantuire de structuri, numite noduri, in care fiecare nod, exceptand ultimul, cunoasteV adresa nodului de dupa el (nodul succesor). In forma sa cea mai simpla,un nod v este o structura cu doua campuri" un cimp v-Uelt pentru memorarea informatiei si un cimp v-Usucc care memoreaza adresa nodului succesor. Se presupune ca se cunosc adresele primului si respectiv ultimului nod din lista. $ista liniara simplu inlantuita este o structura de date dinamica in sensul ca pot fi inserate sau eliminate noduri cu conditia sa e pastrata proprietatea de inlantuire liniara. =iecare componenta a listei liniare este memorata intr-un nod al listei simplu inliantuite. !xista doi pointeri $.prim Wsi $.ultim care fac referire la primul si respectiv ultimul nod.

$ista se nume8te simplu inlantuita pentru ca fiecare element din lista contine o singura informatie de legatura, o singura adresa 8i anume adresa la care se afla urmatorul element din lista.*vem o singura exceptie 8i anume ultimul element din lista care are in campul de adresa cuvantul MU$ adica nici o adresa./u aceasta structura dinamica se pot face urmatoarele operatii" ListaVida. $.prim I $.ultim I MU$$. EsteVida. !ste sucient sa se testeze daca pointerul $.prim este egal cu MU$$.Lung. arcurge lista si contorizeaza fiecare nod parcurs. Copie. arcurge lista sursa si adauga la lista destinatie o copie a fiecarui nod parcurs. Egal. arcurge simultan cele doua liste si compara perec%ile de noduri corespunzatoare.Poz. Se aplica te%nica cautarii secventiale" se pleaca din primul nod si se interog%eaza nod cu nod pina cind este gasit primul care memoreaza pe x sau au fost epuizate toate nodurile.Parcurge. Se parcurge lista nod cu nod si se aplica procedura :iziteaza. Citeste. entru a putea citi informatia din cel de-al @-lea nod, este necesara parcurgerea secventiala a primelor @-noduri. nsereaza. /a si in cazul operatiei de citire, este necesara parcurgerea secventiala a primelor @-1 noduri (noul nod va fi al @-lea). #aca avem @ I B sau @ UI $ung($) atunci pointerii prim si respectiv ultim se actualizeaza corespunzator.Elimina!eLa". Se realizeaza intr-o maniera asemanatoare cu cea a operatiei de inserare. Elimina. Se parcurge lista secvential si fiecare nod care memoreaza un element egal cu e este eliminat. 2'.>istele liniare du3lu inlantiuite este o inlantuire de structuri, numite noduri, in care fiecare nod, exceptand ultimul, cunoaste Vadresa nodului de dupa el (nodul succesor)V si Eadresa nodului din fata sa (nodul predecesor)&. In forma sa generale,un nod v este o structura cu 2 campuri" un cimp v-Uelt pentru memorarea informatiei ,un cimp

1. v-Usucc care memoreaza adresa nodului succesor si v-Upred care memoreaza adresa nodului predecesor. 1 lista liniara dublu inlantuita este reprezentata grafic ca

2+.structura de date de ti$ lista@ este o structura de date logica, liniara, cu date omogene, in care fiecare element are un succesor si un predecesor, exceptind primul element care n-are decit succesor si ultimul care nare decit predecesor. /onsideram un nod al listei simplu inlant.de forma" info *dresa rm. urm.el.

26. structura autoreferita $entru noduri9$ointeris$re elementul urmator( informatie utila % ex." relucrarea informatiei utile trebuie externalizata in raport cu componentele bibliotecilor dedicate structurilor de date. dacda pointerul spre capul listei este pWcapWlista, atunci referirea membrilor structurii student se realizeaza cu expresiile de referire" pWcapWlista-UnumeWstud pWcapWlista-UprenumWstud pWcapWlista-Uvarsta pWcapWlista-UnoteWstudQiR pWcapWlista-UlicentaWgrila pWcapWlista-UlicentaWproiect !xpresia" pWcapWlista-Upnext-UlicentaWgrila refera nota de la grila pentru studentul a carui situatie scolara este memorata in elementul urmator celui referit prin variabila pointer pWcapWlista 27.5 O"EDU I E"U SI8E /ontin" - linia de definire cu tip rezultat returnat, nume procedura, lista de parametri - o conditie cu care se initializeaza o variabila - autoapelul procedurii ce include si expresia de referire element urmator. 5 O"EDU I NE E"U SI8E /ontin" - linia de cod de definire procedura" tip rezultat returnat, nume, lista de parametri - memorarea adresei primului element - structura -%ile() sau for() pentru traversarea structurii - instructiune pentru asigurarea trecerii de la un element la altul al structurii - returnare rezultat. #0."rearea listelor( eliminarea unui element.

12 $a crearea unei liste simplu inlantuite se realizeaza urma-toarele" a) Se initializeaza pointerii prim si ultim cu valoarea zero, deoarece la inceput lista este vida. b) Se rezerva zona de memorie in memoria %eap pentru nodul cu-rent. c) Se incarca nodul curent cu datele curente, daca exista si apoi se trece la pasul d). *ltfel lista este creata si se revine din functie. d) Se atribuie adresa din memoria %eap a nodului curent pointeru-lui" ultim -U urm, daca lista nu este vida0 prim -U urm, daca lista este vida. e) Se atribuie lui ultim adresa nodului curent. f) ultim -U urm I B g) rocesul se reia de la punctul b) de mai sus pentru a adauga un nod nou la lista. Se au in vedere urmatoarele cazuri" a) stergerea primului nod al listei simplu inlantuite0 b) stergerea unui nod precizat printr-o c%eie0 c) stergerea ultimului nod al listei simplu inlantuite. =unctiile de stergere utilizeaza functia elibnod. *ceasta functie elibereaza zona de memorie alocata nodului care se sterge, precum si eventualele zone de memorie alocate suplimentar prin intermediul functiei incnod pentru a pastra diferite compo-nente ale unui nod (de exemplu componente de tip sir de carac-tere). #1. >ista sim$la este o structura dinamica. Se caracterizeaza prin" - o variabila pointer care contine adresa unei zone de memorie numita primul element al listei. - zona de memorie se compune din doua subzone" o zona cu informatii utile si o variabila pointer ce contine adresa elementului urmator - celelalte elemente ale listei legate intre ele - ultimul element al listei care are variabila pointer initializata cu MU$$ pentru a marca inexistenta unui element urmator. /rearea listei se efectueaza prin adaugare de elemente. >ai intai se aloca zona de memorie. #upa aceea se initializeaza cu MU$$ variabila pointer.Se initializeaza campurile corespunzatoare informatiei utile. *ceasta parte difera de la aplicatie la aplicatie si de aceea trebuie externalizata procedurii. Se construiesc legaturile zonei alocate si initializate cu restul listei simple existetnta. entru o lista definita cu informatia utila ca articol, careia ii corespunde descrierea, iar initializarea presupun atribuiri si apelul functiei strcpX(). Inserarea se realizeaza pentru" - un element adiacent - pentru element neadiacent - pentru siruri de elemente. Inserarea unui element in lista nevida presupune doua instructiuni de atribuire. In cazul listei vide inserarea presupune alipirea elementului de adaugat ca prim element. $uarea in considerare a situatiei in care lista este vida si a situatiei in care lista nu este vida se testeaza daca lista este au nu vida. Inserarea ca prim element presupune initializari de pointeri. rocedura de inserare" rocedure Inserare($, @, e) begin If (@YB) t%en t%ro- E!9919&0 ne-(Z)0 Z-UeltY-e0 if((@IB) or ($.primIMU$$)) t%en Z-UsuccY-$.prim0 $.primY-Z0 if($.ultimIMU$$) t%en $.ultimY-Z else pY-l.prim0 iY-B0

13 -%ile((pYU$.ultim) and (iY@-1)) do iY-iT10 pY-p-Usucc0 Z-UsuccY-p-Usucc0 p-UsuccY-Z0 if(pI$.ultim) t%en $.ultimY-Z0 end0 /a si in cazul operattiei de citire, este necesara parcurgerea secventiala a primelor @-1 noduri (noul nod va fi al @lea). #aca avem @ I B sau @ UI$ung($) atunci pointerii prim si respectiv ultim se actualizeaza corespunzator. #eoarece operatia de adaugare a unui nod dupa o adresa data se realizeaza in timpul 1(1), rezulta ca operatia de inserare necesita timpul 1(n) in cazul cel mai nefavorabil. #2. Determinai num-rul elementelor dintr-o list-. nrWelem(QR, B). nrWelem(QW [ 9estR, M) "- nrWelem(9est, M1), M is M1 T 1. #ac( lista este vid(, numarul elementelor sale este zero" aceasta este condi'ia de oprire a recursivit('ii. In cea de a doua clauz(, primul element din list( nu ne intereseaz(, vrem doar s( il elemin(m ca s( num(r(m cate elemente are lista r(mas(. N-ul ini'ial va fi, binein'eles, egal cu 1 plus num(rul elementelor din lista r(mas(. ##.Structuri ta3elare Sintaxa de declarare a unei variabile-structuri e urmatoarea" Struct nume#structura nume#variabila$ $ista elementelor din structura poarta numele de sablon. 1 structura, ca atare nu declara nici o variabila. !lementele unei structuri nu sint variabile aparte ele sunt componente ale uneisai a mai multor variabile. *stfel de variabile se numesc struturale si trebuie declarate ca fiind de tipul structurii respective. Sablunul respective va descrie aceste componente, astfel va fi determinat volumul de memorie necesar de rezervat pentru fiecare variabila structurata de tip inregistrare. ?ipul structura este un tip compus, ceea ce inseamna ca o variabila de acest tip poate fi alcatuita din citeva elemente simple sau compuse, care la rindul sau deasemenea pot sa contina alte elemente.acest fapt da posibilitatea folosirii unor structuri in calitate de cimpuri pentru alte structuri(structuri imbricate). /antitatea de niveluri de structuri imbricate t%eoretic poate fi infinita, insa nu se recomanda de a folosi foarte multe nivele imbricate din cauza sintaxei incomode. entru a sistematiza inf pastrata intro mltime de inscrieri este binevenita declararea unui masiv de structuri. #1. e$re,entarea matricelor."aracteristici. >atricea este o structura statica formata din elemente de acelasi tip, referite cu doua expresii indiciale, corespunzatoare liniilor si coloanelor./a structura agregata, matricea este un vector de vectori. M!T I"E "OM5>ET! !ste o structura definita ca numar de linii si numar de coloane in care cea mai mare majoritate a elementelor este formata din valori nenule. >atricea completa se defineste prin" - tip - nume - numar de linii - numar de coloane. M!T I"E ! ! !ste matricea in care mai putin de 2B\ diin elemente sunt nenule, celelalte fiind nule. Se reprezinta prin" - structuri statice cu ajutorul a 2 vectori ce contin" pozitia liniei, pozitia coloanei si valoarea elementului nenul - structuri dinamice" liste de liste0 lista de baza contin indicii liniilor cu elementelor nenule, iar listele derivate contin indicii coloanelor si valorile elementelor nenule. Matricea 3anda este acea matrice care are elemente nenule in jurul diagonalei. Matricea triun./iulara- este matricea cu elemente nule sub diagonala principala. Se pun in corespondenta elementele nenule ale matricei cu elementele unui vector. M!T I"E SIMET I"! !ste matricea cu M linii si M coloane pentru care aQiRQjRIaQjRQiR +,. -peratii cu matrice adunare, scadere, inmultire, inversare matrice . #'. Modele asociate matricelor

14 ; MODE>U> !N!>ITI" resupune descrierea foarte riguroasa a structurii de date folosind o serie de functii precum" addr() - indica adresa elementului cont() - continutul elementului lg() - lungimea in baiti ocupata de element tip() - tipul elementului succ() - succesorul elementului pred() - predecesorul elementului. Un vector definit prin" float alfaQ.BRIJ1,.,2,3,4,5,6,7,N,1B,11,1.,12,13,14,15,46,17,1N,.BK0 se descrie riguros astfel" tip(alfaQBR)Itip(alfaQ1R)I....Itip(alfaQ1NR)Ifloat lg(alfaQBR)Ilg(alfaQ1R)I....Ilg(alfaQ1NR)Ilg(float)I3 succ(alfaQiR)IalfaQiT1R, iIB,1,.,2,...,17 succ(alfaQ1NR)IMU$$ pred(alfaQiR)IalfaQi-1R, iI1,.,...,1N pred(alfaQBR)IMU$$ pred(succ(alfaQiR))IalfaQiR succ(pred(alfaQiR))IalfaQiR cont(alfaQ1.R)I1. cont(alfaQ16R)I46 addr(alfaQ1R)Iaddr(alfaQBR)Tlg(float) addr(alfaQiR)Iaddr(alfaQBR)TiSlg(float) A MODE>U> B!C!T 5E D !FU> !SO"I!T /onsta in a desena pentru fiecare element din structura un nod si a lega nodurile cu arce, exact cum se construieste un graf la disciplina de cercetari operationale. A MODE>U> D !FI" resupune reprezentarea elementelor care alcatuiesc structura sub forma unor dreptung%iuri in care se diferentiaza pointerii care asigura legaturile si informatia utila. entru lista simpla desenul asociat unei componente are in alcatuire doua dreptung%iuri alipite, unul pentru informatia utila si altul pentru pointerul de referire a elementului urmator din lista. :ectorul se reprezinta ca un sir de dreptung%iuri lipite unul de altul. umarul de dreptung%iuri este egal cu numarul de element din vector. >atricea se reprezinta prin" - un vector de pointeri caruia ii corespunde un sir de dreptung%iuri lipite unul@ de altul, egal ca numar cu numarul de linii din matrice- de fiecare element din vectorul de pointeri se dezvolta o legatura spre un sir de dreptung%iuri lipite unul de latul, avand numarul de elemente egal cu numarul de coloane a amtricei. >ai apare si un dreptung%i cu care se refera vectorul de pointeri, el reprezentatnd un pointer spre pointeri. A MODE>U> TEETU!> !ste bazat pe utilizarea unei descrieiri cat mai riguroase folosind cuvintele limbii romane, de exemplu. :!/?19U$ este o insiruire de elemente care ocupa zone de memorie de aceeasi lungime, lipite unele de altele, al caroro continut este interpretat dupa aceleasi reguli. :ectorul se refera in intregime sau pe elemente. *9A19!$! AIM*9 !=!/? !/]I$IA9*? este o structura dinamica formata din elemente dispuse pe niveluri. e primul nivel se afla un singur nod, numit nod radacina, care nu are nod parinte. Modul radacina si nodurile intermediare au obligatoriu cate doi descendenti. Modurile de pe ultimul nivel nu au descendenti. *ceste noduri se numesc M1#U9I =9UMG*. #aca arborele perfect ec%ilibrat are 4 biveluir" - pe primul nivel se afla nodul radacina, unul singur - pe al doilea nivel se afla cei doi descendenti ai nodului radacina - pe nivelul al treilea se afla 3 descendenti

15 - pe nivelul al patrulea se afla 7 descendenti - pe ultimul nivel se afla 15 descendenti. In total arborele este compus din 1W.W3W7W15 noduri adica 21 noduri sau . la puterea a 4-a sin care se scade o unitate. Un arbore ec%ilibrat perfect cu M niveluri va avea . la puterea M -1 noduri, daca numararea nivelurilor incepe cu G!91. #+. !locarea resurselor la stocarea matricelor& in cazul crearii statice a matricelor elementele ei se aranjeaza in memorie unul dupa altul, iar daca sunt elemente prevazute de dimensiunea matricei dar neintroduse, se rezerveaza memorie si pentru ele. In cazul crearii dinamice elementele matricei se aranjeaza acolo unde se gaseste spatiul liber, deoarece se regasesc usor elementele prin pointeri, si daca se presupune ca este o matrice dar se introduce o singura linie atunci pentru restul nu se aloca spatiu ca in cazul crearii statice. #6. !>O"! E! DIN!MI"! ! MEMO IEI $imbajul / permite utilizatorului sa aloce date atCt pe stiva (date automatice) cCt si zone de memorie care nu apartin stivei (date globale sau statice). *locarea datelor pe stiva se face la executie si ea nu este permanenta. *stfel, daca declaratia" tip nume0 se utilizeaza +n corpul unei functii, atunci variabila nume se aloca pe stiva la fiecare apel al functiei respective. $a revenirea din functie, stiva se curata si prin aceasta variabila nume nu mai este alocata. 1 alocare de acest tip a memoriei se numeste dinamica. entru datele globale sau statice, memoria este alocata +n fazele precedente executiei si alocarea ramCne valabila pCna la terminarea executiei programului. #e aceea, pentru datele de acest fel se spune ca alocarea este statica(nu este dinamica). $imbajul / ofera posibilitatea de a aloca dinamic memorie si +n alt mod decCt cel indicat mai sus pentru datele automatice. *ceasta se realizeaza +ntr-o zona de memorie speciala, diferita de stiva. *ceasta zona de memorie se numeste memorie %eap(memorie gramada, morman, de acumulare). !a poate fi gestionata prin functii standard. #7.Notiune de $ointeri si referinte( caracteristicile. Un pointer este o variabila care are ca si valori adrese, deci un pointer (indicator) reprezinta adrese ale unor zone de memorie asociate unor variabile. :ariabilele pointer din punct de vedere al continutului de memorie pe care il adreseaza pot fi de mai multe categorii" -un pointer de date, care contine adresa unei variabile sau a unei constante din memorie -un pointer de functii, care contine adresa codului executabil al unei functii -un pointer de obiecte care contine in principiu adresa unui obiect in memorie deci adrese de date si functii. *cesti pointeri generalizeaza primele doua categorii. Un pointer generic (void) ce poate contine adresa unui obiect oarecare. 10."rearea si distru.erea $ointerilor ointerii sunt variabile sau constante care au ca valori adrese ale unor variabile, adic( adrese ale unor loca'ii de memorie. !i permit calcule cu adrese, calcule care sunt specifice limbajelor de asamblare 8i sunt folosi'i in scopul scrierii unor programe mai eficiente atat din punctul de vedere al timpului de execu'ie cat 8i din punctul de vedere al utiliz(rii resurselor %ard, in mod concret al utiliz(rii memoriei computerelor. ointerii sunt in mod special utili la alocarea dinamic( a memoriei 8i la apelul prin referin'(. ointerii nu pastreaza o valoare in sens traditional ci adresa unei variabile. Un pointer indica (VpointeazaV) o alta variabila pastrand o copie a adresei acestei variabile. #eoarece pointerii pastreaza adrese si nu valori VtraditionaleV, ei pot fi vazuti ca fiind compusi din doua parti" pointerul insusi si valoarea pe care o indica0 pointerul insusi pastreaza o adresa, iar adresa respectiva indica o valoare. ointerii se declar( ca orice variabil(, deosebirea constand doar in faptul c( numele lor este precedat de caracterul S care reprezeint( operatorul unar de indirectare sau de dereferentiere. entru initializarea pointerilor se poate folosi operatorul unar ^, numit operator de referentiere si care returneaza adresa argumentului sau. #eclararea pointerilor se face in modul urmator" ti$ FnumeG$ointer= unde tip este un tip de date de baza sau tip utilizator, iar numeWpointer este un identificator folosit pentru pointerul care se declara. ointerii se distrug in felul urmator" delete9numeG$ointer% 11. Inlantuiri de $ointeri. In memorie, listele pot fi reprezentate prin structuri statice (tablouri) sau prin structuri dinamice (liste inlantuite). Spatiul de memorie ocupat de lista poate fi alocat static (printr-un tablou) sau dinamic (folosind pointeri).

16 Un element din lista poate contine o singura legatura - la elementul urmator (lista simplu inlantuita) sau doua legaturi- la elementul urmator si la cel precedent (lista dublu inlantuita). entru o lista simplu inlantuita parcurgerea se face intr-un singur sens - de la inceputul catre sfarsitul listei. !xista operatii precum" inserarea inaintea elementului curent din lista sau stergerea elementului curent, care presupun referirea la elementul dinaintea elementului curent - operatie care se realizeaza cu dificultate. entru a remedia acest neajuns se utilizeaza listele dublu inlantuite. entru listele dublu inlantuite, un element contine doua informatii de legatura" la elementul urmator si la cel precedent. rin legarea intre ele a primului si ultimului element (succesorul ultimului element devine primul, iar predecesorul primului - ultimul element) se confera listei o structura circulara. In acest caz nu se mai folosesc elemente false. O$eratii in liste inlantuite /onsideram declaratiile de tipuri de mai sus si variabilele" !lementS cap0 DD pointer la primul DD element al unei liste !lementS p0 !lementS Z0 !$licatii ale listelor :nl-nuite $iste ordonate 8i reorganizarea listelor a)/(utarea intr-o lista neordonat(0 te%nica fanionului. Se considera o lista simplu +nl(n'uita, cu nodurile de tip Mod. #aca +nceput indica spre primul nod al listei, iar ordinea c%eilor +n lista este aleatoare, c(utarea unei c%ei implica traversarea listei. =unc'ia booleana gsit returneaz( valoarea true 8i pointerul spre nodul cu c%eia egala cu cea c(utat(, dac( un astfel de nod exist( 8i valoarea false +n caz contrar" function gasit(val"?ip/%eie0var poz" ointerMod)"boolean0 var found"boolean0 begin poz"Iinceput0found"Ifalse0 -%ile (pozYUnil) and not found do if poz_.c%eieIval t%en found"Itrue else poz"Ipoz_.urmator0 gasit"Ifound end0 /(utarea se poate perfec'iona prin utilizarea metodei fanionului, lista prelungindu-se cu un nod fictiv numit fanion, la creare lista con'inCnd acest unic nod. ,n func'ia gasit, +nainte de baleierea listei, informa'ia c(utat( se introduce +n c%eia nodului fanion, astfel +ncCt va exista cel pu'in un nod cu c%eia c(utat(" var fanion" ointerMod0 ... function gasit(val"?ip/%eie0var poz" ointerMod)"boolean0 begin poz"Iinceput0fanion_.c%eie"Ival0 -%ile poz_.c%eieYUval do poz"Ipoz_.urmator0 gasit"IpozYUfanion end0 b)/rearea unei liste ordonate0 te%nica celor doi pointeri $ista se ini'ializeaz( cu doua noduri fictive pointate de doua variabile pointer, inceput 8i fanion" var inceput, fanion" ointerMod0 procedure init0 begin ne-(inceput)0 ne-(fanion)0

17 inceput_.urmator"Ifanion end0 c)te%nica de c(utare +n list( cu reordonare ,n compilatoare, structurile de date de tip list( liniar( sunt foarte avantajoase +n crearea 8i exploatarea listei identificatorilor. /onform principiului localiz(rii, apari'ia unui identificator oarecare +n textul sursa, poate fi urmata cu mare probabilitate de una sau mai multe reapari'ii. 12. !locarea dinamica a memoriei in ca,ul listelor. In memorie, listele pot fi reprezentate prin structuri statice (tablouri) sau prin structuri dinamice (liste inlantuite). *cest aspect poate fi transparent prin utilizator, daca se definesc, sub forma unor subprograme (operatii de acces cunoscute prin nume, parametri si efectul realizat de ele) si daca toate prelucrarile listelor se fac prin intermediul lor. *stfel, modul in care au fost concepute aceste operatii si modul de reprezentare a listelor poate fi VascunsV utilizatorului. Spatiul de memorie ocupat de lista poate fi alocat static (printr-un tablou) sau dinamic (folosind pointeri). In cazul alocarii dinamice a memoriei, elementele listei pot sa nu fie vecine, ci dispersate in intreaga memorie disponibila. $egarea intre ele a elementelor aceleiasi liste se face prin pointeri, care se adauga informatiei utile din elemente. Structura $IS?* este reprezentata prin lungimea ei si prin trei pointeri" la inceputul listei, la sfarsitul listei si la elementul curent din lista. entru ca operatiile de inserare si stergere sa se faca la fel pentru orice element din lista, s-au folosit doua elemente false (intalnite si sub numele de elemente santinele), plasate la inceputul si la sfarsitul listei (inaintea primului, respectiv dupa ultimul element din lista). In acest fel toate elementele utile din lista au atat predecesor cat si succesor. Un element din lista poate contine o singura legatura - la elementul urmator (lista simplu inlantuita) sau doua legaturi- la elementul urmator si la cel precedent (lista dublu inlantuita). Structura element (sau celula) contine pentru o lista simplu inlantuita un pointer la informatia utila si informatia de legatura (pointerul la elementul urmator).

Inserarea si stergerea de elemente se fac in acest caz prin modificarea unor adrese de legatura. /autarea unui element, pe de alta parte, se face (ca si in cazul listelor reprezentate prin tablouri) prin parcurgerea secventiala a listei. 1#. !dau.area( inserare( e)cluderea( na*i.area in liste.

1N

.B

In aceasta reprezentare, lista poate fi usor traversata, noile noduri pot fi inserate la sfirsitul listei. Insertia unui nod in interiorul listei presupune deplasarea tuturor nodurilor urmatoare cu o pozitie spre sfirsitul listei, iar suprimarea, deplasarea tuturor nodurilor urmatoare cu o pozitie spre inceputul listei. .e/nici de insertie a nodurilor si de creare a listelor inlantuite a0insertia unui nod la inceputul listei #aca inceput e variabila pointer ce indica spre primul nod al listei, iar Z o variabila auxiliara de tip pointer, secventa urmatoare realizeaza insertia la inceputul listei si actualizeaza pointerul inceput" ne-(Z)0 Jcreaza spatiu pentru un nou nodK Z_.urmator"Iinceput0 Jasignarea cimpurilor c%eie si infoK inceput"IZ0 Secventa e corecta si pentru insertia intr-o lista vida, caz in care inceputInil (nil fiind pointerul vid, care nu se refera la nici o variabila indicata). b0insertia unui nod la sfirsitul listei #evine mai simpla daca se pastreaza o variabila sfirsit indicind spre ultimul nod al listei" ne-(Z)0 Jcreaza spatiu pentru noul nod ultim al listeiK sfirsit_.urmator"IZ0 Z_.urmator"Inil0 Jasignarea cimpurilor c%eie si infoK sfirsit"IZ0 entru insertia la sfirsitul listei e necesara existenta a cel putin un nod, care se creaza prin procedura de la paragraful anterior. c%insertia unui nod du$a unul indicat ! simpla pentru ca se cunoaste pointerul spre nodul anterior si spre cel urmator celui ce se insereaza (pointerul spre nodul urmator e valoarea cimpului urmator al nodului indicat). d%insertia unui nod in fata unui nod indicat rintr-un artificiu, se reduce acest caz la cel anterior" se insereaza un nod dupa cel indicat, c%eia si informatia din nodul indicat fiind atribuite noului nod inserat si fiind inlocuite cu valorile nodului ce trebuia inserat. %.&.b.&.'e(nici de suprimare entru suprimarea nodului urmator celui indicat de o variabila pointer Z, prin atribuirea" Z_.urmator"IZ_.urmator_.urmator0 se exclud din lista legaturile la si de la nodul de suprimat. entru suprimarea nodului anterior unuia precizat, se aduce nodul precizat in cel de suprimat si se suprima succesorul lui, deci cel indicat initial de variabila pointer Z" Z_"IZ_.urmator_. Tra*ersarea unei liste inlantuite

.1 #aca nodul de inceput al listei e indicat de variabila inceput, o variabila auxiliara Z, care parcurge toate nodurile listei pina cind valoarea ei devine nil, permite accesul la fiecare nod si efectuarea operatiei specifice traversarii. 11.Sti*e si co,i. Sti*a este o list( simplu +nl(n'uit( bazat( pe algoritmul $I=1 ($ast In =irst 1ut), adic( ultimul nod introdus este primul scos. =iind o structur( particular( a unei liste simplu +nl(n'uite, opera'iile principale asupra unei stive sunt" - $us/ - pune un element pe stiv(0 func'ia se realizeaz( prin inserarea unui nod +naintea primului0 - $o$ - scoate elementul din vCrful stivei0 func'ia se realizeaz( prin 8tergerea primului nod0 - clear - 8tergerea stivei. - 1 stiva este o colec'ie ordonata de elemente care poate fi accesata numai la un cap(t0 - !lementele sunt scoase din stiva in ordinea inversa in care au au fost introduse, adic( ultimul introdus este primul scos - $I=1 ($astIn=irst1ut)0 - !lementele componente ale stivei pot fi de orice tip(clasa) `ava. "oada este o list( simplu +nl(n'uit(, bazat( pe algoritmul =I=1 (=irst In =irst 1ut), adic( primul element introdus este primul scos. #eci coada are dou( capete, pe la unul se introduce un element, iar de la celalalt cap(t se scoate un element. - 1 structura de date in care elementele se introduc la sfCr8it (rear) si se scot in totdeauna de la +nceput (front)0 - !lementele se scot in aceea8i ordine in care sunt introduse0 - rincipiul este primul intrat, primul ie8it - =I=1 (=irstIn,=irst1ut)0 - #aca dintr-o coada goala solicitam un element,se arunca o !xcep'ie Mo Suc% !lement !xception0 -1 coada con'ine metodele" constructor, offer(), pee@(), remove(), is!mptX() sisize(). 14.Model asociat $entru structura de date de ti$ sti*a. >1#!$U$ S?I:!I Stiva este o structur( de date in care introducerea (extragerea) de elemente se poate efectua doar intr-o (dintr-o) singur( pozi'ie, numit( varful stivei, care este de fapt, sfar8itul listei. Stivele sunt cunoscute de asemenea ca liste $I=1 ($ast In =irst 1ut). -pera1iile fundamentale care se pot efectua asupra unei stive sunt" introducerea in stiv( 234S5) 8i extragerea din stiv( (3-3) a celui mai recent element introdus. #e asemenea, acest element poate fi accesat printr-o opera'ie care nu presupune 8i extragerea sa din stiv( (.-3). 1pera'iile 3-3 8i .-3 asupra unei stive vide sunt considerate erori.

>odelul general al stivei este acela in care doar un singur element este accesibil (acela care se afl( in varful stivei).

.. 1'.Definirea sti*elor Stiva e un tip special de lista la care toate insertiile si suprimarile se executa la un singur capat, numit virful stivei. Stiva e o lista tip $I=1 ($ast In =irst 1ut). *supra tipului abstract de date stiva sint definiti urmatorii cinci operatori" 1. .. 2. 3. 4. 1.IMI?I*$IG*9!(S) - face stiva S vida ( initializeaza lista corespunzatoare ) ..:I9=S?(S) - furnizeaza elementul din virful stivei ( deci primul nod al listei ) 2. 1 (S) - suprima elementul din virful stivei 3. US](x,S) - insereaza elementul x in virful stivei pe care il actualizeaza 4.S?I:I#(S) - functie booleana ce e adevarata daca stiva este vida.

46. lgoritmi de parcurgere a stivelor. /ele mai avantajoase implementari ale structurii de date stiva sint cele cu ajutorul tipului pointer si al tipului tablou. Sti*a reprezinta o consecutivitate de noduri in care se cunoaste vec%imea intrarii nodului si este deservita dupa modul Ultimul Intrat rimul Iesit. ..2.1.. 1peratii Sti*a8ida. Intoarce stiva vida. Intrare" J nimic0 Iesire" J stiva fara nici un element. Este8ida. ?esteazWa dacWa o stivWa este vidWa. Intrare" J o stiva S0 Iesire" J true daca S este stiva vida, J false in caz contrar. 5us/. Scrie un element in stiva. Intrare" J o stiva S si un element e din !lt0 Iesire" J stiva S la care s-a adaugat e. !lementul e este ultimul introdus si va fi primul candidat la operatiile de citire si eliminare. 5o$. !limina ultimul element introdus in stiva. Intrare" J o stiva S0 Iesire" J stiva S din care s-a eliminat ultimul element introdus daca S nu este vida, J stiva vida daca S este stiva vida. To$. /iteste ultimul element introdus intr-o stiva. Intrare" J o stiva S0 Iesire" J ultimul element introdus in S daca S nu este stiva vida, J un mesaj de eroare dacWa S este stiva vidWa. O3ser*atie& ?ipul abstract S?I:* poate fi privit ca un caz particular al tipului abstract $$IM in sensul ca o stiva poate fi privita ca o lista liniara Wsi ca operatiile stivei pot fi exprimate cu ajutorul celor de la lista liniara" S?I:*. us%(S0 e) I $$IM.Insereaza(S0 $ungime(S)0 e) S?I:*.?op(S) I $$IM./iteste(S0 $ungime(S)) S?I:*. op(S) I $$IM.!limina(S0 $ungime(S)) *stfel, o stiva poate fi reprezentata printr-o secventa (e10 " " " 0 en) unde en este elementul din varful stivei (cu vec%imea cea mai mica). 47.8rearea,adaugarea, numararea elementelor din stiva.2uitete in 360 1pera'iile care pot fi efectuate asupra unei stive sunt urm(toarele" ;<crearea stivei0 ;<introducerea unui element in stiv(0 ;<extragerea unui element din stiv(0 ;<extragerea informa'iei elementului aflat in varful stivei0 ;<testul de stiv( vid(.

.2 Implementarea dinamic( utilizeaz( modelul listei inl(n'uite. 1 opera'ie de tip US] realizeaz( introducerea unui element in capul listei, iar o opera'ie de tip 1 determin( eliminarea elementului din capul listei. 1 opera'ie de tip ?1 va accesa elementul din capul listei 8i va intoarce informa'ia con'inut( de acesta. 8rearea unei stive const( in ini'ializarea varfului stivei cu valoarea MU$$. Introducerea elementului urm(tor se va realiza prin" - alocarea unui spa'iu in memorie pentru acesta 8i - atribuirea valorii din varful stivei campului care indic( spre elementul urm(tor. 17.O$eratii cu co,i. "oada 8ida F la intrare nimic, la iesire o coada vida. Este 8ida F testeaza pointerul catre primul element. Function citeste (c) Aegin If (c.prim I MU$$) t%en t%ro- a!roare& 9eturn c.primbelt !nd. 5rocedura de inserare rocedure inserare (c, e) Aegin ne- (Z) DD ocupam memorie Zbeltce DD dam valoare acolo unde s)a ocupat memorie ZbsucccMU$$ if (c.ultim d MU$$) t%en c.ultimbsucccZ DD va fi ultimul in lista else c.primcZ DD daca avem lista vida c.ultimcZ end. 5rocedura de eliminare rocedure eliminare (c) Aegin If (c.prim I MU$$) t%en t%ro- a/oada este vida& pcc.prim c.primcc.primbsucc DD c.prim arata de*a catre succesor if (c.prim I MU$$) t%en c.ultim I MU$$ delete (p) end. 40.!r3ori. Un ar3ore este, +n informatic(, un graf neorientat, conex 8i f(r( cicluri. *rborii reprezint( cele mai simple ca structur( din clasa grafurilor conexe, ei fiind cel mai frecvent utiliza'i +n practic(. !r3orele este multimea abstracta de date, elementele caruia sunt numite noduri si sunt unite intre ele prin arce. Un arbore este compus dintr-o colec'ie de noduri, unde fiecare nod are asociat( o anumit( informa'ie 8i o colec'ie de copii (fii). 8opiii (fiii) unui nod sunt acele noduri care urmeaz( imediat sub nodul +ns(8i. 3rintele unui nod este acel nod care se afl( imediat deasupra. Rdcina unui arbore este acel nod unic, care nu are nici un p(rinte. Un nod pentru care ambii subarbori sunt vizi este numit frun,a. ?otalitatea nodurilor frunza formeaza frontiera arborelui. Dimensiunea unui arbore este egal cu nr. total de noduri. Inaltimea unui arbore este lungimea celui mai lung drum de la radacina pina la un nod frunza. 41.Modelul asociat structurii de date de ti$ ar3ore. !xemplu de ierar%ie de comand( intr-o firm("

.3

In acest exemplu r(d(cina arborelui este Aob Smit%. !ste r(d(cin( deoarece nu are nici un p(rinte. /opilul s(u direct este ?ina `ones. ?ina `ones are 2 noduri copii (nodurile de pe nivelul urm(tor din ierar%ie)" `isun $ee, =ran@ >itc%ell 8i #avis `o%nson. (rintele s(u este Aob Smit% (nodul de pe nivelul superior, din ierar%ie). 42.O$eratii cu ar3ori&creare( adau.are. :om considera arborele din dreapta. S( presupunem c( dorim s( inser(m nodul cu valoarea 5.. *cesta se va insera ca nod frunz(. entru a-l insera va trebui s( c(ut(m o pozi'ie +n arbore care respect( regula de integritatea a arborilor binari de c(utare. :om +ncepe prin compararea nodului de inserat (5.), cu r(d(cina arborelui (NB). 1bserv(m c( este mai mic decCt ea, deci va trebui inserat undeva +n subarborele stCng al acesteia. :om compara apoi 5. cu 4B. #in moment ce 5. este mai mare decCt 4B, nodul 5. va trebui plasat undeva +n subarborele drept al lui 4B. Se compar( apoi 5. cu 64. #eoarece 64 este mai mare decCt 5., 5. trebuie s( se afle +n subarborele din stCnga al nodului 64 #ar 64 nu are nici un copil +n partea stCng(. *sta +nseamn( c( am g(sit loca'ia pentru nodul 5.. ?ot ceea ce mai trebuie f(cut este s( modific(m +n nodul 64 adresa c(tre copilul din stCnga, +ncCt s( indice spre 5..

4#.!l.oritmii de $arcur.ere si $relucrare in ar3ori 3inari. '0. !l.oritmi de formare si de de$lasare in ar3ori. 5arcur.erea $reordine " 1%viziteaz( r(d(cina0 2%subarborele sting0 #%subarborele drept. rocedure preordine (t, viziteaza()) Aegin If (t d MU$$) t%en viziteaza (t) reordine(tbstg, viziteaza()) reordine(tbdrept, viziteaza()) !nd. 5arcur.erea inordine" 1% subarborele sting0 2%viziteaz( r(d(cina0 #%subarborele drept. rocedure inordine (t, viziteaza()) Aegin If (t d MU$$) t%en inordine (tbstg, viziteaza()) viziteaza (t) inordine (tbdrept, viziteaza())

.4 end. 5arcur.erea $ostordine" 1%viziteaz( subarborele sting0 2%subarborele drept0 #%viziteaz( r(d(cina. arcurgere postordine (t, viziteaza()) Aegin If (t d MU$$) t%en postordine (tbstg, viziteaza()) postordine (tbdrept, viziteaza()) viziteaza (t) end. 5arcur.erea BFS" se parcurg nodurile dup( nivele, de la stinga la dreapta, de la radacina catre frunza. rocedure parcurge A=S (t, viziteaza()) Aegin If (t d MU$$) ?%en cccoada vida() Insereaza (c,t) e%ile (M1? !ste :ida(c)) do vcciteste(c) elimina(c) viziteaza(v) if(tbstg d MU$$) t%en insereaza (c, tbstg) if(tbdrept d MU$$) t%en insereaza (c, tbdrept) end.

,4. rbori. locarea memoriei.

.5

,,. Sortarea si cautare in structuri de date complexe ,9. lgoritmi de sortare si cautare

.6

Metoda de inserrincipiu" tabloul este vazut ca fiind format din doua subtablouri aQ1R, aQ.R,..., aQi-1R si respectiv aQiR, aQiT1R,...,aQMR (iI.,M). Secventa aQ1R,...,aQi-1R este ordonata si urmeaza ca aQiR sa fie inserat in aceasta secventa la locul potrivit, astfel incit secventa aQ1R,...,aQi-1R,aQiR sa devina ordonata, urmind ca in pasul urmator cele doua subtablouri considerate sa fie aQ1R,...,aQiR si aQiT1R,...,aQMR. entru a gasi locul in care trebuie sa fie inserat aQiR se parcurge sirul aQ1R,...,aQi-1R de la dreapta spre stinga, pina cind fie se gaseste un element cu c%eia YI aQiR.c%eie, fie s-a atins capatul sirului. *ici se poate utiliza metoda fanionului, extinzind tabloul spre stinga cu elementul aQBR care se asigneaza initial cu aQiR (deci ?ipIndexIB..M). rocedure InsertSort(*99*P a, M) begin for ic . to M do aQBR caQiR0 jci-10 -%ile (aQjR.@eX UaQBR.@eX) do aQjT1RcaQjR0 jcj-10 aQjT1RcaQBR0 end. !ficacitatea" /omparatii si asignari de ordinul MSM. !ste cel mai efectiv cind sirul este ordonat sau putin ordonat sic el mai neefectiv cind sunt aliator. Metoda de sortare $rin inserta 3inara rincipiu" reprezinta o varianta a sortarii prin insertie, in care cautarea locului de inserare se face aplicind cautarea binara, stiind ca secventa aQ1R,...,aQi-1R este deja ordonata rocedure Insert rim(*99*P a, M) begin for ic . to M do xcaQiR0 Sc10 dci-10 -%ile (SYId) do mc(STd)D.0 DSvariabila de lucru, injumatatim regiunea de cautareSD if(aQmR.@eX Ux.@eX) t%en dcm-10 else ScmT10 for jci-1 do-nto S to aQjT1RcaQjR0 aQSRcx0 end. S F de jos d- de sus sorteaza !ficacitatea" *signari MlnM, iar asignatii MSM. >etoda este pentru tablouri ordonate sau aproape ordonate. Sortarea $rin selectie

.7 rincipiu" se considera subtabloul aQiR,...,aQMR, se cauta elementul cu c%eia minima din acest subtablou si apoi se intersc%imba acest element cu elementul aQiR, repetindu-se procedeul pentru valori ale lui i de la 1 la M-1. rocedure SelectSort(*99*P a, M) begin for ic 1 to M-1 do DS cauta @eXa cu indicatorul cel mai mic SD @ci0 xcaQiR0 for jc iT1 to M do if(aQjR.@eX Ux.@eX) t%en xcaQjR0 aQ@RcaQjR0 aQiRcx0 end. !ficacitatea" /omparatii MlgM, iar asignatii MSM. !ste cel mai efectiv cind (sortarea crescatoare) tabloul este sortat sau partial sortat si este neefectiv cind este sortat descrescator. Sortarea $rin selectie $erformanta rincipiu" reprezinta o varianta a sortarii prin selectie, in care determinarea elementului cu c%eia minima dintr-o portiune de tablou se reduce la determinarea pozitiei acestuia. Infelul acesta se poate renunta la asignarea x"IaQjR care apare in ciclul VforV controlat de j. rocedure erformSelect(*99*P a, M) begin for ic 1 to M-1 do minci0 for jc iT1 to M do if(aQjR.@eX YaQminR.@eX) t%en mincj0 xcaQminR0 aQminRcaQiR0 aQiRcx0 end. Sortarea $rin intersc/im3are rincipiu" se considera subtabloul aQiR,...,aQMR care se parcurge de la dreapta spre stinga, comparind si intersc%imbind perec%ile de elemente alaturate care nu satisfac relatia de ordine, procedeul repetindu-se pentru iI.,M. ractic, la o parcurgere a subtabloului aQiR,...,aQMR are loc deplasarea elementului minim al acestui subtablou pina in pozitia aQi-1R. rocedure AubleSort(*99*P a, M) begin for ic . to M do for jc M do-nto i do if(aQj-1R.@eX UaQjR.@eX) t%en xcaQj-1R0 aQj-1RcaQjR0 aQjRcx0 end. !ficacitate" /oparatii si asignari aproximativ MSM. Sortarea $rin amestecare rincipiu" reprezinta o varianta a metodei bubblesort, avind urmatoarele imbunatatiri" -la fiecare parcurgere a subtabloului aQiR,...,aQMR se memoreaza indicele @ al ultimei intersc%imbari efectuate, astfel incit la urmatoarea trecere un capat al subtabloului va fi marcat de @ (intre 1 si @ tabloul este ordonat)0 -se sc%imba alternativ sensul de parcurgere al subtablourilor pentru doua treceri consecutive rocedure S%a@erSort(*99*P a, M) begin lc.0 ncM0 @cM0 repeat for jc r do-nto l do if(aQj-1R.@eX UaQjR.@eX) t%en xcaQj-1R0 aQj-1RcaQjR0 aQjRcx0

.N @cj0 lc@T10 for jc l to r do if(aQj-1R.@eX UaQjR.@eX) t%en xcaQj-1R0 aQj-1RcaQjR0 aQjRcx0 @cj0 rc@-10 until(lUr)0 end. "autarea datelor =unction $unSearc%(*99*P a,M,x) Aegin ic10 -%ile ((aQiRdx) *M# (iYM)) do iciT10 if(aQiRIx) t%en return i0 return -10 end. ?e%nica fanionului ?abloul a se prelungeste cu inca un element (fanion) caruia i se asigneaza valoarea x, apoi se aplica metoda de cautare liniara. *vantajul 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 =unction =anion(*99*P a,M,x) Aegin ic10 aQMT1Rcx0 -%ile ((aQiRdx) if(iUM) t%en return -10 return i0 end. /autarea binara Se aplica pentru tablouri ordonate, principiul ei constind in injumatatirea repetata a intervalului in care se cauta elementul dorit. *ceasta te%nica are avantajul rapiditatii" numarul de comparatii necesare este cel mult log.(M). Se presupune ca sirul e ordonat. =unction AinSearc%(*99*P a,M,x) Aegin sc10 dcn0 repeat mc(sTd)D.0 if(xUaQmR) t%en scmT10 else dcm-10 until ((aQmRIx) 19 (sUd))0 if(aQmRIx) t%en return0 else return -10 end. /autarea binara performanta =unction AinSearc%(*99*P a,M,x) Aegin sc10 dcMT10 repeat mc(sTd)D.0 if(xUaQmR) t%en scmT10

2B else dcm0 until (sUId)0 if(dUM) t%en return -10 elseif (xIaQdR) t%en return d0 return -10 end. "autarea $rin inter$olare !ste similara cu cautarea binara, dar foloseste o alta formula pentru calculul lui VmV, si anume" m"IsT(x-aQsR)S(d-s) div (aQdR-aQsR) ceea ce conduce la o delimitare mai rapida a zonei din tablou in care s-ar putea gasi x. /a principiu, metoda este inspirata dupa procedeul cautarii intr-o carte de telefon. =unction InterpolSearc%(*99*P a,M,x) Aegin sc10 dcM0 repeat mcsT(x-aQsR.(d-s)D(aQdR-aQsR)0 if(xUaQmR) t%en scmT10 else dcm-10 until ((aQmRdx) 19 (sUId) 19 (aQsRIaQdR 19 (xYaQsR) 19 (xUaQdR) )0 if(aQmRIx) t%en return m0 return -10 end. "autarea ta3elara =unction ?abSearc%(*99*P ?., *99*Px,M, ^pos) Aegin scB0 dfM0 -%ile (sYd) do mc(sTd)D.0 icB0 -%ile(?Qm,iRIxQiR *M# (xQiRd ghBi))do if(?Qm,iRYxQiR) t%en scmT10 else dcm0 if (dYn) t%en icB0 -%ile(?Qd,iRIxQiR *M# (xQiRd ghBi))do iciT10 poscd0 return ((dYn) *M# (?Qd,iRIxQiR)0 end. /autarea de siruri directe =unction #irectSearc%(*99*PS,M,*99*P , m, ^pos) Aegin ic10 repeat iciT10 jYB0 -%ile ((jYm) *M# (sQiTjRI QjR)) do jcjT10 until ((jIm) 19 (iIn-m))0 poscI0 return (jIm)0 end. ,:. 3rincipii de sortare a datelor >etoda de inserta >etoda de sortare prin insertie binara Sortarea prin selectie

21 Sortarea prin selectie performanta Sortarea prin intersc%imbare Sortarea prin amestecare ,6. lgoritmi de sortare *lgoritmii de sortare se deosebesc intre ei prin eficienta, timp de executie necesar, exprimat prin functia 1. Sint folositi pentru aprecierea eficientei si" numarul compararilor de c%ei efectuate pentru sortare (/), mai ales atunci cind c%eile sint siruri lungi de caractere si numarul miscarilor (asignarilor) de elemente (>),atunci cind dimensiunea elementelor tabloului este mare, in aceasta situatie fiind indicat ca pentru sortare sa se foloseasca un tablou paralel de cursori la elementele celui initial. ,7.4tilizarea pointerilor si referintelor, crearea unei liste dinamice. rocedure Insert($,@,e) Aegin If(@YB) t%en t%ro- E!9919& Me-(Z) Zbeltcl if((@IB) or ($.primIMU$$)) t%e Zbsuccc$.prim $.primcZ If($.ultimIMU$$) t%en $.ultimcZ !lse pc$.prim0 icB0 -%ile((pd$.ultim) and (IYj-1) do iciT1 pcpbsucc0 Zbsucccpbsucc0 pbsucccp0 if(pI$.ultim) t%en ($.ultimcZ))0 end.

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