Curs Informatica Aplicata Semestrul 2

Embed Size (px)

Citation preview

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    1/215

    Informatic aplicat Eduard Edelhauser

    1

    Capitolul 4

    Inginerie software. Algoritmi i scheme logice.

    4.1. Inginerie software. Aspecte generale ale proiectrii programelor iproceselor.

    Definiie : Prin inginerie software nelegem dezvoltarea unei aplicaii sau produssoftware. Realizarea unei aplicaii comport cteva etape.

    n ciclul de via al unui produs software ntlnim 3 etape: Dezvoltarea Utilizarea Modificarea

    Dezvoltarea unui produs software conine la rndul su 4 etape: Analiza Proiectarea Implementarea Testarea

    Modificarea unui produs software are la rndul ei 3 etape Eliminarea erorilor ( nedepistate n etapa de testare ) Adaptarea la noi sisteme de operare sau versiuni ale acestora Reacie la progresele concurenilor

    Proiectantul de soft sau analistul are ca principal misiune definirea i structurareacomponentelor care vor forma un tot unitar, astfel nct prin acestea s se obin un proiectsoft operaional. Proiectantul de soft va grupa funciile ce trebuie interconectate i va

    descrie modalitile de realizare a legturilor. Dup proiectanii de soft vor interveniprogramatorii pentru transpunerea n realitate a proiectului. Ei vor controla intrrile,prelucrrile, stocrile i ieirile din sistem prinintermediul programelor.

    Softul are dou componente de baz: instruciunile i modulele. Instruciunile suntoperaiuni elementare executate de calculator prin gruparea i selecia controlat a acestorapentru atingerea obiectivelor funciilor de prelucrare orientate pe probleme. Instruciunileconstituie cel mai de jos nivel al operaiunilor ce pot fi executate de ctre un limbaj deprogramare. Blocurile de instruciuni sunt astfel grupate nct sconstituie anumite structuriexecutabile de calculator. De modul n care sunt grupate instruciunile pentru a da natereunor structuri standard ale programelor, de relaiile dintre instruciuni, de aranjamentulacestora depinde calitatea softului proiectat.

    Observaie: Instruciunile unui limbaj de nivel nalt (Pascal, Basic) se pot

    descompune in instruciuni limbaj de asamblare si respectiv cod main.Modulul este o colecie sau o form grupat de instruciuni de programe surs.Modulele se pot grupa pentru a forma programele. In concepia diverilor autori,programulare semnificaii diferite. Modulele au trei atribuite de baza:

    - funcia presupune transformarea datelor prin procesul de execuie almodulului

    - logica descrie prelucrrile ce au loc n modul- interfaa descrie transferul controlului i aldatelor ntre moduleDac am detalia etapele realizrii unui programam obine de fapt 7 etape. Realizarea

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    2/215

    Informatic aplicat Eduard Edelhauser

    2

    unui program pentru o anumit problematicpresupune implicarea mai multor etape. Aceste

    etape sunt independente de limbajul de programare utilizat i implic existen ctorvarestricii cu privire la computerul utilizat. Etapele realizrii unui astfel program sunturmtoarele:

    1. Studierea detaliat a cerinelor aplicaiei. Este foarte important ca cerinele impusede aplicaie s fie foarte bine explicitate. Adic nainte de a trece la realizarea unui programpentru o anumit aplicaie trebuie ca cea aplicaie sa fie foarte bine analizat i cerinele pecare aceasta le impune trebuie s fie complete i consistente. De exemplu o cerina de genulscrie un program care sa rezolve ecuaiile este evident c este incomplet i se impunntrebri de genul ce tip de ecuaii, cte ecuaii, care este precizia, etc.2. Analiza problemei i determinarea rezolvrii acesteia. Adic n aceast etap sedecide asupra unei metode care poate s rezolve problema. O astfel de metod este des

    denumit ALGORITM.3. Traducerea algoritmului realizat la etapa anterioar ntr-un limbaj deprogramareevoluat corespunztor. Forma scris a acestui program este denumit programsurs (source program sau source code). n aceast etap programul trebuie citit i verificatpentru a i se stabili corectitudinea. Aceasta se face prin introducerea unui set de valori iverificarea dac programul furnizeaz valorile corespunztoare corecte. O dat verificat

    programul este introdus n computer prin intermediul unui Editor.4. Compilarea programului n limbaj main. Astfel programul obinut n limbajmain se numete object code. n aceast etap compilerul poate determina erori de sintaxale programului. O eroare de sintax este o greeal n gramatica limbajului. de exempluC++ necesit ca fiecare linie s se termine cu ;. Dac se uit plasarea ; atunci compilerul vasemnala eroarea de sintax. Astfel se repet compilarea pn la eliminarea tuturor erorilorde sintax.

    5. Programul obinut n urma compilrii, object code, este apoi corelat (linked)cu oserie de biblioteci de funcii (function libraries) care sunt furnizate de sistem. Toate acestease petrec cu ajutorul unui program numit linker iar apoi programul linked object code estencrcat n memoria computerului de ctre un program numit loader.6. Rulareaprogramului compilat, linked i ncrcat cu un set de date pentru testare.Astfel se vor pune n eviden erorile de logic ale programului. Erorile de logic sunt eroricare sunt produse de metoda de rezolvare a problemei. Astfel dei programul este scriscorect din punct de vedere al sintaxei acesta poate executa ceva ce este incorect n contextulaplicaiei. Poate fi ceva simplu, de exemplu realizarea unei operaii de scdere n loc deadunare. O form particular a erorilor de logic este apariia erorilor de rulare (run-timeerror). O eroare de rulare va produce o oprire a programului n timpul execuiei pentru cnu anumite instruciuni nu pot fi realizate. De exemplu o mprire la zero sau ncercarea de

    accesare a datelor dintr-un fiier inexistent. Astfel se impune ca n aceast etap programuls fie reverificat i apoi erorile s fie recorectate prin intermediul Editorului ceeace impuneca etapele 3,4, i 5 s fie repetate pn la obinerea rezultatelor satisfctoare.7. Programul poate fi pus n execuie pentru rezolvarea problemei pentru care a fostconceput. Este posibil ca pe parcursul execuiei sale s se mai depisteze anumite erori delogic. Astfel se impune reformularea algoritmului i reluarea etapelor de realizarea a

    programului.

    4.2. Algoritmi

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    3/215

    Informatic aplicat Eduard Edelhauser

    3

    Definiie.O definiie matematic, riguroas, este greu de dat, chiar imposibil fr a introduce

    i alte noiuni. Vom ncerca n continuare o descriere a ceea ce se nelege prin algoritm.Un sistem de calcule, care, pentru o anumit clas de probleme, din condiiile iniiale

    ale problemei permite s se obin soluia problemei respective, cu ajutorul unui ir finit iordonat de operaii univoc deteterminate, efectuate mecanic fr aportul creator al omului.

    Apariia primelor calculatoare electronice a constituit un salt uria n direciaautomatizrii activitii umane. Nu exist astzi domeniu de activitate n care calculatorul snu i arate utilitatea.

    Calculatoarele pot fi folosite pentru a rezolva probleme, numai dac pentrurezolvarea acestora se concep programe corespunztoare de rezolvare. Termenul deprogram (programare) a suferit schimbri n scurta istorie a informaticii. Prin anii '60

    problemele rezolvate cu ajutorul calculatorului erau simple i se gseau algoritmi nu preacomplicai pentru rezolvarea lor. Prin program se nelegea rezultatul scrierii unui algoritmntr-un limbaj de programare. Din cauza creteriicomplexitii problemelor, astzi pentrurezolvarea unei probleme adesea vom concepe un sistem de mai multe programe.

    Ne vom familiariza cu aceast noiune prezentnd mai multe exemple de algoritmi iobservnd ce au ei n comun. Cel mai vechi exemplu este algoritmul lui Euclid, algoritmcare determin cel mai mare divizor comun a dou numere naturale.

    Vom constata c un algoritm este un text finit, o secven finit de propoziii ale unuilimbaj. Din cauz c este inventat special n acest scop, un astfel de limbaj este numitlimbaj de descriere a algoritmilor. Fiecare propoziie a limbajului precizeaz o anumitregul de calcul, aa cum se va observa atunci cnd vom prezenta limbajul Pseudocod.

    Oprindu-ne la semnificaia algoritmului, la efectul execuiei lui, vom observa cfiecare algoritm definete o funcie matematic. De asemenea, din toate seciunile urmtoare

    va reiei foarte clar c un algoritm este scris pentru rezolvarea unei probleme. Din maimulte exemple se va observa ns c, pentru rezolvarea aceleai probleme, exist mai mulialgoritmi.

    Exemplu de algoritmUn algoritm este compus din unul sau mai mulipai, un pas reprezentnd efectuarea

    unei singure operaii din irul celor care alctuiesc algoritmul. Un exemplu simplu dealgoritm este algoritmul de mprire ntreag a dou numere naturale. Aceast mprire serealizeaz prin efectuarea unor scderi succesive pn cnd desczutul devine mai micdect scztorul. Paii algoritmului sunt reprezentai prin operaii de scdere i comparaie.

    17 / 7Operaia Pasul Numrul scderiiScdere 17-7= 10 1Comparare 10 < 7 nu -Scdere 10-7= 3 2Comparare 3 < 7 da -

    17 / 7 = 2 rest 3 ( numrul de scderi efectuate a fost 2 iar rezultatul ultimei scderi

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    4/215

    Informatic aplicat Eduard Edelhauser

    4

    a fost 3 )

    Structura algoritmilorAciunile unui algoritm se realizeaz sub forma unor operaii. Aceste operaii

    constituie paii algoritmului. Operaiile care pot aprea ntr-un algoritm sunt de dou feluri:operaii de calcul i operaii de decizie.

    O operaie de calcul const n efectuarea calculelor indicate de o expresiesimbolic, nlocuind fiecare variabil cu valoarea sa. Rezultatul acestor calcule, adicvaloarea expresiei respective, este reinut sub forma valorii unei variabile. Se spune, deobicei, c valoarea expresiei este atribuit variabilei respective.

    n cazul acestor operaii de atribuire i de calcul se utilizeaz operatorii aritmetici: + , - , * , / , **

    Exemplu: X := X + 2

    X := X * YOperaiile de decizie presupun determinarea valorii logice de adevr a uneipropoziii . Propoziiile analizate de operaiile de decizie sunt propoziii enuniative, care nupot fi dect adevrate sau false.

    Ex: X > 0 (P1)Y = 0 (P2)X+2 >Y-2 (P3)

    Astfel pentru X=2 si Y=3 P1 = adevrat, P2= fals si P3=adevratO propoziie logic este construit din dou expresii numerice legate prin operatori

    relaionali: < , > , = , = , #. Astfel prin concatenarea a dou expresii numericefolosind un operator relaional se obine o expresie relaional. De asemenea la construireaunei expresii relaionale se pot folosi i operatori logici : negaie, conjuncie i disjuncie (non, i, sau ).

    n P3 X+2 si Y-2 sunt expresii numerice, iar X+2 >Y-2 este expresie relaional.

    Clasificarea algoritmilor1.Algoritmi liniari. Sunt algoritmii care sunt alctuii numai din operaii de calcul.

    Absena operaiilor de decizie din cadrul algoritmilor liniari are ca efect execuia pailoracestor algoritmi ntr-o singur succesiune. n aceasta categorie intr, algoritmul pentrucalculul valorii unei expresii.

    Ex: Y := A* X**2 + B*X + CUnde: A,B,C constante, iar X variabila2.Algoritmii cu ramificaii. Sunt acei algoritmi care cuprind i operaii de decizie

    printre operaiile de calcul . In acest caz n funcie de valorile variabilelor i de rezultateleoperaiilor de decizie, pentru un algoritm cu ramificaii exist mai multe posibiliti n ceea

    ce privete ordinea de executare a pailor si.3.Algoritmi aciclici. Sunt acei algoritmi cu ramificaii pentru care n cadrulexecuieinu se poate efectua de mai multe ori un acelai pas.

    Ex : rezolvarea ec. de gr 2. ( decizia se realizeaz n funcie de determinant )4. Algoritmi ciclici. Sunt algoritmii pentru care exist posibilitatea repetrii

    execuiei unuia sau mai multor pai. Succesiunea de pai care poate fi executat n modrepetat se numete ciclu. Numrul de repetri ale unui ciclu poate fi fix sau variabil.

    Un exemplu simplu de algoritm ciclic este algoritmul de mprire ntreag a dounumere naturale. Aceast mprire se realizeaz prin efectuarea unor scderi succesive

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    5/215

    Informatic aplicat Eduard Edelhauser

    5

    pn cnd desczutul devine mai mic dect scztorul. Numrul de repetri al ciclului este

    dat de valoarea final a ctului, iar operaia de atribuire din ciclu este scderea.Ex : 17 / 7 se realizeaz ntr-un ciclu cu 2 repetri.

    4.3. Scheme logice i structuri de control ale programelor

    Schemele logice reprezint cea mai simpl metod de reprezentarea a algoritmilor.Ele sunt forme grafice fiind alctuite din blocuri conectate prin legturi orientate (sgei).

    Schema logic este un mijloc de descriere a algoritmilor prin reprezentare grafic.Regulile de calcul ale algoritmului sunt descrise prin blocuri (figuri geometrice)reprezentnd operaiile (paii) algoritmului, iar ordinea lor de aplicare (succesiuneaoperaiilor) este indicat prin sgei. Fiecrui tip de operaie i este consacrat o figurgeometric (un bloc tip) n interiorul creia se va nscrie operaia din pasul respectiv.

    Prin execuia unui algoritm descris printr-o schem logic se nelege efectuareatuturor operaiilor precizate prin blocurile schemei logice, n ordinea indicat de sgei.n descrierea unui algoritm, deci i ntr-o schem logic, intervin variabile care

    marcheaz att datele cunoscute iniial, ct i rezultatele dorite, precum i alte rezultateintermediare necesare n rezolvarea problemei. ntruct variabilajoac un rol central nprogramare este bine s definim acest concept. Variabila definete o mrime care i poateschimba valoarea n timp. Ea are un nume i, eventual, o valoare. Este posibil ca variabilanc s nu fi primit valoare, situaie n care vom spune c ea este neiniializat. Valorile pecare le poate lua variabila aparin unei mulimi D pe care o vom numi domeniul variabilei.n concluzie vom nelege prin variabil tripletul

    (nume, domeniul D, valoare)unde valoareaparine mulimiiD{nedefinit}.

    4.3.1. Simboluri

    n continuare vor fi prezentate simbolurile i structurile elementare care stau labaza elaborrii schemelor logice. Simbolurile utilizate sunt de fapt figuri geometricecompuse din arce (sgei) i noduri. Un nod se reprezint printr-o figur geometric simpl(dreptunghi, romb, etc.). n cele ce urmeaz vor fi prezentate patru tipuri de simboluri.

    A. Simboluri pentru prelucrare

    Fig. 4.1. Instruciuni de prelucrare, Intrare/ieire i proceduri

    n figura de mai sus este reprezentat simbolul pentru o instruciune de prelucrare. S-autilizat simbolul f pentru reprezentarea funciei care opereaz modificarea asupra datelor ceintr n acest nod i care poate fi o operaie elementar sau o operaie complex.Printr-unastfel de simbol se reprezint regulile de tip prelucrare.

    Tot n figura respectiv este prezentat i simbolul utilizat pentru operaiile de

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    6/215

    Informatic aplicat Eduard Edelhauser

    6

    intrare/ieire, iar n final este prezentat simbolul utilizat pentru reprezentarea unor prelucrri

    complexe care urmeaz s fie detaliate ulterior.

    B. Simboluri pentru predicat

    Fig. 4.2. Instruciune de tip predicat

    n figura 4.2 este reprezentat simbolul pentru o instruciune predicat. S-a utilizatsimbolul P pentru reprezentarea unei condiii, unui test, sau o expresie boolean. n funciede valorile datelor, cnd se ajunge la acest nod, P poate lua valoarea adevrat sau fals,alegndu-se o ieire sau cealalt, conform unei convenii fcute anterior. Prin acest simbolse reprezint regulile de tip predicat.

    C. Simboluri de regrupare

    Fig. 4.3. Simbol de regrupare

    Acest simbol nu joac nici un rol n prelucrarea efectiv a datelor. El permiteregruparea a dou ieiri ntr-o singur intrare n modul urmtor, precum i etichetareaacestui nod prin nscrierea n cercule a unui cod de identificare.

    D. Simboluri de tip terminal

    Fig. 4.4. Simbol terminal

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    7/215

    Informatic aplicat Eduard Edelhauser

    7

    Aceste dou simboluri nu au nici un rol n prelucrarea efectiv a datelor ele fiind

    utilizate numai ca semnificaie a nceperii respectiv terminrii unor prelucrri.

    Blocurile au deci diverse forme grafice n funcie de aciunile pe care le reprezint : Terminal De calcul ( prelucrare ) De decizie ( predicat ) De intrare, ieire De procedur

    Din punct de vedere logic un proiect soft descrie modul n care intr n funciunemodulele, iar din punct de vedere fizic se urmrete structura execuiei instruciunilor, adica secvenelor dup care se declaneaz operaiunile din interiorul modulelor.

    Dup o perioad de artizanat din activitile de programare, analiz i proiectare, s -a

    trecut la abordarea structurat a acestora, ceea ce a nsemnat impunerea unor restricii deutilizare, cu scopul creterii standardizrii i a eficienei activitilor sus menionate.Controlul se refer la relaiile posibile dintre componentele programului. Structurile decontrol al logicii, cunoscute i sub numele de structuri de control fundamentale,reprezint un set minim, dar necesar, de reguli prin care s se controleze procesul deactivare a componentelor de prelucrare dintr-un program sau dintre modulele acestuia.

    Structurile sunt: Secvena Secvena asigur parcurgerea instruciunilor n ordinea n care

    apar. Selecia Selecia definete alegerea unui grup de instruciuni din dou

    sau mai multe posibile. Iteraia sau repetiia Iteraia ofer posibilitatea execuiei repetate a unui

    grup de instruciuni.

    Ele mai sunt cunoscute i sub numele de structur secvenial. alternativ (simpl i generalizat), repetitiv (condiionat anterior sau la nceput i condiionat posterior

    sau la sfrit).n elaborarea programelor structurate este necesar s se respecte o serie de restricii,

    i anume:fiecare element (secvena, selecia, iteraia) are unpunct unic de intrare;fiecare element are un punct unic de ieire;elementul de iteraie permite i o execuie cu factor de repetiie zero,

    adic excluderea elementului respectiv din execuie.Fiecare element din cele enunate (secvena, selecia, iteraia) care respect

    restriciile de mai sus definete un bloc standard. De asemenea, orice combinaie de blocuristandard care respect restriciile precizate definete un bloc standard.

    4.3.2. Structuri de bazsau structuri de control fundamentale

    Unele structuri ntlnite n schemele logice normalizate se remarc prin generalitateafuncionrii lor. Este vorba de acele structuri care se refer la prelucrri n serie, alternativei repetitive. n continuare se vor prezenta tipurile de structuri de baz pentru fiecare

    precizndu-se notaia i reprezentarea lor sub form de schem logic normalizat.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    8/215

    Informatic aplicat Eduard Edelhauser

    8

    A. Structuri de tip liniar

    Fig. 4.5. Structura liniar

    Se refer la nlnuirea (tratarea succesiv) a dou prelucrri g i h care pot fiinstruciuni simple sau orice prelucrare admis, conform cu cele prezentate pn la acest

    moment, precum i orice parte de schem logic, dac aceast parte are ea nsi o structurse schem normalizat.B. Structuri de tip alternativ IF-THEN-ELSE

    Fig. 4.6. Structura alternativ

    n aceast structur p este un predicat iar g i h sunt dou prelucrri. n funcie devariabilele datelor controlul va fi transmis ctre una din instruciunile g i h.

    Cu convenia c g se execut n cazul n care predicatul ia valoarea adevrat, iar hse execut n cazul n care p ia valoarea fals, aceast structur IF-THEN-ELSE (p, g, h)admite urmtoarea exprimare: DAC p, ATUNCI execut g, ALTFEL execut h.

    Structurile de tip alternativ admit dou variante: Tipul pseudo-alternativ: este o structur de tip alternativ n care prelucrarea h este

    vid. Se citete: DAC p, ATUNCI execut g.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    9/215

    Informatic aplicat Eduard Edelhauser

    9

    Fig. 4.7. Structur alternativ cu ramur vid

    Tipul multialternativ. Reprezint o generalizarea tipului alternativ propriu zis, ncare apare i o regrupare automat a ieirilor.

    Fig. 4.8. Structur alternativ generalizat

    C. Structuri de tip repetitiv Structur WHILE-DO n aceast structur p reprezint un predicat iar g oprelucrare. Aceast structur se numete ciclu, i admite exprimarea:

    CT TIMP p este adevrat, EXECUT g

    Fig. 4.9. Structur repetitiv WHILE DO

    Trebuie remarcat c dac p este de la nceput fals g nu se execut nici mcar o dat. Tipul repetitiv admite la rndul su dou variante:

    Structura DO-UNTIL: unde g se execut cel puin o dat. Admite exprimareaEXCUT g PN CND p.

    Fig. 4.10. Structur repetitiv DO UNTIL

    Structura DO-FOR: este o variant a structurii WHILE-DO n care predicatul p nud numai condiia de ieire din ciclu, dar precizeaz i numrul de execuii alecorpului ciclului. Acest control se realizeaz cu variabila de control (aici notat cuI) creia I se precizeaz valoarea iniial VI, valoarea final VF i pasul VP.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    10/215

    Informatic aplicat Eduard Edelhauser

    10

    Variabila de control poate fi utilizat n calculele din prelucrarea g dac prin

    aceasta nu I se modific valoarea. Prelucrarea g se mai noteaz n aceast varianti prin g(I), pentru a sugera faptul c execuia lui g se face sub controlul variabileiI. Din acelai motiv se obinuiete ca predicatul s se noteze cu p(I).

    Fig. 4.11. Structur repetitiv DO - FOR

    O grupare a acestor structuri ne genereaz 7 structuri1. Structura secvenial (liniar) se prezint astfel :

    Fig. 4.12. Structura liniar

    2. Selecia (structura de tip IF-THEN-ELSE) sau structura alternativ are urmtoarea

    form de reprezentare

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    11/215

    Informatic aplicat Eduard Edelhauser

    11

    Fig. 4.13. Structura alternativ de tip IF THEN ELSE

    Dac se ndeplinete condiia C, se execut operaiile din Bloc-1, altfel se executoperaiile din Bloc-2; dup execuia blocului, se continu cu instruciuneaurmtoare.

    Cnd Bloc-2 nu conine nici o operaiune, rezult o structur alternativ cu oramur vid, de tip IF-THEN, redat n figuraurmtoare.

    Fig. 4.14. Structura alternativ cu o ramur vid

    3. Structura alternativ generalizat (de tip CASE-OF) este o generalizare a seleciei.Ea permite alegerea unei variante din mai multe posibile.

    Fig. 4.15. Structura alternativ generalizat

    4. Iteraia saustructura repetitiv definete execuia repetat a unei operaii sau grup

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    12/215

    Informatic aplicat Eduard Edelhauser

    12

    de operaii, funcie de rezultatul evalurii unei condiii. Evaluarea condiiei se face fie

    nainte, fie dup executarea operaiilor.Structura repetitiv condiionat anterior (de tip WHILE-DO) se reprezint ca n

    figur.

    Fig. 4.16. Structura repetitiv condiionat anterior WHILE DO

    Structura repetitiv condiionat posterior (de tip DO UNTIL) are forma redat nfigur.

    Fig. 4.17. Structura repetitiv condiionat posterior DO UNTILUn caz particular de structur repetitiv condiionat posterior este structura

    repetitiv cu un numr definit de pai ( DO FOR ).

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    13/215

    Informatic aplicat Eduard Edelhauser

    13

    Fig. 4.18. Structura repetitiv cu numr definit de pai DO FOR

    n literatura de specialitate se consider c structura secvenial structura alternativ IF THEN ELSE structura repetitiv condiionat anteriorreprezint struurilesuficiente pentru a defini structura de control a oricrui program

    fiind numite i structuri fundamentale sau de baz.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    14/215

    Informatic aplicat Eduard Edelhauser

    14

    Capitolul 5

    Programare n limbajul Visual Basic

    5.1. Generaliti legate de limbajele de programare. Istoricul programrii

    Definiia limbajului de programare = limbaj apropiat pseudocodului, i gndiriiumane.

    Istoricul programrii :Ca etape istorice ale dezvoltrii programrii, n paralel cu dezvoltarea hard -ului

    amintim:1. Primele calculatoare, nainte de 1950, erau comandate printr-un dialog direct om

    - main. Programatorul era i operator. Petru evitarea unor perioade de inactivitate a

    sistemului de calcul, n timpul introducerii datelor i programelor de ctre operator, s-augrupat lucrrile ce urmau a fiprelucrate. Apreau, astfel, sistemele de prelucrare pe loturi,n perioada 1950 - 1960.

    2. Pentru obinerea unor performane sporite, s-a recurs la principiulmultiprogramrii, prin care, la un moment dat, n memorie se afl ncrcate spre a fiexecutate mai multe programe care concureaz ntre ele pentru ocuparea resurselorsistemului. Prin cuplarea unitilor centrale aparinnd mai multor calculatoare, de faptcuplarea procesoarelor, s-au realizat condiiile multiprelucrare-multicalculator. Programeleerau prelucrate simultan, n condiii de acces multiplu.

    3. Pe linia programrii, s-au realizat sisteme interactive care posed compilatoareinteractive prin care liniile programului surs (cele elaborate de programator) sunt corectateimediat ce sunt introduse, ca efect al analizelor sintactice i semantice efectuate decompilator. In aceastetap dialogul om main este alternativ, limbajele numindu-se n

    aceasta etap limbaje de programare conversaionale. (anii '80 Turbo Pascal, Turbo C,Borland C, etc. )

    Istoricul detaliat al limbajelor de programare ar trebui s cuprindAnii 1950 - 1960

    FORTRAN (1955), the "FORmula TRANslator, inventat de John W.Backus

    LISP, the "LISt Processor", inventat de John McCarthyCOBOL, the COmmon Business Oriented Language, creat de Short

    Range Committee, sub coordonarea lui Grace Hopper.Anii 1967-1978 n care s-au stabilit principalele tipare sau clase de limbaje de

    programare

    1970 - Pascal1970 - Forth1972 - C1972 - Smalltalk1972 - Prolog1973 - ML1978SQL

    Anii 1980 sau perioada consolidriii a performanei limbajelor de programare1983 - Ada

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    15/215

    Informatic aplicat Eduard Edelhauser

    15

    1983 - C++1985 - Eiffel1987Perl

    Anii 1990 sau epoca Internetului1990 - Haskell1991 - Python1991 - Java1993 - Ruby1993 - Lua1994 - ANSI Common Lisp1995 - JavaScript1995 - PHP2000 - C#2008 - JavaFX Script

    Istoricul Visual Studio i al instrumentele software de la Microsoft

    Fig. 5.1. Instrumentele software ale firmei Microsoft( medii, limbaje, platforme, baze de date )

    Visual Studio 97Prima versiune a pachetului Visual Studio a fost lansat de Microsoft n 1997, i a

    reunit pentru prima dat diferite instrumente de programare ale casei de soft. Visual Studio97 a fost prima ncercare a celor de la Microsoft de a utiliza acelai mediu de programare

    pentru mai multe aplicaii. Astfel Visual C++, Visual J++, InterDev, i MSDN Libraryutilizau un singur mediu numit Developer Studio, n timp ce Visual Basic i Visual FoxProutilizau medii separate.

    Visual Studio 6.0Urmtoarea versiune a fost 6.0 i a fost lansat n iunie 1998, i a fost ultima

    versiune Visual ce a rulat pe o platform Windows 9x ( Windows 95, Windows 98 i

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    16/215

    Informatic aplicat Eduard Edelhauser

    16

    Windows Me ). Este versiunea pe care o utilizm i noi n cadrul cursului, din trei

    considerente :exist nc calculatoare n universitatea noastr pe care mai ruleaz versiuni

    anterioare Windows XP,cursul de programare al titularului de curs utilizeaz acest mediu de peste 9 animodulul de programare din cadrul cursului este foarte restrns ( reprezentnd doar

    20 % din totalul cursului) i nu necesit un mediu foarte complicat.Visual Studio 6 este ultima versiune a mediului Visual care a inclus Visual FoxPro.Visual Studio .NET (2002)n anul 2002, Microsoft a lansat Visual Studio .NET, prima versiune Visual Studio

    ce rula pe o platform de tip NT ( specific urmtoarelor sisteme de operare Windows XP,Windows NT, Windows Server 2000, Windows Server 2003, Windows Server 2008,Windows Vista i chiar Windows 7vezi capitolul de sisteme de operare). n acest pachet

    apare pentru prima dat i C# ( citit C sharp ), un limbaj de programare nou dedicataplicaiilor .NET. Noutatea adus de acest limbaj de generaie 2000 este c sub platforma.NET programele nu se compileaz n limbaj main ( principiu specific C++ ), ci ntr-unformat numit MSIL Microsoft Intermediate Language sau CIL Common IntermediateLanguage. n aceeai clas regsim i limbajul J# urmaul lui J++.

    Visual Studio .NET 2003Visual Studio 2005Este ultima versiune ce ruleaz pe Windows 2000, i suport baze de date SQL

    Server 2005.Visual Studio 2008Dup cum am mai precizat i n capitolele 2 i 3 ale prezentului curs, la ora actual

    Microsoft propune i susine Windows Vista ca sistem de operare i Office 2007 caaplicaie de tip Office. Pentru dezvoltarea acestor dou aplicaii de baz ale Microsoft, ct

    i pentru proiectarea aplicaiilor moderne cu o structur de tip Web, Microsoft a lansatVisual Studio 2008. Platforma .NET de la Microsoft ajuns la versiunea 4 se vrea o bazde dezvoltare att pentru sistemele de operare client ( Windows Vista ) ct i pentru celeserver (Windows Server 2008).

    La ora actual ( anul 2009 ), Microsoft propune urmtoarele instrumente dedezvoltare, prin limbaje de programare i compilatoare

    Visual Basic (VB.NET)Visual C++Visual C#Visual J# ( utiliznd o sintax similar Java dar rulnd pe platforma .NET)Visual FoxPro (care ns nu va mai putea rula sub Vista )IronPythonIronRubyPowerShellXAMLF#

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    17/215

    Informatic aplicat Eduard Edelhauser

    17

    Fig. 5.2.Nivelele de integrare ale aplicaiilor Microsoft

    Metode de programare:Ca urmare a dezvoltrii softului apar diverse metode de programare :

    metoda programrii clasicemetoda programrii modulare descendente sau ascendentemetoda programrii structuratemetoda programrii obiectuale, dup anii 1970 ( un caz particular alacestei metode este programarea vizual prin interfee utilizator vizuale )

    Evident tehnicile de programare structurat i procedural sunt folosite n general in aplicaiile scrise pentru sistemul de operare Windows, dar ele sunt folosite doar laprelucrri de date i nu mai reprezint puncte critice n dezvoltarea aplicaiilor.

    Programarea aplicaiilor pentru Windows pornete de la trei concepte de baz:1. ferestre2. evenimente3. mesaje.

    1. O fereastr Windows reprezint o zon dreptunghiular mpreun cumarginile sale, fiecare fereastr fiind un obiect, care are anumite proprieti i care poate fiprivit ca o entitate separat. Butoanele, barele de meniu, casetele de dialog etc. reprezintferestre ( numite uneori i controale ) ale mediului Windows.

    2. Mediul asociaz fiecrei ferestre cte un identificator monitoriznd npermanen activitatea fiecrei ferestre pentru a observa apariia vreunui eveniment, carepoate fi declanat fie de o aciune a utilizatorului fie de o alt fereastr.

    3. Declanarea unui eveniment duce la apariia unui mesaj (n interiorul

    sistemului), care va fi procesat de mediu, declannd n acel moment o aciune specific.

    Deci proiectarea unei aplicaii pentru mediul Windows nu mai face parte dincategoria programrii structurate, procedurale, sau orientate pe obiect (dei le include), cidin categoria programrii orientate pe eveniment, care se aseamn ntr-o oarecare msurcu programarea n asamblor.

    Limbajele de tip Visual preiau o parte din sarcina programrii, fiind prevzute cugeneratoare de ferestre de orice tip, programatorului rmnndu-i sarcina de a proiecta

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    18/215

    Informatic aplicat Eduard Edelhauser

    18

    interfeele utiliznd instrumentele puse la dispoziie, i de a scrie doar liniile de cod

    absolut necesare pentru tratarea diferitelor evenimente care pot interveni.Visual Basic este un astfel de limbaj de programare pus la dispozi ie de firma

    Microsoft, cu ajutorul cruia orice programator poate crea aplicaii specifice mediuluiWindows, de mare complexitate, fiind totui limitat de numrul finit de obiecte posibile ispecifice.

    Spre deosebire de alte limbaje, Visual Basic-ul permite o dezvoltare interactiv aaplicaiei, deoarece nu face o distincie net ntre cele trei etape ale crerii unui program(editare , compilare i testare), realiznd o compilare parial a codului pe msur ce esteintrodus. Aceasta are ca efect semnalarea eventualelor erori de sintax pe msur ce coduleste scris, nemaifiind necesar compilarea pentru evidenierea acestora. Astfel aplicaiapoate fi rulat progresiv i nainte de terminarea tratrii tuturor evenimentelor, pentrudiferite verificri intermediare. Limbajele ce realizeazcompilri interactive se mai numesc

    i interpretoare.5.2 Noiunile de obiect, proprietate, eveniment i metod

    Un obiect este o combinaie de cod i de date care poate fi tratat n mod unitar.Astfel toate formularele i controalele VB reprezint obiecte care au propriile lor metode,proprieti i evenimente.

    Dup cum s-a precizat, fiecare obiect conine o parte de cod i o parte de date, decii obiectele specifice VB conin aceste pri, dar ele sunt generate automat de ctre limbaj,programatorul nemaifiind nevoit s scrie liniile de cod aferente i s fac legturile ntre ele.

    ExempluPentru o mai bun nelegere a noiunii de obiect se poate realiza o analogie ntre

    obiectele mediului VB i obiecte din lumea real. S lum de exemplu obiectul calculator.Acest obiect are o serie de caracteristici, proprieti vizibile, cum ar fi: model, culoare, tipcarcas. De asemenea mai are proprieti care descriu starea calculatorului (funcional,defect) sau atribute care nu sunt vizibile (hdd,ram). Prin definiie toate calculatoarele auaceste proprieti, dar valorile acestor proprieti difer de la un calculator la altul. Obiectulcalculator are de asemenea i metode (aciuni) pe care le poate ndeplini: pornire, execuie

    program, oprire.Pentru un anumit calculator, codul VB ar arta astfel:

    Proprieti:Calculator.model =IBMCalculator.culoare =Alb

    Calculator.tipcarcasa =DESKTOPCalculator.functional =TRUE

    Se observ c n sintax este scris mai nti numele obiectului (Calculator) urmat decaracterul .i de proprietatea creia i se atribuie o valoare. De asemenea calculatorulpoate executa anumite aciuni care au fost denumite metode, care se apeleaz astfel:

    Metode:Calculator.pornire

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    19/215

    Informatic aplicat Eduard Edelhauser

    19

    Calculator.executie

    Calculator.oprire

    Calculatorul trebuie s aib anumite reacii la stimulii externi. Aceti stimuli senumesc evenimente, iar reacia obiectului la unul din aceste evenimente poate fi descrisastfel:

    Procedura eveniment:Sub Calculator_soccurent()Calculator.oprireCalculator.functional=FALSEEnd Sub

    n momentul apariiei unui oc de curent, se execut metoda Calculator.oprire iproprietatea Calculator.functional devine FALSE.

    Proprietile unui obiect sunt chiar caracteristicile acelui obiect, care pot fimodificate fie din fereastra de proprieti (n momentul proiectrii obiectului respectiv) fien interiorul programului. Modificarea efectuat prin intermediul ferestrei de proprieti nunecesit scriere de cod, dar modificarea proprietilor ncadrul programului se realizeaz cusintaxa:

    Obiect.proprietate=valoare

    Metodele specifice unui obiect sunt subprograme care efectueaz operaii cuobiectul sau cuproprietileobiectului respectiv. n general pentru fiecare obiect VB folositexist o serie de metode predefinite, care pot fi modificate, rescrise sau se mai pot aduga

    i alte metode. Folosirea unor metode n interiorul codului se face cu sintaxa:Obiect.metod [lista_arg]Parametrul [lista_arg] poate s existe sau s lipseasc, n funcie de fiecare obiect n

    parte.

    Evenimentele reprezint aciuni exterioare recunoscute de obiect i la care trebuies se rspund printr-o serie de metode grupate n general n proceduri de tip SUB, al crorantet este predefinit, i n care trebuie scris codul aferent tratrii evenimentului respectiv.Aceste proceduri se numesc proceduri eveniment , iar VB posed un set predefinit deevenimente. Dac a survenit unul din aceste evenimente i exis cod n procedura evenimentasociat, programul va executa acest cod.

    Deci metodele reprezint aciuni prin care obiectul execut ceva, iar evenimentele

    reprezint aciuni exterioare care au efect asupra obiectului, la care obiectul rspunde.n momentul creriunei aplicaii VB se poate lucra cu obiectele oferite de mediul deprogramare, dar se pot defini i propriile obiecte. n general pentru a pstra tradiiaaplicaiilor Windows este indicat ca la nivel de interfa cu utilizatorul s se foloseascobiectele (formulare i controale) predefinite.

    5.2.1. Structura unei aplicaii VB

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    20/215

    Informatic aplicat Eduard Edelhauser

    20

    Structura unei aplicaii este modul n care instruciunile sunt organizate i ordinea n

    care ele sunt executate. Deoarece VB este un limbaj orientat pe obiecte structura aplicaiilorse adapteaz la aceast cerin i va avea specific obiectual, orientat pe evenimente.

    Astfel dei obiectele predefinite recunosc un set de evenimente, rmne n sarcinaprogramatorului s decid dac i cum vor rspunde ele la un anumit eveniment.

    Din punct de vedere al modului de execuie al unei astfel de aplicaii, n general nuexist o ordine predefinit al instruciunilor (dect n interiorul procedurilor), astfel nctfuncionarea se poate descrie dup cum urmeaz:

    1.Aplicaia pornete i un formular este ncrcat n memorie i afiat.2.Formularul (sau un anumit control al su) recepioneaz un eveniment , care poate

    fi declanat de utilizator, de sistem sau indirect de cod. 3.Dac exist cod n procedura eveniment corespunztoare, el va fi executat.4.

    Aplicaia ateapt urmtorul eveniment.

    Modulele formular:O aplicaie VB, n funcie de complexitatea sa poate s conin unul sau mai multe

    obiecte formular, iar pentru fiecare dintre aceste obiecte va exista un modul formulardepus ntr-un fiier cu extensia .famcare va conine codul su.

    Fiecare modul formular va conine proceduri eveniment, proceduri generale ideclaraii la nivelul modulului de: constante, variabile tipuri i proceduri externe. Codulscris ntr-un modul formular este specific acelei aplicaii creia i aparine formularul, i sepoate referi la alte formulare sau obiecte incluse n aplicaia respectiv.

    Procedurile evenimentconin seciuni de cod n care sunt inserate instruciuni carese vor executa ca rspuns la evenimentele specificate. O parte din aceste procedurieveniment aparin controalelor care, fizic fac parte din formular, deci i codul va aparine

    modulului formular aferent.Visual Basic recunoate urmtoarele evenimente :

    Evenimentul Apare de fiecare data cnd...(traducerea)Activate Un formular devine fereastr activ(activare)Cange Coninutul unei casete list combinat, al unei casete(schimbare) cu lista directoarelor, al unei casete cu lista unitilor,

    al unei bare de defilare, al unei etichete, al unei casetede ilustraie sau al unei casete de text se schimb

    Click (clic) Utilizatorul execut un singur clic pe obiectul respectiv

    apas o singur dat pe butonul Mouse-ului)DblClick Utilizatorul execut dublu clic pe obiect (dou apsri(Dublu clic) pe butonul mouse-ului, foarte repede, una dup alta)Deactivate Un formular i schimb starea, de la cea de fereastr(dezactivare) activ, la cea de fereastr inactivDragDrop Utilizatorul ine apsat butonul mouse-ului deasupra unui(depasare cu obiect, mic mouse-ul, apoi elibereaz butonuleliberare) mouse-uluiDragOver Utilizatorul ine apsat butonul mouse-ului deasupra unui

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    21/215

    Informatic aplicat Eduard Edelhauser

    21

    (deplasare) obiect i deplaseaz mouse-ul

    DropDown Partea de list a unei casete list combinat se(desfsurare) desfoar pentru a afia lista de opiuniGet Focus Un obiect este pus n eviden dup ce utilizatorul acaptare atenie) apsat pe tasta Tab sau a executat clic pe obiectKeyDown Utilizatorul apas pe o tast(apsare tast)KeyPress Utilizatorul a apsat i a eliberat o tast ANSI, cum ar fi(tast apsat)un caracter de pe tastatur, o combinaie care conine

    tasta Ctrl tasta Enter sau tasta Backspace (nprincipiu o tast ANSI poate fi orice tast pe care estegravat o cifr sau orice combinaie aiurit de taste pecare ai apsat)

    KeyUp Utilizatorul elibereaz o tast(eliberare tast)LostFocus Un obiect nu mai este pus n eviden deoarece(pierdere atenie) utilizatorul a apsat pe Tab sau a executat clic pe un

    alt obiectMouseDown Utilizatorul apas pe un buton al mouse-ului(apsarea pemouse)MouseMove Utilizatorul mic mouse-ul(miscare mouse)Mouse Up Utilizatorul elibereaz butonul mouse-ului(eliberare mouse)

    Procedurile generale sunt executate ca rspuns la un apel al oricrei procedurieveniment.

    n cazul n care exist poriuni de cod independente de formulare sau controale,pot fi depuse ntr-un modul special numit modul standard, care va fi salvat ntr-un fiier cuextensia .baspe disc. n aceste module sunt depuse proceduri care pot fi utilizate ca rspunsla evenimente n cadrul mai multor obiecte diferite. De asemenea pentru ca acest modul spoat fi reutilizat trebuie s nu conin referiri prin nume la controale sau la alte obiectespecifice aplicaiei respective. De asemenea n acest modul pot fi fcute i declaraii de datecare pot fi utilizate de procedurile din diferite controale, formulare sau aplicaii.

    Modulele de clas reprezint modulele de baz n programarea n orice limbaj de tipVisual, n aceste module fiind descrise att codurile pentru obiectele deja existente i

    predefinite ct i codurile pentru clasele de obiecte definite de utilizator. Aceste coduri suntpstrate n fiiere cu extensia .cls.5.3. Proiectarea interfeelor utilizatorn Visual Basic (VB)

    5.3.1. Obiectele VB ale unei interfee

    Pentru a scrie un program VB, trebuie s proiectm pentru nceput o interfa cuutilizatorul. Aceast const din obiecte ce trebuie plasate pe ecran, i care trebuie aranjate iorganizate n mod ct mai aspectuos. Interfaa reprezint partea vizual a unei aplicaii VB

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    22/215

    Informatic aplicat Eduard Edelhauser

    22

    cu care utilizatorul intr n contact. Formularele i controalele constituie elementele de

    baz din care este realizat interfaa.

    Obiectele VB se caracterizeaz n principal prin:numetitluafiare ( inactiv sau tersi activ sau accentuat )vizibilitate

    Fiecare dintre obiectele pe care le desenai are o proprietate nume (Name),pe careVisual Basic o folosetepentru a identifica fiecare obiect. Fiecare din obiectele VisualBasic trebuie s aib un nume mic.

    Ex: Form Form1, CommandButton Command1

    Atunci cnd creai un obiect, Visual Basic i da n mod automat un nume generic .De exemplu, atunci cnd creai primul buton de comand, Visual Basic l va botezaCommand1 . Al doilea buton de comand pe care l creai, va fi botezat de Visual BasicCommand2 i aa mai departe. Numeleunui obiect nu apare niciodat pe ecran. Numele potavea maximum 40 de caractere, dar nu pot conine semne de punctuaie sau spaii(blancuri). Dei le putei da obiectelor dvs.orice nume dorii, trebuie s folosii prefixeleVisual Basic formate din cte trei litere, ca n tabelul urmtor.

    Prefixele propuse pentru numele obiectelor

    Obiect Prefix propusCheck box chkCombo box cbo

    Command button cmdData datDirectorylistbox dirDrive list box drvFile list box filForm frmFrame fraHorizontal scroll bar hsblmage imgLabel lblLine linListbox lst

    Menu mnuPicture box picRadio button optShape shp(circle,square,oval,rectangle)Text box txtVertical scroll bar vsb

    5.3.2 Formularele VB

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    23/215

    Informatic aplicat Eduard Edelhauser

    23

    Principalul obiect este formularul (forms-ul) cunoscut i ca fereastra (window), princare utilizatorul interacioneaz cu aplicaia atunci cnd aceasta ruleaz. Formularele suntobiecte care i etaleaz proprietile (care la rndul lor le definesc aspectul), metodele(comportamentul) i evenimentele prin care definesc interaciunea cu utilizatorul.

    Orice program VB conine cel puin un formular. Un formular n mod similar cu ofereastr conine :

    bara de titlu ( title bar ) titlu ( caption ) buton de micorare ( minimize button ) buton de mrire ( maximize buton ) buton de nchidere ( close button ) chenar (border)

    Fig. 5.3. Formularele n Visual Studio 6 i n Visual Studio 2008

    De remarcat faptul c deii n cazul Visual Studio 6 conceptul de formular este unelement de baz al oricrei aplicaii, n Visual Studio 2008 deci la o distan de 10 ani, oaplicaie Visual Basic permite construirea a circa 15 tipuri de aplica ii ( spre exemplu cele

    bazate pe dialog sau meniu importate din C++ )

    Fig. 5.4. Tipuri de aplicaii VB ce pot fi create n Visual Studio 2008

    Formularele au deci proprieti, metode i evenimente.Ca i proprieti amintim cele legate de comportament, aspect i poziie.( vezi i

    proprietile de mai sus enumerate pentru o fereastr )Ca evenimente la care rspund prin metode amintim : resize, activate, deactivate,

    load, unloadCa metod amintim Show.

    Observaie :

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    24/215

    Informatic aplicat Eduard Edelhauser

    24

    Pentru fiecare obiect VB exist evenimente specifice ce sunt descrise n fereastra de

    proceduri aferent.Formularele VB pot fi interpretate i ca i Casete de dialog, i sunt folositepentru

    a solicita utilizatorului unele date necesare pentru ca aplicaia s poat continua a afia informaii destinate utilizatorului

    Pentru exemplificare la construirea unui formular se genereaz urmtorulcod surs.

    Begin VB.Form Form1Caption = "Primul Formular"ClientHeight = 5490ClientLeft = 60ClientTop = 345ClientWidth = 6960

    LinkTopic = "Form1"ScaleHeight = 11115ScaleWidth = 15240StartUpPosition = 3 'Windows Default

    EndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

    Observaie : n mod normal VB folosete ca uniti de msurprestabilite pentru formularetwip-ul ( 1/1440 dintr-un inch ). Ex: 5490, 60, 345, 6960. Se pot ns folosi i puncte,

    caractere, pixeli, inchi, milimetri, etc.Codul sursa (procedura ) aferent formularului anterior definit este :

    Private Sub Form_Load()

    End Sub

    5.3.3. Controalele VB

    Controalele sunt obiecte care sunt coninute n obiectele formular. Fiecare tip decontrol are propriul set de proprieti, metode i evenimente adecvat unui anumit scop.Controalele permit afiarea textului, introducerea textului, accesul la alte aplicaii, etc.

    Categorii de controaleExist trei mari categorii de controale n Visual Basic:Controale incorporate, precum butonul de comand. Aceste controale se gsesc n

    cadrul fiierului executabil Visual Basic. Controalele incorporate sunt incluse ntotdeauna ncaseta cu instrumente, spre deosebire de controalele ActiveX i obiectele inserabile, carepot fi adugate sau eliminate din caseta cu instrumente.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    25/215

    Informatic aplicat Eduard Edelhauser

    25

    Fig. 5.5. Controale VB n VS 6 i n VS 2008

    Controale ActiveX, care exist ca fiiere separate avnd extensia .ocx. Acesteacuprind controale disponibile n toate ediiile de Visual Basic (controalele DataCombo,DataList, DataGrid etc.) i cele disponibile doar n ediiile Professional i Enterprise (cumsunt ListView, Toolbar, Animation si Tabbed Dia1og). Exist, de asemenea, i controaleActiveX create de teri.

    Not Controalele cu extensia .vbx utilizeaz o tehnologie nvechit i pot fi ntlnite naplicaii scrise n versiuni mai vechi de Visua1 Basic. Cnd Visual Basic deschide unproiect care conine un control .vbx, implicit, el ncearc s-1 nlocuiasc cu un control.ocx, dar numai dac este disponibil o versiune .ocx a controlului.

    Obiecte inserabile, precum obiectul Microsoft Excel Worksheet care conine o lista tuturor angajailor companiei dumneavoastr sau un obiect Microsoft Project Calendarcare conine informaii despre planificarea n timp a unui proiect. Aceste obiecte pot fiadugate la caseta cu instrumente i de aceea pot fi considerate controale. Unele din aceste

    obiecte permit de asemenea, folosirea standardului Automation (fostul OLEAutomation),care permite accesul din cadrul propriei aplicaii la obiectele altei aplicaii.

    Controale incorporateTabelul urmtor enumer controalele din caseta cu instrumente Visual Basic.

    Numele controlului Numele clasei Descrierea

    Caseta de validare CheckBox Afieaz o opiune de tip

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    26/215

    Informatic aplicat Eduard Edelhauser

    26

    Adevrat /Fals sau Da/Nu.

    Puteivalida oricte casetede validare dintr-un

    formular la un moment dat.Caseta cu list ComboBox Combin o caset cu text cu o

    casetcombinatcu list.Permite utilizatorului s

    introduc de la tastatur elementulselectat sau s-l selecteze dintr-olist derulant.

    Buton de comand CommandButton Atunci cnd este selectat, execut ocomand sau o aciune.

    Date Data Permite conectarea la o baz de

    date existent i afiseazinformaii din formular.Caseta cu list DirListBox Afieaz i permite utilizatorilor selecia dintr-o list a directoarelorCaseta cu list a DriveListBox Afieaz i permite utilizatorilorunitilor de disc selecia dintr-o list a unitilor de

    disc.Caseta cu list FileListBox Afieazi permite utilizatorilora fiierelor selecia dintr-o list a fiierelor.Cadru Frame Ofer un container vizual i

    funcional pentru controale.Bare de derulare HscrollBar i Permit utilizatorilor s adaugeorizontal i vertical VScrollBar bare de derulare la acele controale

    care nu le posed n mod automat.(Acestea nu sunt la fel cu barele dederulare incorporate n multe dintrecontroale).

    Imagine Image Afieaz pictograme, imagini detip metafile,

    fiiere tip JPEG sau GIF;la executarea unui clic, se comportca un buton de comand.

    Etichet Label Afieaz un text pe care utilizatorulnu-l poate modifica.

    Linie Line Adaug la formular un segment de

    linie dreapt.Caset cu list ListBox Afieaz o list de elemente dincare utilizatorul poate alege.

    Container OLE OLE Incorporeaz date ntr-o aplicaieVisual Basic.

    Buton de opiune OptionButton Controlul buton de opiune, ca partedintr-un grup de opiuni mpreun

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    27/215

    Informatic aplicat Eduard Edelhauser

    27

    cu alte butoane de opiune, afieaz

    mai multe opiuni, dintre careutilizatorul poate alege numai una.

    Caset cu imagine PictureBox fieaz imagini bitmap,pictograme, imagini de tip metafile,fiiere tip JPEG sau GIIF. Afieaz

    text i se comport ca un containervizual pentru celelalte controale.

    Forma Shape Adaug un dreptunghi, ptrat,elips sau cerc la un formular,cadru sau caset cu imagine.

    Caset cu text TextBox Ofer o zon n care se poateintroduce sau afia text.

    Timer Timer Execut evenimente declanate detrecerea unei perioade de timp

    Not Instrumentul avnd form de indicator (primul din caseta cu instrumente) ofer omodalitate de a redimensiona formularele i controalele. El nu este un control.

    5.3.3.1. Butoane pentru executarea unor aciuni ( CommandButton n VS6 iButton n VS 2008 )

    Un astfel de buton permite utilizatorului s interacioneze cu o aplicaie prin clic pecorpul butonului. La alegerea unui buton de ctre utilizator, butonul execut aciunearespectiv i arat fizic ca i cum ar fi fost fizic apsat i apoi i s-ar fi dat drumul. Ori decte ori un utilizator execut clic pe un buton, este apelat o procedura eveniment. Ex:Click. Butonul de comand este utilizat pentru a ncepe, ntrerupe sau sfrii un proces.

    Textul afiat pe un buton de comand poate fi modificat utiliznd proprietateaCaption. Proprietatea Caption poate fi folosit i pentru a crea taste de comenzi rapidepentru butoanele de comand, prin adugareacaracterului ampersant (&) naintea literei pecare dorim s o utilizm ca tasta de acces.De exemplu cremun buton de comand rapidpentru titlul Listare, scriem &Listare , se afieaz litera L subliniat i se apeleazprinAlt + L. Listare

    Exemplu 1 :

    Begin VB.CommandButton Command1Caption = "Primul buton de comanda"

    Height = 975Left = 1560TabIndex = 0Top = 840Width = 2295

    End

    Private Sub Command1_Click()

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    28/215

    Informatic aplicat Eduard Edelhauser

    28

    End Sub

    Fig. 5.6. n exemplu aferent formularului Primul formular butonul Command1 este activla Click de mouse conform codului surs din procedura Private.

    Exemplu 2 :Begin VB.CommandButton Command2

    Caption = "Continuare"Enabled = 0 'FalseHeight = 255Left = 1320TabIndex = 7Top = 4320Visible = 0 'FalseWidth = 975

    End

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    29/215

    Informatic aplicat Eduard Edelhauser

    29

    Fig. 5.7. Exemplu de setri iniiale ale unui control

    n acest exemplu de setri de nceput ale obiectului ( controlului ) din cadrul unuiformular, dou proprieti ( Enabled si Visible ) au valoarea logic 0 sau False, ceea censeamnca la nceputul aplicaiei focusul( capacitatea de a prelua date de la utilizator prinmouse sau tastatura ) nu e deinut de acest Command. Focusul poate fi deinut de un obiectdaca proprietile Enabled ( activat ) i Visible ( afiat) au valoarea True.

    5.3.3.2. Casete de text ( Text n VS6 i TextBox n VS 2008 )

    Casetele de text sunt controale versatile care pot fi utilizate pentru a obine date dela utilizator sau pentru a afia text. Ele nu trebuie utilizate pentru afiarea unui text pe carenu dorim ca utilizatorul sa-l modifice. Proprietatea care controleaz textul afiat esteText. Textului i se poate atribuii o valoare pe trei ci diferite:

    la momentul proiectrii n fereastra de proprieti la momentul proiectrii prin scrierea de cod

    Text1.Text = "" la momentul execuiei ( n timpul rulrii programului ) de ctreutilizator

    La prelucrarea textului din cadrul casetei cu text trebuie avut n vedere faptul cpunctul de inserare i comportamentul seleciei din cadrul unei casete de text pot ficontrolate prin intermediulproprietilor: SelStart, SelLenght i SelText. aceste proprietidevin disponibile doar n momentul execuiei. Cnd o caset de text preia focusul punctul

    de inserare implicit ( poziia cursorului) se afla la stnga eventualului text existent. El poatefi mutat cu mouse-ul sau cu tastatura, iar la reprimirea focusului de ctre caseta de textpunctul de inserare rmnen poziia lsat de utilizator.

    Exist o serie de proprieti ale casetei de text care n mod similar textului ce poate fieditat n Word ne permit setri de acest gen. ( chenar (Border), aliniere ( Justification),trecerea pe rndul urmtor ( WordWrapnfurareacuvintelor ), bare de defilare n cadrulcasetei de text, parolarea textului, fontul, culoarea, etc.)

    Exemplul 1 :

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    30/215

    Informatic aplicat Eduard Edelhauser

    30

    Begin VB.TextBox Text1Height = 1095Left = 1680TabIndex = 2Text = "Prima caseta de text"Top = 4200Width = 2535

    End

    Private Sub Text1_Change()

    End Sub

    n acest exemplu caseta de text Text1 este activat la evenimentul Change(schimbare)

    Exemplu 2 :

    Begin VB.TextBox Text2Height = 285Left = 1080TabIndex = 3Top = 1080Width = 615

    End

    Begin VB.TextBox Text1Height = 285Left = 2760TabIndex = 1Top = 240Width = 375

    End

    Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Thenn = Text1.Texti = 1Label2.Caption = "a(" + CStr(i) + ")="Text1.Enabled = FalseText2.Enabled = TrueText2.Visible = TrueEnd IfEnd Sub

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    31/215

    Informatic aplicat Eduard Edelhauser

    31

    n acest exemplu aferent unui program de calcul al maximului unui ir se scrie o

    subrutina pentru a prelua valorile irului. Astfel aceastsubrutin se lanseaz numai la uneveniment de genul apsareaunei taste- Key Press, iar n continuare n cadrul subrutinein momentul apsrii tastei Enter ( cod ANSI 13) se preia valoarea introdus n caseta detext prin proprietatea Text ( n=Text1.Text ), dup care caseta de textText1 devine inactiv( Text1.Enabled=False ) cednd focusul casetei de text Text2.

    n cadrul programului Text1 e folosit la preluarea lungimii irului, iar Text2 lapreluarea valorilor irului.

    Se observ de asemenea ca n momentul proiectrii interfee i casetele de text auconinut vid ( nu exist proprietatea Text ), ceea ce este normal pentru o caseta de text ce vafi folosit la preluarea de date independente.

    5.3.3.3 Etichetele

    Aceste controale sunt utilizate pentru a afia text i nu pot fi modificate de utilizator.Ele sunt n general folosite pentru a identifica obiectele unui formular, pentru a furniza odescriere a ceea ce face un control atunci cnd se execut clic pe el sau pentru a afiainformaii ca rspunsla un eveniment din cadrul aplicaiei.

    O utilizare frecvent este pentru cazul etichetrii controalelor ce nu au proprietateaCaption ( Exemplu casetele de text). Astfel un control eticheta poate aduga textdescriptiv la casetele de text, casetele lista sau casetele combinate.

    Acest control (eticheta) nu poate primii focusul. Modificarea textului afiat decontrolul etichet se face prin proprietatea Caption.

    Textul din cadrul etichetei poate fi i el aliniat, dimensionat, formatat, ncadrat nchenar, etc.

    Exemplul 1:

    Begin VB.Label Label1Caption = "Prima eticheta"Height = 1215Left = 1560TabIndex = 1Top = 2280Width = 2295

    End

    Private Sub Label1_Click()End Sub

    De remarcat faptul c Private Sub Label generat automat este o instruciune inutilcci eticheta nu poate prelua focusul.

    Exemplul 2 :

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    32/215

    Informatic aplicat Eduard Edelhauser

    32

    Begin VB.Label Label2Caption = "a(i)="Height = 255Left = 480TabIndex = 2Top = 1080Width = 375

    End

    n acest exemplu care reprezintde fapt continuarea exemplului 2 de la casetele detext eticheta 2 e folosit la afiarea elementului irului a ce va fi preluat de la tastatura. Sepoate observa c pe parcursul programului valoarea label2.caption se modific n funcie de

    indicele i, iar expresia a(i) se construiete prin concatenarea a , ( transformarea numrului in sir de caractere, ) , =.

    5.3.4. Realizarea primului program n Visual Studio 2008

    Fig. 5.8. Amplasarea a 6 controale pe un formular

    ( TextBox1,TextBox2, Button1, Label1, Label 2 i Label3 )

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    33/215

    Informatic aplicat Eduard Edelhauser

    33

    Fig. 5.9. Cod surs aferent procedurii private aferente Button1 (Suma)la evenimentul Click

    Variabilele a i b preiau coninutul casetelor de text prin proprietatea Text,variabila s realizeaz suma a+b, iar n final eticheta Label3 afieaz s prin proprietatea Text.

    Fig. 5.10. Aplicaia vzut sub form de formular,i vizualizarea proprietilor obiectului Label2 care afieaz Introduceib

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    34/215

    Informatic aplicat Eduard Edelhauser

    34

    Fig. 5.11. Obiectele i evenimentele aplicaiei realizate

    Fig. 5.12. Clasele de aplicaii generate de VS 2008, aferente formularului surs proiectat

    5.4. Elementele limbajului Visual Basic

    Limbajul VB are ca i elemente principale Variabile, constante, tipuri de date i structuri de date Structuri de control ( Instruciuni de atribuire i control ) Proceduri, funcii Instruciuni de intrare ieire (= Interfee utilizator vezi capitolul

    anterior 5.3)

    5.4.1. Variabile, constante, tipuri de date i structuri de date

    5.4.1.1.Variabilele

    O variabil reprezint o zon de memorie rezervat pentru a stoca o anumit valoare,zon de memorie care are asociat un nume(un identificator)un cuvnt care va fi folosit nexpresii pentru a utiliza valoarea stocat i un tipcare reprezint domeniul de valori care

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    35/215

    Informatic aplicat Eduard Edelhauser

    35

    pot fi stocate n variabila respectiv.

    n VB, tipul implicit de variabil folosit este tipul Variant. O variabil de tip Variantpoate stoca orice tip de dat, dar pentru optimizarea programelor att din punct de vedere almemoriei ct i din punct de vedere al vitezei de execuie este totui indicat s se foloseascdeclaraiile de tip pentru variabile. De asemenea folosind declaraiile de tip, programul va fimult mai clar i se vor evita erori subtile de logic.

    Declararea variabilelor se face n general folosind urmtoarea sintax:

    DIM nume_v [AS TIP]

    Unde: nume_v reprezint numele variabilei;TIP reprezint tipul acesteia.

    O variabil declarat cu aceast sintax are urmtoarele caracteristici:- este local procedurii sau modului n care a fost declarat, adic nu poate fi apelatdin alte proceduri sau module;

    - are o anumit valoare doar atta timp ct se execut procedura n care a fostdeclarat.

    Aceste dou proprieti genereaz avantajul de a folosi aceleai nume de variabile nproceduri diferite fr exista pericolul de confuzie sau conflict.

    Numele unei variabile reprezint un ir de maxim 255 de caractere alfanumerice,care trebuie obligatoriu s nceap cu o liter, nu poate conine caracterul punct sau altcaracter rezervat i trebuie s fie unic n cadrul aceluiai domeniu.

    Domeniu reprezint spaiul poriunea de cod - n cadrul cruia o variabilpoate fiapelat (procedur, funcie sau modul).

    n funcie de domeniu de definire al variabilelor exist: variabile locale, variabile

    private i variabile publice.

    1. Variabilele locale sunt declarate n cadrul unei funcii sau proceduri ipot fi apelate (sunt vizibile) doar n cadrul acestora.

    Exemplu :

    Function radical(x)

    Dim a AS DOUBLE,b AS DOUBLE,e AS DOUBLE

    Dim i AS INTEGER

    e=0.0001

    a=x/2

    Do

    b=aa=(1/2)*(a+x/a)

    Loop until abs(b-a)

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    36/215

    Informatic aplicat Eduard Edelhauser

    36

    2. Variabilele privatesunt variabile declarate n zona DECLARATION al

    unui modul, cu ajutorul cuvntului cheie PRIVATEfiind apelabile de orice subprogram dincadrul acestui modul, dar nu i de alte module.

    PRIVATE nume_v [AS TIP]

    3. Variabilele publice sunt variabile care sunt vizibile n toat aplicaia ndeclararea lor folosind cuvntul cheie PUBLIC, n zona DECLARATION al acestui modulastfel:

    PUBLIC nume_v [AS TIP]Pentru a mpiedica pierderea valorii unei variabile locale n momentul ncetrii

    execuiei procedurii n care a fost declarat, se va folosi cuvntul cheie STATICn loc decuvntul DIM.

    Exist posibilitatea de a avea mai multe variabile publice cu acelai nume n

    module diferite, avnd valori i tipuri diferite. Apelul unei anumite variabile n acest caz seva face scriind mai nti numele modului urmat de caracterul punct i de numele variabilei.De asemenea, n cazul n care ntr-o procedur sau funcie exist o variabil local

    cu acelai nume cu o variabil global, apelul celei locale se va face direct prin nume, iar alcelei globale se va face prin numele modului urmat de caracterul punct i numele variabilei

    publice.Aa cum am precizat la nceput, nu este absolut necesar declararea variabilelor

    nainte de folosirea lor, VB crend automat o variabil n momentul n care gsete unidentificator nou. Deci codul funciei radicalputea fi scris i astfel:

    Function radical(x)

    e=0.0001

    a=x/2

    Dob=a

    b=(1/2)*(a+x/a)

    Loop until abs(b-a)

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    37/215

    Informatic aplicat Eduard Edelhauser

    37

    Dac se folosete ultima variant, instruciunea Option Explicit va fi inserat

    automat n toate modulele care vor fi create ulterior, ns nu va fi inserat n modulelecreate anterior.

    n acest caz nu mai este necesar urmrirea greelilor de scriere de ctreprogramator, VB semnalnd de fiecare dat cnd ntlnete o variabil nedeclarat sauscris greit.

    5.4.1.2. Constante

    O constant este un nume semnificativ care ine locul unui numr sau ir de caracterecare apare de mai multe ori n cadrul unui program. Dup cum arat i numele valoareaconstantei nu se schimb pe parcursul programului.

    Exist dou tipuri de constante: constante intrinseci - care sunt furnizate de aplicaii,

    controale sau chiar de sistemi constante simbolice create de programator.Sintaxa de creare a unei constante este:[Public/Private] Const nume_c [AS TIP]=expresie

    De exemplu.Public const pi=3.14141592, pi2=2*pi

    Se observ din exemplu c este posibil declararea mai multor constante pe acelairnd i definirea unei constante n funcie de alta, dar trebuie avut mare grij, de a nu creareferine circulare, adic dup o serie de expresii s nu se ajung la situaia ca o constant sfie definit n funcie de ea nsi.

    5.4.1.3. Tipuri de date

    Dup cum amartat, variabilele sunt destinate stocrii valorilor i sunt caracterizate

    prin nume i tip de date. Tipul de dat al unei variabilei indic modul n care biii carereprezint respectivele valori sunt stocai n memoria calculatorului, i de asemeneadetermin felul datelor pe care variabila le poate stoca.

    Dac nu este furnizate nici un tip de dat, variabila capt implicit tipul de datVARIANT, care este specific VB. O variabil de tip variant poate stoca orice tip de valori,tipul variant fiind i tipul implicit. Este mult mai indicat ns s se foloseasc tipurile dedate clasice, n vederea optimizrii programelor. n continuare vor fi prezentate tipurile dedate care pot fi folosit n limbajul VB.

    1.Tipuri de date numerice

    Pentru reprezentarea variabilelor numerice pot fi folosite mai multe tipuri, fiecare

    avnd limitele lor (inferioar i superioar) precum i o serie de caracteristici care ledeosebesc i care le fac optime pentru folosirea ntr-un anumit context. Evidentreprezentarea intern difer de la tip la tip, astfel nct folosind aceste tipuri se faceeconomie de memorie sau de timp.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    38/215

    Informatic aplicat Eduard Edelhauser

    38

    Tipul de date Ce reprezint Plaja de valori acceptate

    Integer ntreg, valoare absolut,simpl precizie

    (-32768 ; +32767)

    Long ntreg, valoare absolut,dubl precizie

    (-2147483648 ; 2147483647

    Single virgul mobil, simplprecizie

    (-3,402823E38; 3408823E38)

    Double virgul mobil, dublprecizie

    (-1,79769313486232D308179769313486232D308)

    Currency moned (-922337203685477,5808922337203685477,5807)

    n tabelul de deasupra sunt prezentate tipurile de date numerice folosibile n

    programele VB. Tipurile INTEGER i LONG sunt folosite pentru reprezentarea numerelorntregi, iar SINGLE, DOUBLE i CURRENCY sunt folosite pentru reprezentare numerelorreale cu anumite precizii.

    Reprezentarea intern a acestora, n funcie de numrul de octei pe care sereprezint, este ascendent de la Integer spre Double, ceea ce face necesar folosireaacestor tipuri ct mai judicios.

    La tipurile de dat Single i Double, fiind valori n virgul mobil, s-a folositexprimarea mmmEeee sau mmmDeee unde mmm reprezint mantisa numrului, iar eeereprezint o putere a lui 10. n aceast exprimare diferenierea dintre cele dou tipuri se faceprin caracterul de separaie ntremantis i exponent: E n cazul tipului Single i D n cazultipului Double.

    Tipul de date Currency folosete o exprimare n virgul fix cu patru zecimale,admind maxim 15 caractere n faa virgulei. Este un tip de date folosit n general pentrucalcule financiare de precizie, care dei are un domeniu de valori mai restrns dect tipurileSingle i Double, permite calcule mai precise, nefiind supus erorilor de rotunjire la care suntsupuse ultimele dou.

    2. Tipul BYTE

    Este folosit pentru cazul n care variabila conine date binare. Variabilele de acest tiprmn intacte i dup conversiile ntre tipuri de date.

    3. Tipul STRING

    n aplicaii nu avem nevoie numai de date numerice ci i de date alfanumerice (cum

    ar fi numele unei persoane, numele unei metode etc.). Aceste valori vor fi reinute nvariabile de tip STRING. Acestor variabile li se poate atribui iruri de caractere i asupralor se pot aplica funcii specifice irurilor de caractere.

    Declarare unei astfel de variabile se face dup sintaxa:[Public/Private/Dim/Static] nume_v as STRING [*DIMENSIUNE]

    Exemplu.Dim a as STRING

    A=Ionescu

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    39/215

    Informatic aplicat Eduard Edelhauser

    39

    Parametrul *DIMENSIUNE se folosete dac irurile trebuie s fie de dimensiune

    fix.

    4. Tipul BOOLEAN

    Este folosit n cazul variabilelor care conin valori de forma adevrat/fals, da/nu,pornit/oprit etc. , avnd valoarea implicit de FALSE.

    5. Tipul DATE

    Variabilele de acest tip sunt specifice valorilor de tip dat calendaristic i or.

    6. Tipul OBJECT

    Variabilele declarate de tip OBJECT sunt de fapt adrese pe 32 de bii ctre obiectedin diferite aplicaii, obiecte care trebuie ns s fie recunoscute de aplicaia n care estedeclarat variabila. Dup ce a fost declarat o variabil de acest tip, i se poate atribui ovaloare prin instruciunea SET.

    7.Tipul VARIANT

    Este un tip care poate memora orice tip de dat definit de sistem, fr a mai necesarconversia ntre tipuri. Acesta este tipul implicit folosit de VB, ns reprezentarea folosetemai mult memorie(16 bii) dect la tipurile prezentateanterior i pentru orice operaie ncare intr valori de acest tip consumul de timp este mai ridicat, deoarece VB trebuie sverifice compatibilitatea valorilor i eventual s efectueze conversiile. Trebuie avut o mare

    atenie n folosirea acestui tip, deoarece exist posibilitatea efecturii unor conversiiautomate nedorite i incontrolabile.

    5.4.1.4.Tipuri de date structurate.

    Matrici

    Matricile sunt variabile care spre deosebire de cele prezentate anterior nu stocheazdoar o singur valoare cipot stoca mai multe valori de acelai tip. Selectarea unei anumitevalori se face cu ajutorul indicilor. Deoarece VB aloc spaiu pentru fiecare indice, esteindicat s nu se declare matrici cu dimensiuni mai mari dect este necesar.

    Declararea unei matrici poate fi fcut fie prin specificarea valorii maxime a

    indicelui, caz n care valoarea minim implicit este 0, fie prin specificarea ambelor valoriatt inferioar ct i superioar, folosind sintaxa:[Public/Private/Dim/Static] nume_m([l_inf to] l_sup) as TIP

    De exemplu.Dim a(20) as Integer

    Dim b(1 to 20) as Integer

    n acest caz matricea aare 21 de elemente cu indicele mergnd de la 0 la 20,iar matricea bare 20 de elemente cu indicele mergnd de la 1 la 20. Elementele sunt de tipinteger.

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    40/215

    Informatic aplicat Eduard Edelhauser

    40

    Mai pot fi declarate i matrici multidimensionale, plajele indicilor fiind specificate

    n declaraii separate prin virgul.De exemplu.

    Dim c(1 to 20, 1 to 20) as double

    n acest caz matricea c are dou dimensiuni, i 400 de elemente (20*20). Apelulunei valori se face specificnd numele matricii urmat de indici ntre paranteze rotunde.

    Exemplu.C(i,j)=a(i)+b(j)

    5.4.2. Structuri de control

    Structurile de control permit controlarea desfurrii programului, fiind bazeleprogramrii structurate. Fr aceste structuri instruciunile programului ar fi parcurse

    secvenial de la prima la ultima, neexistnd posibilitatea de decizie sau de repetarecondiionat a unui set de instruciuni. Acest lucru ar face imposibil programarea, deoarecen toate programele exist cazuri care trebuiesc tratate separat, sau seturi de instruciuni carese repet. Puterea unui limbaj de programare const n capacitatea sa de a schimba ordineainstruciunilor prin structuri i bucle.

    5.4.2.1. Structuri de decizie

    Aceste structuri sunt folosite pentru a alege un set de operaii care trebuiescexecutate n funcie de o anumit condiie.

    1.Structura IfThen

    Este o structur decizional care efectueaz un set de operaii dac este ndeplinit oanumit condiie.

    Sintaxa acestei structuri este:If condiie Then

    Set de instruciuniEndIfSetul de instruciuni este efectuat doar dac condiia este ndeplinit.

    ExempluIf a0 then

    c=b/a

    EndIfn acest caz raportul este calculat doar dac variabila a are valoare diferit de 0.

    2. Structura IfThenElse

    Este o structur care permite definirea mai multor blocuri de instruciuni dintre careunul singur este executat n funcie de mai multe condiii.

    Aceast structur reprezint o generalizare a celei precedente,i are sintaxa:

    If contiie1 Then[bloc de instruciuni1]

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    41/215

    Informatic aplicat Eduard Edelhauser

    41

    ElseIf condiie2 Then

    [bloc de instruciuni2].Else

    [bloc de instruciuniN]EndIf

    Va fi testat mai nti condiie1 . Dac are valoare deFalse se testeaz condiie2 iaa mai departe pn cnd se gsete o condiie cu valoare de True. n acel moment seexecut blocul de instruciuni corespunztor, i apoi se continu cu executarea instruciuniide dup EndIf. n cazul n care nici una dintre condiiinu a fost adevrat, fie se executblocul de instruciuni corespunztor lui Else, dac acesta exist, fie se continu cuinstruciunea de dup EndIf.

    ExempluIf a>b then

    Max=a

    Else

    Max=b

    EndIf

    n caz c a>b, variabila Max va lua valoarea lui a, dac nu (E lse) va lua valoarea luib.

    3. Structura SELECT CASE

    Este o structur alternativ, care poate fi fololsit n locul structurii

    IfThenElseIfElse, pentru o claritate mai mare n cazul n care exist mai multeopiuni, n funcie de care se pot executa mai multe seturi de instruciuni.

    Instruciunea SELECT CASE evalueaz o singur o singur expresie de testat lanceputul structurii, dup care este comparat rezultatul acestei evaluri cu valorile dinfiecare bloc CASE al structurii. Dac apare o echivalen, blocul de instruciuni asociatacelui CASE va fi executat.

    Sintaxa:SELECT CASE expresie de evaluat[CASE lista de expresii 1

    [bloc de instruciuni 1]][CASE lista de expresii 2

    [bloc de instruciuni 2]]

    [CASE Else[bloc de instruciuni n]]End Select

    Fiecare list de expresii avnd una sau mai multe valori separate prin virgul, iarfiecare bloc de instruciuniavnd 0 sau mai multe instruciuni. Instruciunile din blocul deinstruciuni asociat lui CASE ELSE vor fi executate doar dac nici una din valorile dinlistele de expresii nu este egal cu valoarea expresiei de testat.

    Exemplu

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    42/215

    Informatic aplicat Eduard Edelhauser

    42

    Se va creea o funcie care returneaz numrul de zile dintr-o lun,

    transmindu-se ca i parametrii anul i numrul lunii.Function nrzile(luna as integer, an as integer)

    Dim zi as integer, zif as integer

    If Cint(an/4)-an/4=0 then

    Zif=29

    Else

    Zif=28

    EndIf

    Select Case luna

    Case 1,3,5,7,8,10,12

    Zi=31

    Case 4,6,9,11

    Zi=30Case 2

    Zi=Zif

    Case Else

    Zi=0

    End Select

    nrzile=zi

    End Function

    Aceast funcie va returna numrul de zile dintr-o lun, dac anul este bisect(divizibil cu 4) luna februarie va avea 29 de zile, altfel (else) va avea 28. Dac n l oc de unnumr valid de lun se transmite un numr care nu desemneaz nici o lun, funcia vareturna valoarea 0 (Case Else).

    5.4.2.2.Structuri repetitive (de tip bucl)

    Structurile de tip bucl ofer posibilitatea executrii repetate a unui set deinstruciuni. Aceasta uureaz mult scrierea codului, precum i controlul asupra programuluii depanarea lui.

    1. Structura Do LOOP

    Este folosit atunci cnd un set de instruciuni trebuie repetat de un numrnecunoscut de ori. Condiia ieirii din bucl poate fi pus la nceput, dup cuvntul cheieDO sau la final dup cuvntul LOOP. De asemenea exist posibilitatea ieirii din bucl fie

    dac condiia are valoare de adevr, fie dac are valoare de fals. n cazul n care condiiaeste pus la nceput, exist posibilitatea neexecuiei setului de instruciuni cuprins n bucl.Dac condiia este pus la final, setul de instruciuni va fi executat cel puin o dat.

    De asemenea exist posibilitatea ieirii forate din bucl folosind instruciunea:Exit DoSintaxa acestei structuri este:Do [while/until condiie]Set de instruciuniLOOP [while/until contiie]*

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    43/215

    Informatic aplicat Eduard Edelhauser

    43

    Dac se pune condiia la nceput, nu este permis specificarea condiiei la final i

    invers.Condiiile se pun dup cuvintele cheie while i until.Folosirea cuvntului while face ca setul de instruciuni s fie executat atta vreme

    ct condiia este adevrat. Ieirea din bucl se va face n momentul invalidrii condiiei.Folosirea cuvntului until are ca efect executarea buclei pn cnd condiia va fiinvalidat, iar ieirea se va face n momentul validrii ei.

    S lum de exemplu urmtoarea problem:S se creeze o subrutin care s genereze termeni ai irului lui Fibbonaci, dup

    formula de recuren ai=a i-1+a i-2, cu a1=1 i a2=1, pn cnd termenul generat are o

    valoare mai mare dect o valoare impus.

    Sub fibbo(x as integer)

    Dim a as integer, b as integer, c as integera=1

    b=1

    f(1)=a

    f(2)=b

    i=3

    Do

    c=a+b

    f(i)=c

    a=b

    b=c

    i=i+1

    loop until b>x

    End sub

    n acest exemplu, se genereaz termenii irului n variabila c , dup care sunt depuin matricea f . Important de reinut este c aceast serie de instruciuni este repetat pncnd termenul proaspt generat ( c ) depete limita superioar impusx.

    2. Structura ForNext

    Aceast structur se folosete n situaiile cnd se cunoate numrul de repetri asetului de instruciuni care cicleaz. n aceast situaie este mai indicat folosirea acesteistructuri dect folosirea unei structuri de tip DOLOOP. Sintaxa acestei structuri este:

    FOR contor=val_ini TO val_fin [STEP pas]Set de instruciuniNEXT [contor]

    Variabilele contor, val_ini, val_fin, passunt toate de tip Integer sau Long.Dac variabila pas este negativ, este necesar ca val_ini s fie mai mare dect

    val_fin, deoarece contorul va descrete.Aceast structur se execut astfel:1. Se atribuie contorului valoare val_ini

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    44/215

    Informatic aplicat Eduard Edelhauser

    44

    2. Se compar valoarea contorului cu val_fin. Dac contorul a depit aceastvaloare se iese din bucl.

    3. Se execut setul de instruciuni4. Se incrementeaz contorul cu pas.5. Se revine la pasul 2i n cazul acestei structuri exist o instruciune de ieire necondiionat din bucl, i

    anume:Exit For

    Dar indicat este s se proiecteze aplicaia astfel nct s nu fie necesar ieireaforat din bucl.

    ExempluS se creeze o procedur care s populeze o matrice cu valori, dup urmtoarea

    regul:A(i,j)=(i+j)/(i*j), considernd c n,m dimensiunile matricii, precum i matricea

    sunt variabile globale.

    Sub Generare

    Dim i as integer, j as integer

    For i=1 to n

    For j=1 to m

    A(i,j)=(i+j)/(i*j)

    Next j

    Next i

    End Sub

    3. Structura FOR EACH NEXT

    Este o structur asemntoare cu structura FOR NEXT, dar nu execut setul deinstruciuni de un numr predefinit de ori, ci pentru fiecare element al unei colecii sau alunei matrici. Aceast structur se folosete de obicei cnd nu cunoate exact numrul deelemente al unei colecii.

    Sintaxa este:FOR EACH element IN grup

    Set de instruciuniNEXT

    Observaie: Aceast instruciune nu poate fifolosit pentru o matrice cu elemente deun tip definit de utilizator ci doar pentru o matrice cu elemente de tip VARIANT.

    5.4.3. Proceduri i funcii Visual Basic

    n cazul programelor mari, pentru o mai mare claritate i pentru o mai mareuurin de depanare se folosete programarea procedural. O procedur sau o funciereprezint o unitate de program, cu aceeai structur ca i un program, din care cauz senumesc i subprograme.

    Folosirea lor ns prezint o serie de avantaje:- un subprogram odat scris poate fi refolosit i n cadrul altor aplicaii;

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    45/215

    Informatic aplicat Eduard Edelhauser

    45

    - cu ajutorul programrii procedurale se pot proiecta i realiza aplicaii cu un gradnalt de complexitate, scrierea lor fiind distribuit unei echipe ntregi de persoane, fiecarescriind o anumit parte din aplicaie sub form de subprogram;

    - depanarea este mult mai uoar dect n cazul unui cod unitar, programul fiindmult mai uor de urmrit.

    n VB exist trei tipuri de subprograme:- subprograme de tip procedur SUBcare nu returneaz nici o valoare;- subprograme de tip FUNCTION care returneaz o valorare folosibil n expresii;- subprogramele de tip PROPRIETATE sau METOD care pot returna i atribui

    valori i pot stabili referine la obiecte.

    1. Procedurile de tip SUB

    O procedur SUBeste un bloc de instruciuni care poate fi executat fie ca rspuns laun eveniment (Proceduri eveniment), fie apelat n cod de o alt procedur sau modul(Proceduri generale).

    Dac codul este divizat n proceduri, este mult mai uoar gsirea i modificareaunei poriuni de cod n cadrul aplicaiei.

    O astfel de procedur se declar cu urmtoarea sintax:

    [Private/Public][Static] Sub nume_p (arg)instruciuni

    [End Sub]

    La apelul unei astfel de proceduri se vor executa instruciunile cuprinse ntre Sub i

    End Sub.Argreprezint lista de argumente cu care se apeleaz procedura n cadrul codului,

    adic acele date care i sunt transmise procedurii pentru prelucrare. Lucrul cu proceduri ifuncii este asemntor cu lucrul cu funciile matematice. n matematic trebuie n primulrnd s definim funcia, de exemplu f(x)=(x+1)/(x2+x+1), dup care putem s determinmvaloarea acestei funcii n diferite puncte, adic s calculm valoarea funciei n punctul

    x=1, decif(1).n definirea acestei funcii,xeste considerat parametru formal, iar la apelararea ei

    n punctulx=1, 1 reprezint parametrul actual. Analog, n definirea unui subprogram, lalista de argumente se folosesc parametrii formali, iar la apel parametrii actuali.

    Dup cum am artat exist dou tipuri de proceduri i anume procedurile generale iprocedurile eveniment.

    Procedurile generale efectueaz o anumit operaie, dar odat definite ele trebuiescapelate explicit n cadrul programului. Sunt folosite atunci cnd mai multe evenimentetrebuie s determine executarea aceluiai set de instruciuni. Scrierea acestei proceduri vaelimina necesitatea scrierii aceleiai buci de cod n mai multe locuri n cadrul proceduriloreveniment.

    Procedurile eveniment sunt executate atunci cnd aplicaia este programat s recunoasc un anumit eveniment. Cnd acesta apare va fi apelat proceduracorespunztoare acestuia, folosind numele corespunztor evenimentului respectiv. Deoarecenumele stabilete o asociaie ntre obiect i cod, se spune c procedurile eveniment sunt

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    46/215

    Informatic aplicat Eduard Edelhauser

    46

    ataate de formulare i controale. Numele procedurilor eveniment este generat automat de

    VB folosind o combinaie dintre numele obiectului care folosete acest eveniment i numeleevenimentului respectiv, n general separate prin liniue de subliniere.

    Apelul procedurilor se face prin dou metode:Call nume_p(arg)SauNume_p arg

    Unde arg reprezint lista argumentelor , parametrilor actuali ai procedurii.

    2. Subprogramele de tip FUNCTION

    Acest tip de subprograme returneaz o anumit valoare la apelul lor, i se numescfuncii. VB are predefinite o serie de astfel de funcii cum ar fi cele trigonometrice (sin, cos,

    etc.), dar pot fi scrise i propriile funcii n funcie de necesiti.Definirea unei astfel de funcii se face cu sintaxa:

    [Private/Public][Static] FUNCTION nume_f (arg) [AS TIP]instruciuni

    [End Function]

    n acest caz apelul funciei se poate face chiar ntr-o expresie mai complex, putndfolosi funcia n diferite calcule i operaii.

    Pentru ca aceasta s returneze o valoare, trebuie ca n cadrul ei s apar oinstruciune de forma:

    Nume_f=expresie(vezi exemplele anterioarefuncia radical)

    Subprogramele de tip funcie pot fi apelate fie ntr-o expresie:Data1=expresie(numef(arg))Fie ca i la apelul unei proceduri:Call numef(arg)Saunumef arg

    n ultimul caz, VB nu mai ia n seam valoarea returnat de aceast funcie,executnd doar setul de instruciuni din cadrul ei.

    Transmiterea argumentelor ctre subprogrameExist dou moduri de transmitere a argumentelor: prin valoarei prin referin.n cazul transmiterii prin valoare, subprogramul poate doar s foloseasc

    argumentele n operaii interne, dar nu le poate modifica valoare, neavnd acces dect la o

    copie a parametrului respectiv. Acest lucru este practic pentru a fi siguri c nu se modificvalorile unor variabile la executarea subprogramului. n acest caz n definireasubprogramului, lista de parametrii formali care vor fi transmii prin valoare trebuieprecedat de cuvntul ByVal.

    n cazul transmiterii prin referin, subprogramul are acces direct la adresa dememorie n care se afl stocat argumentul respectiv, deci va putea modifica efectiv valoareaacestuia. Acest tip de transmitere este cel implicit.

    5.4.4.Probleme rezolvate (proceduri i funcii)

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    47/215

    Informatic aplicat Eduard Edelhauser

    47

    1. S se elaboreze o procedur Visual Basic de tip SUB pentru a ordona cresctormrimile: 2*x+1, y-2, z/3+4, avnd ca parametrii de intrare valorilex,z,y.

    RezolvareSub ordonare(x as double, y as double, z as double)

    Dim aux as double

    x=2*x+1

    y=y-2

    z=z/3+4

    if x>y then

    aux=x

    x=y

    y=auxendif

    if x>z then

    aux=x

    x=z

    z=aux

    endif

    if y>z then

    aux=y

    y=z

    z=aux

    endif

    end sub

    2. S se elaboreze o funcie Visual Basic care s verifice dac trei numere reale a,b,c suntn progresie aritmetic; dac da funcia s returneze valoarea raiei, iar dac nu sreturneze valoarea 0.

    RezolvareFunction proga(a as double, b as double, c as double) as double

    dim ra as double

    ra=b-a

    if (rac-b) then

    ra=0

    endif

    proga=ra

    end function

    3. S se elaboreze o funcie Visual Basic care s verifice dac trei numere reale a,b,c suntn progresie geometric; dac da funcia s returneze valoarea raiei, iar dac nu sreturneze valoarea 0.

    RezolvareFunction progg(a as double, b as double, c as double) as double

    dim rg as double

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    48/215

    Informatic aplicat Eduard Edelhauser

    48

    if ((a=0)or(b=0)or(c=0)) then

    rg=0else

    rg=b/a

    if rgc/b then

    rg=0

    endif

    endif

    progg=rg

    end function

    4. S se elaboreze o funcie Visual Basic care s calculeze suma primelor n numerenaturale (Gauss),

    n

    i

    is1

    . Ca i parametru de intrare se consider numrul natural n.

    RezolvareFunction suma (n as integer) as integer

    dim s as integer, i as integer

    s=0

    i=1

    do

    s=s+i

    i=i+1

    loop until i

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    49/215

    Informatic aplicat Eduard Edelhauser

    49

    do

    p=p*ii=i+1

    loop until i

  • 7/22/2019 Curs Informatica Aplicata Semestrul 2

    50/215

    Informatic aplicat Eduard Edelhauser

    50

    produs=p

    end function

    8. S se elaboreze o funcie Visual Basic care s calculeze valoarea lui anprin nmulirirepetate, adic:

    n

    i

    aaaaap1

    , parametrii de intrare fiind a i n.

    RezolvareFunction putere(a as integer, n as integer) as integer

    dim p as integer, i as integer

    p=1

    for i=1 to n

    p=p*a

    next i

    putere=p

    end function

    9. S se elaboreze o funcie Visual Basic care s calculeze)!!*(

    !

    knk

    nCE kn

    ,

    folosind o funcie fact(x) care calculeaz x!,funcia combinri avnd ca parametrii deintrare pe n i k.

    RezolvareFunction fact (x as integer) as integer

    dim p as integer, i as integer

    p=1for i=1 to x

    p=p*i

    next i