Sunteți pe pagina 1din 89

UNIVERSITATEA TEFAN CEL MARE SUCEAVA

Facultatea de tiine Economice i Administraie Public


Specializarea Asisten Managerial i Secretariat, anul III
Conf. univ. dr. Nicolae Morariu

METODE I TEHNICI DE PROGRAMARE

2011

CUPRINS Introducere .. Capitolul 1. Algorimi i tehnici de reprezentare a algoritmilor ......................


1.1. Algoritmi. Definiie, exemple .......................................... 1.2. Tehnici de reprezentare a algoritmilor ......... 1.2.1. Schema logic ................................................... 1.2.2. Pseudocodul........................................................................................................... 3 4 4 6 6 7 8 8 8 11 11 12

Capitolul 2. Metode i tehnici de programare .............


2.1. Stiva .................................................... 2.2. Metoda Backtracking ...................................................... 2.3. Recursivitate................................................................................................................ 2.4. Algoritmi genetici i programare evolutiv ........................ 2.5. Elemente de teoria grafurilor.......................................................................................

Capitolul 3. Evoluia limbajelor de programare . 16


3.1. Limbaje n cod main......................................................................................... 3.2. Limbaje de asamblare ......................... 3.3. Limbaje de nivel nalt ..................... Probleme rezolvate ........................................ Probleme propuse .............. 16 16 17 19 20 22 22 24 24 26 27 28 28 29 31 35 38

Capitolul 4. Consideraii generale privind lexicul, sintaxa i semantica unui limbaj de programare.................................................................................
4.1. Alfabetul i vocabularul unui limbaj de programare................................................... 4.2. Traducerea programelor (translatoare)........................................................................ 4.3. Analiza textului surs a unui program..................................................... Probleme rezolvate ................................................................................ Probleme propuse ..............................................................................

Capitolul 5. Limbajul Visual Basic ............................................


5.1. Programarea aplicaiilor Windows ............. 5.2. Proprieti i metode ................................................................... 5.3. Utilizare Visual Basic din Excel ................................................. 5.4. Variabile ................................................................................................................. 5.5. Operaii de intrare /ieire realizate cu funciile InputBox ( ) i MsgBox ( )...............
2

5.6. Structuri de ramificare i ciclare (luare decizii).......................................................... 5.6.1. Structuri de ramificare .................................... 5.6.2. Structuri de ciclare............................................... 5.7. Module i proceduri ............................................................ 5.7.1. Proceduri subrutine ............................. 5.7.2. Proceduri funcii.................................................................................................. 5.8. Obiecte n Visual Basic .................................................................. 5.9. Referire celule dintr-o foaie de calcul tabelar n Visual Basic ........................... 5.10. Gestionarea unui proiect ....................................... 5.11. Crearea i extinderea meniurilor ........................................................................... 5.12. Realizarea programului executabil pentru aplicaie (proiect)............................ 5.13. Baze de date, Gestionarul de date, controlul Data, obiecte Set de nregistrri, SQL pentru interogarea bazelor de date............................................................................. Probleme rezolvate ........................................ Probleme propuse spre rezolvare.................................................................................... Teste de verificare Cap. 5...................................................................................................

40 40 42 42 43 44 46 51 52 53 53 54 55 67 67 72 72 73 75 76 79 80 82 83 84 87

Capitolul 6. Tendine actuale i viitoare privind tehnologiile de programare..


6.1. Inteligena artificial distribuit................................................................................. 6.2. Definirea conceptului de agent................................................................................... 6.3. Clasificarea agenilor................................................................................................. 6.4. Aplicaii actuale ale agenilor. Domenii de utilizare................................................. 6.5. Sisteme multi-agent. Definiie, clasificare, arhitecturi.............................................. 6.6. Limbaje de comunicare ntre ageni.......................................................................... Probleme rezolvate................................................................................................................. Probleme propuse...................................................................................................................

GLOSAR...................................................................................................................... Bibliografie..

INTRODUCERE
Scopul cursului

Scopul cursului este prezentarea unor metode i tehnici de programare precum i introducerea n programarea calculatoarelor, plecnd de la observaia c marea majoritate a limbajelor de programare au la baz o serie de concepte comune. Obiective se definete noiunea de algorim, sunt date exemple i sunt prezentate tehnicile de reprezentare a algoritmilor: schema logic, pseudocodul; sunt prezentate metode i tehnici utilizate n programare: metoda backtracking, recursivitatea, tehnica divide et impera, aspecte privind algoritmii genetici i programarea evolutiv, elemente de teoria grafurilor; se va prezenta necesitatea limbajelor de programare, evoluia lor, generaiile de limbaje de programare, definirea i construirea unui limbaj de programare, clasificarea limbajelor dup diverse criterii i selectarea limbajului potrivit tipului de problem de rezolvat; se vor descrie succint fazele parcurse ncepnd de la elaborarea unui program ntr-un limbaj de programare i pn la execuia acestuia pe calculator se va prezenta limbajul Visual Basic, modul de utilizare i inerfaa cu produsul Excel; n ultima parte a cursului sunt prezentate tendinele actuale i de perspectiv privind tehnologiile de programare: conceptul de agent software, tehnologia de programare orientat agent. E 4C 70%

Forma de evaluare (E examen, C colocviu/test final, LP lucrri de control Stabilirea notei finale (procentaje)

- rspunsuri la examen/colocviu/lucrri practice - activiti aplicative atestate/laborator/lucrri practice/ proiect etc. 30% - teste pe parcursul semestrului - teme de control -

Capitolul 1. Algorimi i tehnici de reprezentare a algoritmilor Rezumat- Se definete noiunea de algorim, sunt date exemple i sunt prezentate tehnicile de reprezentare a algoritmilor: schema logic, pseudocodul. Algoritmi. Definiie, exemple. 1. Un algoritm este metoda prin care se rezolv o problem. 2. Un algoritm este o succesiune finit de pai care trebuie parcuri pentru rezolvarea unei probleme. Pentru rezolvarea unei probleme pot exista mai multe metode de rezolvare. Pot fi puse i probleme pentru care nu este cunoscut un algoritm de rezolvare, sau pentru care nu exist un algoritm de rezolvare. n general, pentru rezolvarea unei probleme, trebuie avute n vedere urmtoarele elemente: - datele de intrare; - algoritmul pentru rezolvarea problemei; - datele de ieire. Aceast precizare poate fi reprezentat schematic astfel: ALGORITM Date de intrare Date de ieire Exemple de algoritmi Ex. 1. Rezolvarea ecuaiei de gradul 2 ax2 + bx +c = 0 Succesiunea de pai este urmtoarea: 1 Citete coieficienii a, b, c 2 Calculeaz delta = b2 4ac 3 Dac delta = 0 atunci calculeaz x1 = x2 = -b / 2a , afieaz x1, x2 continu cu pasul 6 4 Dac delta > 0 atunci calculeaz x1 = (-b + SQRT(delta)) / 2a x2 = (-b - SQRT(delta)) / 2a afieaz x1=, x1 ; x2=, x2 continu cu pasul 6 5 Dac delta < 0 atunci calculeaz Rx = -b / 2a ; Ix = SQRT(-delta) / 2a afieaz x1=, Rx , + i,Ix x2=, Rx , - i,Ix 6 Continuai pentru o alt ecuaie ? (DA, NU) 7 Dac rspunsul este DA atunci se reia cu pasul 1 8 Dac rspunsul este NU atunci STOP. S-a notat cu SQRT funcia pentru radical. Algoritmul prezentat conine att ramificaii (definite prin Dac) ct i un ciclu care poate fi identificat n paii 6, 7.

Ex. 2. Iniializarea fiei de pontaj lunar. La reali zarea unei aplicaii de calcul salarii n VBA din EXCEL una din operaiile care trebuie realizate la nceputul fiecrei luni este tergerea datelor din fia de pontaj pentru luna precedent (coloanele 1 34 ncepnd din rndul 3 atta timp ct exist date n coloana 1) i crearea fiei de pontaj pentru luna care urmeaz (copierea coloanelor 1 2 din foaia de calcul ANGAJATI n foaia de calcul PONTAJ ncepnd din rndul 3 atta timp ct exist date n foaia de calcul ANGAJATI). Algoritmul corespunztor acestei operaii este: tergere date din PONTAJ 1. rand = 3 2. Dac PONTAJ(rand , 1) # (exist date n rndul rand, coloana 1) Atunci Pentru k = 1 pn la 34 PONTAJ(rand , k) = Continu cu pasul 3 Altfel continu cu pasul 4 3. rand = rand + 1 Continu cu pasul 2 Creare fia pontaj 4. rand = 3 5. Dac ANGAJATI(rand , 1) # (exist date n rndul rand, coloana 1) Atunci PONTAJ(rand , 1) = ANGAJATI(rand , 1) PONTAJ(rand , 2) = ANGAJATI(rand , 2) Continu cu pasul 6 Altfel STOP 6. rand = rand + 1 Continu cu pasul 5 Cele dou foi de calcul sunt ilustrate n imaginile de ecran de mai jos.

1.2. Tehnici de reprezentare a algoritmilor Pentru reprezentarea algoritmilor au fost utilizate n ordine cronologic urmtoarele tehnici: schema logic, pseudocodul. 1.2.1. Schema logic Schema logic este o modalitate de reprezentare grafic a unui algoritm. Schema logic pentru algoritmul de rezolvare a ecuaiei de gradul 2 este prezentat mai jos.
START

Citete a, b, c delta = b2 4ac delta = 0 NU DA delta > 0 NU


x1 = (-b + SQRT(delta)) / 2a x2 = (-b - SQRT(delta)) / 2a REALx = -b / 2a IMAGx = SQRT(-delta)) / 2a

DA

x = -b / 2a

x1=,x1 x2=,x2

x1=,Rx +i,Ix x2=,Rx -i,Ix

x1=,x x2=,x

DA

Continuai ? NU STOP

Din schema logic prezentat se constat utilizarea urmtoarelor tipuri de simboluri: - elips - pentru inceput algoritm, sfrit algoritm; - trapez cu latura mare sus pentru operaii de intrare (preluare date, citire date); - dreptunghi pentru operaii de calcul; - romb pentru operaii de decizie (ramificaii); - trapez cu latura mic sus pentru operaii de ieire (afiare, scriere date, rezultate); - trimitere cu sgeat pentru iteraii ( cicluri). Dac schema se ntinde pe mai multe pagini, sau pentru reluri, se pot folosi trimiteri prin conectori (cerc numerotat n interior cu ieire sgeat i corespunztor intrare sgeat pt. acelai numr de cerc). 1.2.2. Pseudocodul Pseudocodul este o metod de reprezentare a unui algoritm ntr-un limbaj pe de o parte mai apropiat de limbajul natural, iar pe de alt parte ntr-o form care s permit transcrierea lui ulterioar ntr-un limbaj de programare. Aceast metod de reprezentare a algoritmilor este derivat din limbajul ALGOL (ALGOrithmic Language) i este bazat pe faptul c programele mari (pentru rezolvarea unor probleme complexe) sunt n general structurate pe componente numite module, fiecare modul reprezentnd o funcie distinct pentru rezolvarea problemei. Pentru rezolvarea problemei se definete astfel o ierarhie de module ntre care exist diverse legturi (uneori un modul se poate apela pe el nsui , lucru care este imposibil de reprezentat cu ajutorul schemei logice). Un algoritm descris n pseudocod traduce problema de rezolvat ntr-o succesiune de aciuni numite operaii sau instruciuni, fiecare instruciune reprezentnd un pas al algoritmului. De asemenea trebuie evideniate structurile alternative i structurile repetitive. Orice text care nu reprezint un pas al algoritmului este o declaraie sau un comentariu. Orice variabil utilizat n cadrul algoritmului trebuie declarat anterior. Avnd n vedere aspectele prezentate, reprezentarea n pseudocod a algoritmului de iniializare a fiei de pontaj este: Declar variabila rand ca ntreg la nivel global tergere date din PONTAJ (comentariu) rand = 3 Ct timp PONTAJ(rand , 1) # Pentru k = 1 pn la 34 PONTAJ(rand , k) = rand = rand + 1 Creare fia pontaj (comentariu) rand = 3 Ct timp ANGAJATI(rand , 1) # PONTAJ(rand , 1) = ANGAJATI(rand , 1) PONTAJ(rand , 2) = ANGAJATI(rand , 2) rand = rand + 1

Capitolul 2. Metode i tehnici de programare Rezumat - Sunt prezentate metode i tehnici utilizate n programare: metoda backtracking, recursivitatea, tehnica divide et impera, aspecte privind algoritmii genetici i programarea evolutiv, elemente de teoria grafurilor. 2.1. Stiva Stiva este o form de organizare a datelor pentru care operaiile de introducere i scoatere a datelor se fac n vrful ei. Pentru a nelege modul de lucru cu stiva considerm un numr n de farfurii identice aezate una peste alta. Adugarea sau scoaterea unei farfurii se poate face numai n vrful stivei. Dac toate cele n farfurii sunt aezate una peste alta spunem c stiva este plin, iar dup ce scoatem toate farfuriile din stiv spunem c stiva este vid. Stiva poate fi reprezentat cu ajutorul unui vector ST(1), ST(2),...,ST(n), n care pot fi memorate numai litere sau numai cifre dac fiecare element ST(i) al stivei memoreaz o singur informaie (limea stivei este 1). n cazul n care fiecare element al stivei memoreaz mai multe informaii avem de a face cu stive duble, triple, etc. O variabil k va indica n permanen vrful stivei. La extragerea unui element din stiv variabila k ce indic vrful stivei scade cu 1, iar la adugarea unui nou element n stiv variabila k crete cu 1. Operaia de extragere din stiv se poate efectua pn cnd stiva devine vid, iar operaia de adugare n stiv se poate efectua pn cnd stiva devine plin.
ST(2) ST(1) A B A

Stiva vid

Vrful stivei k = 1

Vrful stivei k = 2

2.2. Metoda Backtracking Aceast metod poate fi folosit la rezolvarea problemelor pentru care soluia problemei poate fi pus sub forma unui vector S(x1,x2,,xn), unde x10 A1, x20 A2, ,xn0 An, mulimile A1, A2, , An sunt finite i elementele lor se afl ntr-o relaie de ordine bine stabilit i pentru aceste probleme nu exist o alt metod de rezolvare mai rapid. n multe probleme, mulimile A1, A2, , An coincid, iar x1,x2,,xn pot fi la rndul lor vectori. Pentru rezolvarea unei probleme prin metoda backtracking se parcurge algoritmul prezentat mai jos. 1. Se alege primul element x10 A1. 2. Presupunnd generate elementele x1,x2,,xk, ale vectorului soluie se alege xk+1, primul element disponibil din mulimea Ak+1 care ndeplinete condiiile pentru soluie. 3. Dac nu s-a gsit elementul xk+1 care ndeplinete condiiile pentru soluie, se reia cutarea considernd generate elementele x1,x2,,xk-1, iar pentru xk, se verific urmtorul element din mulimea Ak.

4. Dac s-a gsit elementul xk+1 care ndeplinete condiiile pentru soluie, se verific dac s-au generat toate elementele soluiei (k+1=n). 5. Dac s-a ajuns la soluie se tiprete soluia i se continu algoritmul considernd generate elementele x1,x2,,xk, (se caut un alt element al mulimii Ak+1 rmas netestat). 6. Dac nu s-a ajuns la soluie se continu algoritmul considernd generate elementele x1,x2,,x k+1, (se caut un prim element xk+2 al mulimii Ak+2). Algoritmul se termin atunci cnd nu mai exist nici un element x10 A1 netestat. Metoda Backtracking conduce la obinerea tuturor soluiilor problemei. Dac se cere obinerea unei singure soluii, se poate fora oprirea algoritmului dup gsirea primei soluii. Pentru problemele n care soluia este sub form de vector (stiva este de lime 1) metoda este denumit backtracking elementar, iar pentru problemele n care stiva este dubl, tripl etc. metoda este denumit backtracking generalizat. n cele ce urmeaz se va prezenta un exemplu practic de utilizare a metodei. Problema comis-voiajorului Un comis-voiajor trbuie s viziteze un numr n de orae notate 1, 2, ..., n n urmtoarele condii: pleac din oraul 1, trece prin toate oraele o singur dat folosind legturile existente ntre orae i revine n final n oraul 1. Se cere s se determine toate drumurile posibile pe care le poate parcurge comis-voiajorul. Pentru rezolvarea problemei se poate utiliza metoda backtracking elementar folosind o stiv ST(1), ST(2),...,ST(n) n care elementele ST(k) vor conine numerele 1, 2, ..., n cu care sunt notate oraele cu condiia ca pentru nemerele memorate n dou nivele succesive ale stivei s existe legtur ntre oraele corespunztoare i ST(1) =ST(n) =1. Legturile ntre orae pot fi reprezentate printr-o matrice L(i,j) astfel: 1 dac exist drum ntre oraele i i j L(i,j) = 0 dac nu exist drum ntre oraele i i j Exemplu
1 2 3 4 6 5

Drumurile posibile pe care le poate parcurge comis-voiajorul sunt: D1 = (1,2,3,4,5,6,1) D2 = (1,2,5,4,3,6,1) D3 = (1,6,3,4,5,2,1) D4 = (1,6,5,4,3,2,1) Tehnica Greedy Tehnica Greedy poate fi privit ca un caz particular al tehnicii backtracking n care se renun la mecanismul de ntoarcere i n plus se cere aflarea unei singure soluii a
10

problemei, soluie care satisface un anumit criteriu de optim. Tehnica Greedy conduce la timp de calcul polinomial (timp util), ns prezint dezavantajul c pentru cele mai multe probleme nu se cunosc algoritmi de tip Greedy (pentru astfel de probleme se renun la optimalitate n favoarea gsirii unei soluii n timp util). Un exemplu de astfel de problem este problema comis-voiajorului pentru care un criteriu de optimalitate ar putea fi unul din urmtoarele: - timpul parcurgerii drumului s fie minim; - costul parcurgerii drumului s fie minim. O modalitate de rezolvare a acestei probleme este s determinm toate drumurile posibile, s calculm timpul respectiv costul parcurgerii fiecrui drum i s alegem drumul optim (abordare care conduce la timp exponenial de calcul). Pentru aceast problem nu se cunosc algoritmi de tip Greedy. Problema rucsacului (exemplu de problem pentru care exist algoritm de tip Greedy) Cu un rucsac se poate transporta o greutate maxim G. Se pot transporta obiecte sau pri ale acestora, pentru fiecare obiect fiind cunoscute greutatea sa i ctigul care s-ar obine n urma transportului su la destinaie. S se determine ce obiecte pot fi transportate astfel nct ctigul s fie maxim. Pentru rezolvarea problemei se utilizeaz urmtorul algoritm: 1. pentru fiecare obiect se calculeaz eficiena de transport ca fiind rezultatul mpririi ctigului la greutatea obiectului (se obine ctigul obinut prin transportul unitii de greutate). 2. Se sorteaz obiectele n ordinea descresctoare a eficienei de transport i se iau n calcul n aceast ordine. 3. Ctigul iniial = o Greutatea rmas de ncrcat n rucsac = G. 4. Ct timp nu a fost completat greutatea G a rucsacului i nu au fost luate n considerare toate obiectele se procedeaz astfel: - Dintre obiectele nencrcate se selecteaz cel cu eficiena de transport cea mai mare. - Dac obiectul selectat ncape n totalitate n rucsac - din G se scade greutatea obiectului - la ctigul iniial se adun ctigul corespunztor obiectului - se tiprete 1 (semnific faptul c ntregul obiect a fost incrcat - Dac obiectul selectat nu ncape n totalitate n rucsac - se calculeaz ce parte din obiect poate fi transportat - la ctigul iniial se adun ctigul corespunztor prii de obiect - se tiprete partea care s-a incrcat din obiect - greutatea rmas de ncrcat devine 0. 2.3. Recursivitate Recursivitatea este o noiune fundamental utilizat n informatic dup anii 80 pentru scrierea programelor n cadrul unor limbaje de programare evaluate. Acest concept
11

este utilizat n matematic pentru scrierea unor formule recursive, mai exact pentru definirea funciilor recursive. O funie recursiv este o funcie care se autoapeleaz. Recursivitatea este mecanismul prin care un subprogram (funcie, procedur) se autoapeleaz. Acest mecanism mai este numit i recursivitate direct, spre deosebire de recursivitatea indirect care are loc atunci cnd o procedur (funcie) apeleaz o alt procedur (funcie), care la rndul ei o apeleaz pe ea. Pentru exemplificare dac notm cu F(n) n factorial = 1.2. .n putem scrie F(n) = F(n 1).n ceea ce nseamn c n definirea funciei F de calcul a factorialului unui numr am utilizat recursivitatea. Dac n cazul funciilor recursivitatea pare un mechanism simplu, nu la fel stau lucrurile n cazul algoritmilor i deci al procedurilor recursive. Un algoritm recursiv trebuie s conin o condiie de terminare, altfel algoritmul nu se va termina niciodat i deci nu va putea fi transcris ntr-un program pentru calculator. Pentru implementarea recursivitii n cadrul limbajelor de programare care dispun de aceast facilitate se folosete structura de date de tip stiv care este gestionat de limbajul de programare i nu de programator. S-a demonstrat matematic c pentru orice algoritm iterativ exist un algoritm recursiv echivalent (rezolv aceeai problem) i invers, pentru orice algoritm recursiv exist un algoritm iterativ echivalent. Folosind recursivitatea n scrierea algoritmilor i deci a programelor se obine un text surs foarte scurt i clar, ns exist situaii cnd execuia unui algoritm recursiv necesit un timp de calcul foarte mare, timp care poate fi redus considerabil dac se utilizeaz un agoritm iterativ echivalent. Tehnica Divide et impera Tehnica divide et impera const n descompunerea unei probleme n dou sau mai multe probleme mai simplu de rezolvat, iar soluia pentru problema iniial se obine prin combinarea soluiilor problemelor rezultate prin descompunere. Fiecare din problemele rezultate prin descompunere pot fi la rndul lor descompuse n subprobleme mai simplu de rezolvat, procedeul putnd continua pna se ajunge la o descompunere n probleme care admit o rezolvare imediat. Pentru descrierea algoritmului de rezolvare prin metoda divide et impera se poate utiliza principiul recursivitii. 2.4. Algoritmi genetici i programare evolutiv Teoria matematic a calculului evolutiv cuprinde urmtoarele direcii de cercetare: - algoritmii genetici; - strategiile de evoluie i programarea evolutiv. Algoritmii genetici sunt metode de cutare i optimizare moderne, bazate pe principiile seleciei naturale i geneticii i care acioneaz asupra unei codificri a funciei obiectiv, efectund operaii de reproducere asupra unei populaii de cromozomi, utiliznd operatori genetici: selecia, ncruciarea, inversiunea, mutaia. Parametrii problemei sunt codificai printr-un ir de caracteristici binare analoge cromozomilor biologici. Fiecrui parametru ii corespunde un subir n irul cromozomial, subirurile fiind numite gene.
12

Soluiile sunt create prin selecia i combinarea cromozomilor existeni urmrind optimizarea funciei obiectiv specific problemei de rezolvat. Strategiile de evoluie i Programarea evolutiv cunoscute i sub denumirea de algoritmi evolutivi, pun accentul pe legtura comportamental dintre prini i urmai sau dintre diferite populaii. Programarea evolutiv const n estimarea modificrilor de mediu n vederea transformrii prediciilor ntr-un rspuns corespunztor acestor schimbri, n funcie de scopul propus. Dac simularea mediului const dintr-o mulime de simboluri ale unui alfabet finit, atunci prin programarea evolutiv se urmrete dezvoltarea unui algoritm care s opereze cu o secven de simboluri deja observate astfel nct s produc un nou simbol care s maximizeze eficiena algoritmului n raport cu urmtorul simbol din mediu i care s optimizeze o anumit funcie cost. O reprezentare adecvat a acestui comportament este dat de teoria automatelor finite. Pentru aplicarea programrii evolutive asupra automatelor finite se parcurg urmtorii pai: 1. Se construiete aleator o populaie de automate finite printe; 2. Prinii se expun mediului; 3. Se creeaz automate urmai prin mutaii aleatoare ale fiecrei maini printe; 4. Se evalueaz urmaii n raport cu mediul n acelai mod ca i prinii; 5. Mainile care produc costul minim se rein drept prini pentru noua generaie; 6. Se itereaz paii 3.-5. pn ce se execut estimarea asupra noului simbol din mediu, estimare efectuat de cel mai bun automat. Noul simbol este adugat listei de simboluri deja observate i procesul se reia de la pasul 2. Un astfel de algoritm poate fi utilizat spre exemplu pentru generarea automat a unui program pentru rezolvarea unui tip de problem. n timp ce strategiile evolutive se bazeaz pe selecia strict determinist, programarea evolutiv folosete selecia probabilist, iar n al doilea rnd, n timp ce strategiile de evoluie modeleaz structurile indivizilor, programarea evolutiv se ocup de codificarea populaiilor, deci a speciilor distincte. 2.5. Elemente de teoria grafurilor Fie o mulime finit i nevid V = {x1, x2, ,xn} numit mulimea nodurilor sau a vrfurilor i E VxV ( E = {(xk,xp) / xk0 V, xp0 V}) o submulime a produsului cartezian VxV numit mulimea arcelor sau a muchiilor. Se numete graf, perechea ordonat G = (V,E). Pentru un arc u=(x,y), vrful x se numete extremitatea iniial a arcului u, iar vrful y se numete extremitatea final a arcului u. Mulimea E are proprietatea de simetrie dac i numai dac pentru orice pereche (xk,xp)0 E atunci (xp,xk)0 E (sau alfel spus orice arc poate fi parcurs n ambele sensuri). Dac mulimea E nu are proprietatea de simetrie atunci graful G se numete graf orientat sau graf antisimetric. Dac mulimea E are proprietatea de simetrie atunci graful G se numete graf neorientat sau graf simetric.
13

Un exemplu de graf neorientat este reeaua rutier a unei regiuni n care nodurile sunt localitile din acea regiune, iar arcele sunt cile de comunicaie rutier ntre localiti, presupunnd c deplasarea este permis n ambele sensuri. Un graf G = (V, E) se numete graf complet dac ntre orice pereche de vrfuri exist cel puin un arc. Reeaua telefonic a unui ora este un exemplu de graf complet i simetric. n reprezentare grafic, nodurile sunt figurate prin cerc sau ptrat iar arcele prin linie pentru graful neorientat i linie cu sgeat pentru graful orientat. Un exemplu de reprezentare grafic pentru un graf neorientat este ilustrat la problema comis-voiajorului prezentat anterior. Una din metodele utilizate pentru memorarea unui graf const n construirea matricii asociate grafului i anume: 1 dac exist arc ntre nodurile xk i xp A(k,p) = 0 dac nu exist arc ntre nodurile xk i xp Pentru un graf neorientat (simetric) se constat c matricea asociat este simetric. Pentru rezolvarea unor probleme de optim (minim sau maxim) se construiete i matricea costurilor ckp dac exist arc de cost ckp ntre nodurile xk i xp C(k,p) = 0 dac k = p +, - dac nu exist arc ntre nodurile x i x k p Se numete drum de la vrful xk la vrful xp, i se noteaz d(xk,xp) o succesiune de arce la fel orientate cu primul arc, cu proprietatea c extremitatea terminal a fiecrui arc coincide cu extremitatea iniial a arcului urmtor, excepie fcnd extremitatea iniial a primului arc i extremitatea terminal a ultimului arc. Un drum de la vrful xk la vrful xp poate fi precizat astfel: d(xk,xp) = (xk, xk+1, ,xp-1, xp) unde fiecare vrf al drumului se scrie o singur dat. Numrul arcelor pe care l conine drumul, n afara unor precizri speciale, se numete lungimea drumului. Un drum pentru care toate arcele din secven sunt distincte sau care nu trece de dou ori prin acelai arc se numete drum simplu. Un drum care are toate vrfurile distincte sau care nu trece de dou ori prin acelai vrf se numete drum elementar. Un drum elementar care ntlnete toate vrfurile grafului o singur dat se numete drum hamiltonian. Un drum cu proprietatea c extremitatea iniial a primului arc coincide cu extremitatea terminal a ultimului arc se numete circuit. O bucl este un circuit de lungime 1. Se numete lan de la vrful xp la vrful xk o succesiune de muchii puse cap la cap (ntre dou vrfuri exist o muchie dac ntre ele exist cel puin un arc; nu intereseaz orientarea arcelor).
14

Un lan care ntlnete toate vrfurile grafului o singur dat se numete lan hamiltonian. Un lan finit care pleac de la un vrf i se ntoarce la vrful cu care ncepe, adic este nchis se numete ciclu. Necesitatea determinrii traseelor hamiltoniene i are originea n soluionarea unor probleme practice clasice, precum problema comis-voiajorului. Cercetarea acestor trasee prezint interes n aplicaii diverse din sfera economic: organizarea fluxurilor de producie, transportul unor produse, transmitere de energie, aprovizionare etc. Exist o serie de metode pentru determinarea drumurilor hamiltoniene printre care amintim algoritmul lui Kaufmann pentru determinarea drumurilor hamiltoniene n grafuri oarecare. n practica economic apar numeroase probleme a cror rezolvare presupune determinarea drumului optim. Pentru rezolvarea acestor probleme se definete i utilizeaz n plus matricea costurilor prezentat anterior. Exist algoritmi pentru rezolvarea unor probleme de optim (minim, maxim) ca de exemplu: algoritmul lui Bellman-Kalaba pentru probleme de minim, algoritm pentru probleme de maxim. n cele ce urmeaz este prezentat o metod [11] de rezolvare a unei probleme de optim pentru o aplicaie practic. Determinarea drumului hamiltonian minim Fiind date n localiti, se pune problema determinrii drumului minim care pleac din localitatea 1 i trece prin toate localitile o singur dat (drumul hamiltonian minim ntr-un graf simetric). n exemplul ilustrat mai jos sunt reprezentate 6 localiti (1, 2, 3, 4, 5, 6), cile rutiere existente ntre localiti i distanele corespunztoare.
6 1 8 6 9 5 15 5 2 11 13 3 4 4 3 7

Se construiete matricea distanelor astfel:

C1 1 L1 L2 L3 L4 L5 L6 1 2 3 4 5 6 0 6 0 0 0 8

C2 2 6 0 11 0 15 5

C3 3 0 11 0 7 3 13

C4 4 0 0 7 0 4

C5 5 0 15 3 4 0

C6 6 8 5 13 0 9 0

0 15 9

Pentru determinarea drumului minim se poate utiliza urmtorul algoritm: - Se selecteaz linia 1 i se reine coloana cu distana cea mai mic (exceptnd valorile 0), respectiv coloana 2. Se elimin din matricea distanelor linia 1 i coloana 1. Rezult tripleta (linia, coloana, distana) = (1, 2, 6) - Corespunztor coloanei 2 determinate n pasul anterior se selecteaz linia 2 i se reine coloana cu distana cea mai mic exceptnd valorile 0), respectiv coloana 6. Se elimin din matricea distanelor linia 2 i coloana 2. Rezult tripleta (linia, coloana, distana) = (2, 6, 5) - Corespunztor coloanei 6 determinate n pasul anterior se selecteaz linia 6 i se reine coloana cu distana cea mai mic exceptnd valorile 0), respectiv coloana 5. Se elimin din matricea distanelor linia 6 i coloana 6. Rezult tripleta (linia, coloana, distana) = (6, 5, 9) - Corespunztor coloanei 5 determinate n pasul anterior se selecteaz linia 5 i se reine coloana cu distana cea mai mic exceptnd valorile 0), respectiv coloana 3. Se elimin din matricea distanelor linia 5 i coloana 5. Rezult tripleta (linia, coloana, distana) = (5, 3, 3) - Corespunztor coloanei 3 determinate n pasul anterior se selecteaz linia 3 i se reine coloana cu distana cea mai mic exceptnd valorile 0), respectiv coloana 4. Se elimin din matricea distanelor linia 3 i coloana 3. Rezult tripleta (linia, coloana, distana) = (3, 4, 7) Algoritmul se termin deoarece singura linie i coloan rmase neeliminate sunt linia 4 i coloana 4 cu distana 0. Semnificaia tripletelor rezultate este dat mai jos: Localitate Localitate Distana 1 2 6 2 6 5 6 5 9 5 3 3 3 4 7 Rezult c drumul minim este: 1 - 2 - 6 - 5 - 3 - 4 iar distana minim este: 6 + 5 + 9 + 3 + 7 = 30

16

Capitolul 3. Evoluia limbajelor de programare Rezumat- se prezint necesitatea limbajelor de programare, evoluia lor, generaiile de limbaje de programare, definirea i construirea unui limbaj de programare, clasificarea limbajelor dup diverse criterii i selectarea limbajului potrivit tipului de problem de rezolvat. Un limbaj de programare permite descrierea unui proces de calcul alctuit din mai muli pai pentru rezolvarea unei probleme, fiecare pas fiind exprimat n comenzi elementare (instruciuni) ce vor fi executate de calculator. 3.1. Limbaje n cod main Un calculator poate executa orice program descris n limbajul propriu, numit limbajmain. Limbajele n cod-main constituie prima generaie de limbaje de programare,.sunt bazate pe sistemul binar i difer de la un calculator la altul. Fiecare instruciune n aceste limbaje este o succesiune de cifre binare. Limbajele n cod main au urmtoarele dezavantaje: - necesitatea descompunerii problemei de rezolvat n operaii elementare pe care le poate executa calculatorul respectiv, cu specificarea codului numeric pentru instruciuni, date i adrese de memorie; - lizibilitate sczut i o rat mare a erorilor; - dependena de un anumit tip de calculator; - dimensiune mare a programelor; - productivitate mic in activitatea de programare. Avnd n vedere aceste dezavantaje, s-a impus crearea unor limbaje artifciale care s permit descrierea modului de rezolvare a problemei ntr-o manier apropiat de limbajul matematic sau economic sau chiar limbajul natural, care s necesite un efort minim din partea programatorilor i s poat fi executate pe orice tip de calculator. 3.2. Limbaje de asamblare Pentru ndeplinirea unor deziderate mai sus menionate, urmtoarea etap dup limbajele cod main o constituie apariia limbajelor de asamblare care constituie a doua generaie de limbaje de programare. Acestea necesit o cunoatere aprofundat a calculatorului i a sistemului de operare deoarece nlocuiesc codurile numerice ale instruciunilor i operanzilor cu coduri mnemonice. Instruciunile difer de la un calculator la altul n funcie de hard-ul disponibil. Dei programarea n limbaje de asamblare este mai uoar dect n cod-main, exist i aici urmtoarele dezavantaje: - programele rezultate nu sunt potabile (un program scris ntr-un limbaj de asamblare la un calculator nu poate fi utilizat la un calculator de alt tip); - formatul instruciunilor este diferit de cel utilizat n limbajul natural, fapt ce ngreuneaz nelegerea textului surs; - programele rezultate au dimensiune mare i productivitatea este sczut.

17

Pentru a putea fi executate pe calculator, programele scrise n aceste limbaje trebuie mai nti traduse n limbaj main, lucru ce este realizat prin intermediul unui program traductor specific limbajului utilizat, program numit asamblor. 3.3. Limbaje de nivel nalt Cercetrile efectuate pentru elaborarea unor limbaje mai apropiate de limbajul natural au condus la crearea limbajelor de nivel nalt (high level programming languages) n care un program difer foarte puin de la un calculator la altul, fiind ns necesar prezena unui program numit compilator care sa traduc programul n instruciuni cod main. Aceste limbaje constituie generaia a treia de limbaje de programare, primul limbaj de acest gen fiind limbajul Fortran (FORmula TRANslator) elaborat n 1954 sub conducerea lui John Backus. Limbajele din generaia a treia se caracterizeaz prin [7]: - au un vocabular format din simboluri, cuvinte, fraze etc.; - opereaz asupra unor concepte de nivel logic (fiier, variabile, constante, operaii de prelucrare etc.) spre deosebire de limbajul-main care opereaz cu elemente de nivel fizic (registru, locaie de memorie, port de intrare etc.); - se bazeaz pe engleza structurat, apropiindu-se de limbajul utilizat in diferite domenii; - programele sunt mult mai uor de scris i citit, crete productivitatea i se reduc erorile de programare; - dispun, in general, de biblioteci speciale; - sunt, in general, limbaje procedurale (urmresc, pas cu pas, procedura de rezolvare a problemei); - sunt orientate spre problem iar programele rezultate sunt portabile (pot fi rulate pe orice tip de calculator, indiferent de tipul de microprocesor sau de sistemul de operare cu care acesta este dotat, fiind necesar doar prezena compilatorului aferent). Aceste limbaje au dominat mai bine de 30 de ani piaa limbajelor de programare. Dei exist mii de astfel de limbaje, o clasificare simplificat ar putea fi urmtoarea [7]: 1) limbaje pentru calcule tiinifice: Fortran i ALGOL (ALGOrithmical Language); 2) limbaje comerciale: COBOL (COmmon Busines Oriented Language) i RPG (Report Program Generator); 3) limbaje pentru aplicaii speciale: a) pentru simulare: Simula, GPSS, GPS; b) pentru aplicaii militare n timp real: Ada; c) pentru programarea roboilor i a mainilor unelte: FORTH; d) pentru rezolvarea problemelor de timp real: RTL/2, IRTB. Modula; e) pentru programare obiectual: Smalltalk; 4) limbaje pentru destinaii multiple: a) pentru instruire: Basic (Beginners All purpose Symbolic Instruction Code), Pascal; b) derivate din sisteme de operare: C, C++, B, BCPL;
18

c) pentru programare funcional: Lisp (LISt Processing), APL (A Programming Language), ML (Mathematical Language). Limbajele din generaia a 4-a au aprut odat cu dezvoltarea sistemelor de baze de date (SGBD-uri). Aceste limbaje se mai numesc i generatoare de aplicaii i sunt preferate de ctre neinformaticieni. Principalele caracteristici ale acestor limbaje sunt: - o interfa prin instruciuni precum i prin meniuri .a.; - caracterul neprocedural (utilzatorul trebuie s indice sistemului ce anume dorete s fac i nu cum s procedeze, sistemul rezolvnd aceste probleme); - uurina cu care se pot nva i manevra; - independena datelor de progamele de apicaii care le utilizeaz. Dintre limbajele din generaa a 4-a fac parte limbajele din familia dBASE (dBASE, FoxBase, FoxPro), Paradox, Clipper, SQL (Structured Query Language), QBE (Query By Example), DB2 etc. Limbajele de generaa a 5-a se utilizeaz pentru rezolvarea unor probleme de programare logic. Cel mai reprezentativ limbaj al acestei generaii este PROLOG. O alt clasificare a limbajelor de programare se poate face [7] dup modul i nivelul de abstractizare, metodologiea programrii, structura programului etc. : I) limbaje pentru programarea modular i structurat: Fortran, ALGOL, COBOL, Pascal, C; II) limbaje pentru programarea orientat pe obiecte: Smalltalk, Java, Python, Eiffel; II) limbaje pentru programarea concurent i distribuit: Concurent Pascal, CSP, Ada, Linda, Orca; IV) limbaje pentru programarea funcional: Lisp, ML, Caml, Miranda, APL; V) limbaje pentru programarea logic: Prolog, Datalog. VI) limbaje pentru programarea la nivelul BD: limbajele incorporate in SGBD-urile respective, SQL, QBE; VII) limbaje pentru programarea vizual: Visual Basic, Visual C++, Visual FoxPro Clasele rezultate nu sunt disjuncte, unele limbaje regsindu-se n cadrul a mai multor clase. Astfel, Java este att un limbaj pentru programare orientat pe obiecte, ct si pentru programarea concurent i distribuit dar i vizual. Activiti necesare la elaborarea i execuia programelor: - scrierea programului sau codificarea (rezult programul surs sau codul surs); - ncrcarea n memorie i salvarea pe disc; - compilarea (rezult module obiect); - editarea de legturi (rezult program executabil); - depanarea; - execuia. - ntreinerea Pentru redactarea unui program (tastarea instruciunilor) se utilizeaz un editor de texte. Avnd n vedere c de la operaia de redactare a programului i pn la execuia sa se parcurg o serie de activiti menionate mai sus, s-au creat aanumitele medii de

19

programare care conin instrumente (utilitare) pentru fiecare etap (ncepnd cu editoare de texte proprii i terminnd cu comenzi pentru execuia programului). Un salt important n activitatea de programare o constituie trecerea de la programarea procedural (monolitic), n care un program este o secven de instruciuni, la programarea visual i orientat obiect care permite generarea unui program i a unor interfee utilizator prietenoase prin combinarea (manipularea) unor obiecte predefinite sau definite de utilizator i ataare de cod corespunztor. Astfel s-au estompat barierele dintre teoria i practica programrii, urmrindu-se simplificarea la maximum a programrii i, dup posibiliti, transferarea acesteia ctre calulator. Odat cu apariia produselor CASE (Computer Added Software Engineering) se poate spune c programarea a trecut n faza de producie. Probleme rezolvate 1. Un calculator poate executa un program: a) scris n orice limbaj de programare b) descris n limbaj main rspuns corect b) 2. Enumerai principalele dezavantaje ale programrii n limbaj main. rspuns: - necesitatea descompunerii problemei de rezolvat n operaii elementare pe care le poate executa calculatorul respectiv, cu specificarea codului numeric pentru instruciuni, date i adrese de memorie; - lizibilitate sczut i o rat mare a erorilor; - dependena de un anumit tip de calculator; - dimensiune mare a programelor; - productivitate mic in activitatea de programare. 3. Un program scris ntr-un limbaj de asamblare poate fi executat: a) pe orice calculator b) numai pe tipul de calculator corespunztor limbajului de asamblare utilizat rspuns corect b)
4.

Un program scris ntr-un limbaj de asamblare poate fi executat pe calculator: a) fr a necesita alte transformri prealabile b) dup ncrcarea sa n memorie c) numai dup traducerea sa n instruciuni cod main

rspuns corect c)
20

5. Enumerai principalele caracteristici ale limbajelor de programare din generaia a treia rspuns: - au un vocabular format din simboluri, cuvinte, fraze etc.; - opereaz asupra unor concepte de nivel logic (fiier, variabile, constante, operaii de prelucrare etc.) spre deosebire de limbajul-main care opereaz cu elemente de nivel fizic (registru, locaie de memorie, port de intrare etc.); - se bazeaz pe engleza structurat, apropiindu-se de limbajul utilizat in diferite domenii; - programele sunt mult mai uor de scris i citit, crete productivitatea i se reduc erorile de programare; - dispun, in general, de biblioteci speciale; - sunt, in general, limbaje procedurale (urmresc, pas cu pas, procedura de rezolvare a problemei); - sunt orientate spre problem iar programele rezultate sunt portabile (pot fi rulate pe orice tip de calculator, indiferent de tipul de microprocesor sau de sistemul de operare cu care acesta este dotat, fiind necesar doar prezena compilatorului aferent). Probleme propuse 1. Enumerai i exemplificai principalele clase de limbaje de programare din generaia a treia 2. Limbajele de programare din generaia a patra au aprut: a) odat cu apariia compilatoarelor b) ca urmare a dezvoltrii sistemelor de baze de date c) pentru rezolvarea aplicaiilor de programare logic 3. 4. Dai exemple de limbaje din generaia a patra

Cel mai reprezentativ limbaj de programare logic este limbajul: a) SQL b) Simula c) PROLOG d) LISP e) Java Enumerai i exemplificai principalele clase de limbaje de programare dup metodologiea programrii, structura programului: Care sunt principalele activiti ce trebuie parcurse de la operaia de redactare a unui program i pn la execuia sa pe calculator:
21

5. 6.

7. Un mediu de programare este: a) un limbaj de programare evoluat b) o component a sistemului de operare c) un set de instrumente software care permite realizarea tuturor operaiilor ncepnd cu redactarea programului i terminnd cu execuia sa pe calculator.

22

Capitolul 4. Consideraii generale privind lexicul, sintaxa i semantica unui limbaj de programare Rezumat- se prezint alfabetul unui limbaj de programare, vocabularul limbajului, traducerea programelor (translatoare), analiya textului surs a unui program (analiza lexical, sintactic i semantic). 4.1. Alfabetul i vocabularul unui limbaj de programare Setul de caractere Orice limbaj de programare are la baz un anumit alfabet. n majoritatea cazurilor setul de caractere este format din: - literele alfabetului englez (de la A la Z, de obicei i majusculele, i literele mici, n total 52 de caractere); - cifrele arabe (de la 0 la 9, n total 10 caractere); - unele caractere speciale (. , ; = < > # $ % + - * / ( ) etc.) , a cror semnificaie poate s difere de la un limbaj la altul. Pentru codificarea seturilor de caractere sunt utilizate urmtoarele standarde: - EBCDIC (Extended Binary Coded Decimal Interchenge Code), un cod pe 8 bii, introdus de IBM; - ASCII (American Standard Code for Information Interchange), introdus de ANSI (American National Standard Institute), este un cod pe 7 bii i permite codificarea a 128 de caractere (95 de caractere tipribile i 33 de caractere netipribile, numite caractere de control). Ulterior, setul ASCII a fost extins la o codificare pe 8 bii, fiind disponibile astfel 256 de caractere. Primele 128 sunt din setul ASCII standard, iar urmtoarele 128 sunt coduri de caractere tipribile pentru caracterele unor alfabete naionale europene (francez, spaniol, romn etc.), o parte din literele alfabetului grecesc, unele simboluri matematice , caractere speciale pentru desenat tabele etc. Ordonarea caracterelor alfabetului se face pe baza codurilor numerice corespunztoare caracterelor respective. Pe baza caracterelor ce alctuiesc alfabetul limbajului se alctuiesc cuvintele care formeaz vocabularul limbajului i cu ajutorul crora se construiesc instruciunile limbajului. Exist dou categorii de cuvinte i anume: 1. cuvinte cheie acestea au un neles explicit ntr-un context precizat (de ex., in unele limbaje de programare cuvintele ce desemneaz instruciuni pot fi folosite i ca nume de variabile, neexistnd restricii; asemenea situaii nu sunt ns indicate deoarece pot ascunde erori n logica programului i l fac mai greu de neles); 2. cuvinte rezervate acestea nu pot fi folosite dect n scopul pentru care au fost definite (de ex., n limbajul Visual Basic). Avantajele utilizrii acestei categorii de cuvinte sunt urmtoarele: - programul devine mai uor de neles; - se mrete viteza de compilare (analiza lexical, sintactic i semantic este mai simpl la cutarea n tabele de simboluri);
23

- erorile sunt mai uor de depistat. Pe de alt parte, n cadrul unui limbaj de programare se vor utiliza cuvinte ale limbajului (rezervate) i cuvinte definite de utilizator pentru a referi diverse elemente (variabile, fiiere, nume de proceduri, nume de funcii, etc.). Sintaxa unui limbaj de programare i n cazul limbajelor de programare succesiunile de cuvinte construite dup anumite reguli, formeaz propoziii, numite instruciuni. Sintaxa unui limbaj de programare reprezint ansamblul de reguli prin care se determin dac o anumit instruciune este alctuit corect sau nu. Sintaxa unui limbaj de programare poate fi descris n diverse moduri , unul dintre acestea fiind notaia BNF (Backus-Naur Form). Notaia BNF Notaia BNF (Backus-Naur Form) a fost utilizat prima dat la descrierea sintaxei limbajului ALGOL (n cadrul raportului ALGOL60 aprut n 1963) i este numit dup doi dintre autorii acestui raport. n cadrul BNF sunt folosite metasimboluri, simboluri terminale si simboluri neterminale. Metasimboluri sunt simbolurile <, >, i ::= i ele fac parte din mecanismul de descriere a limbajului. Simbolul semnific o alternativ, simbolul ::= inseamna se definete astfel. Simbolurile terminale sunt cuvinte care apar acolo unde se specific n producii (de ex., for, while, do, +, ; etc.). Simbolurile neterminale sunt ncadrate n < i > i sunt definite prin producii ale limbajului (de ex., <variabil>, <identificator>, <instruciune if> etc.). Exemplu: n limbajul Visual Basic sintaxa unui identificator se descrie n BNF astfel: <identificator>::=<liter><identificator><cifr><identificator><liter> unde <liter>::=ab...zAB...Z <cifr>::=012...9 Conform acestei producii, identificatorul are 3 definiii alternative: un identificator este fie o <liter>, fie un <identificator> urmat de o <cifr> sau o <liter> (definiie recursiv). Semnificaia acestei definiii este urmtoarea: un identificator poate s conin o singur liter, sau o liter urmat de oricte litere i/sau cifre. Conform acestei definiii, sunt corecte sintactic urmtorii identificatori: a, t1, sec12a1. Descrierea sintaxei instruciunii condiionale IFEndIf din limbajul Visual Basic n notaie BNF este: <instruciune If>::= If < condiie > Then < instruciuni 1 > Else < instruciuni 2 > EndIf

24

4.2. Traducerea programelor (translatoare) Translatorul este un program ce traduce un program surs scris ntr-un anumit limbaj de programare ntru-un program echivalent dintr-un alt limbaj, acest nou program numindu-se program destinaie. Translatoarele se clasific astfel: - compilatoare pentru acestea programul destinaie se numete program obiect sau cod obiect, fiind apropiat de codul mainii; - asambloare sunt compilatoarele limbajelor de asamblare; n aceste dou cazuri traducerea de obicei este urmat de editarea de legturi, nainte de execuia propriu-zis a programului. n aceast faz codul executabil se constituie prin legarea codului obiect rezultat din traducere cu alte module obiect (rezultate ale unor compilri anterioare sau cele existente n biblioteci). - interpretoare realizeaz execuia instruciune cu instruciune a programului surs. - preprocesoare - traduc programe surs din limbaje de nivel nalt n programe destinaie tot n limbaje de nivel nalt; - cross-compilatoare sau cross-asambloare - genereaz pe un calculator gazd un cod obiect pentru un alt calculator-obiect (care, de ex., are memorie mic i nu poate implementa programul de traducere); - compilatoare incrementale - combinaie compilator-interpretor, ce folosete secvene din programul surs cu o anumit independen sintactic i semantic pentru a le executa interpretativ. 4.3. Analiza textului surs a unui program Analiza textului surs const din: analiza lexical, analiza sintactic i analiza semantic. Analiza lexical Analiza lexical realizeaz o prim parcurgere a programului surs, considerat ca un ir de carctere i grupeaz aceste caractere n subiruri numite atomi lexicali: cuvinte cheie sau rezervate, operatori, constante, identificatori, separatori. Operaiile pe care le realizeaz analizorul lexical sunt urmtoarele: - detecteaz n programul surs subiruri ce respect regulile de formare a atomilor lexicali; - clasific aceste subiruri (identific clasa la care aparin aceste subiruri); - traduce subirurile n atomi lexicali; - memoreaz atomii n tabela de simboluri. Analiza sintactic n aceast faz n irul atomilor lexicali se identific structuri sintactice: expresii, liste, instruciuni, proceduri etc. i se genereaz, n cazul n care irul de intrare este corect sintactic, o descriere structural a acestuia, semantic echivalent - arborele sintactic (de

25

derivare) sau, n caz contrar, un mesaj de eroare. Arborele sintactic descrie relaiile dintre structuri (separare, incluziune etc.). Analiza semantic. Analiza semantic folosete arborele sintactic, creat n faza de analiz sintactic, pentru a extrage informaii privind apariiile n programul surs a obiectelor purttoare de date (tipuri de date, variabile, proceduri, funcii) i a verifica consistena utilizrii lor. Odat cu parcurgerea arborelui sintactic are loc i generarea codului intermediar. Acesta reprezint un ir de instruciuni simple, cu format fix, n care codurile operaiilor sunt asemntoare cu codurile main corespunztoare, ordinea operaiilor respect ordinea execuiei (conform apariiei lor n programul surs) iar operanzii sunt reprezentai sub forma variabilelor din programul surs (nu sub form de regitri sau adrese de memorie). n practic, analiza semantic se desfoar n paralel cu cea sintactic, prin asocierea aciunilor analizorului sintactic cu aciuni referitoare la anumite structuri de date ce reprezint atribute ale componentelor sintactice. Generarea codului obiect Generarea codului obiect presupune alocarea locaiilor de memorie i a regitrilor unitii centrale pentru variabilele programului i nlocuirea codurilor de operaii din codul intermediar cu cele main. Componente de baz (lexical, sintactic, semantic) sunt asistate pe tot parcursul compilrii de urmtoarele dou module: Modulul de tratare a erorilor o colecie de proceduri care sunt activate ori de cte ori este detectat o eroare n timpul operaiilor de analiz. Dup faza de analiza n care apar, erorile pot fi lexicale, sintactice sau de semantic. Procedurile de tratare a erorilor afieaz mesaje de diagnostic relativ la eroare i iau decizii privind modul de continuare a traducerii (se continu , ignornd elementul ce conine eroare, se ncearc corectarea erorii sau se intrerupe traducerea). Modulul de gestiune a tabelelor o coleie de proceduri care creaz i actualizeaz baza de date a compilatorului. Aceasta conine informaii proprii compilatorului (generate la implementare i constituite din mecanismele de descriere a analizei lexicale, sintactice i semantice) i informaii ce aparin programului surs ce se traduce (identificatorii, constantele, cuvintele cheie), memorate n tabela de simboluri. Gestionarea tabelei de simboluri se face n funcie de modul de reprezentare al acesteia, caracterul general al tabelei, tipul limbajului din care se traduce programul surs, conveniile alese pentru reprezentarea atributelor n ea .a. De obicei, n faza de analiza lexical, la ntlnirea unui nume nou, acesta este ntrodus n tabela de simboluri, reinndu-se i adresa intrrii. Orice referire ulterioar la acest nume actualizeaz informaia din tabel corespunztoare acestui nume, verificndu-se i consistena utilizrii acestuia (n cadrul analizei semantice). La generarea codului, atributele numelui determin lungimea zonei de memorie alocat acestuia. Atributele numelui pot servi i n faza de tratare a erorilor.

26

Probleme rezolvate 1. Alfabetul unui limbaj de programare este constituit din: a) literele alfabetului limbii romne b) cifrele de la 0 la 9 c) literele alfabetului limbii engleze d) semne speciale e) cuvinte cheie rspuns corect b), c), d)
2.

Plecnd de la alfabet se construiesc: a) instruciunile limbajului b) cuvintele limbajului c) programe d) vocabularul limbajului

rspuns corect d) 3. Vocabularul limbajului poate conine: a) cuvinte rezervate b) cuvinte utilizator c) proceduri d) cuvinte cheie e) funcii f) expresii rspuns corect a), b), d) 4. Analiza lexical, sintactic i semantic a unui program surs se realizeaz n faza: a) de execuie b) de compilare c) de editare de legturi d) de implementare e) de scriere a programului. rspuns corect b)

27

Probleme propuse 1. O instruciune a limbajului este: a) orice succesiune de cuvinte din vocabular b) o succesiune de cuvinte din vocabular, construit dup anumite reguli sintactice c) orice propoziie din limba englez 2. Notaia BNF este: a) o metod de reprezentare a unui program b) o modalitate de descriere a sintaxei unui limbaj de programare c) o metod de descriere a unui algoritm 3. Enumerai principalele tipuri de translatoare i funciile acestora. 4. Un program scris ntr-un limbaj de programare se numete: a) program obiect b) program surs c) program destinaie d) program executabil

28

Capitolul 5. Limbajul Visual Basic Rezumat- se prezint limbajul de programare Visual Basic sub Excel, i un exemplu de realizare a unei aplicaii Windows pentru calculul salariilor personalului angajat al unei firme. 5.1. Programarea aplicaiilor Windows Pentru realizarea unei aplicaii pot fi avute n vedere dou tehnologii de programare i anume: - programare procedural - programare orientat spre obiecte i dirijat de evenimente. n programarea procedural, o aplicaie este constituit din unul sau mai multe programe care se vor executa ntr-o anumit ordine, fiecare program fiind constituit dintr-o secven de instrucuni scrise ntr-un limbaj de programare. Acesta era modul clasic de realizare a aplicaiilor i sistemelor informatice i are o serie de dezavantaje printre care: productivitate sczut n realizarea programelor, efort mare pentru realizarea programelor i mai ales a interfeelor etc. Apariia tehnologiei orientate obiect, a mediilor visuale de programare i a sistemului de operare Windows a condus la apariia i dezvoltarea unei noi tehnologii de programare a aplicaiilor windows i anume programarea orientat pe obiecte i dirijat de evenimente, tehnologie ce va fi prezentat n cele ce urmeaz n cadrul limbajului Visual Basic. O aplicaie Windows afieaz unul sau mai multe ecrane care conin obiecte cu care va interaciona utilizatorul pentru a controla evoluia programului. ntr-un mediu de programare vizual, obiectele principale sunt formele i controalele desenate n forme (form = o fereastr) Aceste obiecte pot fi create prin selecie i depunere folosind barele de instrumente ale mediului respectiv. Spre exemplu, bara cu instrumente Visual Basic permite crearea unei varieti de obiecte printre care: forme, butoane, casete cu list, casete derulante combinate, casete de validare, butoane radio (butoane de opiune), etc. Fiecare din aceste obiecte are un comportament predefinit. Spre exemplu cnd se execut click pe un buton acesta trece n poziia apsat i apoi revine n poziia normal. Pentru a schimba comportamentul obiectului acestuia trebuie s-i ataai cod de program (instruciuni) corespunztor, cod ce se va executa atunci cnd are loc un anumit eveniment (spre exemplu n cazul butonului evenimentul este click). Evenimentele se produc ca urmare a unei aciuni a utilizatorului (ex. evenimentul click corespunde apsrii butonului stng al mouse-ului pe obiectul respectiv), sau n urma execuiei codului programului, sau pot fi declanate de ctre sistem. Majoritatea obiectelor vor rspunde unui anumit numr de evenimente generate de ctre utilizator printre care click-uri, dublu click-uri, apsri de taste sau trageri i eliberri ale obiectului. Limbajul Visual Basic pune la dispoziia utilizatorului un mediu de dezvoltare care permite crearea de programe orientate spre obiecte i conduse de evenimente. Pentru lucrul cu obiecte conduse de evenimente se parcurg urmtoarele etape:
29

se creeaz o nou form creia i se d un nume; se deseneaz i se denumesc obiectele ce urmeaz a fi afiate n forma respectiv; se ataeaz fiecrui obiect codul ce va fi executat ca rspuns la evenimente generate de utilizator sau de sistem. Va rezulta o interfa grafic cu care interacioneaz utilizatorul pentru a controla evoluia programului. Rezumnd putem spune c n programarea orientat spre obiecte i dirijat de evenimente, obiectele au un comportament predefinit care poate fi modificat de utilizator prin ataare de cod corespunztor i aceste obiecte rspund la evenimente declanate fie ca urmare a aciunii utilizatorului asupra obiectelor, fie ca urmare a execuiei codului ataat, fie declanate de sistem. 5.2. Proprieti i metode Un obiect este definit de un set de proprieti cum ar fi: dimensiune, culoare, poziie pe ecran, comportament (ex. dac un buton radio este activ sau nu la un moment dat etc.). O metod este o procedur (succesiune de instruciuni) asociat unei anumite aciuni a unui obiect. Spre exemplu n Visual Basic exist o metod Move asociat majoritii obiectelor (permite mutarea obiectelor). Deci proprietile descriu obiectele iar metodele definesc aciunile obiectelor, iar pe de alt parte proprietile reprezint date iar metodele reprezint cod (instruciuni). Astfel n gramatica programrii orientate spre obiecte : - obiectele sunt substantive; - proprietile sunt adjective; - metodele sunt verbe. Utilizarea notaiei cu punct pentru referirea proprietilor i metodelor Referirea unei proprieti se face astfel: Obiect . Proprietate = Valoare Exemplu - fie forma frmForma1 i variabila dColor n care memorm culoarea de fond a formei dColor = frmForma1.BackColor (citete culoarea curent i o depune n dColor) frmForma1.BackColor = QBColor (Blue) - stabilete noua culoare de fond a formei la valoarea Blue. Referirea metodelor se face asemntor cu referirea proprietilor, ns n plus metodele pot necesita precizarea unor informaii suplimentare. Exemplu - pentru mutarea obiectului Buton1 n colul din stnga sus al formei curente se apeleaz metoda Move i se precizeaz coordonatele colului din stnga sus: Buton1.Move 0,0 Stabilire proprieti i executare metode Proprietile unui obiect pot fi setate n faza de proiectare (atunci cnd se deseneaz sau se modific formele) utiliznd fia Properties a formei sau obiectului din form (fia

30

este automat vizualizat la selecia obiectului respectiv: forma, buton, etc.). De asemenea fia Properties poate fi vizualizat prin click dreapta i selecie Properties. Proprietile pot fi modificate i prin program n momentul execuiei formei, dac codul de program asociat conine instruciuni care refer i seteaz proprieti (ca n exemplul de mai sus n care schimbm culoarea fondului formei). Spre deosebire de proprieti, metodele pot fi executate numai n momentul execuiei programului (eventual n momentul depanrii programului utiliznd facilitatea Debugger a programului Visual Basic). Denumirea obiectelor Orice obiect are proprietile: Name - numele utilizat n scrierea codului Capture - numele dat obiectului pentru a putea fi identificat de utilizator. Visal Basic d nume implicite obiectelor. Este indicat ca utilizatorul s dea nume obiectelor (Name) utiliznd urmtoarea convenie: - un prefix format din 3 litere mici (ex. frm pentru form, cmd pentru buton de comand, etc.) - un ir de caractere care identific obiectul (ex. Forma1, Ecran1, Buton1, etc.). n tabelul urmtor sunt prezentate conveniile de denumire a obiectelor din Visual Basic: Obiect Form Buton de comand Caset de text Bare de derulare - orizontal - vertical Meniu Caset de validare Caset cu lista Cadru Imagine Buton de opiune (radio) Prefix frm cmd, btn txt hsb vsb mnu chk lst fra img opt Exemplu frmForma1 cmdButon, btnOK
txtCaseta1

mnuMeniuPrinc

optBO1

31

5.3. Utilizare Visual Basic din Excel

Lansare editor Visual Basic: Tools Macro Visual Basic Editor

32

Creare form: InsertUserForm

tergere form: File Remove UserForm (pentru forma selectat = ultima activat) No (fr export = fr salvare)

33

Dup creare form se pot desena obiecte n form utiliznd bara de instrumente Toolbox Controls prin selectare obiect, antrenare pe suprafaa formei i depunere obiect ca n exemplul de mai jos:

n partea stng a ecranului este afiat lista proprietilor obiectului selectat (care pot fi eventual modificate - setate). Cu click dreapta pe obiect se pot vizualiza: - proprietile obiectului - codul asociat i eventual se pot efectua i alte operaii (Cut, Copy, Paste, Delete). Vizualizare forme View Project Explorer din lista Project ce apare se alege forma dorit (care poate fi editat cu click dreapta, sau executat din Run Sub / UserForm). sau selecie obiect din lista Project i apoi View Object (pentru afiare obiect n modul Design)

34

Code (pentru afiare cod pentru obiectul selectat)

35

Execuie form: Run Run Sub / UserForm (pentru form curent)

Pentru revenire n ecranul anterior (editorul Visual Basic) se nchide forma (se apas butonul Close al formei)

36

5.4. Variabile

O variabil este o zon temporar de memorie creia i se d un nume, i care poate memora (stoca) un anumit tip de dat care poate fi modificat pe parcursul execuiei programului. n Visual Basic numele unei variabile poate avea max. 256 caractere, trebuie s nceap cu un caracter alfanumeric (litere, cifre) i nu poate fi un cuvnt rezervat al limbajului Visual Basic (cum ar fi Sub, Function, etc.). Tipuri de variabile n Visual Basic Tip Byte Boolean Integer ntreg Long integer - ntreg lung Simpl precizie Dubl precizie Currency valut Date - dat calendaristic Object obiect String ir Variant nedefinit User-Defined (definit de utilizator) Sufix % & ! # @ $ Dimensiune (octei) 1 2 2 4 4 8 8 8 4 1/caracter dup caz dup caz Domeniu de valori 0-255 Adevrat, Fals (True, False) -32768, + 32768 -2.147.483.648, 2.147.483.647 -3.40E38 ; 3.40E38 -1.80E308 , 1.80E308 -9.22E14 , 9.22E14 ian 1, 100 ; dec 31 ,9999 Adresa unui obiect 65500 octei n funcie de tip n funcie de tipul elementelor

Declaraii implicite i explicite de variabile Declararea implicit se face utiliznd sufixul (ca n tabelul de mai sus). Exemplu: Vrsta% = 42 (variabila vrsta este de tip ntreg) Dac ultimul caracter nu este unul din caracterele de declarare a tipului: %, &, !, # , @, $ atunci tipul prestablit este variant. Declararea explicit a unei variabile se face utiliznd instruciunea Dim la nceputul unei proceduri. Exemplu: Dim Varsta As Integer Dim X As Double Dim sir1, sir2 As String (sir1 este de tip variant, sir2 este de tip string) Dim sir As String 10 (de tip ir ce poate conine max. 10 caractere) Domeniul unei variabile

37

Domeniul unei variabile este zona programului n care variabila este vizibil. ntruct o variabil poate fi declarat la 4 nivele diferite exist corespunztor 4 nivele diferite de domenii de vizibilitate i anume: 1. nivel procedur 2. variabile statice n interiorul procedurilor 3. nivel form 4. nivel modul standard Nivelul procedur este primul nivel la care poate fi declarat o variabil fie implicit fie cu instruciunea Dim. Exist dou tipuri de procedur n Visual Basic i anume: - proceduri Sub - proceduri Function. Variabilele declarate n proceduri vor fi variabile locale ale procedurilor respective, fiind valabile (accesibile) numai n procedurile n care au fost declarate. Deci aceste variabile au cea mai redus vizibilitate i cel mai restrns domeniu. Cnd execuia unei proceduri se ncheie, toate variabilele locale ale acesteia sunt eliminate din memorie. # Deci variabilele locale ale unei proceduri sunt reiniializate la fiecare apel al procedurii.
1.

Variabile statice - n interiorul procedurilor O variabil local poate fi fcut permanent dac n locul instruciunii Dim se folosete instruciunea Static. Astfel o variabil static i conserv valoarea ntre apelurile succesive ale procedurii n care a fost declarat (deci nu va fi reiniializat la fiecare apel al procedurii), ns este vizibil numai n cadrul procedurii n care a fost declarat.
2.

3. Variabile la nivel form O variabil declarat la nivelul unei forme, va fi accesibil la nivelul tuturor procedurilor acelei forme. Variabile la nivelul modul standard Modulele de cod sunt module utilizate pentru a pstra procedurile i funciile generale neinfluenate de evenimente i variabilele i constantele globale. Aceste module se creeaz prin selectarea opiunii Module din meniul Insert al programului Visual Basic, sau prin click pe butonul module din bara cu instrumente. Declararea unei variabile la nivelul unui astfel de modul se face prin plasarea acesteia n zona de declaraii a obiectului General, zon accesibil prin intermediul ferestrei de cod. Cel mai nalt domeniu de vizibilitate este nivelul global. Orice variabil declarat la acest nivel este vizibil din orice procedur a aplicaiei (proiectului). Declararea unei variabile globale se face utiliznd cuvntul cheie Global n seciunea General / Declaration a modulului de cod. Exemplu: Global NumePrenume As String Constante
4.

38

O constant poate fi privit ca o variabil a crei valoare nu se modific niciodat rmnnd aceeai pe parcursul ntregii viei a programului. Utilizarea constantelor duce la creterea calitii programelor. Ca i n cazul unei variabile, domeniul unei constante este determinat de locul unde este declarat. Constantele se declar cu cuvntul cheie Const. Este indicat ca numele constantelor s fie scrise cu litere mari pentru a fi uor reperabile. Exemplu de utilizare InputBox( ), MsgBox Const IB_TITLU = "Titlu InputBox" Dim sNume As String variabil local Dim sPrompt as string Static ixPos As Integer, iyPos As Integer valoare pstrat ntre apeluri SPrompt = "Introducei numele dumneavoastr:" ixPos = Iif(ixPos > 0, 0, 1440) schimb poziia ferestrei iyPos = Iif (iyPos >0, 0, 1440) sNume = InputBox$ (sPrompt, IB-TITLU, ixPos, iyPos) If sNume = " " Then MsgBox "Nu s-a introdus nimic!" Tipuri de date definite de utilizator n afar de tipurile de date predefinite n cadrul limbajului Visual Basic, utilizatorul poate s-i defineasc propriile sale tipuri de date, care pot conine unul sau mai multe tipuri de date predefinite. Tipurile de date definit de utilizator pot fi declarate numai n seciunea General / Declaration a modulului de cod cu ajutorul cuvintelor cheie Type i End Type (deci tipurile definite de utilizator sunt vizibile din orice punct al aplicaiei, proiectului respectiv). Exemplu: Type t_pers Nr As Integer Nume As String 30 DataNasterii As Date End Type Dup definirea unu astfel de tip de dat acesta poate fi utilizat pentru declararea unei variabile de acest tip. Pentru variabil se poate utiliza Dim, Static, Global pentru a defini domeniul de vizibilitate al acestei variabile. Exemplu: Dim Persoane As t_pers Persoane.Nr = 15 Pesoane.Nume = "Ionescu Ion" Persoane.DataNasteri = #december 20 ,1983 # Astfel de tipuri de variabile sunt utilizate n programele de baze de date. Prefixele variabilelor De obicei fiecare programator i definete variabilele utiliznd un prefix scris cu litere mici pentru a identifica tipul variabilei dup cum urmeaz:
39

i - Integer s - String l - Long -------Exist o list standard de prefixe de variabile numit notaie ungar (Hungarian Notation) - inventat de un programator de naionalitate ungar de la firma Microsoft pentru limbajul C. 5.5. Operaii de intrare /ieire realizate cu funciile InputBox ( ) i MsgBox ( ) Limbajul Visual Basic dispune de funciile InputBox ( ) i MsgBox ( ) pentru realizarea de operaii simple de intrare/ieire prin utilizarea unor casete de dialog predefinite. n cadrul unui program utilizatorul trebuie s poat introduce date i s poat afia sau extrage rezultate. Funcia InputBox ( ) - afieaz o caset de dialog i ateapt ca utilizatorul s introduc text, apoi returneaz coninutul casetei de text. Valoarea returnat este fie de tip variant fie de tip String n funcie de varianta utilizat: Valret = InputBox (prompt, title, default, xpos, ypos, helpfile, context) - ntoarce Variant Valret$ = InputBox$ (prompt, title, default. xpos, ypos, helpfile, context) - ntoarce String - Argumentul prompt este singurul argument obligatoriu, care va fi un mesaj (de tip String) care invit utilizatorul s introduc text n caseta de text afiat. Pentru a introduce text pe mai multe linii se va introduce CR. LF, (chr(13), chr(10)) sau constanta predefinit vbcrlf, ntre fiecare dou rnduri succesive). - Title este un ir de caractere ca va fi afiat n bara de titlu a casetei de dialog. - Default - se poate completa pentru acest argument un ir de caractere care s fie considerat rspunsul predefinit (va apare afiat n caseta de text), iar dac nu se completeaz, caseta de text (n care utilizatorul va introduce textul) va fi afiat goal. - xpos, ypos - sunt expresii numerice care specific distana pe orizontal, vertical a colului din stnga sus al casetei de dialog fa de colul din stnga al ecranului (formei). Dac sunt omise, caseta de dialog va fi centrat pe orizontal la o treime din nlimea ecranului. Dac se omite title sau default sau ambele i vrem s precizm xpos, ypos atunci n locul argumentelor omise se va folosi cte o virgul pentru fiecare argument omis. - Pentru ambele funcii InputBox( ) i MsgBox( ), argumentele helpfile (ir) i context (nr. ntreg) sunt utilizate pentru a pune la dispoziie asisten soft dependent de context, caz n care utilizatorul poate apsa tasta F1 pentru a vedea articolul Help creat pentru respectiva caset de dialog. Dac se selecteaz butonul OK sau se apas Enter, funcia InputBox( ) returneaz coninutul casetei de text. Dac nu se introduce text sau se selecteaz butonul Cancel, funcia returneaz un ir de lungime 0 (" "). Variabila Valret va memora coninutul casetei de text (textul introdus).

40

Funcia MsgBox ( ), procedura MsgBox Funcia MsgBox( ) i procedura MsgBox afieaz un mesaj ntr-o caset de dialog i ateapt ca utilizatorul s selecteze un buton. Funcia MsgBox ( ) returneaz o valoare ntreag care indic numrul butonului selectat. Procedura MsgBox nu returneaz nici o valoare ( se utilizeaz atunci cnd nu intereseaz cum este nchis caseta de dialog corespunztoare). Sintaxa funciei MsgBox ( ) este: Valret % = MsgBox(msg, type, title, helpfile, context) Sintaxa procedurii MsgBox este: MsgBox msg, type, title, helpfile, context -msg = expresie ir afiat ca mesaj n caseta de dialog -type = expresie numeric ce precizeaz numrul i tipul butoanelor i a altor elemente ce vor fi afiate n caseta de dialog corespunztor tabelului de mai jos. n tabelul de mai jos sunt date grupele de valori care descriu: 1. numrul i tipul butoanelor casetei de dialog 2. tipul pictogramei 3. butonul prestabilit 4. modalitatea casetei de dialog.
Valoare 0 1 2 3 4 5 16 32 48 64 0 256 512 0 4096 Semnificaie Afieaz numai butonul OK Afieaz butoanele OK i Cancel Afieaz butoanele Abort,Retry,Ignore Afieaz butoanele Yes, No, Cancel Afieaz butoanele Yes, No Afieaz butoanele Retry, Cancel Afieaz pictograma Critical Afieaz un semn de ntrebare Afieaz un semn de exclamare Afieaz pictograma Information Primul buton este prestabilit Al doilea buton este prestabilit Al treilea buton este prestabilit Caset modal aplicaiei Caset modal sistemului Constanta simbolic recomandat vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel vbCritical vbQuestion vbExclamation vbInformation vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbApplicationModal vbSystemModal

Pentru a obine valoarea argumentului type se va nsuma cte un numr din fiecare grup. Dac argumentul type este omis se consider implicit valoarea 0. Modalitatea implicit a unei casete de dialog este ApplicationModal.

41

n modalitatea aplicaie utilizatorul trebuie s rspund casetei de dialog nainte de a putea s lucreze n aplicaia curent. n modalitatea System toate aplicaiile sunt suspendate pn cnd utilizatorul rspunde casetei de dialog. Att pentru funcia MsgBox( ) ct i pentru procedura MsgBox argumentul msg este obligatoriu, celelalte fiind facultative. Valoarea returnat de funcia MsgBox( ) indic butonul care a fost selectat, conform tabelului de mai jos:
Valoare 1 2 3 4 5 6 7 Semnificaie Butonul OK selectat Butonul Cancel selectat Butonul Abort selectat Butonul Retry selectat Butonul Ignore selectat Butonul Yes selectat Butonul No selectat Constanta simbolic recomandat vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo

Este indicat a se utiliza constante simbolice n locul numerelor deoarece n acest fel crete claritatea programului (semnificaia constantei vbAbort este evident, pe cnd nr. 3 nu spune nimic). 5.6. Structuri de ramificare i ciclare (luare decizii) Pentru luarea deciziilor n cadrul unui program Visual Basic se pot utiliza dou categorii de instruciuni cu ajutorul crora se dirijeaz execuia instruciunilor programului n funcie de ndeplinirea anumitor condiii. Cele dou categorii de instruciuni sunt: - instruciuni de ramificare permit execuia selectiv a anumitor secvene de instruciuni funcie de ndeplinirea unor condiii - instruciuni de ciclare permit execuia repetat a unor secvene de instruciuni. 5.6.1.Structuri de ramificare 1) Structura If.EndIf - are sintaxa If < condiie > then < instruciuni 1 > Else < instruciuni 2 > EndIf Dac <condiie> este adevrat se execut secvena de instruciuni <instruciuni1> i se continu programul cu instruciunile care urmeaz dup EndIf. Dac <condiie> este fals se execut secvena de instruciuni <instruciuni 2> i se continu programul cu instruciunile care urmeaz dup EndIf.

42

Exemplu: If Else Culoare = 1 EndIf Se pot construi structuri If imbricate (incluse), ns pentru aceasta se poate utiliza simplu structura IfElseIf..EndIf, sau n cazul mai multor aciuni se poate utiliza structura Select Case. Exemplu: If iValRet = vbYes Then sMsg = "A-i selectat Yes" Elseif iValRet = vbNo Then sMsg = "A-i selectat No" Else If iValRet = vbCancel then SMsg = "A-i selectat Cancel" EndIf Structura IfElseIf.EndIf poate fi condensat ntr-o singur linie de cod utiliznd funcia IIF ( ) ca n exemplul de mai jos: Culoare = IIF (Culoare <15, Culoare, 1) (testeaz s nu se depeasc codul 14 pentru culoare) 2) Structura SelectEndSelect - pentru realizarea unei aciuni din mai multe posibile. Exemplu: fie iVarsta o variabil numeric n care este memorat vrsta. Select Case iVarsta Case 5 sGrupa = "de cinci ani" = 5 ani Case 13 To 19 sGrupa = "Adolescent" Case 20 To 35, 50, 60 to 65 sGrupa = "adult" Case Is > 65 sGrupa = "vrstnic" Case Else sGrupa ="ceilali" EndSselect n funcie de condiia (prima ndeplinit ) se execut secvena de instruciuni corespunztoare, apoi se continu cu instruciunile care urmeaz dup EndSelect. Dac nici una din condiiile anterioare nu este ndeplinit se execut instruciunile care urmeaz dup
CaseElse.

Culoare < 15 Then Culoare = Culoare + 1

43

5.6.2. Structuri de ciclare 1) While..Wend are sintaxa: While <condiie> <instruciuni> Wend Se execut secvena de instruciuni <instruciuni> atta timp ct condiia <condiie> este ndeplinit (adevrat). 2) Do.Loop are sintaxa: Do Until <condiie> <instruciuni> Loop sau Do .. If <condiie> Then Exit Do Else <instruciuni> Loop Until <condiie> Structura DoLoop repet un bloc de instruciuni atta timp ct o anumit condiie este adevrat sau pn n momentul n care o anumit condiie devine adevrat. Instruciunea Exit Do poate fi folosit numai ntr-o structur Do.Loop ca o condiie de a prsi ciclul. 3) ForNext - repet o secven de instruciuni de un numr precizat de ori dup urmtoarea sintax: For icontor = <valoare iniial> To <valoare final> [Step <pas>] <instruciuni> Next Execuia ciclului ForNext se poate termina forat cu instruciunea Exit For. Exemplu: (calculeaz suma numerelor pare pn la 100). For iNr = 0 TO 100 step 2 isuma = isuma + iNr Next 5.7. Module i proceduri n Visual Basic 4.0, exist trei tipuri de module: module ale formei module de cod module clas
44

Fiecare tip de modul conine proceduri care pot fi partajate pe diverse nivele ale domeniului de vizibilitate n cadrul aplicaiei. Toate exemplele date pn n prezent cu excepia variabilelor globale vor fi stocate n module asociate unor forme. Exemplu - dac se scrie cod asociat evenimentului click al unui buton va rezulta o procedur de eveniment (spre deosebire de o procedur general) care va fi parte a formei n care se afl butonul. Cu excepia cazului cnd se elimin cuvntul cheie Private din antetul procedurii de eveniment a formei, acest cod nu va fi vizibil n afara formei. O clas este un ablon n baza cruia pot fi create obiecte. Clasa definete proprietile obiectelor ce aparin clasei i metodele utilizate pentru controlul comportamentului obiectelor. Modulele clas conin o definiie formal a unei clase care va fi instaniat ca obiect OLE automatic. Un modul de cod conine cod public, declaraii, proceduri subrutin i funcii care pot fi partajate ntre toate modulele unui proiect. Modulul de cod este numit i modul standard pentru a putea fi difereniat de modulele formei i modulele clas. Proceduri generale i proceduri eveniment O procedur general comunic aplicaiei cum s efectueze o anumit aciune. Pentru a efectua aciunea, procedura trebuie apelat explicit n cadrul aplicaiei. O procedur general poate fi plasat n oricare din cele 3 tipuri de module. O procedur eveniment rmne inactiv pn cnd este apelat pentru a rspunde unor evenimente provocate de utilizator (ex. click cu mouse-ul) sau declanate de sistem (ex. evenimente de ceas, evenimente de ncrcare n memorie). 5.7.1. Proceduri subrutine O procedur subrutin (sau simplu procedur) este o secven de instruciuni care are un nume i ale crei instruciuni sunt executate ca un tot. O procedur subrutin efectueaz o anumit aciune ns nu returneaz nici o valoare. O procedur subrutin ncepe cu instruciunea Sub i se termin cu instruciunea End Sub (exemplu procedura asociat evenimentului click al unui buton). Limbajul Visual Basic are o serie de proceduri ncorporate ca de exemplu: Procedura MsgBox Print FileCopy Name Kill Beep Date Descriere Afieaz un mesaj ntr-o caset Tiprete Copiaz un fiier Redenumete un fiier terge un fiier Emite un sunet Stabilete data sistemului Exemplu de utilizare MsgBox "mesaj",. Print iProcent & "%" FileCopy "Fis1.doc", "Fis2.doc" Name "Fisier1" As "Fisier2" Kill "Fis1.doc" Beep Date #December 18, 2002#

Utilizatorul i poate defini propriile proceduri pentru a efectua diverse aciuni. Exemplu:
45

Sub StergeFisiere( ) Kill " *.Tmp" Kill " *. Dat" Beep MsgBox "S-au ters fiierele *.Tmp, *.Dat" End Sub Pentru apelarea procedurii tergeFisiere din orice punct al aplicaiei se va specifica numele procedurii ca instruciune n cadrul programului. (dei parantezele apar n definiia procedurii, la apelul procedurii se va specifica doar numele fr paranteze !). Procedura de mai sus nu necesit argumente, ns dac o procedur urmeaz s primeasc argumente acestea se vor specifica ca n exemplul: Sub Produs(iNr1 As Integer, iNr2 As Integer) iVarGlobal = iNr1*iNr2 End Sub Apelul procedurii este ilustrat n exemplul de mai jos: Dim iV1 As Integer, iV2 As Integer iV1 = 560 iV2 = 829 Produs iV1, iV2 . 5.7.2. Proceduri funcii O procedur funcie (sau simplu o funcie) este o secven de instruciuni care efectueaz o anumit operaie ntr-un program i returneaz o valoare. O funcie ncepe cu instruciunea Function i se termin cu instruciunea End Function. n Visual Basic exist o serie de funcii predefinite printre care:
Funcia Len( ) Mid( ) Chr( ) Asc( ) UCase( ) LCase( ) InStr( ) Descriere Returneaz lungime ir Returneaz un subir din ir Returneaz caracterul corespunztor codului Returneaz codul corespunztor caracterului Convertete n litere mari Convertete n litere mici Returneaz poziia unui subir n ir Exemplu de utilizare iLung=Len("Limbaje de programare") sSubsir=Mid("ABCDE", 1,2) sCar = Chr(65) iCod = Asc ("A") sMari = Ucase("Ionescu") sMici = Lcase("LIMBAJE") iPozitie = Instr("ABCDE", "BCD") Valoare returnat iLung = 21 sSubsir = "AB" sCar = "A" iCod = 65 sMari = "IONESCU" sMici = "limbaje" iPozitie = 2

46

Pe lng funciile predefinite fiecare utilizator i poate crea propriile funcii Exemplu - definirea unei funcii utilizator pentru criptarea unui ir de caractere Function Criptare(sSirTastat As String ) As String Dim iLen As Integer Dim sSirCriptat As String, sCar As String, sCript As String iLen = Len(sSirTastat) depune n iLen lungimea irului tastat For x = 1 To iLen pentru fiecare caracter din irul tastat sCar = Mid$(sSirtastat, x, 1) extrage caracterul sCript = Chr$(Asc(sCar) +1) cripteaz caracterul prin incrementare cu 1 sSirCriptat = sSirCriptat&sCript adaug caracterul criptat irului criptat Next Criptare = sSirCriptat End Function Apelul funciei Criptare: Private Sub frmApel Dim sRezultat As String sSirTastat$ = InputBox$("Tasteaz irul de criptat") Srezultat = Criptare(SirTastat$) MsgBox Srezultat End Sub Dac vrem s descriptm irul criptat vom scrie o funcie care este aproape identic cu cea de criptare i anume: Function Decriptare(sSirIntrare As string) As string nume diferit Dim iLen As Integer Dim sSirIesire As string, sCarIntrare As string, sCarIesire as string iLen = Len(sSirIntrare) For x = 1 To iLen sCarIntrare = Mid$(sSirIntrare, x, 1) sCarIesire = Chr$(Asc(ScarIntrare)-1) minus n loc de plus sSirIesire = sSirIesire & sCarIesire Next Decriptare = sSirIesire Decriptare n loc de criptare End Function Se constat c cele dou funcii pot fi scrise ca o singur funcie de dou argumente i anume: Function CriptDecript (sSirIntrare As String, iOperatie As Integer) As String Dim iLen As Integer Dim sSirIesire As string, sCarIntrare As String, sCarIesire As String iLen = Len(sSirIntrare) For x = 1 To iLen sCarIntrare = Mid$(sSirIntrare, x, 1) sCarIesire = Chr$(Asc(sCarIntrare) + iOperatie)

47

sSirIesire = sSirIesire & sCarIesire Next CriptDecript = sSirIesire End Function iar la apelarea funciei iOperatie va fi: +1 pentru criptare -1 pentru decriptare Exemplu de apel: Dim V1 As String, V2 As String V1 = InputBox$("Introducei irul de criptat") V2 = CriptDecript(V1, 1) MsgBox V2 Pentru crearea procedurilor i funciilor se deschide fereastra de cod a modulului de cod standard. Lista Object conine cuvntul General iar lista Proc conine cuvntul Declarations. n seciunea General Declaration a modului se vor declara variabilele i constantele la nivel de modul (globale) i apoi se definesc (introduc) procedurile i funciile modulului (codul surs prezentat mai sus). Observaii Fiecare din funciile i procedurile aplicaiei pot fi ataate unor obiecte grafice (butoane), deci n acest caz textul surs corespunztor se va ataa butoanelor respective. Indiferent dac o funcie are sau nu argumente, att la definire ct i la apelare, parantezele sunt obligatorii !!
5.8. Obiecte n Visual Basic

Bare cu instrumente - Butoane de comand - sunt utilizate pentru a ncepe, a ntrerupe sau a ncheia un anumit proces. Cnd se execut click cu mouse-ul arat ca i cum ar fi apsat, de unde i denumirea sa n englez Push button. Pentru a afia text pe buton trebuie definit proprietatea Caption. Prezena unui caracter & n textul proprietii Caption face ca ceea ce urmeaz dup & s fie tasta de acces n combinaie cu tasta Alt. Selecia unui buton de comand se face prin click cu mouse-ul sau cu tasta Tab pentru a ajunge pe buton i apoi se apas tasta Enter. Dac proprietatea Default a unui buton are valoarea True, atunci acest buton poate fi selectat n orice moment prin apsarea tastei Enter indiferent ce control este curent n acel moment. Dac proprietatea Cancel a unui buton este stabilit pe valoarea True atunci acel buton poate fi selectat prin tasta Esc.

48

Proprieti uzuale ale unui buton de comand Proprietate Descriere Appearance Selecteaz aspectul 3D sau plat Cancel Permite selectarea cu ESC Caption irul de caractere afiate pe buton Default Permite selectarea cu tasta Enter Font Stabilete corpul, stilul i dimensiunea caracterelor

Exemple de valori 1= 3D, 0 = plat True, False caractere True, False MS Sans Serif, Bold, 12

- Etichete - sunt controale grafice folosite pentru a afia text pe care utilizatorul nu lpoate modifica direct ci doar cu ajutorul instruciunilor (codului). Pentru ca eticheta s afieze corect linii multiple de diverse lungimi se vor stabili proprietile AutoSize i WordWrap la valoarea True.
- Casete de text sau TextBox-uri sau casete de editare, sunt utilizate pentru a afia

informaii introduse de utilizator la rulare sau asociate controlului prin program. Accesul la textul afiat se obine prin stabilirea sau citirea proprietii Text a controlului, ceea ce poate face fie direct n faza de proiectare, fie prin cod utiliznd notaia cu punct. Exemplu de citire: sTextCaseta1= txtCaseta1.Text (dac a fost creat o caset de text numit txtCaseta1). Pentru a afia mai multe linii de text ntr-o caset de text, proprietatea MultiLine trebuie s fie selectat pe valoarea True. Dac o caset de text multilinie nu conine o bar de derulare orizontal, textul va fi mprit automat pe rnduri chiar dac caseta este redimensionat. Barele de derulare se stabilesc cu proprietatea ScrollBars: Horizontal, Vertical, Both, None. Dac proprietatea MultiLine este True, se poate utiliza proprietatea Alignment pentru a alinia textul la stnga, la dreapta, sau n centrul zonei, iar dac MultiLine este False, Alignment nu are efect. Implicit textul este aliniat la stnga Proprieti uzuale ale unei casete Text Box Proprietate Appearance Border Style Font PasswordChar SelStart SelLength Tag Descriere Selecteaz aspectul 3D sau plat Precizeaz tipul chenarului Exemplu de valori 1= 3D, 0 = plat 0 - fr chenar, 1 - chenar simplu Stabilete corpul, stilul i dimensiunea MS Sans Serif, Bold, 12 caracterelor Ascunde textul cu un singur caracter Ex. * sau # Poziia iniial pentru selectarea numai la rulare textului Precizeaz lungimea textului selectat numai la rulare Memoreaz informaii suplimentare orice expresie ir
49

Proprietile SelStart i SelLength sunt disponibile numai la rulare i deci nu vor fi afiate n fereastra Properties a casetei de text. Proprietatea Tag poate stoca informaii suplimentare, ca de exemplu parola sistemului n faza de proiectare. - Butoane de opiune (butoane radio) (Option Button) - afieaz o opiune care poate fi activat s-au dezactivat (,o), funcie de valoarea True sau False a proprietii Value a butonului. n general butoanele de opiune se utilizeaz n grupuri (mai multe butoane) afiate ntr-un cadru - ca list de opiuni ce se exclud reciproc. Toate butoanele de opiune afiate ntr-un recipient (cadru) se comport ca un grup, deci numai unul singur poate fi activ la un moment dat (nti se deseneaz cadrul i apoi se depun butoanele n cadru desenarea ulterioar a cadrului nu are nici un efect asupra grupului). Prin intermediul proprietii Caption fiecrui buton i se poate ataa un text ce va fi afiat imediat n dreapta butonului. Fiecrui buton i se poate ataa cod ca de exemplu: If optButon1.Value = True Then MsgBox "Buton selectat" Testeaz starea curent a butonului optButon1 Else MsgBox "Buton neselectat" End if - Casete de validare - afieaz o caset care poate fi activat sau dezactivat ( , ). Se pot grupa mai multe casete de validare ntr-un cadru, ns spre deosebire de butoanele de opiune, pot fi active mai multe casete din grup la un moment dat. Prin proprietatea Caption se poate afia text explicativ n dreapta casetei ca mai jos: Select Case chkCv1 Case 0 VMsg = "Nebifat" Case 1 VMsg = "Bifat" Case 2 VMsg = "Indisponibil" End select MsgBox VMsg - Cadre - ofer posibilitatea de a grupa controale nrudite (butoane de opiune, casete de validare). nti se deseneaz cadrul i apoi controalele. - Caset cu list (list box) afieaz o list de articole din care utilizatorul poate selecta unul sau mai multe. Pentru a prelucra articolele selectate se utilizeaz evenimentul Click sau Double Click ale casetei cu list.

50

Exemplu: Private Sub lstLista1_Dblclick( ) Afieaz articolul selectat din caseta cu list txtSelectie = lstLista1 n caseta de text txtselectie End Sub Proprietatea ListCount a unei casete cu lista returneaz numrul de articole din list, iar proprietatea ListIndex determin articolul curent selectat astfel: ListIndex = 0 pentru primul articol din list = ListCount -1 pentru ultimul articol din list = -1 dac nu a fost selectat nici un articol din list Pentru a selecta mai multe articole din list se utilizeaz proprietatea Multiselect astfel: MultiSelect = 0 - nu sunt admise selecii multiple (implicit) 1 - selecie simpl (executare click cu mouse sau apsare tast spaiu duce la selectarea sau deselectarea unui articol din list; se pot utiliza sgei pentru mutarea seleciei de la un articol la altul. 2 - selecie multipl (se apas shift i apoi click cu mouse sau utilizare sgei pentru a selecta articolul urmtor adugat la elementul selectat anterior.Pentru selecii multiple de articole neadiacente se utilizeaz tasta Ctrl i Click cu mouse pe articol. Proprietatea Selected pe valoarea True sau False specific dac un articol din list este selectat sau nu. Exemplu de cod ataat: iNr = lstlista1.ListCount - 1 afieaz toate articolele selectate din lista (caseta cu lisa) lstLista1 For x = 0 To iNr If lstLista1.Selected(x) = True Then MsgBox lstLista1.List(x) End If Next Pentru a aduga articole listei se utilizeaz metoda AddItem - Casete combinate (ComboBox) - combin facilitile unui TextBox cu cele ale unui ListBox (conine o caset cu list i o caset text). Proprieti i metode comune ale casetelor cu list i casetelor combinate.
Proprietate ListCount ListIndex List Semnificaie Nr. articole ale listei Exemplu de utilizare iOpiune = lstLista1.ListCount -1 Indexul numeric al articolului curent lstLista1.ListIndex = 3 Asociat cu indexul returneaz articolul sArt3 = lstLista1.List(3) curent din list

51

Selected Sorted Metode AddItem Clear RemoveItem

Are valoarea True dac este selectat If lstLista1.Selected(3) Then articolul Lista va fi sortat dac valoarea lstLista1.Sorted = True proprietii sorted este True Semnificaie Adaug listei un articol de tip ir Elimin toate articolele din list Elimin un singur articol din list Exemplu de utilizare lstLista1.AddItem = "Ionescu Ion" lstLista1.Clear lstLista1.RemoveItem 5

Utilizarea matricelor - variabile multidimensionale Dim sStudenti(15) As String sStudenti(0) = "Ionescu Ion" .. sStudenti(14) = "Popescu Vasile" For iIndex = 0 To 14 MsgBox sStudenti(iIndex) Next # Funcia UBound(sStudenti) returneaz numrul de elemente ale matricii (tabloului) Studenti. Exemplu de utilizare casete cu list: Private Sub frmForma1_Click( ) Dim sStudenti(15) As String sStudenti(0) = "Ionescu" sStudenti(1) = "Florescu" .. For iC = 0 To Ubound(sStudenti) - 1 lstLista1.AddItem (sStudenti(iC)) Next lstLista1.ListIndex = 0

Declar matricea sStudenti de 15 elemente Iniializeaz elementele matricii Adaug fiecare element al matricii ca articol n caseta cu lista lstLista1 Funcia Ubound returneaz numrul de elemente ale matricii Selecteaz primul articol din list

- Bare de derulare (orizontale i verticale) permit parcurgerea unor liste mari. Ori de cte ori se efectueaz click pe o bar de derulare se execut procedura evenimentului Change. Cnd se trage bara de derulare se declaneaz evenimentul Scrool, iar la eliberarea de pe bara de derulare se execut evenimentul Change.

52

- Spinner (SpinButton) - permite incrementare sau decrementare numere, prin ataare i activarea unui buton spinner unei etichete sau unei casete de text. - Controale cu imagini permit afiarea de imagini pe suprafaa unei forme, putnd utilza pentru aceasta dou tipuri de controale i anume: PictureBox i Image. Controalele Image pot fi create din bara de instrumente Toolbox Controls, aceste controale prezentnd i avantajul c imaginile plasate n ele pot fi redimensionate prin stabilirea proprietii Stretch a controlului la valoarea True. Controalele Image nu accept grafic desenat n timpul rulrii i nu pot fi utilizate ca recipiente pentru alte controale. Controalele PictureBox accept grafic desenat n timpul rulrii programului utiliznd metodele Line, Circle i Pset. Dac grafica ncrcat dintr-un fiier depete suprafaa controlului PictureBox, grafica va fi trunchiat exceptnd situaia n care proprietatea AutoSize are valoarea True. Fiierele imagine pot fi importate n controale Image sau PictureBox fie prin setarea proprietii Picture a controlulu, fie cu ajutorul funciei LoadPicture() n timpul rulrii programului. Exemplu. Pentru a incrca fiierul imagine Poza.jpg din directorul C:\Imagini, n controlul Image care are numele (Name) imag1 se va scrie instruciunea: imag1.Picture = LoadPicture(C:\Imagini\Poza.jpg) Pentru a elimina imaginea dintr-un control imagine se va folosi funcia LoadPicture fr nici un argument ca n exemplul de mai jos: imag1.Picture = LoadPicture() - Controale list de fiiere, de uniti de disc i de directoare DriveListBox - permite selectarea, la rularea programului, a unei uniti de disc DirListBox - afieaz o list ordonat a directoarelor i subdirectoarelor de pe disc i prin click cu mouse permite utilizatorului s navigheze prin directoare FileListBox - afieaz fiierele din directorul specificat de proprietatea Path la rularea programului. 5.9. Referire celule dintr-o foaie de calcul tabelar n Visual Basic Se face astfel: Sheets(n).Cells(nr.rnd, nr.coloan) Exemplu. Instruciunea Sheets(3).Cells (1,2) = "Ionescu" depune irul 'Ionescu' n celula B1 (rnd 1 coloana 2) din a treia foaie de calcul a registrului de calcul Excel curent. Pentru precizarea celulei (nr.rnd, nr.coloan) se pot utiliza variabile n bucle For. Exemplu: For irand = 1 To 5 lstLista1.AddItem (Sheets(3).Cells(irand,2)) Next
53

adaug n caseta cu list lstLista1 cinci nregistrri din a treia foaie de calcul, coloana 2 (B) rndurile de la 1 la 5 din registrul de calcul curent. 5.10. Gestionarea unui proiect Resursele unui proiect sunt memorate ntr-un fiier al proiectului care n Visual Basic este un fiier cu extensia .RES. n cazul n care limbajul Visual Basic este utilizat din Excel, fiierul proiect este un fiier cu extensia .XLS. Componentele proiectului pot fi vizualizate selectnd din meniul View opiunea Project Explorer astfel:

n fereastra din stnga ecranului vor fi afiate componentele proiectului i anume: componente Excel componente Visual Basic (Forms, etc.) dup cum este ilustrat n ecranul care urmeaz:

54

5.11. Crearea i extinderea meniurilor Limbajul Visual Basic permite crearea de meniuri personale pentru o aplicaie cu ajutorul editorului de meniuri. Unei forme i se poate asocia o pictogram prin stabilirea proprietii Icon a formei n faza de proiectare atribuind proprietii Icon un fiier cu formatul .ICO. Dac nu se specific o pictogram, se va utiliza pictograma Visual Basic prestabilit pentru forme. Aceast pictogram va aprea n colul din stnga sus al formei. Aceste elemente ale limbajului nu pot fi create i utilizate n Visual Basic sub Excel. 5.12. Realizarea programului executabil pentru aplicaie (proiect) Programul executabil pentru o aplicaie Windows (proiect) este un fiier executabil cu extensia .EXE care poate fi rulat n afara mediului de dezvoltare Visual Basic. Acest fiier mpreun cu alte fiiere auxiliare necesare programului va fi livrat viitorilor utilizatori ai aplicaiei i va putea fi instalat i executat sub sistemul de operare Windows. Crearea programului executabil poate fi realizat pentru un proiect creat sub Visual Basic (i nu sub Excel ca n cazul de mai sus).

55

5.13. Baze de date, Gestionarul de date, controlul Data, obiecte Set de nregistrri, SQL pentru interogarea bazelor de date Gestionarea datelor n Visual Basic se realizeaz cu componenta Data Manager care este o extensie a programului Visual Basic ce permite crearea de baze de date Microsoft Jet (Access). O baz de date creat cu gestionarul de date Visual Basic poate fi manipulat cu programul Access i o baz de date creat cu programul Access poate fi gestionat cu gestionarul de date al programului Visual Basic. De asemenea programul Visual Basic poate accesa n citire o baz de date de urmtoarele tipuri: Btrieve dBase III, IV FoxPro 2.0, 2.5 Paradox 3.X, 4.X O baz de date creat sub Visual Basic const din unul sau mai multe tabele i relaiile dintre tabele memorate ntr-un fiier baz de date. Pentru crearea unei baze de date se selecteaz opiunea New Database din meniul File al gestionarului de date. Dup crearea i salvarea fiierului ce va conine baza de date se deschide fereastra Database ce conine urmtoarele bitoane de comand: - Open deschide o baz de date existent i afieaz datele acesteia - New creaz un nou tabel n baza de date curent - Delete elimin un tabel din baza de date curent - Design afieaz i eventual modific structura unui tabel existent - Attach ataeaz tabele la distan - Relations definete relaii ntre date din tabele diferite. Controlul Data este un control predefinit ce poate fi utilizat pentru conectarea unei aplicaii Visual Basic la sursa de date selectat i pentru legarea altor controale (casete de text, casete cu imagini, etc.) cu cmpuri din tabele ale bazei de date.astfel nct orice modificri efectuate n coninutul acestor controale sunt automat nregistrate n cmpurile corespunztoare din baza de date. Spre exemplu dac un control caset de text este legat de un cmp al bazei de date, atunci orice modificare a coninutului casetei de text va fi automat efectuat n cmpul asociat din baza de date. Un obiect set de inregistrri Recordset este un set logic de nregistrri din baza de date cu ajutorul cruia pot fi accesate datele din baze de date multiple prin cod Visual Basic deci fr a utiliza controlul Data sau controale legate. O alt modalitate pentru interogarea, actualizarea i gestionarea bazelor de date relaionale o constituie limbajul SQL (Structured Query Language) ale crui instruciuni pot fi utilizate n programe Visual Basic pentru accesarea i gestionarea datelor din baze de date relaionale.

56

Probleme rezolvate Se creaz un registru de calcul Excel care conine urmtoarele foi de calcul: - Sheet1 (Personal) Lista personalului angajat, cu urmtoarele cmpuri: Marca Nume i prenume Funcia Salar tarifar orar

57

- Sheet2 (Pontaj) - Orele lucrate n luna, cu urmtoarele cmpuri: Marca Nume i prenume Total ore lucrate ( SUM(Ziua : Ziua31) ) Ziua 1 (ore lucrate) Ziua 2 (ore lucrate) Ziua 31 (ore lucrate)

58

-Sheet3 (Retineri) Lista reineri n luna, cu urmtoarele cmpuri: Marca Nume i prenume Avans CAR Rate

59

- Sheet4 (Salarii) Lista salariilor pentru luna, ce conine urmtoarele cmpuri: Marca Nume i prenume Funcia Tarif orar Ore pontate Salar realizat Reineri Salar net

n foile de calcul Pontaj, Reineri, Salarii, cmpurile Marca, Nume i prenume sunt preluate prin referire din foaia de calcul Personal. De asemenea , cmpurile Funcia, Ore pontate sunt preluate prin referire n foaia de calcul Salarii din foile de calcul Personal respectiv Pontaj, iar cmpul Reineri n foaia Salarii se obine prin sumarea cmpurilor Avans, CAR, Rate din foaia de calcul Reineri. n acest mod orice modificare asupra datelor n foile de calcul Personal, Pontaj, Reineri, se vor reflecta automat i n foaia de calcul Salarii. Din editorul Visual Basic, s se creeze n foaia de calcul Salarii, un formular care s conin butonul de comand Calcul Salarii cruia s i se ataeze codul Visual Basic care identific

60

ultimul rnd completat n foile de calcul, calculeaz i depune rezultatele obinute n cmpurile Salar Realizat, Salar Net din foaia de calcul Salarii utiliznd formulele: Salar Realizat = Tarif Orar * Ore Pontate Salar Net = Salar Realizat Retineri La execuia formei prin click cu mouse-ul pe butonul Calcul Salarii se vor realiza operaiile menionate mai sus. Creare form:

61

Codul Visual Basic ataat butonului Calcul Salarii:

62

Execuie form:

63

Rezultatul obinut dup execuia formei:

n continuare se extinde problema cu alte tipuri de controale astfel: n formularul Form1 se creaz o caset cu list ListBox1 ce va conine numele i prenumele angajailor i un control imagine Image1 n care se va incrca un fiier imagine. Codul Visual Basic pentru completarea casetei cu list i ncrcarea imaginii va fi ataat butonului de comand Command Button1. n ecranele ce urmeaz sunt ilustrate noile obiecte create , codul visual basic i rezultatul execuiei formei.

64

Formularul Form1

65

Codul Visual Basic

66

Rezultatul execuiei formei

67

Rezultatul execuiei formei dup setarea proprietilor BackColor i Font ale casetei cu list pe alte valori

68

Probleme propuse spre rezolvare 1. S se scrie codul Visual Basic care s realizeze completarea tuturor cmpurilor n foaia de calcul Salarii (se pleac de la o foaie de calcul Salarii vid), utiliznd foile de calcul Personal, Pontaj, Retineri i formulele de calcul menionate mai sus. 2. S se scrie codul Visual Basic pentru crearea foilor de calcul Pontaj, Retineri plecnd de la foaia de calcul Personal (valorile efective pentru orele pontate i reineri urmnd a fi preluate ulterior de la tastatur). Teste de verificare 1. ntr-un mediu de programare Visual obiectele principale sunt: a) aplicaiile b) formele i controalele desenate n forme c) procedurile 2. n Visual Basic obiectele pot fi create: a) cu comanda Object din meniul Insert a programului Excel b) folosind barele cu instrumente c) din meniul Edit al editorului Visual Basic 3. n programarea orientat obiect i dirijat de evenimente, majoritatea obiectelor rspund la: a) evenimente b) controale c) proprieti 4. Comportamentul unui obiect: a) este predefinit b) nu poate fi modificat de utilizator c) poate fi modificat de utilizator prin ataare de cod corespunztor 5. Un obiect este definit de: a) un set de proprieti b) comportament 6. Proprietile descriu: a) aciunile obiectelor b) obiectele prin intermediul datelor c) metodele prin intermediul codului asociat

69

7. n gramatica programrii orientate spre obiecte: a) obiectele sunt verbe b) proprietile sunt adjective c) metodele sunt substantive d) obiectele sunt substantive e) metodele sunt verbe 8. Referirea proprietilor sau metodelor n cadrul codului scris n Visual Basic se poate face prin: a) numele proprietilor sau metodelor b) utilizarea notaiei cu punct (nume obiect. Nume proprietate / metod) 9. Proprietile unui obiect pot fi setate: a) numai n faza de proiectare utiliznd fia Properties b) numai prin program utiliznd notaia cu punct c) att n faza de proiectare ct i prin program 10. Metodele pot fi executate: a) att n faza de proiectare ct i n momentul execuiei programului b) numai n momentul execuiei programului c) numai n faza de proiectare 11. Pentru referirea unui obiect n scrierea codului se poate utiliza: a) numele dat obiectului n proprietatea Capture b) numele dat obiectului n proprietatea Name c) numele obiectului dat n proprietatea Capture, fie cel dat n proprietatea Name 12. O variabil n Visual basic poate fi declarat: a) implicit utiliznd sufixul b) explicit utiliznd instruciunea Dim c) cu instruciunea Declare d) cu instruciunea Static 13. O variabil local poate fi fcut permanent n interiorul unei proceduri dac: a) este declarat cu instruciunea Dim b) este declarat cu instruciunea Static 14. O variabil declarat cu instruciunea Static a) este vizibil din orice punct al aplicaiei b) i conserv valoarea ns este vizibil numai n cadrul procedurii n care a fost declarat

70

15. Cel mai nalt domeniu de vizibilitate a unei variabile se definete cu instruciunea: a) Static b) Dim c) Global 16. Tipurile de date definite de utilizator pot fi declarate: a) la nivelul oricrei proceduri b) la nivel de form c) numai n seciunea General / Declaration a modului de cod 17. Funcia InputBox este: a) o funcie definit de utilizator pentru preluare date de la tastatur b) o funcie a limbajului Visual Basic pentru preluare date ntr-o caset de text predefinit c) o funcie Visual Basic pentru afiarea valorii unei variabile 18. n limbajul Visual Basic structurile de ramificare pot fi descrise: a) cu instruciunea If.End If b) cu instruciunea Do.Loop c) cu instruciunea Select.End Select d) cu instruciunea For..Next e) cu funcia Iif() f) cu instruciunea IfElse IfEndIf 19. n limbajul Visual Basic structurile de ciclare pot fi descrise cu instruciunile: a) SelectEnd Select b) WhileWend c) ForNext d) If.ElseIf.EndIf e) DoLoop 20. n Visual Basic pot fi definite urmtoarele tipuri de proceduri: a) macro - definiii b) proceduri - subrutine c) macro- funcii d) proceduri - funcii 21. O procedur subrutin poate realiza: a) returneaz o valoare b) efectueaz o aciune dar nu returneaz nici o valoarea c) efectueaz o aciune i poate returna o valoare

71

22. n definirea unei proceduri subrutin trebuie respectate condiiile a) ncepe cu instruciunea Sub b) ncepe cu prima instruciune din corpul procedurii c) Continu cu instruciunile din corpul procedurii d) Se poate termina cu instruciunea End Sub e) Se termin cu instruciunea End Sub f) n instruciunea Sub trebuie precizat numele procedurii g) Numele procedurii se va termina cu ( ) 23. n definirea unei proceduri funcii trebuie respectate condiiile: a) ncepe cu instruciunea Sub b) ncepe cu prima instruciune din corpul funciei c) ncepe cu instruciunea Function d) Se poate termina cu instruciunea End Function e) Continu cu instruciunile din corpul funciei f) n instruciunea Function trebuie precizat numele funciei i argumentele ncadrate ntre paranteze g) Se termin cu instruciunea End Function 24. O procedur de tip funcie poate realiza: a) Efectueaz o anumit operaie b) Poate returna o valoare c) Efectueaz o operaie dar nu returneaz nici o valoare d) Returneaz o valoare e) Att la definire ct i la apelare parantezele sunt obligatorii 25. O procedur de orice tip (Sub sau Function): a) poate fi ataat unui obiect grafic b) nu poate fi ataat unui obiect grafic c) numai procedurile subrutin pot fi ataate unor obiecte grafice d) numai procedurile de tip funcie pot fi ataate unor obiecte grafice 26. Se creeaz o caset text (Text Box) numit txtCaseta1. Pentru a memora textul introdus n aceast caset n variabila sv1 se scrie instruciunea: a) sv1 = txtCaseta1.Name b) sv1 = txtCaseta1.Text c) sv1 = Text d) sv1 = txtCaseta1.Capture 27. Pentru crearea unui grup de butoane de opiune ntr-un cadru se procedeaz astfel: a) Se deseneaz mai nti butoanele de opiune b) Se deseneaz cadrul astfel nct s conin butoanele de opiune c) Se deseneaz cadrul i apoi butoanele de opiune n interiorul cadrului
72

28. ntr-un grup de butoane de opiune pot fi active la un moment dat: a) mai multe butoane din grup b) un singur buton din grup c) toate butoanele din grup d) nici un buton din grup 29. ntr-un grup de casete de validare pot fi active la un moment dat: a) mai multe casete de validare din grup b) nici o caset de validare din grup c) numai o singur caset de validare din grup (restricie impus) d) toate casetele de validare din grup 30. Obiectele care pot constitui containere de controale (alte obiecte) pot fi: a) Formele b) Butoanele de comand c) Cadrele (frame) d) Casetele cu list (ListBox) e) Casetele combinate (ComboBox) 31. Adugarea de articole unei casete cu list (ListBox) se poate realiza: a) prin tastare text n interiorul casetei b) utiliznd metoda AddItem c) prin setarea proprieti Text a casetei d) prin setarea proprietii Value a casetei 32. Referirea celulei C1, din a patra foaie de calcul a registrului de calcul Excel curent, n Visual Basic se face astfel: a) C1 b) Sheets(4).Cells(C1) c) Sheets(4).Cells(1,3)

73

Capitolul 6. Tendine actuale i viitoare privind tehnologiile de programare Rezumat- se prezint unele aspecte privind tehnologia de programare orientat agent i realizarea sistemelor multiagent. Este definit conceptul de agent software, sunt prezentate domenii de utilizare ale agenilor, exemplede ageni i limbaje de comunicare ntre ageni. Dup 1990 are loc naterea i rspndirea celui de-Al Patru-lea Val al progresului determinat de revoluia cunoaterii cu accent pe cunoaterea incontient deci cunoaterea bazat pe intuiie, imaginaie i capacitatea creativ a individului. Este perioada ce va fi caracterizat de realizarea i utilizarea de maini care gndesc destinate pe domenii (ex. Economia), n care managementul este privit ca instituie central cu difuzarea sa fr frontiere ntr-o societate informaional global i n care cunoaterea este exploatat ca resurs economic sub deviza crem mpreun. 6.1. Inteligena artificial distribuit Datorit facilitilor de comunicare dincolo de granie, spaiu i timp oferite de reeaua Internet, economia noului mileniu poate fi privit [8] ca o scen digital n care noile afaceri devin e-bussines (afaceri electronice), comerul devine e-commerce (comer electronic), apar noi servicii electronice (e-services) i se nasc noi comuniti de tip virtual (e-communities). n noua scen cu calculatoare interconectate n reele Internet, Intranet i Extranet suntem inundai de informaie, dar flmnzi dup cunotine [8] (John Naisbitt Megatrends. Ten New Directions Transforming Our Lives), viziunea lui Alvin Toffler n ocul viitorului fiind mult mai sumbr, el avertiznd asupra iminenei unui nou potop, de aceast dat nu de ap, ci de informaii. Apare deci i se dezvolt, n cadrul economiei digitale, o nou pia i anume piaa digital sau piaa electronic n care trebuie acordat o importan tot mai mare noii resurse strategice care este informaia, cunotina. Principalii actori (componente) ai economiei digitale, n viziunea anumitor specialisti (Turban, s.a., 1999) [8] sunt: - Cumprtorii/consumatorii - milioane de internaui care navigheaz pe Web -poteniali cumprtori ai bunurilor i serviciilor oferite sau promovate pe Internet - Vnztorii - sute de mii de magazine digitale care i prezint milioane de produse pe Net - Produsele i serviciile digitale - digitalizarea software-ului, a muzicii, a crilor, ziarelor i revistelor, a filmelor .a., digitalizarea a nenumrate alte produse i servicii - Companiile creatoare ale infrastructurii digitale - mii de firme implicate n asigurarea hardwareului i software-ului necesar realizrii infrastructurii specifice economiei digitale, care s permit dezvoltarea comerului electronic - Intermediarii (agenii) - un nou tip de actori care i ofer serviciile pe Web, rolul lor diferind de cel al intermediarilor obinuii prin aceea c sunt implicai n crearea i susinerea pieei on-line, ei ajutnd consumatorii i/sau vnztorii n derularea tranzaciilor electronice
74

Serviciile de suport - sute de astfel de servicii sunt disponibile, pornind de la cele care asigur securitatea pn la cele care furnizeaz cunotine - Creatorii de coninut - sute de companii de tip multimedia orientate pe crearea i actualizarea continu a propriilor pagini Web, pecum i a unor site-uri pentru diverse alte firme Fiecare din componentele economiei digitale prezentate mai sus are un rol bine definit n cadrul pieei digitale / spaiului electronic (marketspace) n care au loc tranzaciile. Din prezentarea de mai sus se constat apariia unui nou tip de actor pe scena digital i anume intermediarul sau agentul. Se impune astfel distribuirea inteligenei artificiale n vederea realizrii sistemelor de ageni inteligeni sau sistemelor multiagent care pot lua decizii ntr-o societate populat de ageni inteligeni artificiali sau umani care au propriile lor scopuri. Distribuirea inteligenei artificiale este justificat [9] din urmtoarele motive: n mod natural activitile i cunotinele sunt distribuite spaial extinderea cooperrii om-main prin rezolvarea distribuit a problemelor descompunerea sistemelor complexe i a bazelor de cunotine aferente n subsisteme cooperative asigurnd astfel modularitate i flexibilitate sistemului precum i timp de rspuns optim. necesitatea integrrii aplicaiilor de inteligen artificial deja existente, att ntre ele ct i cu componente de prelucrare clasic i sisteme de gestiune a bazelor de date distribuite n modelarea comportamentului uman n cadrul aplicaiilor de inteligen artificial trebuie avut n vedere faptul c comportamentul uman este un comportament social. Astfel, apare i se dezvolt o nou tehnologie n realizarea programelor i anume programarea orientat agent AOP (Agent-Oriented Programming), care constituie o modalitate de abordare n construcia sistemelor multi-agent.
-

6.2. Definirea conceptului de agent Conceptul de agent poate avea diverse semnificaii n funcie de domeniul n care este utilizat. Astfel exist ageni n diverse domenii ca de exemplu: economie, tiinele sociale, biologie i mai recent, n tiina calculatoarelor. Exemple: agent de vnzri, agent de asigurri, agent agricol, agent inteligent, etc. n tiina calculatoarelor, termenul de agent este folosit de obicei pentru a desemna o component software sau/i hardware care este capabil s acioneze n interesul utilizatorului, pentru ndeplinirea cu precizie a unor sarcini (Nwana, H. S., 1996). Din punct de vedere software, un agent este un program care se comport analog cu un agent uman, fiind capabil s comunice n mod inteligent cu ali ageni software sau persoane. Dup unii cercettori de la IBM Un agent este un software care tie cum s fac lucrurile pe care le-ai face tu nsui dac ai avea timp. (Janca, P.,1995)
75

Avnd n vedere multitudinea de roluri pe care le poate avea un agent, este dificil de dat o definiie formal unanim acceptat a agentului i de aceea n cele ce urmeaz se vor prezenta cteva puncte de vedere privind caracteristicile pe care le poate neplini un agent. Un agent poate fi definit prin urmtoarele cracteristici de baz [9]: Autonomie: opereaz fr intervenie uman, are iniiative i exercit control asupra propriilor lui aciuni. Agentul accept cereri de la utilizatori dar este cel care decide cum i unde va satisface aceste cereri. Colaboreaz cu utilizatorul sau cu ali ageni pentru satisfacerea cererilor acestora, putnd s propun modificri sau s cear clarificri suplimentare. Reactivitate: percepe mediul n care evolueaz (care poate fi lumea fizic, un utilizator prin intermediul unei interfee, o colecie de ali ageni sau reeaua Internet) i rspunde n timp util la schimbrile sesizate n acest mediu. Comunicare i abilitate social: un agent trebuie s fie capabil s se angajeze n comunicri i dialoguri complexe cu ali ageni sau persoane pentru a obine informaii sau ajutor n satisfacerea scopurilor. n domeniul inteligenei artificiale, conceptul de agent presupune i alte caracteristici cum ar fi: noiuni mentale (preri, dorine, obligaii, opiuni), raionalitate, adaptibilitate i nvare cu meniunea c nu exist ageni inteligeni care s ndeplineasc toate aceste caracteristici, ns cei mai muli cercettori recunosc c cele amintite ar fi caracteristicile definitorii ale unui program agent fa de un program obinuit. Principalele caracteristici pe care le au majoritatea agenilor software care se comercializeaz la ora actual (numii i agenti simpli sau slabi) [8] sunt: Autonomie - agentul opereaz sau realizeaz sarcini fr intervenia direct a omului sau a altceva Comunicare - abilitatea de a interaciona cu ali ageni sau persoane prin intermediul unui limbaj de comunicare specific agenilor Reacie - capacitatea de a reaciona n mod selectiv la schimbrile din mediu (monitoriznd n permanen evenimentele, agentul tie exact ce sarcin trebuie s execute la apariia unui anumit eveniment) Iniiativ - abilitatea de a nu reaciona doar ca rspuns la mediu, ci din proprie iniiativ Continuitate n timp - spre deosebire de programe, care se termin cnd procesarea este ncheiat, agentul continu s ruleze (fie i numai n backgroud, monitoriznd continuu evenimentele care i vor declana aciunea) Orientare spre un anumit scop - agentul acioneaza astfel nct s-i ndeplineasc scopul, n interesul utilizatorului; sunt cazuri n care un agent poate chiar s modifice elurile sau s le stabileasc de unul singur. Caracteristici suplimentare: - Mobilitate - capacitatea de a migra de la sine de la o aplicaie la alta - Bunvoin - se presupune c agentul nu are scopuri conflictuale i c orice agent ntotdeauna ncearc s fac ceea ce i se cere - Inteligen - capacitatea de a nva, de a-i crete performanele n timp

76

Adaptabilitate - abilitatea de a se ajusta/adapta singur la obiceiurile, metodele de lucru i preferinele utilizatorului - Colaborare - posibilitatea de a lucra mpreun cu ali ageni pentru ndeplinirea unui scop comun - Versatilitate - posibilitatea de a se angaja n sarcini diferite - Personalitate - capacitatea agentului de a manifesta atribute specific umane cum ar fi: cunotin, crez, intenie, obligaie etc. Exist specialiti care atribuie agentului chiar fa uman, argumentnd c, dei agenii sunt buci de cod software, oamenilor le place s aib de-a face cu ei ca i cum ar avea de-a face cu ali oameni. n cadrul cercetrilor efectuate la BT Labs, Nwana a identificat trei caracteristici generale ca fiind atribute primare ale unui agent: autonomie, cooperare i nvare. Spre deosebire de agenii care ndeplinesc doar caracteristicile generale i care sunt denumii ageni slabi, agenii care pe lng caracteristicile generale posed i caracteristici suplimentare sunt denumii ageni compleci sau puternici sau ageni tari.
-

6.3. Clasificarea agenilor Avnd n vedere multitudinea de ageni software i rolurile pe care le pot avea acetia, o clasificare a agenilor este dificil de realizat. n cele ce urmeaz este prezentat clasificarea agenilor realizat de Hyacinth S. Nwana [8] avnd n vedere diverse criterii astfel: - dup gradul de mobilitate (capacitatea de a se deplasa n cadrul anumitor reele): ageni statici i ageni mobili - dup modul de comportament: ageni deliberativi (au ncorporat un model de raionament simbolic, i n vederea coordonrii cu ali ageni se angajeaz n procese de planificare i negociere) ageni reactivi (nu posed un model simbolic, intern al mediului lor i drept urmare, pentru a rspunde la starea actual a mediului n care se afl ei acioneaz adoptnd tipul de comportament stimul/rspuns) - dup rolurile lor (n cazul n care se poate desprinde un rol preponderent): ageni de informare, ageni de negociere, ageni de interfa, etc.; - dup arhitectur: ageni simpli (unitari) i ageni hibrizi (care ncorporeaz dou sau mai multe filozofii ntr-un singur agent) - dup numrul de sub-ageni ncorporai: ageni omogeni (mono-ageni) i ageni eterogeni (multi-ageni) - dup veracitate: ageni sinceri (de ncredere, care nu mint niciodat) i ageni mincinoi (care mint intenionat). Clasificarea dup criterii poate fi extins dac se are n vedere prezena sau absena caracteristicilor generale sau secundare ale agenilor. O clasificare mai restrns a agenilor propus de Nwana este urmtoarea:
77

ageni colaborativi, ageni de interfa, ageni mobili, ageni de informaii/Internet, ageni reactivi, ageni hibrizi i ageni inteligeni. Modelul sau arhitectura agenilor poate varia de la structuri foarte simple, de tip automate, cum este cazul agenilor reactivi, pn la structuri de cunotine complexe, capaciti de raionament i decizie, structuri ntlnite n cazul agenilor cognitivi, numii i ageni raionali. Agenii cognitivi conin o reprezentare simbolic explicit a lumii i sunt capabili s ia decizii pe baza unui raionament simbolic. Au scopuri fixate i pot s-i modifice aciunile n funcie de schimbrile din mediu i interaciunea cu ali ageni, n vederea realizrii acestor scopuri. Fiecare agent cognitiv este [9] un sistem bazat pe cunotine, cu un grad mai mare sau mai mic de elaborare i care include ntreaga metodologie asociat acestor sisteme. n cazul sistemelor de ageni cognitivi, inteligena sistemului este dat att de suma comportamentelor inteligente individuale ale fiecrui agent ct i de inteligena rezultat din comportamentul colectiv bazat pe interaciune de tip social. Referitor la definirea i utilizarea agenilor eterogeni n 1992 a aprut o nou disciplin denumit Intelligent and Cooperative Information Systems (ICIS), care are n vedere integrarea sistemelor informaionale, a tehnologiilor bazelor de date, a inteligenei artificiale .a. prin folosirea agenilor digitali. 6.4. Aplicaii actuale ale agenilor. Domenii de utilizare. Cercetri n domeniul tehnologiei agenilor sunt efectuate att n centrele de cercetare din cadrul unor universiti, cum ar fi: Massachusetts Institute of Technology (MIT), the University of London, ct i n cadrul unor firme sau companii multinaionale ca de exemplu: IBM, Microsoft, Oracle, Alcatel, Apple, AT&T, DEC, HP, Lotus, Sharp. Majoritatea cercetrilor sunt axate pe aplicaii ale agenilor obisnuii (basic agent applications) a cror rezultate sunt vizibile n timp relativ scurt spre deosebire de aplicaii ale agentilor inteligeni (intelligent agent systems) care necesit un timp mai mare de realizare i ale cror rezultate nu sunt imediate. Exemple de ageni obinuii: - ageni pentru prelucrare e-mail - ageni pentru filtrare i/sau cutare n articole de tiri - ageni pentru pregtirea unor ntlniri de afaceri prin consultarea agendelor electronice ale participanilor. Crearea unor astfel de tipuri de ageni constituie un prim pas pentru realizarea de aplicaii integrate, n care aceti ageni s fie folosii ca materiale de construcie (building blocks) pentru crearea n urmtorii ani a unor sisteme complexe integrate de ageni, capabile s execute sarcini de nivel nalt (high-level tasks) pentru utilizatori, furnizori i intermediari - cele trei straturi ale modelului. Coordonarea n cadrul unui astfel de sistem se realizeaz prin intermediul unui singur agent care deleag sub-sarcini (sub-tasks) ctre ali ageni. Domenii reprezentative n care este utilizat tehnologia actual a agenilor (Hermans, B., 1997, Wagner, D.N., 2000, Nwana, H.S., 1996 ) [8]:
78

pot i mesagerie managementul reelelor (de telecomunicaii, energetice, de transport etc.) controlul traficului aerian (ex. 11 septembrie 2001) comand i control managementul accesului mobil managementul informaiilor depozitarea datelor (data mining) baze de date inteligente colaborare managementul proceselor de munc cu caracter repetitiv (workflow management) - afaceri electronice (licitaii, managementul canalelor de aprovizionare i de distribuie etc.) - biblioteci digitale - educaie - cercetare guvernamental - divertisment (entertainment) - asisteni digitali personali (PDA) - interfee inteligente pentru utilizator .a. Dintre aceste domenii/arii de aplicare a tehnologiei agenilor, cele mai intens studiate n acest moment sunt: accesul (regsirea) i managementul informaiilor; comerul electronic i colaborarea. Exemple concrete de ageni: - Hoover agent care furnizeaz o unic interfa utilizator pentru mai multe medii informaionale (tiri n timp real, baze de date on-line, etc.) - Ageni ghizi (exempluWebWatcher) conduce utilizatorul prin Web, oferind n acelai timp o experien personalizat fiecrui utilizator (sftuiete interactiv utilizatorul Web-ului privind legtura urmtoare pe care trebuie s o urmeze i nva din reacia utilizatorului la sfatul primit). - Ageni index (exemple:Lycos, WebCrawler, InfoSeek) - efectueaz o cutare masiv i autonom de informaie n Web, prin inspectarea unui numr mare de documente (pn la un milion de documente) i creeaz un index de cuvinte gsite n titlurile i textul documentelor inspectate. Utilizatorul poate apoi interoga agentul despre documente ce conin anumite cuvinte cheie, iar agentul index poate oferi rspunsuri rapide care pot fi relevante sau nu pentru utilizator. - Ageni FAQ (Frequently Asked Questions files). - ghideaz utilizatorul pentru gsirea rspunsurilor la ntrebrile frecvente puse de utilizatori asupra unui anumit subiect. Aceste intrebri precum i rspunsurile sunt memorate n aanumitele fiiere FAQ create de diverse organizaii sau grupuri din Internet. - Internet Softbot (software robot) Cutare informaii structurate pe Internet n baza cererilor furnizate de utilizator prin dialog ntr-un limbaj expresiv n cadrul unei interfee

79

convenabile astfel nct cea mai mare parte a structurilor din Internet devin transparente pentru utilizator. El poate monitoriza o serie de evenimente, cum ar fi utilizarea discului, activitatea utilizatorului, buletinele electronice de tiri, servere FTP, i comunic utilizatorului rezultatul printr-un semnal sonor, un mesaj pe ecran sau un mesaj e-mail. De asemenea, agentul Softbot poate aciona asupra mediului n care lucreaz, prin asigurarea compactrii fiierelor dintr-un director, protejarea unor fiiere, compilarea fiierelor program, conversia documentelor dintr-un format n altul, accesul la baze date de diverse tipuri, prin apelul, n secvent, a diverselor programe adecvate. Plecnd de la numele unei persoane, el poate determina adresa electronic a acesteia. - Info Agent cutare informaii att n documente de tip structurat, ct i de tip nestructurat. Un domeniu de mare interes n care agenii se vor impune spectaculos este Internetul care permite astzi accesul direct a milioane de oameni pe autostrada informaional ([9] Internet Society estimeaz c exist peste 30 de milioane de utilizatori care acceseaz zilnic reeaua Internet), care pot fi att consumatori ct i poteniali furnizori de informaie. Cutarea informaiei despre un anumit subiect necesit identificarea i investigarea unui numr mare de documente de pe Web, operaii mari consumatoare de timp i care pot fi realizate de ageni competeni numii ageni Internet. Pentru a asigura accesul tuturor categoriilor de utilizatori, indiferent de calificare i cunotinele de care dispun, la resursele informaionale imense de pe Internet, viitoarea generaie de ageni Internet va fi [9] o combinaie de modele cognitive i reactive, avnd ca scop att satisfacerea necesitii de informare a utilizatorului ct i transparena total a autostrzii informaionale. Dei reeaua Internet reprezint un mare succes n unificarea resurselor informaionale, structura sa actual n care pot fi identificate dou straturi i anume: utilizatorii (consumatorii) de informaie i productorii (furnizorii) de informaie, nu este adecvat pentru activitatea de informare care presupune prelucrarea complex a informaiilor din multiple documente de pe Web independent de utilizator. Pentru rezolvarea acestei probleme, una din cele mai promitoare propuneri este modelul n care activitile desfurate pe Internet sunt mprite pe trei straturi, denumit [8] modelul celor 3 straturi i anume: 1. un strat pentru utilizatorii de informaie (clienii informaionali) definete cererea de informaie 2. un strat pentru furnizorii (producatorii) de informaie definete oferta de informaie 3. un nou strat aflat ntre primele dou, denumit stratul de mijloc sau stratul intermediarilor, care s permit conectarea primelor dou straturi prin cele mai bune ci sau modaliti. n cadrul acestui model, agenii au un rol important difereniat pe straturi dup cum urmeaz: - Sarcinile agenilor n cadrul primului strat sunt de a afla ce informaii caut utilizatorii, dac au anumite preferine n legtur cu informaia de care au nevoie, etc.

80

- n cadrul celui de-al doilea strat sarcinile agenilor sunt de a face un inventar al serviciilor i informaiilor oferite de ctre furnizori, de a ine evidena noilor informaii adugate n reea, etc. - Agenii din stratul de mijloc au rolul de intermediari informaionali ntre utilizatorii informaionali (umani sau electronici) i furnizorii de informaii, sarcina lor fiind de mediere ntre agenii celorlalte dou straturi. Agenii utilizai ntr-un astfel de model vor trebui concepui n baza unor standarde general acceptate, astfel nct s rspund i s reacioneze n acelai mod prin utilizarea unui set standardizat de coduri suficient de flexibil pentru a permite construirea unor ageni pentru sarcini neateptate sau imprevizibile n prezent. Referitor la domeniile de utilizare a tehnologiei agenilor n viitor, cercettori n domeniu cred [8] c agenii autonomi vor deveni n urmatorii 10 ani parte integrant a celor mai multe sisteme de afaceri: astfel, cei de la IBM prevd o vast utilizare a agenilor software n e-commerce: Crem o nou categorie economic (a new economic species), parial asemntoare nou ca imagine, dar semnificativ diferit de oameni, Agenii software vor deveni actori n economie, afirm Jeff Kephart, managerul grupului care se ocup de fenomenul agenilor. (Scott,K., 2001). Utilizarea tehnologiei agenilor conduce la apariia unor probleme care vor trebui soluionate prin msuri legislative. Dintre aceste probleme sunt menionate [8] (Nwana, H.S, 1996; Norman, D. 1994; Etzioni, O.; Weld, D., 1994) urmtoarele: - asigurarea intimitii persoanelor pentru care lucreaz agentul - responsabilitatea fa de aciunile agentului - sigurana (s nu influeneze lumea n mod distructiv) - limitarea consumului de resurse rare - vigilena (s nu permit aciunile clienilor cu urmri ce nu pot fi anticipate) - probleme de etic: autoidentificarea agenilor, moderarea accesului pe anumite servere, limitarea accesului numai pe serverele alocate agentului, respectarea autoritii administratorilor de servere, etc. 6.5. Sisteme multi-agent. Definiie, clasificare, arhitecturi. Definiiile, clasificarea i arhitectura unui sistem multi-agent sunt prezentate n cele ce urmeaz conform [10]. Un sistem multi-agent (SMA) este un sistem distribuit format dintr-o colecie de ageni autonomi care interacioneaz ntr-un mediu comun, fiecare agent avnd cunotine, capaciti de aciune i scopuri proprii. Funcie de tipurile de ageni utilizai se pot identifica dou categorii de sisteme multi-agent inteligente i anume: - SMA cu ageni cognitivi, numite i sisteme multi-agent cognitive - SMA cu ageni reactivi, numite i sisteme multi-agent reactive Sistemele multi-agent cognitive urmresc s simuleze aspecte ale comportamentului uman prin tratarea noiunilor de scop, cooperare, competiie, organizare n structuri sociale

81

i stabilirea relaiilor de dependen n aceste structuri, capacitate de nvare i autoperfecionare. Un sistem multi-agent cognitiv reprezint un sistem particular bazat pe cunotine ce conine o reprezentare simbolic a cunotinelor despre lumea n care evolueaz fiind capabil s ia decizii prin intermediul unui proces inferenial de raionament. ns, spre deosebire de un sistem bazat pe cunotine clasic, n cadrul unui sistem multi-agent, un agent reprezint simbolic lumea att prin convingeri, care sunt preri despre lume, eventual incomplete sau eronate, ct i prin cunotine care reprezint fapte adevrate despre acea lume. De asemenea, un agent trebuie s fie capabil s raioneze att despre propriile lui convingeri i cunotine ct i despre cele ale celorlali ageni cu care interacioneaz ntrun anumit mediu. Abordarea cognitiv a agenilor, ridic o serie de probleme critice n special referitor la complexitatea de calcul i dificultatea algoritmilor necesari prelucrrilor simbolice. Un sistem multi-agent reactiv este un sistem n care agenii sunt uniti simple de prelucrare, capabile s reacioneze la schimbrile de mediu i s execute aciuni simple corespunztor acestor schimbri. Un astfel de sistem este inspirat din organizarea i activitatea comunitilor biologice de insecte. Astfel o albin nu poate fi considerat inteligent ns comportamentul stupului n ansamblu i modul de organizare a albinelor, executnd aciuni comune i coordonate n vederea realizrii scopului, prezint elemente de inteligen. Adepii sistemelor multi-agent reactive, criticnd abordarea cognitiv, consider c inteligena este situat n lumea exterioar i nu la nivelul componentelor de prelucrare individuale, respectiv agenii, comportarea inteligent fiind un rezultat al interaciunii dintre ageni i mediu iar inteligena este o proprietate a sistemului ca ntreg. n acest sens, au fost propuse sisteme cu arhitecturi care modeleaz structura i comportamentul colectivitilor de insecte, sisteme care ar putea fi realizate ntr-o abordare subsimbolic utiliznd reele neuronale sau algoritmi genetici. O alt direcie de cercetare o constituie abordarea mixt cognitiv-reactiv avnd n vedere avantajele i dezavantajele fiecreia dintre cele dou categorii de sisteme multiagent. 6.6. Limbaje de comunicare ntre ageni Forma cea mai simpl de comunicare ntre ageni n cadrul unei arhitecturi reactive, este comunicarea bazat pe schimbul de informaii prin intermediul unei structuri de tip tabl ("blackboard") sau de resurs partajat care este mprit n diferite nivele de abstractizare corespunztoare diverselor nivele de rezolvare a problemelor (nivele de comportament) iar agenii vor scrie sau citi informaiile de pe nivelele corespunztoare aciunilor lor. Avnd ns n vedere faptul c n cadrul unui sistem multi-agent agenii interacioneaz ntr-un mediu comun, comunicarea ntre ageni este o problem cheie nsemnnd mai mult dect un simplu schimb de mesaje.
82

Pe lng primirea i transmiterea de mesaje, un agent trebuie s fie capabil s deduc intenia emitorului referitor la mesajul trimis ceea ce presupune utilizarea unei forme complexe de comunicare bazat pe teoria actelor comunicrii (theory of speech acts) dezvoltat n cadrul unor cercetri din domeniul limbajului natural. Astfel, ntr-un act de comunicare se disting urmtoarele 3 aspecte: - exprimarea unei propoziii (mesaj); - efectul intenionat (ateptat) de cel ce comunic mesajul; - efectul asupra destinatarului comunicrii. Aceste modele ale dialogului uman au stat la baza structurrii mesajelor schimbate ntre ageni i definirii protocoalelor de comunicare prin care se stabilesc aciunile posibile ale agentului n fiecare moment al comunicrii cu ali ageni. Pentru programarea sistemelor multi-agent s-au elaborat o serie de limbaje corespunztor celor dou categorii de sisteme multi-agent dup cum urmeaz: - limbaje agent slabe (ACTOR, TCL/TK, TELESCRIPT) pentru sisteme multiagent reactive; - limbaje agent tari (AGENT0, PLACA, Concurent METATERM, KQML, KIF, COOL) pentru sisteme multi-agent cognitive. Dintre aceste limbaje i protocoale de comunicare ntre ageni, bazate pe teoria actelor comunicrii, cel mai cunoscut este KQML (Knowledge Querry and Manipulation Language) propus de ARPA (Advanced Research Projects Agency) n 1992, cu ultima versiune standardizat aprut la nceputul anului 1997. KQML folosete limbajul KIF (Knowledge Interchange Format) pentru a descrie coninutul informaional al mesajului i este o reprezentare ASCII a logicii cu predicate de ordinul nti, ntr-o sintax apropriat de cea a limbajului LISP. Limbajul KQML i KIF (cu succesorul lui SIF - Simple Knowledge Interchange Format) tind s devin la ora actual un standard al comunicrii n Sistemele Multi Agent cognitive. Limbajul COOL (COOrdination Language) a fost creat pentru coordonarea aciunilor agenilor cu ajutorul a noi performative adugate la cele ale limbajului KQML. Activitatea de coordonare poate fi realizat spre exemplu de un agent manager. Exemple de primitive KQML: - (ask A) - emitorul ntreab receptorul dac A este o convingere a receptorului; - (tell A) -emitorul comunic receptorului convingerea sa A; - (achieve A) - emitorul cere receptorului s includ A n mulimea lui de convingeri; - (deny A) - emitorul comunic receptorului c nu crede A. n concluzie se poate afirma c sistemele multi-agent au aprut din urmtoarele considerente: - necesitatea modelrii sistemelor de natur distribuit; - distribuirea controlului inteligent se impune natural deoarece cunotinele i activitile sunt inerent distribuite spaial; - capacitatea limitat a unui singur agent de a rezolva probleme complexe; - simularea comportamentului inteligent prin interaciunea dintre componente (ageni) fiecare avnd informaii incomplete despre problem i mediu;

83

- descentralizarea resurselor. Pentru realizarea sistemelor multi-agent apare i se dezvolt o nou tehnologie n realizarea programelor i anume programarea orientat agent AOP (Agent-Oriented Programming).. Programarea orientat pe ageni introdus de Yoav Shoham odat cu definirea limbajului AGENT0, reprezint o specializare a programrii orientate pe obiecte i n care coleciei de obiecte definite de stri i care comunic ntre ele prin transmitere de mesaje i corespunde o mulime de ageni caracterizai de stri mentale compuse din noiuni mentale (convingeri, intenii, obligaii, angajamente, decizii, etc.). Odat cu apariia conceptului de agent software se prefigureaz [9] o nou direcie de programare i anume programarea orientat agent, n care obiectele vor fi nlocuite de ageni, deci entiti dotate cu capaciti de percepie, comunicare, raionament i decizie, iar programele vor fi scrise prin manipularea adecvat a unei mulimi de ageni predefinii sau definii de utilizator. Probleme rezolvate 1. Enumerai principalele caracteristici ale economiei digitale: - scen digital n care se dezvolt: e-service, e-comerce, e-bussines, e-comunities - apariia unui nou actor: intermediarul sau agentul - apare i se dezvolt piaa digital - distribuirea inteligenei artificiale i realizarea de sisteme multi-agent 2. Un agent software este: a) un limbaj de programare b) un program care se comport analog cu un agent uman, fiind capabil s comunice n mod inteligent cu ali ageni software sau persoane. c) un software care tie cum s fac lucrurile pe care le-ai face tu nsui dac ai avea timp rspuns corect b), c) 3. Caracteristicile de baz ale unui agent sunt: a) autonomie b) mobilitate c) reactivitate d) comunicare e) personalitate rspuns corect a), b), d) 4. Dup capacitatea de a se deplasa n cadrul anumitor reele, agenii se clasific n: a) ageni deliberativi b) ageni statici c) ageni inteligeni
84

d) ageni mobili rspuns corect d) Probleme propuse 1. Un sistem multi-agent reactiv este: a) un sistem n care agenii sunt uniti simple de prelucrare (ageni simpli) b) un sistem bazat pe cunotine c) un sistem inspirat din organizarea i activitatea colectivitilor de insecte Programarea orientat agent este: a) o metod de programare n domeniul inteligenei artificiale b) o nou tehnologie n realizarea programelor c) o specializare a programrii orientate pe obiecte n care obiectele vor fi nlocuite de ageni, deci entiti dotate cu capaciti de percepie, comunicare, raionament i decizie, iar programele vor fi scrise prin manipularea adecvat a unei mulimi de ageni predefinii sau definii de utilizator. d) o tehnologie de programare pentru realizarea sistemelor multi-agent KQML este: a) un sistem multi-agent b) un limbaj de programare pentru sistemele multi-agent c) un limbaj de comunicare ntre ageni bazat pe teoria actelor comunicrii

2.

3.

85

GLOSAR Algoritm este o succesiune finit de pai care trebuie parcuri pentru rezolvarea unei probleme. Schema logic este o modalitate de reprezentare grafic a unui algoritm. Pseudocodul este o metod de reprezentare a unui algoritm ntr-un limbaj pe de o parte mai apropiat de limbajul natural, iar pe de alt parte ntr-o form care s permit transcrierea lui ulterioar ntr-un limbaj de programare. Stiva este o form de organizare a datelor pentru care operaiile de introducere i scoatere a datelor se fac n vrful ei. Backtracking este o metod folosit la rezolvarea problemelor pentru care soluia problemei poate fi pus sub forma unui vector S(x1,x2,,xn), unde x10 A1, x20 A2, ,xn0 An, mulimile A1, A2, , An sunt finite i elementele lor se afl ntr-o relaie de ordine bine stabilit i pentru aceste probleme nu exist o alt metod de rezolvare mai rapid. Tehnica Greedy poate fi privit ca un caz particular al tehnicii backtracking n care se renun la mecanismul de ntoarcere i n plus se cere aflarea unei singure soluii a problemei, soluie care satisface un anumit criteriu de optim. Recursivitatea este mecanismul prin care un subprogram (funcie, procedur) se autoapeleaz. Divide et impera este o tehnic care const n descompunerea unei probleme n dou sau mai multe probleme mai simplu de rezolvat, iar soluia pentru problema iniial se obine prin combinarea soluiilor problemelor rezultate prin descompunere. Algoritmi genetici sunt metode de cutare i optimizare moderne, bazate pe principiile seleciei naturale i geneticii i care acioneaz asupra unei codificri a funciei obiectiv, efectund operaii de reproducere asupra unei populaii de cromozomi, utiliznd operatori genetici: selecia, ncruciarea, inversiunea, mutaia. Strategiile de evoluie i Programarea evolutiv cunoscute i sub denumirea de algoritmi evolutivi, pun accentul pe legtura comportamental dintre prini i urmai sau dintre diferite populaii. Programarea evolutiv const n estimarea modificrilor de mediu n vederea transformrii prediciilor ntr-un rspuns corespunztor acestor schimbri, n funcie de scopul propus. Graf este o pereche ordonat G = (V,E), unde V = {x1, x2, ,xn} este o mulime finit i nevid numit mulimea nodurilor sau a vrfurilor i E VxV ( E = {(xk,xp) / xk0 V, xp0 V}) o submulime a produsului cartezian VxV numit mulimea arcelor sau a muchiilor. Drum de la vrful xk la vrful xp, i se noteaz d(xk,xp) este o succesiune de arce la fel orientate cu primul arc, cu proprietatea c extremitatea terminal a fiecrui arc coincide cu extremitatea iniial a arcului urmtor, excepie fcnd extremitatea iniial a primului arc i extremitatea terminal a ultimului arc.

86

Drum elementar este un drum care are toate vrfurile distincte sau care nu trece de dou ori prin acelai vrf. Drum hamiltonian este un drum elementar care ntlnete toate vrfurile grafului o singur dat. Circuit este un drum cu proprietatea c extremitatea iniial a primului arc coincide cu extremitatea terminal a ultimului arc. O bucl este un circuit de lungime 1. Lan de la vrful xp la vrful xk este o succesiune de muchii puse cap la cap (ntre dou vrfuri exist o muchie dac ntre ele exist cel puin un arc; nu intereseaz orientarea arcelor). Lan hamiltonian este un lan care ntlnete toate vrfurile grafului o singur dat. Ciclu este un lan finit care pleac de la un vrf i se ntoarce la vrful cu care ncepe, adic este nchis. Limbaj de programare permite descrierea unui proces de calcul alctuit din mai muli pai pentru rezolvarea unei probleme, fiecare pas fiind exprimat n comenzi elementare (instruciuni) ce vor fi executate de calculator. Limbaj-main este limbajul propriu unui tip de calculator. Limbaj de asamblare se nlocuiesc codurile numerice ale instruciunilor i operanzilor cu coduri mnemonice. Translatorul este un program ce traduce un program surs scris ntr-un anumit limbaj de programare ntru-un program echivalent dintr-un alt limbaj, acest nou program numindu-se program destinaie. Limbaje de nivel nalt limbaje mai apropiate de limbajul natural n care un program difer foarte puin de la un calculator la altul, fiind ns necesar prezena unui program numit compilator care sa traduc programul n instruciuni cod main. Programarea visual i orientat obiect permite generarea unui program i a unor interfee utilizator prietenoase prin combinarea (manipularea) unor obiecte predefinite sau definite de utilizator i ataare de cod corespunztor. Limbajul Visual Basic reprezint un mediu de dezvoltare care permite crearea de programe orientate spre obiecte i conduse de evenimente. Evenimentele se produc ca urmare a unei aciuni a utilizatorului (ex. evenimentul click corespunde apsrii butonului stng al mouse-ului pe obiectul respectiv), sau n urma execuiei codului programului, sau pot fi declanate de ctre sistem. Un obiect este definit de un set de proprieti cum ar fi: dimensiune, culoare, poziie pe ecran, comportament. O metod este o procedur (succesiune de instruciuni) asociat unei anumite aciuni a unui obiect O variabil este o zon temporar de memorie creia i se d un nume, i care poate memora (stoca) un anumit tip de dat care poate fi modificat pe parcursul execuiei programului. Domeniul unei variabile este zona programului n care variabila este vizibil.
87

Agent software este un agent este un program care se comport analog cu un agent uman, fiind capabil s comunice n mod inteligent cu ali ageni software sau persoane. Un agent este un software care tie cum s fac lucrurile pe care le-ai face tu nsui dac ai avea timp. (Janca, P.,1995). Ageni cognitivi au ncorporat un model de raionament simbolic, i n vederea coordonrii cu ali ageni se angajeaz n procese de planificare i negociere. Ageni reactivi nu posed un model simbolic, intern al mediului lor i drept urmare, pentru a rspunde la starea actual a mediului n care se afl ei acioneaz adoptnd tipul de comportament stimul/rspuns. Sistem multi-agent (SMA) este un sistem distribuit format dintr-o colecie de ageni autonomi care interacioneaz ntr-un mediu comun, fiecare agent avnd cunotine, capaciti de aciune i scopuri proprii.

88

Bibliografie
1. 2. 3.
4.

Adrian Atanasiu, Cum se scrie un algoritm SIMPLU, Editura Agni, Bucureti, 1993. Tehnici de programare, Tudor Sorin, Ed L&S INFOMAT, Bucure;ti, 1996. Horowitz E., Fundamentals of Programming Languages, Springer Verlag, 1983.

erbnai D. L., Limbaje de programare i compilatoare, Ed. Academiei, Bucureti, 1987. 5. 6. 7. 8. Bull M., Students Guide to Programming Languages, B. H. Newnes, 1992. Mark Steven Heyman, Bazele Visual Basic 4, Trad. Clin Suciu, Ed. Teora, 1996 www.cs.ubbcluj.ro/disc/rmi034.htm 11k [DANA02]. Prof.univ.dr.Doina Danaiata, asist.univ.drd. Camelia Margea, Rolul agentului ntr-o lume digital. Competiia pe scena economiei digitale. Scenarii, actori i roluri. www.feea.uaic.ro//24_26_oct_2002/ziua2/sectiunea_III/ROLUL%20 AGENTULUI%20%CENTR-O%20LUME%20DIGITALA.pdf [FLAM98]. Ageni inteligeni Internet, Adina Magda www.byte.ro/byte95-04adi.html [SIMA98]. Dicionar modern de informatic, Sisteme multiageni, Universitatea Politehnica Bucureti www.cs.pub.ro/~dict/sisteme_multiagenti/ sisteme_multiagenti.html A. Kaufman, Metode i modele ale cercetrii operaionale, vol. II, Ed. tiinific, Bucureti, 1967. Donald E. Knuth, Arta programrii calculatoarelor, Vol. 1, 2, 3, traducere de Mihaela Trpa, Ed. Teora, 2002.

9. 10. 11. 12.

89