UNIVERSITATEA “ŞTEFAN CEL MARE” SUCEAVA

Facultatea de Ştiinţe Economice şi Administraţie 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. Definiţie, 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. Evoluţia limbajelor de programare ……………………………………. 16
3.1. Limbaje în cod maşină.….....................................................................................…... 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. Consideraţii 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 aplicaţiilor Windows ……..........……………………………………... 5.2. Proprietăţi şi metode ………..................................................................……………. 5.3. Utilizare Visual Basic din Excel ……...............................................……………….. 5.4. Variabile …................................................................................................................. 5.5. Operaţii de intrare /ieşire realizate cu funcţiile 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 funcţii.................................................................................................. 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 aplicaţie (proiect)….........................…... 5.13. Baze de date, Gestionarul de date, controlul Data, obiecte Set de înregistrări, 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. Tendinţe actuale şi viitoare privind tehnologiile de programare.….
6.1. Inteligenţa artificială distribuită................................................................................. 6.2. Definirea conceptului de agent................................................................................... 6.3. Clasificarea agenţilor................................................................................................. 6.4. Aplicaţii actuale ale agenţilor. Domenii de utilizare................................................. 6.5. Sisteme multi-agent. Definiţie, clasificare, arhitecturi.............................................. 6.6. Limbaje de comunicare între agenţi.......................................................................... Probleme rezolvate................................................................................................................. Probleme propuse...................................................................................................................

GLOSAR...................................................................................................................... Bibliografie…………………………………………………..………………………

3

INTRODUCERE
Scopul cursului

Scopul cursului este prezentarea unor metode şi tehnici de programare precum şi introducerea în programarea calculatoarelor, plecând de la observaţia că marea majoritate a limbajelor de programare au la bază o serie de concepte comune. Obiective se defineşte noţiunea 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, evoluţia lor, generaţiile 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 începând de la elaborarea unui program într-un limbaj de programare şi până la execuţia acestuia pe calculator se va prezenta limbajul Visual Basic, modul de utilizare şi inerfaţa cu produsul Excel; în ultima parte a cursului sunt prezentate tendinţele 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 – lucrări de control Stabilirea notei finale (procentaje)

- răspunsuri la examen/colocviu/lucrări practice - activităţi aplicative atestate/laborator/lucrări practice/ proiect etc. 30% - teste pe parcursul semestrului - teme de control -

4

sau pentru care nu există un algoritm de rezolvare. . S-a notat cu SQRT funcţia pentru radical.Capitolul 1. afişează x1. “ . Un algoritm este o succesiune finită de paşi care trebuie parcurşi pentru rezolvarea unei probleme. “ + i“. Algoritmi. Algoritmul prezentat conţine atât ramificaţii (definite prin Dacă) cât şi un ciclu care poate fi identificat în paşii 6. “x2=”. b. NU) 7 Dacă răspunsul este DA atunci se reia cu pasul 1 8 Dacă răspunsul este NU atunci STOP.Ix 6 Continuaţi pentru o altă ecuaţie ? (DA. Rx . x2 continuă cu pasul 6 5 Dacă delta < 0 atunci calculează Rx = -b / 2a . 5 . 1. pentru rezolvarea unei probleme. În general. pseudocodul. Pot fi puse şi probleme pentru care nu este cunoscut un algoritm de rezolvare. Algorimi şi tehnici de reprezentare a algoritmilor Rezumat. trebuie avute în vedere următoarele elemente: . Rezolvarea ecuaţiei de gradul 2 ax2 + bx +c = 0 Succesiunea de paşi este următoarea: 1 Citeşte coieficienţii a. Rx . 2.SQRT(delta)) / 2a afişează “x1=”. exemple. x2 continuă cu pasul 6 4 Dacă delta > 0 atunci calculează x1 = (-b + SQRT(delta)) / 2a x2 = (-b . .Se defineşte noţiunea de algorim.datele de intrare. 1. Această precizare poate fi reprezentată schematic astfel: ALGORITM Date de intrare Date de ieşire Exemple de algoritmi Ex.algoritmul pentru rezolvarea problemei. x1 .datele de ieşire. 7. Ix = SQRT(-delta) / 2a afişează “x1=”. Definiţie.i“. sunt date exemple şi sunt prezentate tehnicile de reprezentare a algoritmilor: schema logică.Ix “x2=”. Un algoritm este metoda prin care se rezolvă o problemă. Pentru rezolvarea unei probleme pot exista mai multe metode de rezolvare. c 2 Calculează delta = b2 – 4ac 3 Dacă delta = 0 atunci calculează x1 = x2 = -b / 2a .

rand = rand + 1 Continuă cu pasul 2 ‘ Creare fişa pontaj 4. rand = 3 2. rand = 3 5. Algoritmul corespunzător acestei operaţii este: ‘ Ştergere date din PONTAJ 1. 2) = ANGAJATI(rand . rand = rand + 1 Continuă cu pasul 5 Cele două foi de calcul sunt ilustrate în imaginile de ecran de mai jos. 1) PONTAJ(rand . k) = “” Continuă cu pasul 3 Altfel continuă cu pasul 4 3. coloana 1) Atunci PONTAJ(rand . 2. 1) # “”(există date în rândul rand. La reali zarea unei aplicaţii de calcul salarii în VBA din EXCEL una din operaţiile care trebuie realizate la începutul fiecărei luni este ştergerea datelor din fişa de pontaj pentru luna precedentă (coloanele 1 – 34 începând din rândul 3 atâta timp cât există date în coloana 1) şi crearea fişei de pontaj pentru luna care urmează (copierea coloanelor 1 – 2 din foaia de calcul ANGAJATI în foaia de calcul PONTAJ începând din rândul 3 atâta timp cât există date în foaia de calcul ANGAJATI). coloana 1) Atunci Pentru k = 1 până la 34 PONTAJ(rand . 1) = ANGAJATI(rand . 6 . Dacă PONTAJ(rand .Ex. Dacă ANGAJATI(rand . 1) # “” (există date în rândul rand. Iniţializarea fişei de pontaj lunar. 2) Continuă cu pasul 6 Altfel STOP 6.

x1 “x2=”.2.1. Tehnici de reprezentare a algoritmilor Pentru reprezentarea algoritmilor au fost utilizate în ordine cronologică următoarele tehnici: schema logică.1. START Citeşte a. b.x2 “x1=”. Schema logică Schema logică este o modalitate de reprezentare grafică a unui algoritm.Rx “+i”.SQRT(delta)) / 2a REALx = -b / 2a IMAGx = SQRT(-delta)) / 2a DA x = -b / 2a “x1=”.x “x2=”. Schema logică pentru algoritmul de rezolvare a ecuaţiei de gradul 2 este prezentată mai jos.Ix “x2=”. pseudocodul.Ix “x1=”.2.x DA Continuaţi ? NU STOP 7 . 1. c delta = b2 – 4ac delta = 0 NU DA delta > 0 NU x1 = (-b + SQRT(delta)) / 2a x2 = (-b .Rx “-i”.

acelaşi număr de cerc). Orice text care nu reprezintă un pas al algoritmului este o declaraţie sau un comentariu. iar pe de altă parte într-o formă care să permită transcrierea lui ulterioară într-un limbaj de programare. rezultate). k) = “” rand = rand + 1 ‘ Creare fişa pontaj (comentariu) rand = 3 Cât timp ANGAJATI(rand .pentru inceput algoritm. sfârşit algoritm. 1. se pot folosi trimiteri prin conectori (cerc numerotat în interior cu ieşire săgeată şi corespunzător intrare săgeată pt. lucru care este imposibil de reprezentat cu ajutorul schemei logice). . citire date). Dacă schema se întinde pe mai multe pagini. 1) # “” Pentru k = 1 până la 34 PONTAJ(rand . 1) PONTAJ(rand . 1) = ANGAJATI(rand . 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. .dreptunghi – pentru operaţii de calcul.trapez cu latura mică sus – pentru operaţii de ieşire (afişare. Având în vedere aspectele prezentate. De asemenea trebuie evidenţiate structurile alternative şi structurile repetitive. . sau pentru reluări.Din schema logică prezentată se constată utilizarea următoarelor tipuri de simboluri: . Orice variabilă utilizată în cadrul algoritmului trebuie declarată anterior. 1) # “” PONTAJ(rand . reprezentarea în pseudocod a algoritmului de iniţializare a fişei de pontaj este: Declară variabila rand ca întreg la nivel global ‘ Ştergere date din PONTAJ (comentariu) rand = 3 Cât timp PONTAJ(rand .elipsă . 2) rand = rand + 1 8 . Un algoritm descris în pseudocod traduce problema de rezolvat într-o succesiune de acţiuni numite operaţii sau instrucţiuni. .romb – pentru operaţii de decizie (ramificaţii). Pentru rezolvarea problemei se defineşte astfel o ierarhie de module între care există diverse legături (uneori un modul se poate apela pe el însuşi . 2) = ANGAJATI(rand . Pseudocodul Pseudocodul este o metodă de reprezentare a unui algoritm într-un limbaj pe de o parte mai apropiat de limbajul natural.2. fiecare instrucţiune reprezentând un pas al algoritmului. fiecare modul reprezentând o funcţie distinctă pentru rezolvarea problemei.2. scriere date. .trimitere cu săgeată – pentru iteraţii ( cicluri).trapez cu latura mare sus – pentru operaţii de intrare (preluare date.

O variabilă k va indica în permanenţă vârful stivei. iar x1. etc. La extragerea unui element din stivă variabila k ce indică vârful stivei scade cu 1. Pentru a înţelege modul de lucru cu stiva considerăm un număr n de farfurii identice aşezate una peste alta.. în care pot fi memorate numai litere sau numai cifre dacă fiecare element ST(i) al stivei memorează o singură informaţie (lăţimea stivei este 1). Se alege primul element x10 A1. Pentru rezolvarea unei probleme prin metoda backtracking se parcurge algoritmul prezentat mai jos.xn). unde x10 A1..xn pot fi la rândul lor vectori.xk-1. Adăugarea sau scoaterea unei farfurii se poate face numai în vârful stivei. An coincid.xk. Metode şi tehnici de programare Rezumat . 2.xn0 An.x2. iar pentru xk. elemente de teoria grafurilor.…. Dacă nu s-a găsit elementul xk+1 care îndeplineşte condiţiile pentru soluţie.…. A2.x2. ST(2).x2. triple. Stiva Stiva este o formă de organizare a datelor pentru care operaţiile de introducere şi scoatere a datelor se fac în vârful ei.ST(n). Operaţia de extragere din stivă se poate efectua până când stiva devine vidă.2.. În cazul în care fiecare element al stivei memorează mai multe informaţii avem de a face cu stive duble.…. aspecte privind algoritmii genetici şi programarea evolutivă. 1. 2.…. x20 A2. Metoda Backtracking Această metodă poate fi folosită la rezolvarea problemelor pentru care soluţia problemei poate fi pusă sub forma unui vector S(x1.x2. An sunt finite şi elementele lor se află într-o relaţie de ordine bine stabilită şi pentru aceste probleme nu există o altă metodă de rezolvare mai rapidă. 9 . iar la adăugarea unui nou element în stivă variabila k creşte cu 1. 3. mulţimile A1. ST(2) ST(1) A B A Stiva vidă Vârful stivei k = 1 Vârful stivei k = 2 2. se reia căutarea considerând generate elementele x1.. iar după ce scoatem toate farfuriile din stivă spunem că stiva este vidă. iar operaţia de adăugare în stivă se poate efectua până când stiva devine plină. … .1. ale vectorului soluţie se alege xk+1. În multe probleme.Capitolul 2. Stiva poate fi reprezentată cu ajutorul unui vector ST(1).Sunt prezentate metode şi tehnici utilizate în programare: metoda backtracking. Presupunând generate elementele x1. recursivitatea. A2. … . primul element disponibil din mulţimea Ak+1 care îndeplineşte condiţiile pentru soluţie. se verifică următorul element din mulţimea Ak. … . tehnica divide et impera. mulţimile A1. Dacă toate cele n farfurii sunt aşezate una peste alta spunem că stiva este plină.

x2.3.6. 2.. . În cele ce urmează se va prezenta un exemplu practic de utilizare a metodei.3. n în următoarele condţii: pleacă din oraşul 1.1) D4 = (1.2.x2.2.5. Algoritmul se termină atunci când nu mai există nici un element x10 A1 netestat.5.2.3. se poate forţa oprirea algoritmului după găsirea primei soluţii.. (se caută un alt element al mulţimii Ak+1 rămas netestat).. iar pentru problemele în care stiva este dublă. ST(2).….xk.j) = 0 dacă nu există drum între oraşele i şi j Exemplu 1 2 3 4 6 5 Drumurile posibile pe care le poate parcurge comis-voiajorul sunt: D1 = (1. triplă etc. Pentru rezolvarea problemei se poate utiliza metoda backtracking elementar folosind o stivă ST(1). Dacă se cere obţinerea unei singure soluţii. Dacă nu s-a ajuns la soluţie se continuă algoritmul considerând generate elementele x1..x k+1..1) D2 = (1. 6. 5. Pentru problemele în care soluţia este sub formă de vector (stiva este de lăţime 1) metoda este denumită backtracking elementar.4..….4. n cu care sunt notate oraşele cu condiţia ca pentru nemerele memorate în două nivele succesive ale stivei să existe legătură între oraşele corespunzătoare şi ST(1) =ST(n) =1. trece prin toate oraşele o singură dată folosind legăturile existente între oraşe şi revine în final în oraşul 1..2..3. Problema comis-voiajorului Un comis-voiajor trbuie să viziteze un număr n de oraşe notate 1. Metoda Backtracking conduce la obţinerea tuturor soluţiilor problemei.4. . (se caută un prim element xk+2 al mulţimii Ak+2)..4.4.6.6.j) astfel: 1 dacă există drum între oraşele i şi j L(i. Se cere să se determine toate drumurile posibile pe care le poate parcurge comis-voiajorul. 2. metoda este denumită backtracking generalizat..1) D3 = (1. Legăturile între oraşe pot fi reprezentate printr-o matrice L(i. se verifică dacă s-au generat toate elementele soluţiei (k+1=n).ST(n) în care elementele ST(k) vor conţine numerele 1.5.6. Dacă s-a găsit elementul xk+1 care îndeplineşte condiţiile pentru soluţie.5. Dacă s-a ajuns la soluţie se tipăreşte soluţia şi se continuă algoritmul considerând generate elementele x1.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 soluţii a 10 .

se tipăreşte 1 (semnifică faptul că întregul obiect a fost incărcat .Dacă obiectul selectat încape în totalitate în rucsac .se tipăreşte partea care s-a incărcat din obiect . Câştigul iniţial = o Greutatea rămasă de încărcat în rucsac = G.costul parcurgerii drumului să fie minim. Pentru rezolvarea problemei se utilizează următorul algoritm: 1.timpul parcurgerii drumului să fie minim. Se pot transporta obiecte sau părţi ale acestora.greutatea rămasă de încărcat devine 0. O modalitate de rezolvare a acestei probleme este să determinăm toate drumurile posibile. pentru fiecare obiect fiind cunoscute greutatea sa şi câştigul care s-ar obţine în urma transportului său la destinaţie.Dintre obiectele neâncărcate se selectează cel cu eficienţa de transport cea mai mare. 2. soluţie care satisface un anumit criteriu de optim.problemei. Pentru această problemă nu se cunosc algoritmi de tip Greedy. Tehnica Greedy conduce la timp de calcul polinomial (timp util). Un exemplu de astfel de problemă este problema comis-voiajorului pentru care un criteriu de optimalitate ar putea fi unul din următoarele: . î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 găsirii unei soluţii în timp util). să calculăm timpul respectiv costul parcurgerii fiecărui drum şi să alegem drumul optim (abordare care conduce la timp exponenţial de calcul).3.Dacă obiectul selectat nu încape în totalitate în rucsac . Se sortează obiectele în ordinea descrescătoare a eficienţei de transport şi se iau în calcul în această ordine.la câştigul iniţial se adună câştigul corespunzător părţii de obiect . Să se determine ce obiecte pot fi transportate astfel încât câştigul să fie maxim.din G se scade greutatea obiectului . 4.la câştigul iniţial se adună câştigul corespunzător obiectului . Problema rucsacului (exemplu de problemă pentru care există algoritm de tip Greedy) Cu un rucsac se poate transporta o greutate maximă G. 2.se calculează ce parte din obiect poate fi transportată . pentru fiecare obiect se calculează eficienţa de transport ca fiind rezultatul împărţirii căştigului la greutatea obiectului (se obţine câştigul obţinut prin transportul unităţii de greutate). . . 3. Recursivitate Recursivitatea este o noţiune fundamentală utilizată în informatică după anii 80 pentru scrierea programelor în cadrul unor limbaje de programare evaluate. Acest concept 11 . Cât timp nu a fost completată greutatea G a rucsacului şi nu au fost luate în considerare toate obiectele se procedează astfel: .

4. Dacă în cazul funcţiilor recursivitatea pare un mechanism simplu. Pentru descrierea algoritmului de rezolvare prin metoda divide et impera se poate utiliza principiul recursivităţii. procedură) se autoapelează. Fiecare din problemele rezultate prin descompunere pot fi la rândul lor descompuse în subprobleme mai simplu de rezolvat. … . 2. iar soluţia pentru problema iniţială se obţine prin combinarea soluţiilor problemelor rezultate prin descompunere.n ceea ce înseamnă că în definirea funcţiei F de calcul a factorialului unui număr am utilizat recursivitatea. Algoritmii genetici sunt metode de căutare şi optimizare moderne. utilizând operatori genetici: selecţia.n putem scrie F(n) = F(n – 1). efectuând operaţii de reproducere asupra unei populaţii de cromozomi. Pentru implementarea recursivităţii în cadrul limbajelor de programare care dispun de această facilitate se foloseşte structura de date de tip stivă care este gestionată de limbajul de programare şi nu de programator.strategiile de evoluţie şi programarea evolutivă. Parametrii problemei sunt codificaţi printr-un şir de caracteristici binare analoge cromozomilor biologici. care la rândul ei o apelează pe ea. 12 . Fiecărui parametru ii corespunde un subşir în şirul cromozomial.algoritmii genetici. S-a demonstrat matematic că pentru orice algoritm iterativ există un algoritm recursiv echivalent (rezolvă aceeaşi problemă) şi invers. procedeul putând continua pâna se ajunge la o descompunere în probleme care admit o rezolvare imediată. Folosind recursivitatea în scrierea algoritmilor şi deci a programelor se obţine un text sursă foarte scurt şi clar.este utilizat în matematică pentru scrierea unor formule recursive. nu la fel stau lucrurile în cazul algoritmilor şi deci al procedurilor recursive. bazate pe principiile selecţiei naturale şi geneticii şi care acţionează asupra unei codificări a funcţiei obiectiv. mutaţia. pentru orice algoritm recursiv există un algoritm iterativ echivalent. O funţie recursivă este o funcţie care se autoapelează. Recursivitatea este mecanismul prin care un subprogram (funcţie. 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. însă există situaţii când execuţia unui algoritm recursiv necesită un timp de calcul foarte mare. . mai exact pentru definirea funcţiilor recursive. Pentru exemplificare dacă notăm cu F(n) n factorial = 1. Un algoritm recursiv trebuie să conţină o condiţie de terminare. încrucişarea. altfel algoritmul nu se va termina niciodată şi deci nu va putea fi transcris într-un program pentru calculator. subşirurile fiind numite gene. spre deosebire de recursivitatea indirectă care are loc atunci când o procedură (funcţie) apelează o altă procedură (funcţie). inversiunea.2. Algoritmi genetici şi programare evolutivă Teoria matematică a calculului evolutiv cuprinde următoarele direcţii de cercetare: . Acest mecanism mai este numit şi recursivitate directă.

În timp ce strategiile evolutive se bazează pe selecţia strict deterministă. Noul simbol este adăugat listei de simboluri deja observate şi procesul se reia de la pasul 2.xk)0 E (sau alfel spus orice arc poate fi parcurs în ambele sensuri).xp) / xk0 V. Se numeşte graf. Părinţii se expun mediului. până ce se execută estimarea asupra noului simbol din mediu. Strategiile de evoluţie şi Programarea evolutivă – cunoscute şi sub denumirea de algoritmi evolutivi. atunci prin programarea evolutivă se urmăreşte dezvoltarea unui algoritm care să opereze cu o secvenţă de simboluri deja observate astfel încât să producă un nou simbol care să maximizeze eficienţa algoritmului în raport cu următorul simbol din mediu şi care să optimizeze o anumită funcţie cost. Pentru un arc u=(x. estimare efectuată de cel mai bun automat. Dacă simularea mediului constă dintr-o mulţime de simboluri ale unui alfabet finit. Mulţimea E are proprietatea de simetrie dacă şi numai dacă pentru orice pereche (xk. 13 . în funcţie de scopul propus. iar vârful y se numeşte extremitatea finală a arcului u. programarea evolutivă foloseşte selecţia probabilistă. Elemente de teoria grafurilor Fie o mulţime finită şi nevidă V = {x1. x2.xp)0 E atunci (xp. deci a speciilor distincte. xp0 V}) o submulţime a produsului cartezian VxV numită mulţimea arcelor sau a muchiilor. 2. 3. 4. programarea evolutivă se ocupă de codificarea populaţiilor.5. Se evaluează urmaşii în raport cu mediul în acelaşi mod ca şi părinţii. Dacă mulţimea E are proprietatea de simetrie atunci graful G se numeşte graf neorientat sau graf simetric. Dacă mulţimea E nu are proprietatea de simetrie atunci graful G se numeşte graf orientat sau graf antisimetric. 6.E). iar în al doilea rând. pun accentul pe legătura comportamentală dintre părinţi şi urmaşi sau dintre diferite populaţii.y). Se iterează paşii 3. Programarea evolutivă constă în estimarea modificărilor de mediu în vederea transformării predicţiilor într-un răspuns corespunzător acestor schimbări. 2. … . Se construieşte aleator o populaţie de automate finite părinte. în timp ce strategiile de evoluţie modelează structurile indivizilor.xn} numită mulţimea nodurilor sau a vârfurilor şi Eφ VxV ( E = {(xk. O reprezentare adecvată a acestui comportament este dată de teoria automatelor finite. Pentru aplicarea programării evolutive asupra automatelor finite se parcurg următorii paşi: 1.-5. vârful x se numeşte extremitatea iniţială a arcului u. perechea ordonată G = (V.Soluţiile sunt create prin selecţia şi combinarea cromozomilor existenţi urmărind optimizarea funcţiei obiectiv specifică problemei de rezolvat. 5. Maşinile care produc costul minim se reţin drept părinţi pentru noua generaţie. Un astfel de algoritm poate fi utilizat spre exemplu pentru generarea automată a unui program pentru rezolvarea unui tip de problemă. Se creează automate urmaşi prin mutaţii aleatoare ale fiecărei maşini părinte.

Reţeaua telefonică a unui oraş este un exemplu de graf complet şi simetric. .xp) o succesiune de arce la fel orientate cu primul arc.Un exemplu de graf neorientat este reţeaua rutieră a unei regiuni în care nodurile sunt localităţile din acea regiune. Un drum cu proprietatea că extremitatea iniţială a primului arc coincide cu extremitatea terminală a ultimului arc se numeşte circuit. Un graf G = (V. presupunând că deplasarea este permisă în ambele sensuri.∞ dacă nu există arc între nodurile x şi x k p Se numeşte drum de la vârful xk la vârful xp. iar arcele sunt căile de comunicaţie rutieră între localităţi. Pentru rezolvarea unor probleme de optim (minim sau maxim) se construieşte şi matricea costurilor ckp dacă există arc de cost ckp între nodurile xk şi xp C(k.xp) = (xk. se numeşte lungimea drumului. Se numeşte lanţ de la vârful xp la vârful xk o succesiune de muchii puse cap la cap (între două vârfuri există o muchie dacă între ele există cel puţin un arc.xp-1. în afara unor precizări speciale. E) se numeşte graf complet dacă între orice pereche de vârfuri există cel puţin un arc. xk+1. O buclă este un circuit de lungime 1. Un drum pentru care toate arcele din secvenţă sunt distincte sau care nu trece de două ori prin acelaşi arc se numeşte drum simplu. Un drum elementar care întâlneşte toate vârfurile grafului o singură dată se numeşte drum hamiltonian. nu interesează orientarea arcelor). excepţie făcând extremitatea iniţială a primului arc şi extremitatea terminală a ultimului arc. Un drum de la vârful xk la vârful xp poate fi precizat astfel: d(xk. cu proprietatea că extremitatea terminală a fiecărui arc coincide cu extremitatea iniţială a arcului următor. Un exemplu de reprezentare grafică pentru un graf neorientat este ilustrat la problema comis-voiajorului prezentată anterior. Numărul arcelor pe care îl conţine drumul.p) = 0 dacă k = p +∞. şi se notează d(xk.p) = 0 dacă nu există arc între nodurile xk şi xp Pentru un graf neorientat (simetric) se constată că matricea asociată este simetrică. 14 . xp) unde fiecare vârf al drumului se scrie o singură dată. nodurile sunt figurate prin cerc sau pătrat iar arcele prin linie pentru graful neorientat şi linie cu săgeată pentru graful orientat. În reprezentare grafică. Un drum care are toate vârfurile distincte sau care nu trece de două ori prin acelaşi vârf se numeşte drum elementar. 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. … .

adică este închis se numeşte ciclu. Pentru rezolvarea acestor probleme se defineşte şi utilizează în plus matricea costurilor prezentată anterior. algoritm pentru probleme de maxim. 5. În exemplul ilustrat mai jos sunt reprezentate 6 localităţi (1. căile rutiere existente între localităţi şi distanţele corespunzătoare. aprovizionare etc. precum problema “comis-voiajorului”. 3. 4. 6). Determinarea drumului hamiltonian minim Fiind date n localităţi. În practica economică apar numeroase probleme a căror rezolvare presupune determinarea drumului optim. 2. transportul unor produse. transmitere de energie. Cercetarea acestor trasee prezintă interes în aplicaţii diverse din sfera economică: organizarea fluxurilor de producţie. se pune problema determinării drumului minim care pleacă din localitatea 1 şi trece prin toate localităţile o singură dată (drumul hamiltonian minim într-un graf simetric). Un lanţ finit care pleacă de la un vârf şi se întoarce la vârful cu care începe.Un lanţ care întâlneşte toate vârfurile grafului o singură dată se numeşte lanţ hamiltonian. Există o serie de metode pentru determinarea drumurilor hamiltoniene printre care amintim algoritmul lui Kaufmann pentru determinarea drumurilor hamiltoniene în grafuri oarecare. Necesitatea determinării traseelor hamiltoniene îşi are originea în soluţionarea unor probleme practice clasice. maxim) ca de exemplu: algoritmul lui Bellman-Kalaba pentru probleme de minim. Există algoritmi pentru rezolvarea unor probleme de optim (minim. 6 1 8 6 9 5 15 5 2 11 13 3 4 4 3 7 Se construieşte matricea distanţelor 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 . În cele ce urmează este prezentată o metodă [11] de rezolvare a unei probleme de optim pentru o aplicaţie practică.

5 . coloana. Se elimină din matricea distanţelor linia 2 şi coloana 2.Corespunzător coloanei 3 determinate în pasul anterior se selectează linia 3 şi se reţine coloana cu distanţa cea mai mică exceptând valorile 0). 5) . coloana. 3) . distanţa) = (2.6 . distanţa) = (3. Rezultă tripleta (linia. Se elimină din matricea distanţelor linia 6 şi coloana 6. 5.2 . Rezultă tripleta (linia. 6) . respectiv coloana 2. distanţa) = (5. distanţa) = (1. 2. 3. 9) . 4.3 .Corespunzător coloanei 5 determinate în pasul anterior se selectează linia 5 şi se reţine coloana cu distanţa cea mai mică exceptând valorile 0). respectiv coloana 3. Se elimină din matricea distanţelor linia 3 şi coloana 3. respectiv coloana 5. respectiv coloana 6.Se selectează linia 1 şi se reţine coloana cu distanţa cea mai mică (exceptând valorile 0). Se elimină din matricea distanţelor linia 1 şi coloana 1. Se elimină din matricea distanţelor linia 5 şi coloana 5. Rezultă tripleta (linia.Pentru determinarea drumului minim se poate utiliza următorul algoritm: . 6. Semnificaţia tripletelor rezultate este dată mai jos: Localitate Localitate Distanţa 1 2 6 2 6 5 6 5 9 5 3 3 3 4 7 Rezultă că drumul minim este: 1 . Rezultă tripleta (linia. coloana. distanţa) = (6. coloana. Rezultă tripleta (linia.Corespunzător coloanei 6 determinate în pasul anterior se selectează linia 6 şi se reţine coloana cu distanţa cea mai mică exceptând valorile 0). 7) Algoritmul se termină deoarece singura linie şi coloană rămase neeliminate sunt linia 4 şi coloana 4 cu distanţa 0.Corespunzător coloanei 2 determinate în pasul anterior se selectează linia 2 şi se reţine coloana cu distanţa cea mai mică exceptând valorile 0). coloana.4 iar distanţa minimă este: 6 + 5 + 9 + 3 + 7 = 30 16 . respectiv coloana 4.

Un limbaj de programare permite descrierea unui proces de calcul alcătuit din mai mulţi paşi pentru rezolvarea unei probleme. . Acestea necesită o cunoaştere aprofundată a calculatorului şi a sistemului de operare deoarece înlocuiesc codurile numerice ale instrucţiunilor şi operanzilor cu coduri mnemonice.dependenţa de un anumit tip de calculator. 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. Limbaje de asamblare Pentru îndeplinirea unor deziderate mai sus menţionate. fiecare pas fiind exprimat în comenzi elementare (instrucţiuni) ce vor fi executate de calculator.Capitolul 3.sunt bazate pe sistemul binar şi diferă de la un calculator la altul. următoarea etapă după limbajele cod maşină o constituie apariţia limbajelor de asamblare care constituie a doua generaţie de limbaje de programare. 17 . Fiecare instrucţiune în aceste limbaje este o succesiune de cifre binare. cu specificarea codului numeric pentru instrucţiuni. . generaţiile de limbaje de programare. evoluţia lor.necesitatea descompunerii problemei de rezolvat în operaţii elementare pe care le poate executa calculatorul respectiv.formatul instrucţiunilor este diferit de cel utilizat în limbajul natural. Limbajele în cod maşină au următoarele dezavantaje: .lizibilitate scăzută şi o rată mare a erorilor. Deşi programarea în limbaje de asamblare este mai uşoară decât în cod-maşină.productivitate mică in activitatea de programare. clasificarea limbajelor după diverse criterii şi selectarea limbajului potrivit tipului de problemă de rezolvat.dimensiune mare a programelor. . date şi adrese de memorie.2. definirea şi construirea unui limbaj de programare. . 3. Instrucţiunile diferă de la un calculator la altul în funcţie de hard-ul disponibil. există şi aici următoarele 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). 3. . numit limbajmaşină. fapt ce îngreunează înţelegerea textului sursă. Limbajele în cod-maşină constituie prima generaţie de limbaje de programare. .se prezintă necesitatea limbajelor de programare. Având în vedere aceste dezavantaje. care să necesite un efort minim din partea programatorilor şi să poată fi executate pe orice tip de calculator. Limbaje în cod maşină Un calculator poate executa orice program descris în limbajul propriu.1.programele rezultate au dimensiune mare şi productivitatea este scăzută. Evoluţia limbajelor de programare Rezumat..

Limbajele din generaţia a treia se caracterizează prin [7]: . b) pentru aplicaţii militare în timp real: Ada. 3) limbaje pentru aplicaţii speciale: a) pentru simulare: Simula.sunt orientate spre problemă iar programele rezultate sunt portabile (pot fi rulate pe orice tip de calculator. procedura de rezolvare a problemei). C++.au un vocabular format din simboluri. in general. fraze etc. constante. . programele scrise în aceste limbaje trebuie mai întâi traduse în limbaj maşină. 18 . Aceste limbaje au dominat mai bine de 30 de ani piaţa limbajelor de programare. 3.). e) pentru programare obiectuală: Smalltalk. .) spre deosebire de limbajul-maşină care operează cu elemente de nivel fizic (registru. program numit asamblor. lucru ce este realizat prin intermediul unui program traducător specific limbajului utilizat. IRTB. locaşie de memorie. apropiindu-se de limbajul utilizat in diferite domenii. .sunt. . fiind necesară doar prezenţa compilatorului aferent).Pentru a putea fi executate pe calculator. d) pentru rezolvarea problemelor de timp real: RTL/2. fiind însă necesară prezenţa unui program numit compilator care sa traducă programul în instrucţiuni cod maşină. cuvinte. Aceste limbaje constituie generaţia a treia de limbaje de programare. BCPL.se bazează pe engleza structurată. indiferent de tipul de microprocesor sau de sistemul de operare cu care acesta este dotat. variabile. GPSS. B. b) derivate din sisteme de operare: C. creşte productivitatea şi se reduc erorile de programare.3. de biblioteci speciale. Pascal. in general. o clasificare simplificată ar putea fi următoarea [7]: 1) limbaje pentru calcule ştiinţifice: Fortran şi ALGOL (ALGOrithmical Language). primul limbaj de acest gen fiind limbajul Fortran (FORmula TRANslator) elaborat în 1954 sub conducerea lui John Backus. 4) limbaje pentru destinaţii multiple: a) pentru instruire: Basic (Beginners All purpose Symbolic Instruction Code). . limbaje procedurale (urmăresc. Modula. GPS. Deşi există mii de astfel de limbaje. port de intrare etc. c) pentru programarea roboţilor şi a maşinilor unelte: FORTH. pas cu pas. operaţii de prelucrare etc.programele sunt mult mai uşor de scris şi citit. Limbaje de nivel înalt Cercetările 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 puţin de la un calculator la altul. 2) limbaje comerciale: COBOL (COmmon Busines Oriented Language) şi RPG (Report Program Generator).dispun. .operează asupra unor concepte de nivel logic (fişier..

Orca. APL (A Programming Language). ML (Mathematical Language). FoxBase. ALGOL. SQL. CSP. C. COBOL. sistemul rezolvând aceste probleme). Java.independenţa datelor de progamele de apicaţii care le utilizează. VII) limbaje pentru programarea vizuală: Visual Basic. Cel mai reprezentativ limbaj al acestei generaţii este PROLOG.caracterul neprocedural (utilzatorul trebuie să indice sistemului ce anume doreşte să facă şi nu cum să procedeze. APL. Pascal. Linda. Visual FoxPro Clasele rezultate nu sunt disjuncte. O altă clasificare a limbajelor de programare se poate face [7] după modul şi nivelul de abstractizare..scrierea programului sau codificarea (rezultă programul sursă sau codul sursă). Limbajele de generaţa a 5-a se utilizează pentru rezolvarea unor probleme de programare logică. . Astfel. Ada. FoxPro). metodologiea programării. Visual C++. II) limbaje pentru programarea orientată pe obiecte: Smalltalk. Principalele caracteristici ale acestor limbaje sunt: .c) pentru programare funcţională: Lisp (LISt Processing). Dintre limbajele din generaţa a 4-a fac parte limbajele din familia dBASE (dBASE. Miranda. . . structura programului etc. Paradox. Având în vedere că de la operaţia de redactare a programului şi până la execuţia sa se parcurg o serie de activităţi menţionate mai sus. Aceste limbaje se mai numesc şi generatoare de aplicaţii şi sunt preferate de către neinformaticieni. V) limbaje pentru programarea logică: Prolog. QBE (Query By Example). Python. Datalog. cât si pentru programarea concurentă şi distribuită dar şi vizuală.execuţia. . IV) limbaje pentru programarea funcţională: Lisp.compilarea (rezultă module obiect). unele limbaje regăsindu-se în cadrul a mai multor clase.a. VI) limbaje pentru programarea la nivelul BD: limbajele incorporate in SGBD-urile respective. Clipper. s-au creat aşanumitele medii de 19 . II) limbaje pentru programarea concurentă şi distribuită: Concurent Pascal.încărcarea în memorie şi salvarea pe disc. . QBE. : I) limbaje pentru programarea modulară şi structurată: Fortran. Limbajele din generaţia a 4-a au apărut odată cu dezvoltarea sistemelor de baze de date (SGBD-uri). Java este atât un limbaj pentru programare orientată pe obiecte. . ML. .editarea de legături (rezultă program executabil).întreţinerea Pentru redactarea unui program (tastarea instrucţiunilor) se utilizează un editor de texte. SQL (Structured Query Language). Caml.depanarea. . Eiffel. . DB2 etc.o interfaţă prin instrucţiuni precum şi prin meniuri ş.uşurinţa cu care se pot învăţa şi manevra. Activităţi necesare la elaborarea şi execuţia programelor: .

date şi adrese de memorie. . . Un program scris într-un limbaj de asamblare poate fi executat: a) pe orice calculator b) numai pe tipul de calculator corespunzător limbajului de asamblare utilizat răspuns corect b) 4.dimensiune mare a programelor. Un program scris într-un limbaj de asamblare poate fi executat pe calculator: a) fără a necesita alte transformări prealabile b) după încărcarea sa în memorie c) numai după traducerea sa în instrucţiuni cod maşină răspuns corect c) 20 . la programarea visuală şi orientată obiect care permite generarea unui program şi a unor interfeţe utilizator prietenoase prin combinarea (manipularea) unor obiecte predefinite sau definite de utilizator şi ataşare de cod corespunzător. cu specificarea codului numeric pentru instrucţiuni. după posibilităţi.necesitatea descompunerii problemei de rezolvat în operaţii elementare pe care le poate executa calculatorul respectiv. Un calculator poate executa un program: a) scris în orice limbaj de programare b) descris în limbaj maşină răspuns corect b) 2. Astfel s-au estompat barierele dintre teoria şi practica programării. Odată cu apariţia produselor CASE (Computer Added Software Engineering) se poate spune că programarea a trecut în faza de producţie. . Un salt important în activitatea de programare o constituie trecerea de la programarea procedurală (monolitică). Probleme rezolvate 1.lizibilitate scăzută şi o rată mare a erorilor. în care un program este o secvenţă de instrucţiuni. urmărindu-se simplificarea la maximum a programării şi. Enumeraţi principalele dezavantaje ale programării în limbaj maşină.dependenţa de un anumit tip de calculator. 3.programare care conţin instrumente (utilitare) pentru fiecare etapă (începând cu editoare de texte proprii şi terminănd cu comenzi pentru execuţia programului). transferarea acesteia către calulator. răspuns: . .productivitate mică in activitatea de programare.

creşte productivitatea şi se reduc erorile de programare. in general. Daţi exemple de limbaje din generaţia a patra Cel mai reprezentativ limbaj de programare logică este limbajul: a) SQL b) Simula c) PROLOG d) LISP e) Java Enumeraţi şi exemplificaţi principalele clase de limbaje de programare după metodologiea programării. pas cu pas.sunt.) spre deosebire de limbajul-maşină care operează cu elemente de nivel fizic (registru. Enumeraţi şi exemplificaţi principalele clase de limbaje de programare din generaţia a treia 2. Limbajele de programare din generaţia a patra au apărut: a) odată cu apariţia compilatoarelor b) ca urmare a dezvoltării sistemelor de baze de date c) pentru rezolvarea aplicaţiilor de programare logică 3. Enumeraţi principalele caracteristici ale limbajelor de programare din generaţia a treia răspuns: . .). de biblioteci speciale. variabile. Probleme propuse 1. 4. structura programului: Care sunt principalele activităţi ce trebuie parcurse de la operaţia de redactare a unui program şi până la execuţia sa pe calculator: 21 5. procedura de rezolvare a problemei).dispun.sunt orientate spre problemă iar programele rezultate sunt portabile (pot fi rulate pe orice tip de calculator. . locaşie de memorie. operaţii de prelucrare etc. . . .5.au un vocabular format din simboluri.programele sunt mult mai uşor de scris şi citit.se bazează pe engleza structurată. 6. constante. . . fiind necesară doar prezenţa compilatorului aferent). port de intrare etc.. in general. cuvinte. limbaje procedurale (urmăresc.operează asupra unor concepte de nivel logic (fişier. fraze etc. apropiindu-se de limbajul utilizat in diferite domenii. indiferent de tipul de microprocesor sau de sistemul de operare cu care acesta este dotat.

22 .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 operaţiilor începând cu redactarea programului şi terminând cu execuţia sa pe calculator.

Pentru codificarea seturilor de caractere sunt utilizate următoarele standarde: . . = < > # $ % + . de obicei şi majusculele. introdus de ANSI (American National Standard Institute). iar următoarele 128 sunt coduri de caractere tipăribile pentru caracterele unor alfabete naţionale europene (francez. Primele 128 sunt din setul ASCII standard. in unele limbaje de programare cuvintele ce desemnează instrucţiuni pot fi folosite şi ca nume de variabile.EBCDIC (Extended Binary Coded Decimal Interchenge Code). asemenea situaţii nu sunt însă indicate deoarece pot ascunde erori în logica programului şi îl fac mai greu de înţeles).se prezintă alfabetul unui limbaj de programare. Alfabetul şi vocabularul unui limbaj de programare Setul de caractere Orice limbaj de programare are la bază un anumit alfabet. sintactică şi semantică este mai simplă la căutarea în tabele de simboluri). cuvinte cheie – acestea au un înţeles explicit într-un context precizat (de ex. fiind disponibile astfel 256 de caractere. spaniol. . cuvinte rezervate – acestea nu pot fi folosite decât în scopul pentru care au fost definite (de ex. introdus de IBM.Capitolul 4.se măreşte viteza de compilare (analiza lexicală.* / “ ‘ ( ) etc.ASCII (American Standard Code for Information Interchange). sintaxa şi semantica unui limbaj de programare Rezumat. Avantajele utilizării acestei categorii de cuvinte sunt următoarele: . .). în limbajul Visual Basic). Ordonarea caracterelor alfabetului se face pe baza codurilor numerice corespunzătoare caracterelor respective. român etc. .literele alfabetului englez (de la A la Z. a căror semnificaţie poate să difere de la un limbaj la altul. numite caractere de control).) . sintactică şi semantică). în total 52 de caractere). 2. În majoritatea cazurilor setul de caractere este format din: . .unele caractere speciale (. Ulterior. în total 10 caractere). o parte din literele alfabetului grecesc. traducerea programelor (translatoare). Consideraţii generale privind lexicul. Pe baza caracterelor ce alcătuiesc alfabetul limbajului se alcătuiesc cuvintele care formează vocabularul limbajului şi cu ajutorul cărora se construiesc instrucţiunile limbajului. 23 . unele simboluri matematice . 4. este un cod pe 7 biţi şi permite codificarea a 128 de caractere (95 de caractere tipăribile şi 33 de caractere netipăribile. setul ASCII a fost extins la o codificare pe 8 biţi.programul devine mai uşor de înţeles. caractere speciale pentru desenat tabele etc. neexistând restricţii. vocabularul limbajului. .. Există două categorii de cuvinte şi anume: 1.cifrele arabe (de la 0 la 9. analiya textului sursă a unui program (analiza lexicală.. un cod pe 8 biţi. şi literele mici.1.

- erorile sunt mai uşor 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, fişiere, nume de proceduri, nume de funcţii, etc.). Sintaxa unui limbaj de programare Şi în cazul limbajelor de programare succesiunile de cuvinte construite după anumite reguli, formează propoziţii, numite instrucţiuni. Sintaxa unui limbaj de programare reprezintă ansamblul de reguli prin care se determină dacă o anumită instrucţiune este alcătuită corect sau nu. Sintaxa unui limbaj de programare poate fi descrisă în diverse moduri , unul dintre acestea fiind notaţia BNF (Backus-Naur Form). Notaţia BNF Notaţia BNF (Backus-Naur Form) a fost utilizată prima dată la descrierea sintaxei limbajului ALGOL (în cadrul raportului ALGOL60 apărut î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 defineşte astfel”. Simbolurile terminale sunt cuvinte care apar acolo unde se specifică în producţii (de ex., for, while, do, +, ; etc.). Simbolurile neterminale sunt încadrate în < şi > şi sunt definite prin producţii ale limbajului (de ex., <variabilă>, <identificator>, <instrucţiune if> etc.). Exemplu: în limbajul Visual Basic sintaxa unui identificator se descrie în BNF astfel: <identificator>::=<literă>½<identificator><cifră>½<identificator><literă> unde <literă>::=a½b½...½z½A½B½...½Z <cifră>::=0½1½2½...½9 Conform acestei producţii, identificatorul are 3 definiţii alternative: un identificator este fie o <literă>, fie un <identificator> urmat de o <cifră> sau o <literă> (definiţie recursivă). Semnificaţia acestei definiţii este următoarea: un identificator poate să conţină o singură literă, sau o literă urmată de oricâte litere şi/sau cifre. Conform acestei definiţii, sunt corecte sintactic următorii identificatori: a, t1, sec12a1. Descrierea sintaxei instrucţiunii condiţionale IF…EndIf din limbajul Visual Basic în notaţie BNF este: <instrucţiune If>::= If < condiţie > Then < instrucţiuni 1 > Else < instrucţiuni 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 destinaţie. Translatoarele se clasifică astfel: - compilatoare – pentru acestea programul destinaţie se numeşte program obiect sau cod obiect, fiind apropiat de codul maşinii; - asambloare – sunt compilatoarele limbajelor de asamblare; În aceste două cazuri traducerea de obicei este urmată de editarea de legături, înainte de execuţia 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 compilări anterioare sau cele existente în biblioteci). - interpretoare – realizează execuţia instrucţiune cu instrucţiune a programului sursă. - preprocesoare - traduc programe sursă din limbaje de nivel înalt în programe destinaţie 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 - combinaţie compilator-interpretor, ce foloseşte secvenţe 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 subşiruri numite atomi lexicali: cuvinte cheie sau rezervate, operatori, constante, identificatori, separatori. Operaţiile pe care le realizează analizorul lexical sunt următoarele: - detectează în programul sursă subşiruri ce respectă regulile de formare a atomilor lexicali; - clasifică aceste subşiruri (identifică clasa la care aparţin aceste subşiruri); - traduce subşirurile în atomi lexicali; - memorează atomii în tabela de simboluri. Analiza sintactică În această fază în şirul atomilor lexicali se identifică structuri sintactice: expresii, liste, instrucţiuni, 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 relaţiile dintre structuri (separare, incluziune etc.). Analiza semantică. Analiza semantică foloseşte arborele sintactic, creat în faza de analiză sintactică, pentru a extrage informaţii privind apariţiile în programul sursă a obiectelor purtătoare de date (tipuri de date, variabile, proceduri, funcţii) şi a verifica consistenţa utilizării lor. Odată cu parcurgerea arborelui sintactic are loc şi generarea codului intermediar. Acesta reprezintă un şir de instrucţiuni simple, cu format fix, în care codurile operaţiilor sunt asemănătoare cu codurile maşină corespunzătoare, ordinea operaţiilor respectă ordinea execuţiei (conform apariţiei lor în programul sursă) iar operanzii sunt reprezentaţi sub forma variabilelor din programul sursă (nu sub formă de regiştri sau adrese de memorie). În practică, analiza semantică se desfăşoară în paralel cu cea sintactică, prin asocierea acţiunilor analizorului sintactic cu acţiuni referitoare la anumite structuri de date ce reprezintă atribute ale componentelor sintactice. Generarea codului obiect Generarea codului obiect presupune alocarea locaţiilor de memorie şi a regiştrilor unităţii centrale pentru variabilele programului şi înlocuirea codurilor de operaţii din codul intermediar cu cele maşină. Componente de bază (lexicală, sintactică, semantică) sunt asistate pe tot parcursul compilării de următoarele două module: Modulul de tratare a erorilor – o colecţie de proceduri care sunt activate ori de câte ori este detectată o eroare în timpul operaţiilor de analiză. După faza de analiza în care apar, erorile pot fi lexicale, sintactice sau de semantică. Procedurile de tratare a erorilor afişează mesaje de diagnostic relativ la eroare şi iau decizii privind modul de continuare a traducerii (se continuă , ignorând elementul ce conţine eroare, se încearcă corectarea erorii sau se intrerupe traducerea). Modulul de gestiune a tabelelor – o coleţie de proceduri care crează şi actualizează baza de date a compilatorului. Aceasta conţine informaţii proprii compilatorului (generate la implementare şi constituite din mecanismele de descriere a analizei lexicale, sintactice şi semantice) şi informaţii ce aparţin programului sursă ce se traduce (identificatorii, constantele, cuvintele cheie), memorate în tabela de simboluri. Gestionarea tabelei de simboluri se face în funcţie de modul de reprezentare al acesteia, caracterul general al tabelei, tipul limbajului din care se traduce programul sursă, convenţiile alese pentru reprezentarea atributelor în ea ş.a. De obicei, în faza de analiza lexicală, la întâlnirea unui nume nou, acesta este întrodus în tabela de simboluri, reţinându-se şi adresa intrării. Orice referire ulterioară la acest nume actualizează informaţia din tabelă corespunzătoare acestui nume, verificăndu-se şi consistenţa utilizării 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 române b) cifrele de la 0 la 9 c) literele alfabetului limbii engleze d) semne speciale e) cuvinte cheie răspuns corect b), c), d)
2.

Plecând de la alfabet se construiesc: a) instrucţiunile limbajului b) cuvintele limbajului c) programe d) vocabularul limbajului

răspuns corect d) 3. Vocabularul limbajului poate conţine: a) cuvinte rezervate b) cuvinte utilizator c) proceduri d) cuvinte cheie e) funcţii f) expresii răspuns corect a), b), d) 4. Analiza lexicală, sintactică şi semantică a unui program sursă se realizează în faza: a) de execuţie b) de compilare c) de editare de legături d) de implementare e) de scriere a programului. răspuns corect b)

27

construită după anumite reguli sintactice c) orice propoziţie din limba engleză 2. 4. O instrucţiune a limbajului este: a) orice succesiune de cuvinte din vocabular b) o succesiune de cuvinte din vocabular.Probleme propuse 1. Notaţia 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. Enumeraţi principalele tipuri de translatoare şi funcţiile acestora. Un program scris într-un limbaj de programare se numeşte: a) program obiect b) program sursă c) program destinaţie d) program executabil 28 .

o aplicaţie este constituită din unul sau mai multe programe care se vor executa într-o anumită ordine. În programarea procedurală. evenimentul click corespunde apăsării butonului stâng al mouse-ului pe obiectul respectiv).Capitolul 5.1. Limbajul Visual Basic pune la dispoziţia utilizatorului un mediu de dezvoltare care permite crearea de programe orientate spre obiecte şi conduse de evenimente. Apariţia tehnologiei orientate obiect. Pentru lucrul cu obiecte conduse de evenimente se parcurg următoarele etape: 29 . Majoritatea obiectelor vor răspunde unui anumit număr de evenimente generate de către utilizator printre care click-uri.programare orientată spre obiecte şi dirijată de evenimente. Spre exemplu. Pentru a schimba comportamentul obiectului acestuia trebuie să-i ataşaţi cod de program (instrucţiuni) corespunzător. dublu click-uri. casete de validare. O aplicaţie Windows afişează unul sau mai multe ecrane care conţin obiecte cu care va interacţiona utilizatorul pentru a controla evoluţia programului. efort mare pentru realizarea programelor şi mai ales a interfeţelor etc. 5. etc. fiecare program fiind constituit dintr-o secvenţă de instrucţuni scrise într-un limbaj de programare. Evenimentele se produc ca urmare a unei acţiuni a utilizatorului (ex. şi un exemplu de realizare a unei aplicaţii Windows pentru calculul salariilor personalului angajat al unei firme. bara cu instrumente Visual Basic permite crearea unei varietăţi de obiecte printre care: forme. tehnologie ce va fi prezentată în cele ce urmează în cadrul limbajului Visual Basic. Într-un mediu de programare vizual. butoane. a mediilor visuale de programare şi a sistemului de operare Windows a condus la apariţia şi dezvoltarea unei noi tehnologii de programare a aplicaţiilor windows şi anume programarea orientată pe obiecte şi dirijată de evenimente. Limbajul Visual Basic Rezumat. apăsări de taste sau trageri şi eliberări ale obiectului. obiectele principale sunt formele şi controalele desenate în forme (formă = o fereastră) Aceste obiecte pot fi create prin selecţie şi depunere folosind barele de instrumente ale mediului respectiv. butoane radio (butoane de opţiune). Fiecare din aceste obiecte are un comportament predefinit. sau în urma execuţiei codului programului. casete cu listă. sau pot fi declanşate de către sistem. Programarea aplicaţiilor Windows Pentru realizarea unei aplicaţii pot fi avute în vedere două tehnologii de programare şi anume: . Acesta era modul clasic de realizare a aplicaţiilor şi sistemelor informatice şi are o serie de dezavantaje printre care: productivitate scăzută în realizarea programelor.se prezintă limbajul de programare Visual Basic sub Excel. Spre exemplu când se execută click pe un buton acesta trece în poziţia apăsat şi apoi revine în poziţia normală. cod ce se va executa atunci când are loc un anumit eveniment (spre exemplu în cazul butonului evenimentul este click).programare procedurală . casete derulante combinate.

Rezumând putem spune că în programarea orientată spre obiecte şi dirijată de evenimente. Proprietate = Valoare Exemplu .). însă în plus metodele pot necesita precizarea unor informaţii suplimentare.pentru mutarea obiectului Buton1 în colţul din stânga sus al formei curente se apelează metoda Move şi se precizează coordonatele colţului din stânga sus: Buton1. culoare.stabileşte noua culoare de fond a formei la valoarea Blue. Proprietăţi şi metode Un obiect este definit de un set de proprietăţi cum ar fi: dimensiune.obiectele sunt substantive. . Referirea metodelor se face asemănător cu referirea proprietăţilor. Spre exemplu în Visual Basic există o metodă Move asociată majorităţii obiectelor (permite mutarea obiectelor). fie ca urmare a execuţiei codului ataşat.se creează o nouă formă căreia i se dă un nume. Utilizarea notaţiei cu punct pentru referirea proprietăţilor şi metodelor Referirea unei proprietăţi se face astfel: Obiect .2. Astfel în gramatica programării orientate spre obiecte : . fie declanşate de sistem. se ataşează fiecărui obiect codul ce va fi executat ca răspuns la evenimente generate de utilizator sau de sistem. dacă un buton radio este activ sau nu la un moment dat etc.BackColor = QBColor (Blue) .Move 0. obiectele au un comportament predefinit care poate fi modificat de utilizator prin ataşare de cod corespunzător şi aceste obiecte răspund la evenimente declanşate fie ca urmare a acţiunii utilizatorului asupra obiectelor. Va rezulta o interfaţă grafică cu care interacţionează utilizatorul pentru a controla evoluţia programului.proprietăţile sunt adjective. iar pe de altă parte proprietăţile reprezintă date iar metodele reprezintă cod (instrucţiuni). . O metodă este o procedură (succesiune de instrucţiuni) asociată unei anumite acţiuni a unui obiect.0 Stabilire proprietăţi şi executare metode Proprietăţile unui obiect pot fi setate în faza de proiectare (atunci când se desenează sau se modifică formele) utilizând fişa Properties a formei sau obiectului din formă (fişa 30 .BackColor (citeşte culoarea curentă şi o depune în dColor) frmForma1. poziţie pe ecran. se desenează şi se denumesc obiectele ce urmează a fi afişate în forma respectivă. Deci proprietăţile descriu obiectele iar metodele definesc acţiunile obiectelor. 5.metodele sunt verbe. comportament (ex.fie forma frmForma1 şi variabila dColor în care memorăm culoarea de fond a formei dColor = frmForma1. Exemplu .

). buton. Buton1. btn txt hsb vsb mnu chk lst fra img opt Exemplu frmForma1 cmdButon. btnOK txtCaseta1 mnuMeniuPrinc optBO1 31 . Denumirea obiectelor Orice obiect are proprietăţile: Name . frm pentru formă.un prefix format din 3 litere mici (ex. metodele pot fi executate numai în momentul execuţiei programului (eventual în momentul depanării programului utilizând facilitatea Debugger a programului Visual Basic).un şir de caractere care identifică obiectul (ex. Visal Basic dă nume implicite obiectelor.verticală Meniu Casetă de validare Casetă cu lista Cadru Imagine Buton de opţiune (radio) Prefix frm cmd. dacă codul de program asociat conţine instrucţiuni care referă şi setează proprietăţi (ca în exemplul de mai sus în care schimbăm culoarea fondului formei). Este indicat ca utilizatorul să dea nume obiectelor (Name) utilizând următoarea convenţie: .orizontală . etc.numele utilizat în scrierea codului Capture . etc. Forma1.) . Proprietăţile pot fi modificate şi prin program în momentul execuţiei formei. De asemenea fişa Properties poate fi vizualizată prin click dreapta şi selecţie Properties.numele dat obiectului pentru a putea fi identificat de utilizator. În tabelul următor sunt prezentate convenţiile de denumire a obiectelor din Visual Basic: Obiect Formă Buton de comandă Casetă de text Bare de derulare . Ecran1. etc.). cmd pentru buton de comandă.este automat vizualizată la selecţia obiectului respectiv: forma. Spre deosebire de proprietăţi.

Utilizare Visual Basic din Excel Lansare editor Visual Basic: Tools →Macro →Visual Basic Editor 32 .3.5.

Creare formă: Insert→UserForm Ştergere formă: File→ Remove UserForm (pentru forma selectată = ultima activată) →No (fără export = fără salvare) 33 .

setate). Vizualizare forme View →Project Explorer → din lista Project ce apare se alege forma dorită (care poate fi editată cu click dreapta.proprietăţile obiectului .După creare formă se pot desena obiecte în formă utilizând bara de instrumente Toolbox Controls prin selectare obiect. sau executată din Run Sub / UserForm). Delete). sau selecţie obiect din lista Project şi apoi View → Object (pentru afişare obiect în modul Design) 34 . antrenare pe suprafaţa formei şi depunere obiect ca în exemplul de mai jos: În partea stângă a ecranului este afişată lista proprietăţilor obiectului selectat (care pot fi eventual modificate . Cu click dreapta pe obiect se pot vizualiza: . Copy. Paste.codul asociat şi eventual se pot efectua şi alte operaţii (Cut.

Code (pentru afişare cod pentru obiectul selectat) 35 .

Execuţie 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 .

40E38 -1. !. $ atunci tipul prestablit este variant. Exemplu: Dim Varsta As Integer Dim X As Double Dim sir1. sir2 este de tip string) Dim sir As String ∗ 10 (de tip şir ce poate conţine max.648.). sir2 As String (sir1 este de tip variant. Variabile O variabilă este o zonă temporară de memorie căreia i se dă un nume.9999 Adresa unui obiect 65500 octeţi în funcţie de tip în funcţie de tipul elementelor Declaraţii implicite şi explicite de variabile Declararea implicită se face utilizând sufixul (ca în tabelul de mai sus).647 -3. Tipuri de variabile în Visual Basic Tip Byte Boolean Integer – întreg Long integer . şi care poate memora (stoca) un anumit tip de dată care poate fi modificată pe parcursul execuţiei programului. Declararea explicită a unei variabile se face utilizând instrucţiunea Dim la începutul unei proceduri. Function.483. etc. 3. # .întreg lung Simplă precizie Dublă precizie Currency – valută Date . Fals (True. trebuie să înceapă cu un caracter alfanumeric (litere. + 32768 -2. 256 caractere. @.22E14 ian 1. cifre) şi nu poate fi un cuvânt rezervat al limbajului Visual Basic (cum ar fi Sub.22E14 . &. 10 caractere) Domeniul unei variabile 37 . 2.147.dată calendaristică Object – obiect String – şir Variant – nedefinit User-Defined (definit de utilizator) Sufix % & ! # @ $ Dimensiune (octeţi) 1 2 2 4 4 8 8 8 4 1/caracter după caz după caz Domeniu de valori 0-255 Adevărat.483. dec 31 . 100 .147.5. False) -32768.80E308 .4. În Visual Basic numele unei variabile poate avea max. 1. 9.40E38 .80E308 -9. Exemplu: Vârsta% = 42 (variabila vârsta este de tip întreg) Dacă ultimul caracter nu este unul din caracterele de declarare a tipului: %.

Când execuţia unei proceduri se încheie. Aceste module se creează prin selectarea opţiunii Module din meniul Insert al programului Visual Basic. Exemplu: Global NumePrenume As String Constante 4. nivel modul standard Nivelul procedură este primul nivel la care poate fi declarată o variabilă fie implicit fie cu instrucţiunea Dim. Există două tipuri de procedură în Visual Basic şi anume: . Întrucât o variabilă poate fi declarată la 4 nivele diferite există corespunzător 4 nivele diferite de domenii de vizibilitate şi anume: 1. Declararea unei variabile la nivelul unui astfel de modul se face prin plasarea acesteia în zona de declaraţii a obiectului General. va fi accesibilă la nivelul tuturor procedurilor acelei forme. variabile statice în interiorul procedurilor 3. Astfel o variabilă statică îşi conservă valoarea între apelurile succesive ale procedurii în care a fost declarată (deci nu va fi reiniţializată la fiecare apel al procedurii). Variabile statice . Variabilele declarate în proceduri vor fi variabile locale ale procedurilor respective.proceduri Sub . Orice variabilă declarată la acest nivel este vizibilă din orice procedură a aplicaţiei (proiectului). toate variabilele locale ale acesteia sunt eliminate din memorie. 2. sau prin click pe butonul module din bara cu instrumente. Declararea unei variabile globale se face utilizând cuvântul cheie Global în secţiunea General / Declaration a modulului de cod. Cel mai înalt domeniu de vizibilitate este nivelul global.proceduri Function. 38 . însă este vizibilă numai în cadrul procedurii în care a fost declarată. fiind valabile (accesibile) numai în procedurile în care au fost declarate. # Deci variabilele locale ale unei proceduri sunt reiniţializate la fiecare apel al procedurii.în interiorul procedurilor O variabilă locală poate fi făcută permanentă dacă în locul instrucţiunii Dim se foloseşte instrucţiunea Static. 3. Variabile la nivelul modul standard Modulele de cod sunt module utilizate pentru a păstra procedurile şi funcţiile generale neinfluenţate de evenimente şi variabilele şi constantele globale. nivel formă 4. Deci aceste variabile au cea mai redusă vizibilitate şi cel mai restrâns domeniu.Domeniul unei variabile este zona programului în care variabila este vizibilă. zonă accesibilă prin intermediul ferestrei de cod. Variabile la nivel formă O variabilă declarată la nivelul unei forme. nivel procedură 2. 1.

O constantă poate fi privită ca o variabilă a cărei valoare nu se modifică niciodată rămânând aceeaşi pe parcursul întregii vieţi a programului. 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. Exemplu de utilizare InputBox( ). Exemplu: Dim Persoane As t_pers Persoane. care pot conţine unul sau mai multe tipuri de date predefinite.Nume = "Ionescu Ion" Persoane. Este indicat ca numele constantelor să fie scrise cu litere mari pentru a fi uşor reperabile. Static. Ca şi în cazul unei variabile. 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. 0. Global pentru a defini domeniul de vizibilitate al acestei variabile.Nr = 15 Pesoane. IB-TITLU. utilizatorul poate să-şi definească propriile sale tipuri de date. Tipurile de date definit de utilizator pot fi declarate numai în secţiunea 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 aplicaţiei. iyPos As Integer ‘valoare păstrată între apeluri SPrompt = "Introduceţi numele dumneavoastră:" ixPos = Iif(ixPos > 0. MsgBox Const IB_TITLU = "Titlu InputBox" Dim sNume As String ‘variabilă locală Dim sPrompt as string Static ixPos As Integer. Constantele se declară cu cuvântul cheie Const. Pentru variabilă se poate utiliza Dim.1983 # Astfel de tipuri de variabile sunt utilizate în programele de baze de date. 1440) ‘ schimbă poziţia ferestrei iyPos = Iif (iyPos >0. domeniul unei constante este determinat de locul unde este declarată. Utilizarea constantelor duce la creşterea calităţii programelor.DataNasteri = #december 20 . Prefixele variabilelor De obicei fiecare programator îşi defineşte variabilele utilizând un prefix scris cu litere mici pentru a identifica tipul variabilei după cum urmează: 39 . proiectului respectiv). 1440) sNume = InputBox$ (sPrompt. ixPos. 0.

Integer s . caseta de dialog va fi centrată pe orizontală la o treime din înălţimea ecranului. verticală a colţului din stânga sus al casetei de dialog faţă de colţul din stânga al ecranului (formei). context) . 5.Argumentul prompt este singurul argument obligatoriu. context) .String l . Operaţii de intrare /ieşire realizate cu funcţiile InputBox ( ) şi MsgBox ( ) Limbajul Visual Basic dispune de funcţiile InputBox ( ) şi MsgBox ( ) pentru realizarea de operaţii simple de intrare/ieşire prin utilizarea unor casete de dialog predefinite. Variabila Valret va memora conţinutul casetei de text (textul introdus). care va fi un mesaj (de tip String) care invită utilizatorul să introducă text în caseta de text afişată.se poate completa pentru acest argument un şir de caractere care să fie considerat răspunsul predefinit (va apare afişat în caseta de text). .inventată de un programator de naţionalitate ungară de la firma Microsoft pentru limbajul C. Dacă se selectează butonul OK sau se apasă Enter. argumentele helpfile (şir) şi context (nr.Title este un şir de caractere ca va fi afişat în bara de titlu a casetei de dialog.Pentru ambele funcţii InputBox( ) şi MsgBox( ). funcţia InputBox( ) returnează conţinutul casetei de text. xpos. xpos.afişează o casetă de dialog şi aşteaptă ca utilizatorul să introducă text.5. caz în care utilizatorul poate apăsa tasta F1 pentru a vedea articolul Help creat pentru respectiva casetă de dialog. apoi returnează conţinutul casetei de text. Valoarea returnată este fie de tip variant fie de tip String în funcţie de varianta utilizată: Valret = InputBox (prompt. helpfile. caseta de text (în care utilizatorul va introduce textul) va fi afişată goală. helpfile. În cadrul unui program utilizatorul trebuie să poată introduce date şi să poată afişa sau extrage rezultate.i . . ypos. title. întreg) sunt utilizate pentru a pune la dispoziţie asistenţă soft dependentă de context.Long -------Există o listă standard de prefixe de variabile numită notaţie ungară (Hungarian Notation) .xpos. default. 40 . Dacă nu se introduce text sau se selectează butonul Cancel. (chr(13).Default . Dacă se omite title sau default sau ambele şi vrem să precizăm xpos. Funcţia InputBox ( ) . ypos . iar dacă nu se completează.sunt expresii numerice care specifică distanţa pe orizontală. ypos atunci în locul argumentelor omise se va folosi câte o virgulă pentru fiecare argument omis. Dacă sunt omise. Pentru a introduce text pe mai multe linii se va introduce CR. . default. LF. . funcţia returnează un şir de lungime 0 (" "). ypos.întoarce String . chr(10)) sau constanta predefinită vbcrlf. title. între fiecare două rânduri succesive).întoarce Variant Valret$ = InputBox$ (prompt.

Cancel Afişează butoanele Yes. Cancel Afişează pictograma Critical Afişează un semn de întrebare Afişează un semn de exclamare Afişează pictograma Information Primul buton este prestabilit Al doilea buton este prestabilit Al treilea buton este prestabilit Casetă modală aplicaţiei Casetă modală sistemului Constanta simbolică recomandată vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel vbCritical vbQuestion vbExclamation vbInformation vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbApplicationModal vbSystemModal Pentru a obţine valoarea argumentului type se va însuma câte un număr din fiecare grup.Retry. Funcţia MsgBox ( ) returnează o valoare întreagă care indică numărul butonului selectat. No.Funcţia MsgBox ( ). No Afişează butoanele Retry. numărul şi tipul butoanelor casetei de dialog 2. modalitatea casetei de dialog. type.Ignore Afişează butoanele Yes. helpfile. context) Sintaxa procedurii MsgBox este: MsgBox msg. Modalitatea implicită a unei casete de dialog este ApplicationModal. 41 . tipul pictogramei 3. context -msg = expresie şir afişată ca mesaj în caseta de dialog -type = expresie numerică ce precizează numărul şi tipul butoanelor şi a altor elemente ce vor fi afişate în caseta de dialog corespunzător tabelului de mai jos. Dacă argumentul type este omis se consideră implicit valoarea 0. Valoare 0 1 2 3 4 5 16 32 48 64 0 256 512 0 4096 Semnificaţie Afişează numai butonul OK Afişează butoanele OK şi Cancel Afişează butoanele Abort. title. title. procedura MsgBox Funcţia MsgBox( ) şi procedura MsgBox afişează un mesaj într-o casetă de dialog şi aşteaptă ca utilizatorul să selecteze un buton. Sintaxa funcţiei MsgBox ( ) este: Valret % = MsgBox(msg. butonul prestabilit 4. helpfile. În tabelul de mai jos sunt date grupele de valori care descriu: 1. Procedura MsgBox nu returnează nici o valoare ( se utilizează atunci când nu interesează cum este închisă caseta de dialog corespunzătoare). type.

conform tabelului de mai jos: Valoare 1 2 3 4 5 6 7 Semnificaţie 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 creşte claritatea programului (semnificaţia constantei vbAbort este evidentă. Structuri de ramificare şi ciclare (luare decizii) Pentru luarea deciziilor în cadrul unui program Visual Basic se pot utiliza două categorii de instrucţiuni cu ajutorul cărora se dirijează execuţia instrucţiunilor programului în funcţie de îndeplinirea anumitor condiţii. 3 nu spune nimic).6.instrucţiuni de ramificare – permit execuţia selectivă a anumitor secvenţe de instrucţiuni funcţie de îndeplinirea unor condiţii . 5.EndIf .6. Atât pentru funcţia MsgBox( ) cât şi pentru procedura MsgBox argumentul msg este obligatoriu. Valoarea returnată de funcţia MsgBox( ) indică butonul care a fost selectat.instrucţiuni de ciclare – permit execuţia repetată a unor secvenţe de instrucţiuni. celelalte fiind facultative.1. pe când nr. Cele două categorii de instrucţiuni sunt: . 5.În modalitatea aplicaţie utilizatorul trebuie să răspundă casetei de dialog înainte de a putea să lucreze în aplicaţia curentă. În modalitatea System toate aplicaţiile sunt suspendate până când utilizatorul răspunde casetei de dialog. Dacă <condiţie> este falsă se execută secvenţa de instrucţiuni <instrucţiuni 2> şi se continuă programul cu instrucţiunile care urmează după EndIf. 42 .are sintaxa If < condiţie > then < instrucţiuni 1 > Else < instrucţiuni 2 > EndIf Dacă <condiţie> este adevărată se execută secvenţa de instrucţiuni <instrucţiuni1> şi se continuă programul cu instrucţiunile care urmează după EndIf.Structuri de ramificare 1) Structura If….

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 If……ElseIf…. apoi se continuă cu instrucţiunile care urmează după EndSelect. Exemplu: fie iVarsta o variabilă numerică în care este memorată vârsta. sau în cazul mai multor acţiuni se poate utiliza structura Select Case. 50. 60 to 65 sGrupa = "adult" Case Is > 65 sGrupa = "vârstnic" Case Else sGrupa ="ceilalţi" EndSselect În funcţie de condiţia (prima îndeplinită ) se execută secvenţa de instrucţiuni corespunzătoare. Culoare < 15 Then Culoare = Culoare + 1 43 . 1) ‘(testează să nu se depăşească codul 14 pentru culoare) 2) Structura Select……EndSelect . Select Case iVarsta Case 5 sGrupa = "de cinci ani" = 5 ani Case 13 To 19 sGrupa = "Adolescent" Case 20 To 35. Culoare.EndIf..Exemplu: If Else Culoare = 1 EndIf Se pot construi structuri If imbricate (incluse).EndIf poate fi condensată într-o singură linie de cod utilizând funcţia IIF ( ) ca în exemplul de mai jos: Culoare = IIF (Culoare <15. însă pentru aceasta se poate utiliza simplu structura If……ElseIf…. Dacă nici una din condiţiile anterioare nu este îndeplinită se execută instrucţiunile care urmează după CaseElse.pentru realizarea unei acţiuni din mai multe posibile.

Module şi proceduri În Visual Basic 4.2. Exemplu: (calculează suma numerelor pare până la 100). Instrucţiunea Exit Do poate fi folosită numai într-o structură Do…. 3) For…Next .Loop ca o condiţie de a părăsi ciclul. există trei tipuri de module: module ale formei module de cod module clasă 44 .Wend are sintaxa: While <condiţie> <instrucţiuni> Wend Se execută secvenţa de instrucţiuni <instrucţiuni> atâta timp cât condiţia <condiţie> este îndeplinită (adevărată).7.repetă o secvenţă de instrucţiuni de un număr precizat de ori după următoarea sintaxă: For icontor = <valoare iniţială> To <valoare finală> [Step <pas>] <instrucţiuni> Next Execuţia ciclului For…Next se poate termina forţat cu instrucţiunea Exit For. Structuri de ciclare 1) While….5. If <condiţie> Then Exit Do Else <instrucţiuni> Loop Until <condiţie> Structura Do…Loop repetă un bloc de instrucţiuni atâta timp cât o anumită condiţie este adevărată sau până în momentul în care o anumită condiţie devine adevărată. 2) Do….Loop are sintaxa: Do Until <condiţie> <instrucţiuni> Loop sau Do …………...0. For iNr = 0 TO 100 step 2 isuma = isuma + iNr Next 5.6.

O procedură subrutină efectuează o anumită acţiune însă nu returnează nici o valoare. Un modul de cod conţine cod public. Exemplu: 45 . "Fis2.doc" Name "Fisier1" As "Fisier2" Kill "Fis1. acest cod nu va fi vizibil în afara formei. declaraţii. Modulele clasă conţin o definiţie formală a unei clase care va fi instanţiată ca obiect OLE automatic. 2002# Utilizatorul îşi poate defini propriile proceduri pentru a efectua diverse acţiuni. O procedură subrutină începe cu instrucţiunea Sub şi se termină cu instrucţiunea End Sub (exemplu procedura asociată evenimentului click al unui buton). Cu excepţia cazului când se elimină cuvântul cheie Private din antetul procedurii de eveniment a formei.Fiecare tip de modul conţine proceduri care pot fi partajate pe diverse nivele ale domeniului de vizibilitate în cadrul aplicaţiei. Exemplu . Limbajul Visual Basic are o serie de proceduri încorporate ca de exemplu: Procedura MsgBox Print FileCopy Name Kill Beep Date Descriere Afişează un mesaj într-o casetă Tipăreşte Copiază un fişier Redenumeşte un fişier Şterge un fişier Emite un sunet Stabileşte data sistemului Exemplu de utilizare MsgBox "mesaj". Modulul de cod este numit şi modul standard pentru a putea fi diferenţiat de modulele formei şi modulele clasă. Toate exemplele date până în prezent cu excepţia variabilelor globale vor fi stocate în module asociate unor forme. proceduri subrutină şi funcţii care pot fi partajate între toate modulele unui proiect. 5. Pentru a efectua acţiunea. Clasa defineşte proprietăţile obiectelor ce aparţin clasei şi metodele utilizate pentru controlul comportamentului obiectelor. evenimente de încărcare în memorie). Print iProcent & "%" FileCopy "Fis1. O procedură eveniment rămâne inactivă până când este apelată pentru a răspunde unor evenimente provocate de utilizator (ex. Proceduri generale şi proceduri eveniment O procedură generală comunică aplicaţiei cum să efectueze o anumită acţiune.….1.doc". O procedură generală poate fi plasată în oricare din cele 3 tipuri de module. click cu mouse-ul) sau declanşate de sistem (ex. procedura trebuie apelată explicit în cadrul aplicaţiei.7.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. Proceduri subrutine O procedură subrutină (sau simplu procedură) este o secvenţă de instrucţiuni care are un nume şi ale cărei instrucţiuni sunt executate ca un tot.doc" Beep Date #December 18. O clasă este un şablon în baza căruia pot fi create obiecte. evenimente de ceas.

O funcţie începe cu instrucţiunea Function şi se termină cu instrucţiunea End Function.2) sCar = Chr(65) iCod = Asc ("A") sMari = Ucase("Ionescu") sMici = Lcase("LIMBAJE") iPozitie = Instr("ABCDE". 5. la apelul procedurii se va specifica doar numele fără paranteze !). "BCD") Valoare returnată iLung = 21 sSubsir = "AB" sCar = "A" iCod = 65 sMari = "IONESCU" sMici = "limbaje" iPozitie = 2 46 . iV2 As Integer iV1 = 560 iV2 = 829 Produs iV1. (deşi parantezele apar în definiţia procedurii. Dat" Beep MsgBox "S-au şters fişierele *. însă dacă o procedură urmează să primească argumente acestea se vor specifica ca în exemplul: Sub Produs(iNr1 As Integer. În Visual Basic există o serie de funcţii predefinite printre care: Funcţia Len( ) Mid( ) Chr( ) Asc( ) UCase( ) LCase( ) InStr( ) Descriere Returnează lungime şir Returnează un subşir din şir Returnează caracterul corespunzător codului Returnează codul corespunzător caracterului Converteşte în litere mari Converteşte în litere mici Returnează poziţia unui subşir în şir Exemplu de utilizare iLung=Len("Limbaje de programare") sSubsir=Mid("ABCDE".7.Dat" End Sub Pentru apelarea procedurii ŞtergeFisiere din orice punct al aplicaţiei se va specifica numele procedurii ca instrucţiune în cadrul programului. Proceduri funcţii O procedură funcţie (sau simplu o funcţie) este o secvenţă de instrucţiuni care efectuează o anumită operaţie într-un program şi returnează o valoare.Sub StergeFisiere( ) Kill " *. iNr2 As Integer) iVarGlobal = iNr1*iNr2 End Sub Apelul procedurii este ilustrat în exemplul de mai jos: Dim iV1 As Integer. Procedura de mai sus nu necesită argumente.Tmp" Kill " *.Tmp. 1.2. iV2 ………………. *.

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ă funcţii pot fi scrise ca o singură funcţie de două argumente şi anume: Function CriptDecript (sSirIntrare As String. 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 funcţiei Criptare: Private Sub frmApel Dim sRezultat As String sSirTastat$ = InputBox$("Tastează şirul de criptat") Srezultat = Criptare(SirTastat$) MsgBox Srezultat End Sub Dacă vrem să descriptăm şirul criptat vom scrie o funcţie 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. x.Pe lângă funcţiile predefinite fiecare utilizator îşi poate crea propriile funcţii Exemplu . sCarIntrare As string. x. sCarIesire as string iLen = Len(sSirIntrare) For x = 1 To iLen sCarIntrare = Mid$(sSirIntrare. sCar As String.definirea unei funcţii utilizator pentru criptarea unui şir de caractere Function Criptare(sSirTastat As String ) As String Dim iLen As Integer Dim sSirCriptat As String. sCarIesire As String iLen = Len(sSirIntrare) For x = 1 To iLen sCarIntrare = Mid$(sSirIntrare. iOperatie As Integer) As String Dim iLen As Integer Dim sSirIesire 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. 1) sCarIesire = Chr$(Asc(sCarIntrare) + iOperatie) 47 . sCarIntrare As String. x.

Indiferent dacă o funcţie are sau nu argumente. de unde şi denumirea sa în engleză Push button. Pentru a afişa text pe buton trebuie definită proprietatea Caption.8. atât la definire cât şi la apelare. Observaţii Fiecare din funcţiile şi procedurile aplicaţiei pot fi ataşate unor obiecte grafice (butoane). a întrerupe sau a încheia un anumit proces. parantezele sunt obligatorii !! 5. Dacă proprietatea Cancel a unui buton este stabilită pe valoarea True atunci acel buton poate fi selectat prin tasta Esc. Dacă proprietatea Default a unui buton are valoarea True. Obiecte în Visual Basic Bare cu instrumente . Prezenţa unui caracter & în textul proprietăţii Caption face ca ceea ce urmează după & să fie tasta de acces în combinaţie cu tasta Alt.sSirIesire = sSirIesire & sCarIesire Next CriptDecript = sSirIesire End Function iar la apelarea funcţiei iOperatie va fi: +1 pentru criptare -1 pentru decriptare Exemplu de apel: Dim V1 As String. Când se execută click cu mouse-ul arată ca şi cum ar fi apăsat. 1) MsgBox V2 Pentru crearea procedurilor şi funcţiilor se deschide fereastra de cod a modulului de cod standard. atunci acest buton poate fi selectat în orice moment prin apăsarea tastei Enter indiferent ce control este curent în acel moment. În secţiunea General Declaration a modului se vor declara variabilele şi constantele la nivel de modul (globale) şi apoi se definesc (introduc) procedurile şi funcţiile modulului (codul sursă prezentat mai sus). deci în acest caz textul sursă corespunzător se va ataşa butoanelor respective. 48 .sunt utilizate pentru a începe. Lista Object conţine cuvântul General iar lista Proc conţine cuvântul Declarations. V2 As String V1 = InputBox$("Introduceţi şirul de criptat") V2 = CriptDecript(V1. Selecţia 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.Butoane de comandă .

12 caracterelor Ascunde textul cu un singur caracter Ex. la dreapta. stilul şi dimensiunea caracterelor Exemple de valori 1= 3D.chenar simplu Stabileşte corpul. Alignment nu are efect. Pentru ca eticheta să afişeze corect linii multiple de diverse lungimi se vor stabili proprietăţile AutoSize şi WordWrap la valoarea True. ceea ce poate face fie direct în faza de proiectare.fără chenar. False caractere True.sunt controale grafice folosite pentru a afişa text pe care utilizatorul nu îlpoate modifica direct ci doar cu ajutorul instrucţiunilor (codului).Casete de text sau TextBox-uri sau casete de editare. iar dacă MultiLine este False. 0 = plat 0 .Proprietăţi uzuale ale unui buton de comandă Proprietate Descriere Appearance Selectează aspectul 3D sau plat Cancel Permite selectarea cu ESC Caption Şirul de caractere afişate pe buton Default Permite selectarea cu tasta Enter Font Stabileşte corpul. False MS Sans Serif. fie prin cod utilizând notaţia cu punct. * sau # Poziţia iniţială pentru selectarea numai la rulare textului Precizează lungimea textului selectat numai la rulare Memorează informaţii suplimentare orice expresie şir 49 . Accesul la textul afişat se obţine prin stabilirea sau citirea proprietăţii Text a controlului. . Pentru a afişa mai multe linii de text într-o casetă de text. 12 .Text (dacă a fost creată o casetă de text numită txtCaseta1). se poate utiliza proprietatea Alignment pentru a alinia textul la stânga. sau în centrul zonei. Bold. textul va fi împărţit automat pe rânduri chiar dacă caseta este redimensionată. Dacă proprietatea MultiLine este True. proprietatea MultiLine trebuie să fie selectată pe valoarea True. 0 = plat True. Bold. stilul şi dimensiunea MS Sans Serif. Both. Exemplu de citire: sTextCaseta1= txtCaseta1. None. Vertical. Implicit textul este aliniat la stânga Proprietăţi 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. sunt utilizate pentru a afişa informaţii introduse de utilizator la rulare sau asociate controlului prin program. Dacă o casetă de text multilinie nu conţine o bară de derulare orizontală. Barele de derulare se stabilesc cu proprietatea ScrollBars: Horizontal.Etichete . 1 .

ca de exemplu parola sistemului în faza de proiectare.afişează o casetă care poate fi activată sau dezactivată ( . Pentru a prelucra articolele selectate se utilizează evenimentul Click sau Double Click ale casetei cu listă. casete de validare). În general butoanele de opţiune se utilizează în grupuri (mai multe butoane) afişate într-un cadru . . însă spre deosebire de butoanele de opţiune. Proprietatea Tag poate stoca informaţii suplimentare. funcţie de valoarea True sau False a proprietăţii Value a butonului.Casete de validare . . Prin intermediul proprietăţii Caption fiecărui buton i se poate ataşa un text ce va fi afişat imediat în dreapta butonului. deci numai unul singur poate fi activ la un moment dat (întâi se desenează cadrul şi apoi se depun butoanele în cadru desenarea ulterioară a cadrului nu are nici un efect asupra grupului). Se pot grupa mai multe casete de validare într-un cadru.ca listă de opţiuni ce se exclud reciproc.o).Casetă cu listă (list box) afişează o listă de articole din care utilizatorul poate selecta unul sau mai multe.Cadre . Prin proprietatea Caption se poate afişa 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 .afişează o opţiune care poate fi activată s-au dezactivată (•. Fiecărui buton i se poate ataşa cod ca de exemplu: If optButon1. ). 50 .Proprietăţile SelStart şi SelLength sunt disponibile numai la rulare şi deci nu vor fi afişate în fereastra Properties a casetei de text. pot fi active mai multe casete din grup la un moment dat.oferă posibilitatea de a grupa controale înrudite (butoane de opţiune. Toate butoanele de opţiune afişate într-un recipient (cadru) se comportă ca un grup. Întâi se desenează cadrul şi apoi controalele.Butoane de opţiune (butoane radio) (Option Button) .Value = True Then MsgBox "Buton selectat" ′ Testează starea curentă a butonului optButon1 Else MsgBox "Buton neselectat" End if .

Exemplu: Private Sub lstLista1_Dblclick( ) ′ Afişează articolul selectat din caseta cu listă txtSelectie = lstLista1 în caseta de text txtselectie End Sub Proprietatea ListCount a unei casete cu lista returnează numărul de articole din listă.selecţie simplă (executare click cu mouse sau apăsare tastă spaţiu duce la selectarea sau deselectarea unui articol din listă. Proprietăţi şi metode comune ale casetelor cu listă şi casetelor combinate.ListCount -1 Indexul numeric al articolului curent lstLista1. Proprietatea Selected pe valoarea True sau False specifică dacă un articol din listă este selectat sau nu. 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 selecţii multiple (implicită) 1 .Pentru selecţii multiple de articole neadiacente se utilizează tasta Ctrl şi Click cu mouse pe articol.List(3) curent din listă 51 .List(x) End If Next Pentru a adăuga articole listei se utilizează metoda AddItem . articole ale listei Exemplu de utilizare iOpţiune = lstLista1.ListCount . Proprietate ListCount ListIndex List Semnificaţie Nr. se pot utiliza săgeţi pentru mutarea selecţiei de la un articol la altul. Exemplu de cod ataşat: iNr = lstlista1.1 ′ afişează toate articolele selectate din lista (caseta cu lisa) lstLista1 For x = 0 To iNr If lstLista1.ListIndex = 3 Asociată cu indexul returnează articolul sArt3 = lstLista1.combină facilităţile unui TextBox cu cele ale unui ListBox (conţine o casetă cu listă şi o casetă text).Casete combinate (ComboBox) .Selected(x) = True Then MsgBox lstLista1. 2 .selecţie multiplă (se apasă shift şi apoi click cu mouse sau utilizare săgeţi pentru a selecta articolul următor adăugat la elementul selectat anterior.

.Clear lstLista1. Ori de câte ori se efectuează click pe o bară de derulare se execută procedura evenimentului Change. iar la eliberarea de pe bara de derulare se execută evenimentul Change.AddItem = "Ionescu Ion" lstLista1. sStudenti(14) = "Popescu Vasile" For iIndex = 0 To 14 MsgBox sStudenti(iIndex) Next # Funcţia UBound(sStudenti) returnează numărul de elemente ale matricii (tabloului) Studenti.. Când se trage bara de derulare se declanşează evenimentul Scrool.ListIndex = 0 ′ Declară matricea sStudenti de 15 elemente ‘ Iniţializează elementele matricii ′ Adaugă fiecare element al matricii ca articol în caseta cu lista lstLista1 ′ Funcţia Ubound returnează numărul de elemente ale matricii ′ Selectează primul articol din listă .RemoveItem 5 Utilizarea matricelor . For iC = 0 To Ubound(sStudenti) . 52 .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. Exemplu de utilizare casete cu listă: Private Sub frmForma1_Click( ) Dim sStudenti(15) As String sStudenti(0) = "Ionescu" sStudenti(1) = "Florescu" ……………………….Sorted = True proprietăţii sorted este True Semnificaţie Adaugă listei un articol de tip şir Elimină toate articolele din listă Elimină un singur articol din listă Exemplu de utilizare lstLista1.Bare de derulare (orizontale şi verticale) permit parcurgerea unor liste mari.1 lstLista1.AddItem (sStudenti(iC)) Next lstLista1.variabile multidimensionale Dim sStudenti(15) As String sStudenti(0) = "Ionescu Ion" …………………………….

nr. Instrucţiunea Sheets(3). fie cu ajutorul funcţiei LoadPicture() în timpul rulării programului.AddItem (Sheets(3). Referire celule dintr-o foaie de calcul tabelar în Visual Basic Se face astfel: Sheets(n).2)) Next 53 . Exemplu: For irand = 1 To 5 lstLista1. a unei unităţi de disc DirListBox . aceste controale prezentând şi avantajul că imaginile plasate în ele pot fi redimensionate prin stabilirea proprietăţii Stretch a controlului la valoarea True.Spinner (SpinButton) .afişează o listă ordonată a directoarelor şi subdirectoarelor de pe disc şi prin click cu mouse permite utilizatorului să navigheze prin directoare FileListBox .Controale listă de fişiere.Cells(nr.Picture = LoadPicture(“C:\Imagini\Poza. în controlul Image care are numele (Name) imag1 se va scrie instrucţiunea: imag1. prin ataşare şi activarea unui buton spinner unei etichete sau unei casete de text.rând. 5. la rularea programului.permite selectarea. Fişierele imagine pot fi importate în controale Image sau PictureBox fie prin setarea proprietăţii Picture a controlulu.Cells (1. grafica va fi trunchiată exceptînd situaţia în care proprietatea AutoSize are valoarea True. nr.afişează fişierele din directorul specificat de proprietatea Path la rularea programului.Controale cu imagini – permit afişarea de imagini pe suprafaţa unei forme.permite incrementare sau decrementare numere. Dacă grafica încărcată dintr-un fişier depăşeşte suprafaţa controlului PictureBox. Pentru precizarea celulei (nr.rând. Controalele Image pot fi create din bara de instrumente Toolbox Controls. Exemplu.9.Cells(irand. de unităţi de disc şi de directoare DriveListBox . Controalele PictureBox acceptă grafică desenată în timpul rulării programului utilizând metodele Line. Circle şi Pset.coloană) se pot utiliza variabile în bucle For. Controalele Image nu acceptă grafică desenată în timpul rulării şi nu pot fi utilizate ca recipiente pentru alte controale.. .Picture = LoadPicture() . putând utilza pentru aceasta două tipuri de controale şi anume: PictureBox şi Image.2) = "Ionescu" depune şirul 'Ionescu' în celula B1 (rând 1 coloana 2) din a treia foaie de calcul a registrului de calcul Excel curent.jpg din directorul C:\Imagini.coloană) Exemplu.jpg”) Pentru a elimina imaginea dintr-un control imagine se va folosi funcţia LoadPicture fără nici un argument ca în exemplul de mai jos: imag1. Pentru a incărca fişierul imagine Poza.

10. fişierul proiect este un fişier cu extensia . În cazul în care limbajul Visual Basic este utilizat din Excel. coloana 2 (B) rândurile de la 1 la 5 din registrul de calcul curent. 5. etc. Gestionarea unui proiect Resursele unui proiect sunt memorate într-un fişier al proiectului care în Visual Basic este un fişier cu extensia . Componentele proiectului pot fi vizualizate selectând din meniul View opţiunea Project Explorer astfel: În fereastra din stânga ecranului vor fi afişate componentele proiectului şi anume: componente Excel componente Visual Basic (Forms.XLS.) după cum este ilustrat în ecranul care urmează: 54 .RES.adaugă în caseta cu listă lstLista1 cinci înregistrări din a treia foaie de calcul.

ICO. 5. 55 . Realizarea programului executabil pentru aplicaţie (proiect) Programul executabil pentru o aplicaţie Windows (proiect) este un fişier executabil cu extensia . Dacă nu se specifică o pictogramă.5.12.11. Aceste elemente ale limbajului nu pot fi create şi utilizate în Visual Basic sub Excel. Această pictogramă va apărea în colţul din stânga sus al formei. Acest fişier împreună cu alte fişiere auxiliare necesare programului va fi livrat viitorilor utilizatori ai aplicaţiei şi va putea fi instalat şi executat sub sistemul de operare Windows. Crearea şi extinderea meniurilor Limbajul Visual Basic permite crearea de meniuri personale pentru o aplicaţie cu ajutorul editorului de meniuri. Unei forme i se poate asocia o pictogramă prin stabilirea proprietăţii Icon a formei în faza de proiectare atribuind proprietăţii Icon un fişier cu formatul . Crearea programului executabil poate fi realizată pentru un proiect creat sub Visual Basic (şi nu sub Excel ca în cazul de mai sus). se va utiliza pictograma Visual Basic prestabilită pentru forme.EXE care poate fi rulat în afara mediului de dezvoltare Visual Basic.

Attach – ataşează tabele la distanţă .New – crează un nou tabel în baza de date curentă . IV FoxPro 2. De asemenea programul Visual Basic poate accesa în citire o bază de date de următoarele tipuri: Btrieve dBase III.X. Gestionarul de date. etc.5 Paradox 3. 4. Controlul Data este un control predefinit ce poate fi utilizat pentru conectarea unei aplicaţii Visual Basic la sursa de date selectată şi pentru legarea altor controale (casete de text.5.0.X O bază de date creată sub Visual Basic constă din unul sau mai multe tabele şi relaţiile dintre tabele memorate într-un fişier bază de date.Relations – defineşte relaţii între date din tabele diferite.13.astfel încât orice modificări efectuate în conţinutul acestor controale sunt automat înregistrate în câmpurile corespunzătoare din baza de date. casete cu imagini. Baze de date. Un obiect set de inregistrări Recordset este un set logic de înregistrări din baza de date cu ajutorul căruia pot fi accesate datele din baze de date multiple prin cod Visual Basic deci fără a utiliza controlul Data sau controale legate.) cu câmpuri din tabele ale bazei de date. actualizarea şi gestionarea bazelor de date relaţionale o constituie limbajul SQL (Structured Query Language) ale cărui instrucţiuni pot fi utilizate în programe Visual Basic pentru accesarea şi gestionarea datelor din baze de date relaţionale. 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. Spre exemplu dacă un control casetă de text este legat de un câmp al bazei de date. atunci orice modificare a conţinutului casetei de text va fi automat efectuată în câmpul asociat din baza de date. obiecte Set de înregistrări.Delete – elimină un tabel din baza de date curentă . Pentru crearea unei baze de date se selectează opţiunea New Database din meniul File al gestionarului de date. 2.Open – deschide o bază de date existentă şi afişează datele acesteia .Design – afişează şi eventual modifică structura unui tabel existent . 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). controlul Data. O altă modalitate pentru interogarea. După crearea şi salvarea fişierului ce va conţine baza de date se deschide fereastra Database ce conţine următoarele bitoane de comandă: . 56 .

cu următoarele câmpuri: Marca Nume şi prenume Funcţia Salar tarifar orar 57 .Probleme rezolvate Se crează un registru de calcul Excel care conţine următoarele foi de calcul: .Sheet1 (Personal) – Lista personalului angajat.

.Orele lucrate în luna….Sheet2 (Pontaj) . cu următoarele câmpuri: Marca Nume şi prenume Total ore lucrate ( SUM(Ziua : Ziua31) ) Ziua 1 (ore lucrate) Ziua 2 (ore lucrate) … Ziua 31 (ore lucrate) 58 .

cu următoarele câmpuri: Marca Nume şi prenume Avans CAR Rate 59 .-Sheet3 (Retineri) – Lista reţineri în luna….

În acest mod orice modificare asupra datelor în foile de calcul Personal. Reţineri. Reţineri. Din editorul Visual Basic. Rate din foaia de calcul Reţineri. se vor reflecta automat şi în foaia de calcul Salarii. Ore pontate sunt preluate prin referire în foaia de calcul Salarii din foile de calcul Personal respectiv Pontaj. Nume şi prenume sunt preluate prin referire din foaia de calcul Personal. Salarii. să se creeze în foaia de calcul Salarii. iar câmpul Reţineri în foaia Salarii se obţine prin sumarea câmpurilor Avans. un formular care să conţină butonul de comandă Calcul Salarii căruia să i se ataşeze codul Visual Basic care identifică 60 . câmpurile Marca. CAR. ce conţine următoarele câmpuri: Marca Nume şi prenume Funcţia Tarif orar Ore pontate Salar realizat Reţineri Salar net În foile de calcul Pontaj.. De asemenea . Pontaj. câmpurile Funcţia.Sheet4 (Salarii) – Lista salariilor pentru luna….

Creare formă: 61 .ultimul rând completat în foile de calcul. Salar Net din foaia de calcul Salarii utilizând formulele: Salar Realizat = Tarif Orar * Ore Pontate Salar Net = Salar Realizat – Retineri La execuţia formei prin click cu mouse-ul pe butonul Calcul Salarii se vor realiza operaţiile menţionate mai sus. calculează şi depune rezultatele obţinute în câmpurile Salar Realizat.

Codul Visual Basic ataşat butonului Calcul Salarii: 62 .

Execuţie formă: 63 .

În ecranele ce urmează sunt ilustrate noile obiecte create . Codul Visual Basic pentru completarea casetei cu listă şi încărcarea imaginii va fi ataşat butonului de comandă Command Button1. 64 . codul visual basic şi rezultatul execuţiei formei.Rezultatul obţinut după execuţia formei: În continuare se extinde problema cu alte tipuri de controale astfel: În formularul Form1 se crează o casetă cu listă ListBox1 ce va conţine numele şi prenumele angajaţilor şi un control imagine Image1 în care se va incărca un fişier imagine.

Formularul Form1 65 .

Codul Visual Basic 66 .

Rezultatul execuţiei formei 67 .

Rezultatul execuţiei formei după setarea proprietăţilor BackColor şi Font ale casetei cu listă pe alte valori 68 .

majoritatea obiectelor răspund la: a) evenimente b) controale c) proprietăţi 4. În programarea orientată obiect şi dirijată de evenimente. Retineri şi formulele de calcul menţionate mai sus. Un obiect este definit de: a) un set de proprietăţi b) comportament 6. Într-un mediu de programare Visual obiectele principale sunt: a) aplicaţiile b) formele şi controalele desenate în forme c) procedurile 2. Teste de verificare 1.Probleme propuse spre rezolvare 1. Î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. Să se scrie codul Visual Basic care să realizeze completarea tuturor cîmpurilor în foaia de calcul Salarii (se pleacă de la o foaie de calcul Salarii vidă). 2. Comportamentul unui obiect: a) este predefinit b) nu poate fi modificat de utilizator c) poate fi modificat de utilizator prin ataşare de cod corespunzător 5. Pontaj. utilizând foile de calcul Personal. Retineri plecând de la foaia de calcul Personal (valorile efective pentru orele pontate şi reţineri urmând a fi preluate ulterior de la tastatură). Să se scrie codul Visual Basic pentru crearea foilor de calcul Pontaj. Proprietăţile descriu: a) acţiunile obiectelor b) obiectele prin intermediul datelor c) metodele prin intermediul codului asociat 69 .

O variabilă declarată cu instrucţiunea Static a) este vizibilă din orice punct al aplicaţiei b) îşi conservă valoarea însă este vizibilă numai în cadrul procedurii în care a fost declarată 70 . Proprietăţile unui obiect pot fi setate: a) numai în faza de proiectare utilizând fişa Properties b) numai prin program utilizând notaţia cu punct c) atât în faza de proiectare cât şi prin program 10. O variabilă locală poate fi făcută permanentă în interiorul unei proceduri dacă: a) este declarată cu instrucţiunea Dim b) este declarată cu instrucţiunea Static 14.7. fie cel dat în proprietatea Name 12. Metodele pot fi executate: a) atât în faza de proiectare cât şi în momentul execuţiei programului b) numai în momentul execuţiei programului c) numai în faza de proiectare 11. În gramatica programării orientate spre obiecte: a) obiectele sunt verbe b) proprietăţile sunt adjective c) metodele sunt substantive d) obiectele sunt substantive e) metodele sunt verbe 8. Nume proprietate / metodă) 9. O variabilă în Visual basic poate fi declarată: a) implicit utilizând sufixul b) explicit utilizând instrucţiunea Dim c) cu instrucţiunea Declare d) cu instrucţiunea Static 13. 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. Referirea proprietăţilor sau metodelor în cadrul codului scris în Visual Basic se poate face prin: a) numele proprietăţilor sau metodelor b) utilizarea notaţiei cu punct (nume obiect.

În Visual Basic pot fi definite următoarele tipuri de proceduri: a) macro .15.EndIf e) Do…Loop 20. Cel mai înalt domeniu de vizibilitate a unei variabile se defineşte cu instrucţiunea: a) Static b) Dim c) Global 16.Next e) cu funcţia Iif(…) f) cu instrucţiunea If…Else If…EndIf 19. În limbajul Visual Basic structurile de ciclare pot fi descrise cu instrucţiunile: a) Select…End Select b) While…Wend c) For……Next d) If…. Funcţia InputBox este: a) o funcţie definită de utilizator pentru preluare date de la tastatură b) o funcţie a limbajului Visual Basic pentru preluare date într-o casetă de text predefinită c) o funcţie Visual Basic pentru afişarea valorii unei variabile 18. În limbajul Visual Basic structurile de ramificare pot fi descrise: a) cu instrucţiunea If…..ElseIf….funcţii d) proceduri .definiţii b) proceduri .funcţii 21. O procedură subrutină poate realiza: a) returnează o valoare b) efectuează o acţiune dar nu returnează nici o valoarea c) efectuează o acţiune şi poate returna o valoare 71 .End Select d) cu instrucţiunea For….End If b) cu instrucţiunea Do….subrutine c) macro.Loop c) cu instrucţiunea Select…. Tipurile de date definite de utilizator pot fi declarate: a) la nivelul oricărei proceduri b) la nivel de formă c) numai în secţiunea General / Declaration a modului de cod 17.

Pentru crearea unui grup de butoane de opţiune într-un cadru se procedează astfel: a) Se desenează mai întâi butoanele de opţiune b) Se desenează cadrul astfel încât să conţină butoanele de opţiune c) Se desenează cadrul şi apoi butoanele de opţiune în interiorul cadrului 72 . Se creează o casetă text (Text Box) numită txtCaseta1. În definirea unei proceduri funcţii trebuie respectate condiţiile: a) Începe cu instrucţiunea Sub b) Începe cu prima instrucţiune din corpul funcţiei c) Începe cu instrucţiunea Function d) Se poate termina cu instrucţiunea End Function e) Continuă cu instrucţiunile din corpul funcţiei f) În instrucţiunea Function trebuie precizat numele funcţiei şi argumentele încadrate între paranteze g) Se termină cu instrucţiunea End Function 24. Pentru a memora textul introdus în această casetă în variabila sv1 se scrie instrucţiunea: a) sv1 = txtCaseta1.Name b) sv1 = txtCaseta1. O procedură de orice tip (Sub sau Function): a) poate fi ataşată unui obiect grafic b) nu poate fi ataşată unui obiect grafic c) numai procedurile subrutină pot fi ataşate unor obiecte grafice d) numai procedurile de tip funcţie pot fi ataşate unor obiecte grafice 26.22. O procedură de tip funcţie poate realiza: a) Efectuează o anumită operaţie b) Poate returna o valoare c) Efectuează o operaţie dar nu returnează nici o valoare d) Returnează o valoare e) Atât la definire cât şi la apelare parantezele sunt obligatorii 25.Capture 27. În definirea unei proceduri subrutină trebuie respectate condiţiile a) Începe cu instrucţiunea Sub b) Începe cu prima instrucţiune din corpul procedurii c) Continuă cu instrucţiunile din corpul procedurii d) Se poate termina cu instrucţiunea End Sub e) Se termină cu instrucţiunea End Sub f) În instrucţiunea Sub trebuie precizat numele procedurii g) Numele procedurii se va termina cu ( ) 23.Text c) sv1 = Text d) sv1 = txtCaseta1.

din a patra foaie de calcul a registrului de calcul Excel curent. în Visual Basic se face astfel: a) C1 b) Sheets(4). Î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 (restricţie impusă) d) toate casetele de validare din grup 30. Într-un grup de butoane de opţiune 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.3) 73 . Adăugarea de articole unei casete cu listă (ListBox) se poate realiza: a) prin tastare text în interiorul casetei b) utilizând metoda AddItem c) prin setarea proprietăţi Text a casetei d) prin setarea proprietăţii Value a casetei 32.Cells(C1) c) Sheets(4).Cells(1.28. Referirea celulei C1. 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.

a muzicii. care să permită dezvoltarea comerţului electronic . s. Ten New Directions Transforming Our Lives”). economia noului mileniu poate fi privită [8] ca o “scenă digitală” în care noile afaceri devin e-bussines (afaceri electronice). sunt prezentate domenii de utilizare ale agenţilor.milioane de internauţi care navighează pe Web -potenţiali cumpărători ai bunurilor şi serviciilor oferite sau promovate pe Internet . viziunea lui Alvin Toffler în „Şocul viitorului” fiind mult mai sumbră. imaginaţie şi capacitatea creativă a individului. a filmelor ş.Intermediarii (agenţii) . Tendinţe actuale şi viitoare privind tehnologiile de programare Rezumat. spaţiu şi timp oferite de reţeaua Internet.Vânzătorii . După 1990 are loc naşterea şi răspândirea celui de-Al Patru-lea Val al progresului determinat de revoluţia cunoaşterii cu accent pe cunoaşterea inconştientă deci cunoaşterea bazată pe intuiţie.1. Apare deci şi se dezvoltă. în viziunea anumitor specialisti (Turban. În noua scenă cu calculatoare interconectate în reţele Internet. o nouă piaţă şi anume piaţa digitală sau piaţa electronică în care trebuie acordată o importanţă tot mai mare noii resurse strategice care este informaţia.. în care managementul este privit ca instituţie centrală cu difuzarea sa fără frontiere într-o societate informaţională globală şi în care cunoaşterea este exploatată ca resursă economică sub deviza “creăm împreună”. Intranet şi Extranet suntem “inundaţi de informaţie.sute de mii de magazine digitale care îşi prezintă milioane de produse pe Net .. exemplede agenţi şi limbaje de comunicare între agenţi. rolul lor diferind de cel al intermediarilor obişnuiţi prin aceea că sunt implicaţi în crearea şi susţinerea pieţei „on-line”. Este perioada ce va fi caracterizată de realizarea şi utilizarea de maşini care “gândesc” destinate pe domenii (ex. 6. a cărţilor. Economia). ziarelor şi revistelor.un nou tip de actori care îşi oferă serviciile pe Web. ci de informaţii.Capitolul 6.a.a. Este definit conceptul de agent software.se prezintă unele aspecte privind tehnologia de programare orientată agent şi realizarea sistemelor multiagent. apar noi servicii electronice (e-services) şi se nasc noi comunităţi de tip virtual (e-communities). ei ajutând consumatorii şi/sau vânzătorii în derularea tranzacţiilor electronice 74 .digitalizarea software-ului. dar flămânzi după cunoştinţe” [8] (John Naisbitt „Megatrends.Companiile creatoare ale infrastructurii digitale . Inteligenţa artificială distribuită Datorită facilităţilor de comunicare dincolo de graniţe. el avertizând asupra iminenţei unui nou „potop”.Produsele şi serviciile digitale . în cadrul economiei digitale. Principalii actori (componente) ai economiei digitale. 1999) [8] sunt: . digitalizarea a nenumărate alte produse şi servicii . de această dată nu de apă.Cumpărătorii/consumatorii . cunoştinţa. comerţul devine e-commerce (comerţ electronic).mii de firme implicate în asigurarea hardwareului şi software-ului necesar realizării infrastructurii specifice economiei digitale.

biologie şi mai recent. Exemple: agent de vânzări.Creatorii de conţinut . 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 pieţei digitale / spaţiului electronic (marketspace) în care au loc tranzacţiile. S.Serviciile de suport . pornind de la cele care asigură securitatea până la cele care furnizează cunoştinţe .2. necesitatea integrării aplicaţiilor de inteligenţă artificială deja existente. termenul de agent este folosit de obicei pentru a desemna o componentă software sau/şi hardware care este capabilă să acţioneze în interesul utilizatorului. agent agricol. - 6. Distribuirea inteligenţei artificiale este justificată [9] din următoarele motive: în mod natural activităţile şi cunoştinţele sunt distribuite spaţial extinderea cooperării om-maşină prin rezolvarea distribuită a problemelor descompunerea sistemelor complexe şi a bazelor de cunoştinţe aferente în subsisteme cooperative asigurând astfel modularitate şi flexibilitate sistemului precum şi timp de răspuns optim. Definirea conceptului de agent Conceptul de agent poate avea diverse semnificaţii în funcţie de domeniul în care este utilizat.. Se impune astfel distribuirea inteligenţei artificiale în vederea realizării sistemelor de agenţi inteligenţi sau sistemelor multiagent care pot lua decizii într-o societate populată de agenţi inteligenţi artificiali sau umani care au propriile lor scopuri. 1996).” (Janca. După unii cercetători de la IBM „Un agent este un software care ştie cum să facă lucrurile pe care le-ai face tu însuţi dacă ai avea timp. H. etc. agent de asigurări. P. ştiinţele sociale. agent inteligent. un agent este un program care se comportã analog cu un agent uman.1995) 75 ..sute de astfel de servicii sunt disponibile. Din punct de vedere software. fiind capabil sã comunice în mod inteligent cu alţi agenţi software sau persoane. pentru îndeplinirea cu precizie a unor sarcini (Nwana. Din prezentarea de mai sus se constată apariţia unui nou tip de actor pe scena digitală şi anume intermediarul sau agentul. în ştiinţa calculatoarelor.sute de companii de tip multimedia orientate pe crearea şi actualizarea continuă a propriilor pagini Web. atât între ele cît şi cu componente de prelucrare clasică şi sisteme de gestiune a bazelor de date distribuite în modelarea comportamentului uman în cadrul aplicaţiilor de inteligenţă artificială trebuie avut în vedere faptul că comportamentul uman este un comportament social. care constituie o modalitate de abordare în construcţia sistemelor multi-agent. Astfel. Astfel existã agenţi în diverse domenii ca de exemplu: economie. apare şi se dezvoltă o nouă tehnologie în realizarea programelor şi anume programarea orientată agent AOP (Agent-Oriented Programming). În ştiinţa calculatoarelor.

însă cei mai mulţi cercetãtori recunosc cã cele amintite ar fi caracteristicile definitorii ale unui program agent faţã de un program obişnuit. Agentul acceptã cereri de la utilizatori dar este cel care decide cum şi unde va satisface aceste cereri. ci din proprie iniţiativă Continuitate în timp . În domeniul inteligenţei artificiale.spre deosebire de programe. dorinţe. o colecţie de alţi agenţi sau reţeaua Internet) şi rãspunde în timp util la schimbãrile sesizate în acest mediu. care se termină când procesarea este încheiată. agentul ştie exact ce sarcină trebuie să execute la apariţia unui anumit eveniment) Iniţiativă .abilitatea de a interacţiona cu alţi agenţi sau persoane prin intermediul unui limbaj de comunicare specific agenţilor Reacţie .Mobilitate . opţiuni). în interesul utilizatorului. este dificil de dat o definiţie formală unanim acceptată a agentului şi de aceea în cele ce urmează se vor prezenta câteva puncte de vedere privind caracteristicile pe care le poate îneplini un agent. raţionalitate.Bunăvoinţă . de a-şi creşte performanţele în timp 76 .capacitatea de a învăţa. Un agent poate fi definit prin următoarele cracteristici de bazã [9]: Autonomie: opereazã fãrã intervenţie umanã.se presupune că agentul nu are scopuri conflictuale şi că orice agent întotdeauna încearcă să facă ceea ce i se cere .capacitatea de a migra de la sine de la o aplicaţie la alta . Comunicare şi abilitate socialã: un agent trebuie sã fie capabil sã se angajeze în comunicãri şi dialoguri complexe cu alţi agenţi sau persoane pentru a obţine informaţii sau ajutor în satisfacerea scopurilor. putând sã propunã modificãri sau sã cearã clarificãri suplimentare. un utilizator prin intermediul unei interfeţe.agentul acţioneaza astfel încât să-şi îndeplinească scopul. Caracteristici suplimentare: .agentul operează sau realizează sarcini fără intervenţia directă a omului sau a altceva Comunicare . obligaţii. Principalele caracteristici pe care le au majoritatea agenţilor software care se comercializează la ora actuală (numiţi şi agenti simpli sau slabi) [8] sunt: Autonomie . monitorizând continuu evenimentele care îi vor declanşa acţiunea) Orientare spre un anumit scop .abilitatea de a nu reacţiona doar ca răspuns la mediu. agentul continuă să ruleze (fie şi numai în backgroud.capacitatea de a reacţiona în mod selectiv la schimbările din mediu (monitorizând în permanenţă evenimentele.Inteligenţă . are iniţiative şi exercitã control asupra propriilor lui acţiuni. sunt cazuri în care un agent poate chiar să modifice ţelurile sau să le stabilească de unul singur. conceptul de agent presupune şi alte caracteristici cum ar fi: noţiuni mentale (pãreri. Colaboreazã cu utilizatorul sau cu alţi agenţi pentru satisfacerea cererilor acestora. Reactivitate: percepe mediul în care evolueazã (care poate fi lumea fizicã.Având în vedere multitudinea de roluri pe care le poate avea un agent. adaptibilitate şi învãţare cu menţiunea că nu existã agenţi inteligenţi care sã îndeplinească toate aceste caracteristici.

Clasificarea agenţilor Având în vedere multitudinea de agenţi software şi rolurile pe care le pot avea aceştia. intern al mediului lor şi drept urmare. - 6. şi în vederea coordonării cu alţi agenţi se angajează în procese de planificare şi negociere) agenţi reactivi (nu posedă un model simbolic. care nu mint niciodată) şi agenţi mincinoşi (care mint intenţionat). În cadrul cercetărilor efectuate la BT Labs. intenţie. argumentând că. o clasificare a agenţilor este dificil de realizat. metodele de lucru şi preferinţele utilizatorului . agenţi de negociere. În cele ce urmează este prezentată clasificarea agenţilor realizată de Hyacinth S. Nwana [8] având în vedere diverse criterii astfel: .după modul de comportament: agenţi deliberativi (au încorporat un model de raţionament simbolic.posibilitatea de a se angaja în sarcini diferite .după gradul de mobilitate (capacitatea de a se deplasa în cadrul anumitor reţele): agenţi statici şi agenţi mobili . etc. cooperare şi învăţare. pentru a răspunde la starea actuală a mediului în care se află ei acţionează adoptând tipul de comportament stimul/răspuns) . Nwana a identificat trei caracteristici generale ca fiind atribute primare ale unui agent: autonomie.capacitatea agentului de a manifesta atribute specific umane cum ar fi: cunoştinţă. Clasificarea după criterii poate fi extinsă dacă se are în vedere prezenţa sau absenţa caracteristicilor generale sau secundare ale agenţilor. crez. Spre deosebire de agenţii care îndeplinesc doar caracteristicile generale şi care sunt denumiţi agenţi “slabi”.după arhitectură: agenţi simpli (unitari) şi agenţi hibrizi (care încorporează două sau mai multe filozofii într-un singur agent) .3.Adaptabilitate . deşi agenţii sunt bucăţi de cod software.după numărul de sub-agenţi încorporaţi: agenţi omogeni (mono-agenţi) şi agenţi eterogeni (multi-agenţi) . obligaţie etc.Personalitate .abilitatea de a se ajusta/adapta singur la obiceiurile.Colaborare . agenţii care pe lângă caracteristicile generale posedă şi caracteristici suplimentare sunt denumiţi agenţi “complecşi” sau “puternici” sau agenţi “tari”. . oamenilor le place să aibă de-a face cu ei ca şi cum ar avea de-a face cu alţi oameni.posibilitatea de a lucra împreună cu alţi agenţi pentru îndeplinirea unui scop comun .după veracitate: agenţi sinceri (de încredere.. agenţi de interfaţă.Versatilitate . Există specialişti care atribuie agentului chiar faţă umană.după rolurile lor (în cazul în care se poate desprinde un rol preponderent): agenţi de informare. O clasificare mai restrânsă a agenţilor propusă de Nwana este următoarea: 77 .

HP. Referitor la definirea şi utilizarea agenţilor eterogeni în 1992 a apărut o nouă disciplină denumită Intelligent and Cooperative Information Systems (ICIS). 6. pânã la structuri de cunoştinţe complexe. Wagner. a inteligenţei artificiale ş. H. Agenţii cognitivi conţin o reprezentare simbolicã explicitã a lumii şi sunt capabili sã ia decizii pe baza unui raţionament simbolic. Oracle. Cercetări în domeniul tehnologiei agenţilor sunt efectuate atât în centrele de cercetare din cadrul unor universităţi. agenţi de interfaţă.. agenţi mobili. Domenii reprezentative în care este utilizată tehnologia actuală a agenţilor (Hermans. Modelul sau arhitectura agenţilor poate varia de la structuri foarte simple. Crearea unor astfel de tipuri de agenţi constituie un prim pas pentru realizarea de aplicaţii integrate. în care aceşti agenţi să fie folosiţi ca „materiale de construcţie” (building blocks) pentru crearea în următorii ani a unor sisteme complexe integrate de agenţi. cum ar fi: Massachusetts Institute of Technology (MIT). Microsoft. Nwana. agenţi de informaţii/Internet. în vederea realizãrii acestor scopuri.agenţi colaborativi.4. Exemple de agenţi obişnuiţi: . AT&T.agenţi pentru pregătirea unor întâlniri de afaceri prin consultarea agendelor  electronice ale participanţilor. 1996 ) [8]: 78 . Apple. Majoritatea cercetărilor sunt axate pe aplicaţii ale agenţilor obisnuiţi (basic agent applications) a căror rezultate sunt vizibile în timp relativ scurt spre deosebire de aplicaţii ale agentilor inteligenţi (intelligent agent systems) care necesită un timp mai mare de realizare şi ale căror rezultate nu sunt imediate. a tehnologiilor bazelor de date. D. Au scopuri fixate şi pot sã-şi modifice acţiunile în funcţie de schimbãrile din mediu şi interacţiunea cu alţi agenţi.N.a. cum este cazul agenţilor reactivi. 1997.agenţi pentru prelucrare e-mail  . de tip automate.S. Sharp. the University of London. prin folosirea agenţilor digitali. Aplicaţii actuale ale agenţilor. Lotus. Coordonarea în cadrul unui astfel de sistem se realizează prin intermediul unui singur agent care deleagă sub-sarcini (sub-tasks) către alţi agenţi. numiţi şi agenţi raţionali. B.. furnizori şi intermediari . structuri întâlnite în cazul agenţilor cognitivi. agenţi reactivi. capacitãţi de raţionament şi decizie. agenţi hibrizi şi agenţi inteligenţi.agenţi pentru filtrare şi/sau căutare în articole de ştiri  . cu un grad mai mare sau mai mic de elaborare şi care include întreaga metodologie asociatã acestor sisteme. inteligenţa sistemului este datã atât de suma comportamentelor inteligente individuale ale fiecãrui agent cât şi de inteligenţa rezultatã din comportamentul colectiv bazat pe interacţiune de tip social.. cât şi în cadrul unor firme sau companii multinaţionale ca de exemplu: IBM. capabile să execute sarcini de nivel înalt (high-level tasks) pentru utilizatori. 2000. Domenii de utilizare. DEC. Fiecare agent cognitiv este [9] un sistem bazat pe cunoştinţe. În cazul sistemelor de agenţi cognitivi. Alcatel. care are în vedere integrarea sistemelor informaţionale.cele trei straturi ale modelului.

Aceste intrebări precum şi răspunsurile sunt memorate în aşanumitele fişiere FAQ create de diverse organizaţii sau grupuri din Internet.Agenţi ghizi (exempluWebWatcher) – conduce utilizatorul prin Web. 11 septembrie 2001) comandă şi control managementul accesului mobil managementul informaţiilor depozitarea datelor (data mining) baze de date inteligente colaborare managementul proceselor de muncă cu caracter repetitiv (workflow management) . de transport etc.cercetare guvernamentală .ghidează utilizatorul pentru gãsirea rãspunsurilor la întrebãrile frecvente puse de utilizatori asupra unui anumit subiect.Internet Softbot (software robot)– Căutare informaţii structurate pe Internet în baza cererilor furnizate de utilizator prin dialog într-un limbaj expresiv în cadrul unei interfeţe - 79 .asistenţi digitali personali (PDA) . Dintre aceste domenii/arii de aplicare a tehnologiei agenţilor. managementul canalelor de aprovizionare şi de distribuţie etc. .divertisment (entertainment) . Exemple concrete de agenţi: . WebCrawler.interfeţe inteligente pentru utilizator ş. . comerţul electronic şi colaborarea.efectueazã o cãutare masivã şi autonomã de informaţie în Web. prin inspectarea unui număr mare de documente (până la un milion de documente) şi creeazã un index de cuvinte gãsite în titlurile şi textul documentelor inspectate.Agenţi FAQ (Frequently Asked Questions files).educaţie . . Utilizatorul poate apoi interoga agentul despre documente ce conţin anumite cuvinte cheie.biblioteci digitale .) . oferind în acelaşi timp o experienţã personalizatã fiecãrui utilizator (sfătuieşte interactiv utilizatorul Web-ului privind legătura următoare pe care trebuie să o urmeze şi învaţă din reacţia utilizatorului la sfatul primit).) controlul traficului aerian (ex. energetice.poştă şi mesagerie managementul reţelelor (de telecomunicaţii. iar agentul index poate oferi rãspunsuri rapide care pot fi relevante sau nu pentru utilizator. InfoSeek) . cele mai intens studiate în acest moment sunt: accesul (regăsirea) şi managementul informaţiilor.a.afaceri electronice (licitaţii.Agenţi index (exemple:Lycos. etc.Hoover – agent care furnizează o unică interfaţă utilizator pentru mai multe medii informaţionale (ştiri în timp real. .) . baze de date „on-line”.

una din cele mai promiţătoare propuneri este modelul în care activităţile desfăşurate pe Internet sunt împărţite pe trei straturi. prin apelul. Pentru rezolvarea acestei probleme. în secventã. agentul Softbot poate acţiona asupra mediului în care lucreazã. structura sa actuală în care pot fi identificate două straturi şi anume: utilizatorii (consumatorii) de informaţie şi producătorii (furnizorii) de informaţie. şi comunicã utilizatorului rezultatul printr-un semnal sonor. . agenţii au un rol important diferenţiat pe straturi după cum urmează: . El poate monitoriza o serie de evenimente. Plecând de la numele unei persoane. servere FTP. a diverselor programe adecvate. De asemenea. buletinele electronice de ştiri. dacă au anumite preferinţe în legătură cu informaţia de care au nevoie. 80 . etc. el poate determina adresa electronicã a acesteia. un strat pentru furnizorii (producatorii) de informaţie – defineşte oferta de informaţie 3. conversia documentelor dintr-un format în altul. accesul la baze date de diverse tipuri. Pentru a asigura accesul tuturor categoriilor de utilizatori. cât şi de tip nestructurat. nu este adecvată pentru activitatea de informare care presupune prelucrarea complexă a informaţiilor din multiple documente de pe Web independentă de utilizator. Un domeniu de mare interes în care agenţii se vor impune spectaculos este Internetul care permite astăzi accesul direct a milioane de oameni pe autostrada informaţională ([9] “Internet Society” estimeazã cã existã peste 30 de milioane de utilizatori care accesează zilnic reţeaua Internet). activitatea utilizatorului. operaţii mari consumatoare de timp şi care pot fi realizate de agenţi competenţi numiţi agenţi Internet. care să permită conectarea primelor două straturi prin cele mai bune căi sau modalităţi. compilarea fişierelor program. denumit stratul de mijloc sau stratul intermediarilor. un strat pentru utilizatorii de informaţie (clienţii informaţionali) – defineşte cererea de informaţie 2.convenabile astfel încât cea mai mare parte a structurilor din Internet devin transparente pentru utilizator. cum ar fi utilizarea discului. Deşi reţeaua Internet reprezintă un mare succes în unificarea resurselor informaţionale. Căutarea informaţiei despre un anumit subiect necesită identificarea şi investigarea unui număr mare de documente de pe Web. protejarea unor fişiere. un nou strat aflat între primele două. un mesaj pe ecran sau un mesaj e-mail. indiferent de calificare şi cunoştinţele de care dispun.Info Agent – căutare informaţii atât în documente de tip structurat. prin asigurarea compactãrii fişierelor dintr-un director. viitoarea generaţie de agenţi Internet va fi [9] o combinaţie de modele cognitive şi reactive. În cadrul acestui model. denumit [8] modelul celor 3 straturi şi anume: 1. care pot fi atât consumatori cât şi potenţiali furnizori de informaţie. la resursele informaţionale imense de pe Internet.Sarcinile agenţilor în cadrul primului strat sunt de a afla ce informaţii caută utilizatorii. având ca scop atât satisfacerea necesităţii de informare a utilizatorului cît şi transparenţa totalã a autostrăzii informaţionale.

O.probleme de etică: autoidentificarea agenţilor. astfel încât să răspundă şi să reacţioneze în acelaşi mod prin utilizarea unui set standardizat de coduri suficient de flexibil pentru a permite construirea unor agenţi pentru sarcini neaşteptate sau imprevizibile în prezent. moderarea accesului pe anumite servere. cooperare. limitarea accesului numai pe serverele alocate agentului. cei de la IBM prevăd o vastă utilizare a agenţilor software în e-commerce: “Creăm o nouă categorie economică (a new economic species). .. numite şi sisteme multi-agent cognitive . 2001). cercetători în domeniu cred [8] că agenţii autonomi vor deveni în urmatorii 10 ani parte integrantă a celor mai multe sisteme de afaceri: astfel. Definiţie. afirmă Jeff Kephart. 6.. 1994. Dintre aceste probleme sunt menţionate [8] (Nwana.În cadrul celui de-al doilea strat sarcinile agenţilor sunt de a face un inventar al serviciilor şi informaţiilor oferite de către furnizori. Weld. Definiţiile. dar semnificativ diferită de oameni”. Referitor la domeniile de utilizare a tehnologiei agenţilor în viitor. Funcţie de tipurile de agenţi utilizaţi se pot identifica douã categorii de sisteme multi-agent inteligente şi anume: .vigilenţa (să nu permită acţiunile clienţilor cu urmări ce nu pot fi anticipate) . managerul grupului care se ocupă de fenomenul agenţilor.S. de a ţine evidenţa noilor informaţii adăugate în reţea. Agenţii utilizaţi într-un astfel de model vor trebui concepuţi în baza unor standarde general acceptate. Un sistem multi-agent (SMA) este un sistem distribuit format dintr-o colecţie de agenţi autonomi care interacţionează într-un mediu comun. Sisteme multi-agent.5. Norman.asigurarea intimităţii persoanelor pentru care lucrează agentul . 1996. numite şi sisteme multi-agent reactive Sistemele multi-agent cognitive urmăresc sã simuleze aspecte ale comportamentului uman prin tratarea noţiunilor de scop. parţial asemănătoare nouă ca imagine.limitarea consumului de resurse rare .siguranţa (să nu influenţeze lumea în mod distructiv) .responsabilitatea faţă de acţiunile agentului .SMA cu agenţi cognitivi. Etzioni. Utilizarea tehnologiei agenţilor conduce la apariţia unor probleme care vor trebui soluţionate prin măsuri legislative. sarcina lor fiind de mediere între agenţii celorlalte două straturi..Agenţii din stratul de mijloc au rolul de intermediari informaţionali între utilizatorii informaţionali (umani sau electronici) şi furnizorii de informaţii. H. organizare în structuri sociale 81 . respectarea autorităţii administratorilor de servere.. etc. clasificare. 1994) următoarele: . D. arhitecturi. competiţie. etc. clasificarea şi arhitectura unui sistem multi-agent sunt prezentate în cele ce urmează conform [10]. (Scott. fiecare agent având cunoştinţe.SMA cu agenţi reactivi. “Agenţii software vor deveni actori în economie”.K. D. capacitãţi de acţiune şi scopuri proprii.

capacitate de învãţare şi autoperfecţionare. consideră că inteligenţa este situatã în lumea exterioarã şi nu la nivelul componentelor de prelucrare individuale. Adepţii sistemelor multi-agent reactive. comunicarea între agenţi este o problemă cheie însemnând mai mult decât un simplu schimb de mesaje. Având însă în vedere faptul că în cadrul unui sistem multi-agent agenţii interacţionează într-un mediu comun. Un astfel de sistem este inspirat din organizarea şi activitatea comunitãţilor biologice de insecte. ridică o serie de probleme critice în special referitor la complexitatea de calcul şi dificultatea algoritmilor necesari prelucrãrilor simbolice. un agent reprezintã simbolic lumea atât prin convingeri. respectiv agenţii. capabile sã reacţioneze la schimbãrile de mediu şi sã execute acţiuni simple corespunzător acestor schimbări. eventual incomplete sau eronate. Un sistem multi-agent reactiv este un sistem în care agenţii sunt unitãţi simple de prelucrare. în cadrul unui sistem multi-agent.şi stabilirea relaţiilor de dependenţã în aceste structuri. 82 . cât şi prin cunoştinţe care reprezintã fapte adevãrate despre acea lume. O altă direcţie de cercetare o constituie abordarea mixtă cognitiv-reactivă având în vedere avantajele şi dezavantajele fiecăreia dintre cele două categorii de sisteme multiagent. Limbaje de comunicare între agenţi Forma cea mai simplă de comunicare între agenţi în cadrul unei arhitecturi reactive. 6. Abordarea cognitivă a agenţilor. Însă.6. De asemenea. sisteme care ar putea fi realizate într-o abordare subsimbolică utilizând reţele neuronale sau algoritmi genetici. Un sistem multi-agent cognitiv reprezintă un sistem particular bazat pe cunoştinţe ce conţine o reprezentare simbolicã a cunoştinţelor despre lumea în care evolueazã fiind capabil sã ia decizii prin intermediul unui proces inferenţial de raţionament. prezintã elemente de inteligenţã. criticând abordarea cognitivă. care sunt pãreri despre lume. Astfel o albinã nu poate fi consideratã inteligentã însă comportamentul stupului în ansamblu şi modul de organizare a albinelor. un agent trebuie sã fie capabil sã raţioneze atât despre propriile lui convingeri şi cunoştinţe cât şi despre cele ale celorlalţi agenţi cu care interacţioneazã întrun anumit mediu. spre deosebire de un sistem bazat pe cunoştinţe clasic. În acest sens. au fost propuse sisteme cu arhitecturi care modeleazã structura şi comportamentul colectivitãţilor de insecte. comportarea inteligentã fiind un rezultat al interacţiunii dintre agenţi şi mediu iar inteligenţa este o proprietate a sistemului ca întreg. este comunicarea bazatã pe schimbul de informaţii prin intermediul unei structuri de tip tablã ("blackboard") sau de resursã partajatã care este împãrţitã în diferite nivele de abstractizare corespunzãtoare diverselor nivele de rezolvare a problemelor (nivele de comportament) iar agenţii vor scrie sau citi informaţiile de pe nivelele corespunzãtoare acţiunilor lor. executând acţiuni comune şi coordonate în vederea realizãrii scopului.

capacitatea limitată a unui singur agent de a rezolva probleme complexe.Simple Knowledge Interchange Format) tind să devină la ora actuală un standard al comunicării în Sistemele Multi Agent cognitive. .emiţãtorul cere receptorului sã includã A în mulţimea lui de convingeri.necesitatea modelării sistemelor de natură distribuită. În concluzie se poate afirma că sistemele multi-agent au apărut din următoarele considerente: . Activitatea de coordonare poate fi realizată spre exemplu de un agent “manager”.distribuirea controlului inteligent se impune natural deoarece cunoştinţele şi activitãţile sunt inerent distribuite spaţial. 83 .emiţãtorul întreabã receptorul dacã A este o convingere a receptorului. KQML foloseşte limbajul KIF (Knowledge Interchange Format) pentru a descrie conţinutul informaţional al mesajului şi este o reprezentare ASCII a logicii cu predicate de ordinul întâi. KQML. un agent trebuie să fie capabil să deducă intenţia emiţătorului referitor la mesajul trimis ceea ce presupune utilizarea unei forme complexe de comunicare bazată pe teoria actelor comunicării (”theory of speech acts”) dezvoltată în cadrul unor cercetări din domeniul limbajului natural.(deny A) . TELESCRIPT) pentru sisteme multiagent reactive. Limbajul KQML şi KIF (cu succesorul lui SIF .simularea comportamentului inteligent prin interacţiunea dintre componente (agenţi) fiecare având informaţii incomplete despre problemă şi mediu. . . bazate pe teoria actelor comunicãrii. PLACA.efectul asupra destinatarului comunicării. cu ultima versiune standardizată apărută la începutul anului 1997. KIF. într-un act de comunicare se disting următoarele 3 aspecte: . .limbaje agent slabe (ACTOR. .limbaje agent tari (AGENT0. . cel mai cunoscut este KQML (Knowledge Querry and Manipulation Language) propus de ARPA (Advanced Research Projects Agency) în 1992. . într-o sintaxă apropriată de cea a limbajului LISP. Astfel.emiţãtorul comunicã receptorului cã nu crede A.Pe lângă primirea şi transmiterea de mesaje. COOL) pentru sisteme multi-agent cognitive. Dintre aceste limbaje şi protocoale de comunicare între agenţi. TCL/TK. Exemple de primitive KQML: . Aceste modele ale dialogului uman au stat la baza structurării mesajelor schimbate între agenţi şi definirii protocoalelor de comunicare prin care se stabilesc acţiunile posibile ale agentului în fiecare moment al comunicãrii cu alţi agenţi. .(ask A) .(achieve A) .exprimarea unei propoziţii (mesaj). Pentru programarea sistemelor multi-agent s-au elaborat o serie de limbaje corespunzător celor două categorii de sisteme multi-agent după cum urmează: . Limbajul COOL (COOrdination Language) a fost creat pentru coordonarea acţiunilor agenţilor cu ajutorul a noi performative adăugate la cele ale limbajului KQML.(tell A) -emiţãtorul comunicã receptorului convingerea sa A. Concurent METATERM.efectul intenţionat (aşteptat) de cel ce comunică mesajul. .

scenă digitală în care se dezvoltă: e-service. e-comunities . Odată cu apariţia conceptului de agent software se prefigurează [9] o nouă direcţie de programare şi anume programarea orientatã agent. deci entitãţi dotate cu capacitãţi de percepţie.apare şi se dezvoltă piaţa digitală . c) 3. Enumeraţi principalele caracteristici ale economiei digitale: . Probleme rezolvate 1. intenţii. Un agent software este: a) un limbaj de programare b) un program care se comportã analog cu un agent uman. Caracteristicile de bază ale unui agent sunt: a) autonomie b) mobilitate c) reactivitate d) comunicare e) personalitate răspuns corect a). reprezintă o specializare a programării orientate pe obiecte şi în care colecţiei de obiecte definite de stări şi care comunică între ele prin transmitere de mesaje îi corespunde o mulţime de agenţi caracterizaţi de stări mentale compuse din noţiuni mentale (convingeri. etc. e-bussines. e-comerce. c) un software care ştie cum să facă lucrurile pe care le-ai face tu însuţi dacă ai avea timp răspuns corect b). d) 4.distribuirea inteligenţei artificiale şi realizarea de sisteme multi-agent 2. b). angajamente.descentralizarea resurselor. agenţii se clasifică în: a) agenţi deliberativi b) agenţi statici c) agenţi inteligenţi 84 . decizii.. iar programele vor fi scrise prin manipularea adecvatã a unei mulţimi de agenţi predefiniţi sau definiţi de utilizator. raţionament şi decizie.apariţia unui nou actor: intermediarul sau agentul . Pentru realizarea sistemelor multi-agent apare şi se dezvoltă o nouă tehnologie în realizarea programelor şi anume programarea orientată agent AOP (Agent-Oriented Programming). comunicare. După capacitatea de a se deplasa în cadrul anumitor reţele.). în care obiectele vor fi înlocuite de agenţi. obligaţii.. fiind capabil sã comunice în mod inteligent cu alţi agenţi software sau persoane. Programarea orientată pe agenţi introdusã de Yoav Shoham odatã cu definirea limbajului AGENT0.

comunicare. deci entitãţi dotate cu capacitãţi de percepţie. raţionament şi decizie.d) agenţi mobili răspuns corect d) Probleme propuse 1. 85 . iar programele vor fi scrise prin manipularea adecvatã a unei mulţimi de agenţi predefiniţi sau definiţi de utilizator. Un sistem multi-agent reactiv este: a) un sistem în care agenţii sunt unitãţi simple de prelucrare (agenţi simpli) b) un sistem bazat pe cunoştinţe c) un sistem inspirat din organizarea şi activitatea colectivităţilor de insecte Programarea orientată agent este: a) o metodă de programare în domeniul inteligenţei artificiale b) o nouă tehnologie în realizarea programelor c) o specializare a programării orientate pe obiecte în care obiectele vor fi înlocuite de agenţi. 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 agenţi bazat pe teoria actelor comunicării 2. 3.

mulţimile A1.xp) este o succesiune de arce la fel orientate cu primul arc. xp0 V}) o submulţime a produsului cartezian VxV numită mulţimea arcelor sau a muchiilor. iar soluţia pentru problema iniţială se obţine prin combinarea soluţiilor problemelor rezultate prin descompunere. x20 A2. … . inversiunea. … . Schema logică este o modalitate de reprezentare grafică a unui algoritm. 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 soluţii a problemei.xn} este o mulţime finită şi nevidă numită mulţimea nodurilor sau a vârfurilor şi Eφ VxV ( E = {(xk. mutaţia. soluţie care satisface un anumit criteriu de optim. Drum de la vârful xk la vârful xp.E). Algoritmi genetici sunt metode de căutare şi optimizare moderne. bazate pe principiile selecţiei naturale şi geneticii şi care acţionează asupra unei codificări a funcţiei obiectiv. efectuând operaţii de reproducere asupra unei populaţii de cromozomi. şi se notează d(xk. Programarea evolutivă constă în estimarea modificărilor de mediu în vederea transformării predicţiilor într-un răspuns corespunzător acestor schimbări. unde x10 A1.x2. Divide et impera este o tehnică care constă în descompunerea unei probleme în două sau mai multe probleme mai simplu de rezolvat. încrucişarea. Stiva este o formă de organizare a datelor pentru care operaţiile de introducere şi scoatere a datelor se fac în vârful ei.xn).xn0 An. A2. unde V = {x1. Backtracking este o metodă folosită la rezolvarea problemelor pentru care soluţia problemei poate fi pusă sub forma unui vector S(x1. în funcţie de scopul propus. excepţie făcând extremitatea iniţială a primului arc şi extremitatea terminală a ultimului arc. 86 . x2. An sunt finite şi elementele lor se află într-o relaţie de ordine bine stabilită şi pentru aceste probleme nu există o altă metodă de rezolvare mai rapidă. cu proprietatea că extremitatea terminală a fiecărui arc coincide cu extremitatea iniţială a arcului următor. Strategiile de evoluţie şi Programarea evolutivă – cunoscute şi sub denumirea de algoritmi evolutivi. … . procedură) se autoapelează. Recursivitatea este mecanismul prin care un subprogram (funcţie.…. pun accentul pe legătura comportamentală dintre părinţi şi urmaşi sau dintre diferite populaţii.GLOSAR Algoritm este o succesiune finită de paşi care trebuie parcurşi pentru rezolvarea unei probleme. Graf este o pereche ordonată G = (V. iar pe de altă parte într-o formă care să permită transcrierea lui ulterioară într-un limbaj de programare. Pseudocodul este o metodă de reprezentare a unui algoritm într-un limbaj pe de o parte mai apropiat de limbajul natural.xp) / xk0 V. utilizând operatori genetici: selecţia.

Evenimentele se produc ca urmare a unei acţiuni a utilizatorului (ex. O metodă este o procedură (succesiune de instrucţiuni) asociată unei anumite acţiuni a unui obiect O variabilă este o zonă temporară de memorie căreia i se dă un nume. sau în urma execuţiei codului programului. Lanţ hamiltonian este un lanţ care întâlneşte toate vârfurile grafului o singură dată. acest nou program numindu-se program destinaţie. comportament. adică este închis. 87 . Programarea visuală şi orientată obiect permite generarea unui program şi a unor interfeţe utilizator prietenoase prin combinarea (manipularea) unor obiecte predefinite sau definite de utilizator şi ataşare de cod corespunzător. fiecare pas fiind exprimat în comenzi elementare (instrucţiuni) ce vor fi executate de calculator. Domeniul unei variabile este zona programului în care variabila este vizibilă. O buclă este un circuit de lungime 1. Limbaj de asamblare se înlocuiesc codurile numerice ale instrucţiunilor şi operanzilor cu coduri mnemonice. şi care poate memora (stoca) un anumit tip de dată care poate fi modificată pe parcursul execuţiei programului. Limbaj de programare permite descrierea unui proces de calcul alcătuit din mai mulţi paşi pentru rezolvarea unei probleme. Un obiect este definit de un set de proprietăţi cum ar fi: dimensiune. Limbaj-maşină este limbajul propriu unui tip de calculator. Drum hamiltonian este un drum elementar care întâlneşte toate vârfurile grafului o singură dată. Limbaje de nivel înalt limbaje mai apropiate de limbajul natural în care un program diferă foarte puţin de la un calculator la altul. nu interesează orientarea arcelor). Translatorul este un program ce traduce un program sursă scris într-un anumit limbaj de programare întru-un program echivalent dintr-un alt limbaj. Limbajul Visual Basic reprezintă un mediu de dezvoltare care permite crearea de programe orientate spre obiecte şi conduse de evenimente. fiind însă necesară prezenţa unui program numit compilator care sa traducă programul în instrucţiuni cod maşină.Drum elementar este un drum care are toate vârfurile distincte sau care nu trece de două ori prin acelaşi vârf. evenimentul click corespunde apăsării butonului stâng al mouse-ului pe obiectul respectiv). poziţie pe ecran. sau pot fi declanşate de către sistem. Lanţ de la vârful xp la vârful xk este o succesiune de muchii puse cap la cap (între două vârfuri există o muchie dacă între ele există cel puţin un arc. Circuit este un drum cu proprietatea că extremitatea iniţială a primului arc coincide cu extremitatea terminală a ultimului arc. culoare. Ciclu este un lanţ finit care pleacă de la un vârf şi se întoarce la vârful cu care începe.

Sistem multi-agent (SMA) este un sistem distribuit format dintr-o colecţie de agenţi autonomi care interacţionează într-un mediu comun. Agenţi reactivi nu posedă un model simbolic. 88 . Agenţi cognitivi au încorporat un model de raţionament simbolic.. pentru a răspunde la starea actuală a mediului în care se află ei acţionează adoptând tipul de comportament stimul/răspuns. P. Un agent este un software care ştie cum să facă lucrurile pe care le-ai face tu însuţi dacă ai avea timp. fiind capabil sã comunice în mod inteligent cu alţi agenţi software sau persoane. fiecare agent având cunoştinţe.1995). capacitãţi de acţiune şi scopuri proprii.” (Janca.Agent software este un agent este un program care se comportã analog cu un agent uman. intern al mediului lor şi drept urmare. şi în vederea coordonării cu alţi agenţi se angajează în procese de planificare şi negociere.

Ed. 9. Kaufman. L.Bibliografie 1. Springer Verlag.byte.univ. Knuth. actori şi roluri.drd. Students’ Guide to Programming Languages. Ed. Adrian Atanasiu. Bazele Visual Basic 4. Academiei. 8. Metode şi modele ale cercetării operaţionale. 1.ubbcluj. Dicţionar modern de informatică.. Limbaje de programare şi compilatoare. 1996 www. 1993. Camelia Margea.ro/~dict/sisteme_multiagenti/ sisteme_multiagenti. Bucure. vol. www. Newnes. 1992. Ed. Mark Steven Heyman. 2. 6. 10. Scenarii. 1987. 2002. 1967. Prof. II. 1983. Ed.html A. Trad..cs. Horowitz E. 11. “Sisteme multiagenţi”.uaic. Teora. 12.dr. Bucureşti. 3. Tehnici de programare. Ştiinţifică. Teora.ti. 3.pdf [FLAM98].ro/…/24_26_oct_2002/ziua2/sectiunea_III/ROLUL%20 AGENTULUI%20%CENTR-O%20LUME%20DIGITALA. Vol. Călin Suciu. Bucureşti.. Ed L&S INFOMAT. Arta programării calculatoarelor. Rolul agentului într-o lume digitală. Bucureşti. Bull M. traducere de Mihaela Târpa. Donald E. Universitatea “Politehnica Bucureşti” www.cs. H.feea. 5.univ. Tudor Sorin. Fundamentals of Programming Languages. Adina Magda www. Editura Agni.ro/disc/rmi034. Cum se scrie un algoritm SIMPLU. Şerbănaţi D.pub.html [SIMA98]. 4. Agenţi inteligenţi Internet. 1996.ro/byte95-04adi.Doina Danaiata. 89 . Competiţia pe scena economiei digitale. 2. 7. asist.htm – 11k [DANA02]. B.

Sign up to vote on this title
UsefulNot useful