METODE NUMERICE SI PROGRAMARE Calcul si programare in inginerie utilizand Excel Pachetul de programe Microsoft Office este prezent aproape

pe fiecare calculator din orice unitate de proiectare, exploatare, producţie, comerţ sau orice alta societate comerciala. Utilitarul Excel din Microsoft Office este o unealtă foarte puternica şi oricând la îndemână permiţând rezolvarea unor probleme inginereşti complexe, inclusiv programare fără alte cheltuieli suplimentare pentru achiziţionarea unor pachete de programe sau limbaje de programare costisitoare si dificil de utilizat. Posibilităţile remarcabile ale acestui utilitar îl recomandă cu prisosinţă şi în domeniul la care face referire prezentul curs. SECŢIUNEA I – FORMULE, ECUATII, FUNCTII Lucrul cu formule Formulele sunt utilizate pentru a aduna, a scădea, a înmulţi sau a împărţi numerele pe foile de calcul. Ele sunt alcătuite din două părţi: • Celulele pe care se doreşte să le includeţi în formulă. • Operatorii aritmetici, care îi spun programului Excel ce calcul doriţi să se efectueze. Formulele Excel încep întotdeauna cu un semn egal (=), ceea ce indică programului Excel că se doreşte să creaţi o formulă. Aşa că o formulă simplă va arăta cam aşa: =B3-B2 Pentru a vedea toate formulele din foaia de ca1cu1, se alege Options din meniul Tools, selectaţi pagina View din caseta de dialog Options, apoi în caseta de validare, Formulas. sau CTRL+` (single left quotation mark) Crearea formulelor Să se alcătuiască o formulă care va scădea numărul conţinut în celula B3 din numărul conţinut în celulă si care să pună rezultatul în celula B4. (Această formulă este arătată în figura 1.) 1. Puneţi numerele în celulele B2 şi B3. În celula B2 puneţi un număr mai mare decât cel din celula B3. 2. Mutaţi cursorul în celula B4 şi tastaţi semnul egal (=). 3. Daţi clic în bara de formule. 4. Daţi clic pe celula B2. Celula B2 este înconjurată de un marcaj ce indicând că este selectată. Adresa celulei apare în bara de formule. 5. Asiguraţi-vă că încă mai aveţi cursorul în bara de formule si tastaţi la dreapta referinţei B2, semnul minus (-), pentru ecuaţia dumneavoastră. 6. Poziţionaţi cursorul pe celula B3 şi daţi clic. Din nou, adresa celulei apare în bara de formule. 7. Apăsaţi ENTER pentru a termina formula. Dacă aţi introdus valori în celulele B2 si B3. valoarea conţinută în B3 este scăzută din valoarea din B2, iar diferenţa apare în celula B4.

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 1 Crearea formulelor Formulele se referă la celule, nu la numere Când lucraţi cu formule, ţineţi minte că: • O formulă cu referinţe la celule (cum ar fi B6*B7) va efectua calculele indicate în formulă indiferent de numerele aflate în acele celule. Puteţi schimba numerele din celule, dar formula va efectua aceeaşi sarcină pe care i-aţi repartizat-o. • Puteţi să creaţi şi o formulă care conţine numere, nu referinţe la celule. Totuşi formulele, cu multe numere în ele, vor necesita să vă reîntoarceţi de multe ori la ele, pentru a face ajustările de rigoare; nu veţi putea modifica pur şi simplu, numărul din celulă. • Multe formule sunt un amestec de referinţe la celule şi numere fixe. Date1e care se pot schimba sunt cele din celule, în timp ce o valoare fixă poate fi inserată direct într-o formulă ca un număr. Ordinea operaţiunilor în formule. Parantezele care conţin operaţiuni. Ridicarea la putere. Înmulţirea şi împărţirea Adunarea şi scăderea. Aplicarea de formule la noi celule Se pot copia formulele dintr-o celulă în alta. De exemplu, dacă creaţi o ecuaţie pentru a aduna toate numerele din coloana D, se poate utiliza o formulă similară pentru coloanele E şi F. Fiecare dintre următoarele metode de copiere ale formulelor produce rezultate diferite: • Pentru a aplica o formulă pe care aţi creat-o într-o coloană si pentru a o muta la alte coloane, selectaţi colţul din dreapta al celulei-formulă şi trageţi orizontal, peste coloanele ţintă (figura 2). Acest proces copiază formula în fiecare coloană, şi, de fiecare dată, formula se schimbă pentru a se referi la celulele din noua sa coloană. Aceasta se numeşte o referinţă relativă ia celule (spre deosebire de o referinţă absolută). • Pentru a muta o formulă într-o nouă celulă, laolaltă cu referinţele sale, daţi clic, pe celula-formulă, cu săgeata mouse-ului (daţi clic pe marginea celulei) şi trageţi-o într-un alt loc. Dacă cursorul nu este exact peste marginea celulei, el nu va arăta ca o săgeată. • Dacă se doreşte ca să mutaţi formula dumneavoastră într-o nouă celulă (nu să o copiaţi) şi ca formula să se refere la celulele din coloana de unde aţi mutat-o, ţineţi apăsată tasta CTRL în timp ce trageţi formula.

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 2: Aplicarea de formule la noi celule Trageţi formula pe care aţi creat-o în celula B4, în celulele C4, D4 şi E4. Formulele copiate vor efectua acum calcule pentru noile lor coloane, nu pentru coloana B.

Mutarea simultană a formulelor Pentru a muta sau a copia un grup de formule, ţineţi apăsată tasta SHIFT în timp ce selectaţi formulele, eliberaţi tasta SHIFT, iar apoi mutaţi-le. Când trageţi formule grupate într-o nouă locaţie, formulele se vor referi la setul iniţial de celule. Dacă ţineţi apăsată tasta CTRL, formulele care vor fi copiate se vor referi la celulele din noua coloană. Mutarea unei formule în sus sau în jos într-o coloană nu afectează celulele la care se referă.

Operatorii din formulele Excel Pentru a fi explicaţi mai uşor, operatorii programului Excel pot fi împărţiţi în patru categorii generale: aritmetici, de comparaţie, de text şi de referinţă. În majoritatea cazurilor veţi utiliza operatori aritmetici. Ceilalţi sunt utili pentru proiecte mai complexe.

Operatorii aritmetici Colecţia standard de operatori aritmetici este: Operator + * / %

Efectuează Adunare Scădere Înmulţire Împărţire Procentaj

PDF created with pdfFactory trial version www.pdffactory.com

^

Ridicare 1a putere

Exemple: • =B5*10% calculează 10 la sută din conţinutul celulei B5. • =B5^2 calculează pătratul conţinutului celulei B5.

Operatori de comparaţie Operatorii de comparaţie vă permit să inspectaţi două valori şi să ajungeţi la o concluzie în privinţa valorilor lor relative. Ei sunt de obicei cuplaţi cu funcţiile logice din Excel Iată operatorii de comparaţie: Operator Semnificaţie = Egal cu > Mai mare decât >= Mai mare sau egal cu < Mai puţin decât <= Mai puţin sau egal <> Diferit de

Operator de text Singurul operator de text al programului Excel este semnul &. Acesta este utilizat pentru a combina textul. De exemplu, dacă aveţi cuvântul „cow” în celula C7 şi cuvântul „boy” în C8, formula =C7&C8 va crea şiru1 de text „cowboy”. Operatori de referinţă Excel oferă şi operatori de referinţă. Cea mai obişnuită referinţă este la un domeniu de celule. De exemplu, expresia B1:C3 se referă la celulele B 1, C3 şi la toate celulele dintre ele. Operatorul de referinţă este semnul : . Adică veţi folosi două puncte pentru a separa prima şi ultima celulă dintr-un domeniu. Referirea la celule în formule Când tastaţi numele unei celule într-o formulă, aţi creat o referinţă. Ea oferă formulei o legătură cu acea celulă. Să examinăm diferenţa dintre formulele care se referă la o singură celulă şi formulele care lucrează cu mai multe celule deodată. Unele formule efectuează un calcul cu referire la o anumită celulă. Aceasta este o referinţă la o singură celulă. Dacă se doreşte ca formula să se refere la o celulă, daţi clic pe celula respectivă sau tastaţi adresa celulei în bara de formule. Iată un exemplu de referinţă la o singură celulă: =(B3/8)*115%

PDF created with pdfFactory trial version www.pdffactory.com

iar Excel va insera automat domeniul în formulă. deci. În următorul exemplu. In exemplul următor. Scopul unui tabel de căutare este. inseraţi două puncte între două adrese de celule. 10. Aşa cum se vede din acest exemplu. In exemplul de mai sus. coloana A). în timp ce celulele B3 la B5 conţin preţurile. Conţinutul celulelor din B3. pentru a specifica un domeniu de celule. se pot utiliza tabele de căutare care să cuprindă atât text. acela de a permite specificarea unui domeniu de numere introduse într-o anumită coloană va declanşa un anumit rezultat într-o altă coloană. B4 si B5 a fost înlocuit cu text. cât şi numere. PDF created with pdfFactory trial version www. celula B 10 conţine o formulă a unui tabel de căutare şi afişează rezultatele unei formule aplicabile. Observaţie: În loc să introduceţi un domeniu de celule într-o formulă. Tabelul de căutare a fost creat pentru a oferi cele mai scăzute preţuri ($7. Aşa cum puteţi vedea. cantitatea pe care o introduceţi în coloana A (de exemplu.Această formulă împarte conţinutul celulei B3 la 8 şi apoi înmulţeşte rezultatul cu 115%. Exemplu: Tabelul de căutare constă din domeniul de celule A3:B5. coloana B) pentru cumpărarea celei mai mari cantităţi (50 sau mai mult.75. Celulele A3 până la A5 conţin cantităţi. Formula va examina apoi automat toate celulele dintre ele. 25 sau 50) face ca un preţ special al materialelor să apară în coloana B. Unele formule calculează un întreg domeniu de celule. (8*SUM(B3:B5)*115%) În acest exemplu. Uneori.com . Cumpărarea unui volum mai mic de materiale (să zicem 10 sau mai puţin). daţi clic şi trageţi peste toate celulele pe care doriţi să le includeţi. Excel inserează diferite cuvinte în funcţie de cantităţile comandate. celulele de la B3 până la B5 reprezintă domeniul de referinţă asupra căruia va acţiona formula. face ca celula adiacentă din coloana B să afişeze un preţ mai mare pentru un bilet. formula înmulţeşte 8 cu suma celulelor de la B3 la B5 si apoi înmulţeşte produsul cu 115%. inclusiv cele două celule. Folosirea tabelelor de căutare Tabelele de căutare sunt matrice speciale (domenii de celule) create astfel încât o funcţie de căutare să poată folosi datele.pdffactory.

cum ar fi prezenţa unei anumite fraze de text.08 Figura 3: Formula supraveghează celula G7 pentru prezenţa textului “IS”.Tehnici avansate de lucru cu formule Există formule care declanşează acţiuni bazate pe anumite criterii.pdffactory. PDF created with pdfFactory trial version www. Semnificatia formulei: Daca celula G7 contine “IS” atunci inmulteste B19 cu 1.com . a unui număr sau a unei date.

”N/A”) Interpretare: „Dacă celula G7 conţine ‘IS’. Celula B20 va fi celula-formulă care va conţine atât formula. figura 4. trebuie să se tasteze: Pentru a crea suma achiziţiilor. „Ori de câte ori câmpul Stat conţine ‘IS’. Se dă clic pe celula în care se doreşte să apară formula şi apoi pe semnul egal de pe bara de formule. Pentru a termina formula.08. Pentru a crea o formulă care adaugă numerele din coloana B şi care afişează rezultatele în B:19. se apasă Enter sau clic din nou pe semnul egal. afişează N/A. Construirea unei formule Foaia de calcul din figura 3 are un câmp referitor la stat. iar funcţia. Se tastează formula Sum(B11:B15) (Excel adaugă automat semnul egal).B19*1. 4: Caseta de dialog a formulei IF. • Suma cumpărăturilor se af1ă în celula B19. trebuie să i se ordone să supravegheze îndeplinirea unei anumite condiţii. suma apare în celula B19). Formula ESTE: =IF(G7=”IS”. Se selectează funcţia IF din lista derulantă. care va conţine suma dintre totalul cumpărăturilor şi taxa pe valoare adăugată. • Această formulă va apărea într-un câmp etichetat Total General.pdffactory. 3. Caseta de dialog are trei linii în care se introduc diferite părţi ale formulei. adaugă TVA la totalul cumpărăturilor. Altfel.com . PDF created with pdfFactory trial version www. Se selectează locul în care se doreşte să apară suma achiziţiilor (în acest exemplu.” Stabilirea unei condiţii cu ajutorul funcţiei if 1. Se dă clic pe săgeata cu vârful în jos af1ată în stânga barei de unelte şi se derulează în jos.08 la sută. Se dă clic pe semnul egal din bara de formule. Fig. Pentru a face ca o foaie de calcul să aleagă între două acţiuni. Apare o casetă de dialog.” • Câmpul Stat este celula G7.Celula B 19 arată suma tuturor achiziţiilor (cantitatea comenzilor) care sunt listate în coloana B. atunci înmu1ţeşte celula B19 cu 1. cât şi totalul general afişat. se fac următorii paşi: 1. 2.

Value_if_true Se specifică ce se va întâmpla dacă se îndeplineşte condiţia (True). Adunarea rapidă a numerelor Pentru a aduna un rând sau o coloană de cifre. G7). În acest exemplu. In acest exemplu. se utilizează facilitatea AutoSum. Linia aflată imediat sub. pentru ca formula să funcţioneze).Logical_test Se specifică condiţia a cărei îndeplinire trebuie să o verifice formula. iar referinţa la celulă va apărea în formulă. se dă clic cu butonul drept oriunde pe bara de stare din Excel (aflată în partea de jos a ecranului) şi se selectează funcţia adecvată (fig. se dă clic pe celulă (în acest caz. trebuie să fie tastat în celula G7. Se tastează =“IS” (inclusiv ghilimelele) pentru a stabili condiţia pe care o va căuta formula. şi caseta principală de dialog a formulei este înlocuită cu o singură linie af1ată în partea de sus a ecranului.pdffactory. Această parte a formulei începe cu o referinţă la celulă. Se selectează întregul rând sau întreaga coloană de cifre care se doresc a fi adunate şi se dă clic pe butonul AutoSum. (orice text introdus. atunci taxa pe valoare adăugată ar trebui adunată cu suma achiziţiilor. sau la dreapta grupului de numere selectat. Se revine la caseta de dialog a formulei IF 4. Această celulă este 07. se pot face rapid calcule obişnuite fără a mai apela la formule. dacă textul „IS” apare în celula Stat. 5). Această libertate de mişcare poate fi importantă dacă lista de numere creşte şi este nevoie de spaţiu pentru a adăuga altele. în coloana taxei pe valoare adăugată va apărea un simplu N/A (non aplicabil). In acest caz. va afişa suma acestor numere. formula trebuie să caute textul „IS” în celula pe care o definită ca fiind celula Stat. Se dă clic din nou pe butonul Range Selector (af1at în dreapta) şi caseta de dialog a formulei IF se va extinde. 3. AutoSum generează de fapt o formulă care este localizată în celula ce conţine suma.Se dă clic pe butonul Range Selector af1at la dreapta primei linii. permiţând introducerea restului formulei.com . Value_if_false Se specifică ce ar trebui să se întâmple dacă textul „IS” nu apare în celula State. Se poate muta celula-formulă şi ea se va referi tot la acelaşi grup de celule. Calcule instantanee Unele calcule importante pot fi făcute fără a mai implica direct o formulă. Efectuarea de calcule obişnuite pentru a extrage informaţii din celulele selectate Când este nevoie de informaţii din anumite celule. Pur şi simplu se selectează celulele. Elaborarea liniei logical_test Trebuie stabiliţă condiţia pe care se doreşte ca formula să o supravegheze. În loc să se tasteze adresa celulei. Se poate utiliza această metodă pentru a obţine rapid PDF created with pdfFactory trial version www. 1. 2.

sau chiar pentru a totaliza celulele aflate în diferite părţi ale foii de calcul. localiza valoarea minimă sau maximă. Clic cu butonul drept pe bara de stare pentru a vedea rezultatul altor calcule Proiectarea datelor fără ajutorul unei formule Nu toate colecţiile de date necesită o formulă. Această facilitate este utilă. Se poate face şi media unui grup de numere. Figura 5: Selectaţi celulele. Totuşi.pdffactory. sau muta acest rezultat într-o celulă diferită.com .suma unui rând sau a unei coloane. bazată pe valorilor din lunile precedente (figura 6). sau calcula numărul de celule completate dintr-o selecţie. Se pot face proiecţii bazate pe o serie de numere. iar suma lor va apărea în partea de jos a ecranului Excel. PDF created with pdfFactory trial version www. când se doreşte să se determine care va fi evoluţia unor parametri în următoarele luni. nu se poate copia rezultatul în clipboard. Excel utilizează relaţiile între numerele dintr-un grup de celule selectate si oferă următoarea secvenţă logică de numere în celulele vecine. Această facilitate este pur informativă. care să indice care vor fi valorile următoare.

Se dă clic pe primul număr din serie. apăsând tasta SHIFT în timp ce se dă clic pe fiecare număr (sau selectaţi domeniul dintre cele două numere dând clic şi trăgând). se parcurg următoarele etape: 1.Fig. Proiectarea valorilor între anumite numere date Dacă foaia de calcul are valori de început şi de sfârşit. Excel poate umple celulele dintre cele două valori cu o suită de numere. Se selectează numerele de la care porneşte proiecţia. Se plasează mouse-ul peste colţul din dreapta-jos al selecţiei (un pătrat mic. 2. nu cu formule.pdffactory.com . selectaţi Fill din meniul Edit şi alegeţi Series. Se dă clic şi se trage în jos. faceţi următoarele: 1. Selectaţi numărul iniţial şi numărul ţintă. ţinând apăsată tasta SHIFT şi apoi dând clic pe ultimul număr din această serie. După ce aţi selectat domeniul. Va apărea caseta de dialog Series. negru) şi săgeata mouse-ului se va transforma într-o cruciuliţă. Proiectarea instantanee a datelor viitoare Pentru ca Excel să analizeze relaţia dintre un set de numere şi apoi să determine care numere vor urma în mod logic. Noile celule sunt umplute cu text sau date numerice. 2. Noile celule continuă conform modelului stabilit de celulele selectate mai înainte. Pentru a proiecta valorile dintre două numere. sau dând clic şi trăgând de la primul la ultimul număr. se pot proiecta evoluţiile pentru următoarele luni. 6: Selectând cifrele din ianuarie şi februarie şi apoi trăgând la dreapta. PDF created with pdfFactory trial version www. selectând câte celule se doreşte. Utilizaţi această facilitate atunci când trebuie să aflaţi ce anume s-a întâmplat între două rezultate.

să presupunem că o formulă din celula A15 se referă la celula A1. De exemplu. pe de altă parte. Sub setările Calculation. se apăsă F9.Pe panoul In din Series se dă clic pe Columns. De exemplu. pentru a recalcula manual o foaie de calcul. Dacă se copiază formula din A15 şi se lipeşte în celula B15. chiar dacă se copie şi se lipeşte în alte celule. absolute şi mixte Referinţele relative. se selectează Options din meniul Tools şi se dă clic pe pagina Calculation.pdffactory. Figura 7: Se utilizează comanda Series pentru a completa numerele dintre cele două valori existente la cele două capete ale rândului sau coloanei. O referinţă absolută. De acum încolo. Utilizarea de referinţe relative. Dacă se doreşte să se dezactiveze opţiunea de recalculare automată. Se verifică daca este selectată opţiunea Linear şi se dă clic OK. absolute şi mixte sunt foarte utile atunci când se doreşte să se copieze sau să se lipească celule şi să se mute pe foaia de calcul. dacă o formulă lin celula A l5 se referă la celula A1. In afara cazului în care se comandă ceva contrar. Excel recalculează întotdeauna înainte de a salva. atunci ea se va referi întotdeauna la celula A1. Toate referinţele sunt relative în afara cazului în care se specifică a fi absolute.com . se referă întotdeauna la aceeaşi celulă. indiferent unde este copiată şi lipită formula pe foaia de calcul. PDF created with pdfFactory trial version www. referinţa relativă va indica apoi spre celula B1. Excel umple celulele dintre pornire şi ţintă. Excel recalculează de fiecare dată când se schimbă vreun număr pe o foaie de calcul. O referinţă variabilă va varia în funcţie de locul în care este copiată formula. se dă opţiunea Manual. Facilitatea de recalculare automată din Excel În mod normal.

Apăsaţi F4. PDF created with pdfFactory trial version www. aşa cum indică si numele.pdffactory. Se pot crea trei tipuri de referinţe mixte: • Referinţe mixte care indică spre o coloană specifică şi un rând relativ (cum ar fi $A1) • Referinţe mixte care indică spre un rând specific şi o coloană relativă (cum ar fi A$1) • Referinţe mixte care indică spre o foaie de calcul specifică şi spre un rând sau o coloană relative (cum ar fi Sheet2: $A$1) Pentru a schimba tipul de referinţă. în parte relativă şi în parte absolută. se parcurg paşii următori: 1. Plasaţi punctul de inserţie în interiorul sau lângă celula respectivă.O referinţă mixtă este.com .

com . A2 și A4. etc. potrivit cerințelor de exploatare a aplicațiilor. =TRUE(). În exemplele luate. Alte funcții (majoritatea cazurilor) nu au echivalent în rândul formulelor. Acest separator poate fi virgulă sau punct și virgulă. Nici un spațiu nu este admis ca separator între cele trei componente ale funcțiilor predefinite. Exemplul următor ilustrează diferite argumente care se pot întâlni la o funcție predefinită: Funcție predefinită Tip argument =SUM(A2:A7) plajă continuă de celule =SUM(A2:A7.18) listă de valori dată calendaristică =IF(A1=A2. =TODAY(). Folosirea funcțiilor predefinite este supusă unor reguli foarte stricte.semnul "egal"= (sau semnul “plus” +. a căror nerespectare poate conduce la un rezultat incorect sau generator de eroare.10.A4). formula de adunare a conținutului celulelor A1. adică =A1+A2+A4 este echivalentă cu funcția =Sum(A1:A2.A11:A20) plajă discontinuă de celule =MAX(59. de la cele mai simple până la cele mai complexe. Unele funcții predefinite sunt echivalente formulelor: de exemplu. execută operații și prelucrări specifice. pentru compatibilitate cu 1-2-3). Există și funcții care nu au nevoie de precizarea argumentului.Rau") valoare logică =INT(SUM(D1:D9) funcție predefinită =UPPER("Ionescu") șir de caractere PDF created with pdfFactory trial version www.numele funcției. Argumentele se află închise între paranteze rotunde și sunt separate printr-un separator zecimal. Cea mai mare parte a funcțiilor predefinite au trei componente: . .pdffactory. rezultatul scontat neputând fi obținut decât prin aplicarea funcțiilor predefinite sau putând fi obținut pe cale obișnuită. fiind destinate rezolvării unor probleme și aplicații ce conțin elemente predefinite de calcul. 2. după cum a fost configurat inițial sistemul. se va lua în considerație ca separator zecimal caracterul "punct și virgulă".2 UTILIZAREA FUNCTIILOR EXCEL Procesorul de tabele Excel include un număr mare de funcții predefinite (232). Funcțiile Excel permit efectuarea de calcule și prelucrări diverse.36."Bun".A9. de exemplu:=NOW().unul sau mai multe argumente.1 FUNCȚII PREDEFINITE Funcțiile predefinite reprezintă formule speciale care respectând o anume sintaxă. dar oferă și posibilitatea ca utilizatorul să-și definească propriile funcții.84) listă de valori =DATE(62. . prin aplicarea succesivă a mai multor operații și formule.

o locație: este o adresă.=REPT("Ionescu". o formulă sau funcție predefinită care returnează un număr. un număr. AND( ). corespunzător sintaxei.com . Cea mai simplă metodă o reprezintă introducerea nemijlocită a funcțiilor predefinite. OR( ) pentru o adresă de celulă sau un nume de câmp. un nume de cămp. <=. 2.52).3) șir și valoare numerică =FACT(6) valoare numerică Excel acceptă următoarele tipuri de argumente: .un text: orice secvență de caractere inclusă între ghilimele. >=. . se alege funcția respectivă. un nume de câmp.o condiție: este o expresie logică care folosește unul din operatorii logici =. <>. <. Se alege fun¡ia doritå 4. Apoi. Un șir de caractere folosit într-o funcție trebuie pus între ghilimele pentru a nu fi confundat cu un nume de câmp. Se completeazå interactiv sintaxa 1. Se pozi¡ioneazå cursorul acolo unde se va insera func¡ia Fig 2 Etapele inserării unei funcții PDF created with pdfFactory trial version www. o formulă sau funcție care generează o adresă sau un nume de câmp. Funcția evaluează condiția și procedează la diferite operații în funcție de faptul dacă condiția este adevărată sau falsă. Toate tipurile de argumente pot fi folosite împreună într-o funcție atunci când sintaxa este respectată. Condiția argumentului poate fi deci o formulă. se activează selectorul funcțiilor predefinite aflat pe bara de editare sau se activează comanda Insert Function (figura 1. adresa sau numele unei celule care conține un număr. În cel de-al doilea caz. din caseta de dialog Paste Function. se validează și se completează sintaxa generată automat. . un text. Se apaså butonul “egal” de pe bara de editare 3. >. NOT( ).o valoare: un număr. în celula unde se va opera calculul respectiv (metodă recomandată). O funcție predefinită se poate introduce într-o celulă tastând-o ca atare (conform sintaxei) sau prin intermediul generatorului de funcții.pdffactory. . adresa sau un nume de câmp ce conține o etichetă tip șir de caractere sau o formulă sau funcție care returnează o etichetă.

. 3.53. sau din categoriile de funcții specializate (Financial. se alege funcția dorită. . utilizarea asistentului de funcții presupune parcurgerea a doi pași: . Categorii de funcții predefinite Excel posedă un set impresionant de funcții predefinite. Date & Time.pasul 1 semnifică alegerea tipului de funcție. grupate pe tipuri potrivit utilității acestora la rezolvarea diferitelor probleme. 4 Asistentul de funcții/Exemple de date Acest procedeu este prezentat în figura 3 Funcția poate fi aleasă din lista funcțiilor cele mai utilizate (Most Recently Used).Apelarea selectorului de funcții se face prin apăsarea butonului = (egal) aflat pe bara de editare. Statistical . Fig. De regulă.com .pasul 2 presupune completarea interactivă a sintaxei funcției respective conform exemplului prezentat în figura 4. în număr de 232. după care se deschide lista funcțiilor predefinite. după care se completează interactiv argumentele. din lista tuturor funcțiilor disponibile ordonate alfabetic (All). Generatorul de funcții sau mai corect asistentul de funcții este prezentat în figura 1.) În celula din care s-a apelat funcția predefinită va apare sintaxa funcției selectate și validându-se operația prin butonul OK se va genera rezultatul respectivei funcții. PDF created with pdfFactory trial version www.pdffactory. Math & Trig..

5 Categorii de funcții 1. de la cele mai simple la cele mai complexe. PDF created with pdfFactory trial version www. 2. 2. funcții bază de dată (Database): efectuează diferite calcule asupra unor rubrici. întro bază de date.pdffactory.1.1 FUNCȚIILE MATEMATICE ȘI TRIGONOMETRICE Funcțiile matematice și trigonometrice (Math & Trig) permit efectuarea diferitelor calcule. 6. precizând că cea mai mare a parte a lor sunt perfect compatibile ca sintaxă și ca semnificație cu funcțiile arond aferente procesorului de tabele LOTUS 1-2-3.com . 8. funcții matematice și trigonometrice (Math & Trig): permit efectuarea de calcule matematice simple și complexe. În continuare. funcții statistice (Statistical): permit efectuarea unor calcule statistice utilizând serii de valori. 5. grupate pe următoarele categorii (figura 5): Fig. funcții calendar sau dată calendaristică (Date & Time): manipulează numere care reprezintă date calendaristice sau timp. funcții de căutare și consultare (Lookup & Reference): permit localizarea conținutului unei celule. prezentarea a celor mai importante 99 de funcții predefinite. funcții logice (Logical): determină valoarea de adevăr sau de fals .corespunzător unei condiții. 3. pentru rezolvarea de aplicații ce solicită instrumente matematice și trigonometrice de uz curent. 7. prezentăm cele mai importante funcții predefinite.Astfel. 9. considerăm suficientă în rezolvarea aplicațiilor EXCEL. 4. funcții text sau șir de caractere (Text): oferă informații legate de textul existent în celule și permit operații cu etichete. corespunzător unor criterii definite. funcții de informare (Information): afișează informații despre celule și câmpuri. funcții financiare (Financial): permit realizarea de calcule economico-financiare predefinite.

PDF created with pdfFactory trial version www.cu butonul Auto Sum. după care se activează butonul AutoSum prin dublu-click. 6 Funcția SUM =SUM(listă) adună valorile dintr-o listă precizată ca argument. 7 Funcția AutoSum . Auto-însumarea operează astfel pe linie sau pe coloană până acolo unde se întâlnește primul semn de discontinuitate (figura 6).com .Fig.pdffactory. Funcția de însumare este completată . Dublu-clik pe butonul AutoSum Se selecteazå celula sau plaja de celule unde se va calcula automat suma Fig. Lista poate conține câpuri continue sau discontinue referite prin adrese (coordonate) sau prin nume de câmp(uri). Pot exista mai multe cazuri (exemplificate în figura 6): .spre ușurința utilizatorului .calculelor) și se activează butonul AutoSum prin dublu-click. inclusiv zona unde se vor plasa rezultatele însumării (o linie mai jos și/sau o coloană mai la dreapta). =PRODUCT (listă) multiplică valorile conținute într-o listă. Funcția generată de butonul respectiv însumează pe linie sau pe coloană valori adiacente (valorile nu trebuie să fie întrerupte în succesiunea lor de celule vide sau de celule care să conțină texte). Un exemplu edificator este prezentat în figura 8.se plasează cursorul acolo unde se dorește a se calcula suma (eventual selectând o plajă de celule pe linie sau o coloană unde să se depună rezultatele .se selectează plaja de celule de însumat.

pdffactory. 8 Funcția PRODUCT Exemple de referințe-tip ar fi: 1 AVERAGE Medie 2 COUNT Numără 4 MAX Maximum 5 MIN Minimum 6 PRODUCT Produs 9 SUM Sumă PDF created with pdfFactory trial version www.=SUBTOTAL(referință-tip.com .câmp de regrupat) calculează un rezultat ce provine dintr-o grupare a datelor operând diferite operații specifice (conform referințelor-tip) asupra unui câmp de regrupat. Fig.

În acest caz câmpul de evaluat reprezintă valoarea (E31:E36). =ABS(număr) returnează valoarea absolută dintr-un număr. iar apoi adună rezultatele obținute. =SUMPRODUCT(listă) multiplică valorile situate în celulele corespondente. Un exemplu de astfel de transformare este prezentat în figura 10. 9 Funcțiile SUMTOTAL. criteriul este de tip text și anume “>10000000”. câmp de însumat) adună conținutul celulelor potrivit unui criteriu dat. adică suma dintre produsele cantităților (C31:C36) și prețurilor (D31:D36). aferente unor serii de câmpuri.format) convertește numerele din format cifric arab în text ce semnifică numere cu format cifric roman. =SUMIF(câmp de evaluat. =LN(număr) calculează logaritmul natural Fig. Formatul –cu valori de la 0 la 4. Numărul arab de transformat trebuie să fie întreg. =RAND() returnează un număr aleator cuprins între 0 și 1. 10 Funcția ROMAN al unui număr specificat ca argument.În exemplul prezentat în figura 9 se calculează suma (referința-tip 9) valorilor produselor vândute pe 01-Iul-98 (câmpul de regrupat este E31:E33). În exemplul din figura 9 se calculează prin funcția SUMIF.reprezintă gradul de concizie al numărului roman nou generat. 19 PDF created with pdfFactory trial version www. iar câmpul de însumat este comisionul (F31:F36).000. SUMIF comisioanelor la vânzările de produse (5% din valoare) pentru valorile vândute de peste 10. =LOG(număr.000 lei.com . suma Fig.pdffactory. SUMPRODUCT. În exemplul prezentat în figura următoare se calculează prin funcția SUMPRODUCT valoarea totală a vânzărilor. criteriu.bază) returnează logaritmul unui număr într-o bază specificată. =ROMAN(număr.

13 Funcția de rotunjire număr specificat de zecimale.pdffactory. 11 Funcții trigonometrice și POWER și SQRT =LOG10(număr) returnează logaritmul în baza 10 dintr-un număr.7182818…. Y. Fig. =POWER(număr. =ROUND(X. =SQRT(număr) calculează rădăcina pătrată a argumentului. Baza este o constantă și are valoarea 2.putere) returnează rezultatul unui număr ridicat la putere (figura 1. 12 Funcții matematice =MOD(X.Fig. =COS(X) calculează cosinusul argumentului X în radiani . =SIN(X) returnează valoarea argumentului X în radiani. =ASIN(X) calculează arc-sinusul argumentului X în radiani (similar =ACOS(X) și =ATAN(X). =FACT(număr) calculează factorialul unui număr pozitiv.Y) calculează restul împărțirii argumentului X la arg.com . 20 PDF created with pdfFactory trial version www. =DEGREES(unghi) convertește radianii în grade. =EXP(X) calculează baza logaritmului natural ridicată la puterea X. =TAN(X) calculează tangenta argumentului X în radiani. =PI() returnează valoarea numărului PI..număr de zecimale) rotunjește argumentul numeric X la un Fig. =RADIANS(unghi) convertește grade în radiani.61).

=MEDIAN(listă) calculează valoarea mediană dintr-o listă. text sau o condiție).3 FUNCȚIILE DE INFORMARE Funcțiile de informare (Information) afișează informații referitoare la celule și câmpuri: =ISBLANK(X) determină dacă X sau amplasamentul definit de argumentul X este sau nu o celulă vidă. =COUNT(listă) numără celulele ocupate dintr-o listă de câmpuri. 21 PDF created with pdfFactory trial version www. Funcția returnează TRUE – adevărat.1. returnând după caz TRUE sau FALSE. 2. =MIN(listă) returnează cea mai mică valoare din listă. Argumentul X poate fi o valoare.dacă amplasamentul este o celulă vidă și FALSE –valoarea logică de fals. altfel returnează FALSE sau fals.1. =ISTEXT(X) verifică dacă X conține un șir de caractere. fără a-l rotunji.pdffactory. =AVERAGE(listă) calculează media valorilor din listă. =GEOMEAN(listă) calculează media geometrică a valorilor dintr-o listă =HARMEAN(listă) calculează media armonică a valorilor dintr-o listă. Funcția returnează TRUE -valoarea logică de adevăr. 14 Funcții statistice 2. formule numerice.2 FUNCȚIILE STATISTICE Funcțiile statistice (Statistical) permit efectuarea de calcule statistice utilizând serii de valori: =MAX(listă) returnează cea mai mare valoare din listă. =ISERROR(X) verifică dacă argumentul X conține o valoare de tip eroare. returnând după caz TRUE sau FALSE. =ISNUMBER(X) verifică dacă X conține o valoare numerică.=INT(număr) afișează partea întreagă a argumentului (a numărului real). returnând după caz TRUE sau FALSE. =ISNONTEXT(X) verifică dacă X nu conține un șir de caractere. O parte din funcțiile de informare sunt exemplificate împreună cu funcțiile logice. Exemplul din figura 14 ilustrază utilizarea funcțiilor statistice prezentate: Fig. o adresă.dacă X conține un număr.com . Lista poate fi compusă din: numere. =ISLOGICAL(X) verifică dacă argumentul X conține o valoare de tip logic returnând după caz TRUE sau FALSE.în caz contrar. adrese sau nume de câmpuri.

NOT).X.2. =NOT(evaluarea logică) inversează valoarea argumentului.) returnează valoarea logică TRUE dacă toate argumentele sunt adevărate și valoarea logică FALSE dacă unul sau mai multe argumente sunt false. În aplicația de mai sus s-a construit o structură condițională imbricată. OR. =FALSE() returnează valoarea logică TRUE. 15 Funcții logice (I) Într-un al doilea pas se calculează impozitul pe salarii dacă coloana “Evaluare logică” (s-a utilizat funcția NOT()) nu conține valoarea logică FALSE.2 FUNCȚIILE LOGICE Funcțiile logice (Logical) determină evaluarea unor expresii și în funcție de acestea furnizează acțiuni sau rezultate complexe. generând valori de adevăr sau de fals corespunzător unor condiții (acestea pot fi evaluate și înlănțuite cu ajutorul operatorilor logici AND. 1. =TRUE() returnează valoarea logică TRUE. Într-un prim pas s-a construit o coloană de “Evaluare logică” care returnează în funcție de un test făcut asupra salariului brut. =OR(evaluare logică1.Y2 și așa mai departe. valoarea logică de fals (FALSE) dacă salariul brut este text.com . Pentru exemplificarea funcției logice IF.evaluarea logică2.65. generându-se potrivit condițiilor ulterioare.evaluare logică2. =IF(condiție.Y1 sau X2. În locul argumentelor X sau Y se pot imbrica alte structuri condiționale IF. generează argumentul X dacă condiția este adevărată sau argumentul Y dacă aceasta este falsă. unde s-a exemplificat într-o ramură IF și funcția logică AND. =AND(evaluare logică1. Fig. returnând după caz TRUE sau FALSE.pdffactory. blank sau este mai mic ca zero și returnează valoarea logică de adevăr (TRUE) în caz contrar.. Argumentele X sau Y pot fi valori.. nume de câmpuri sau adrese de celule sau câmpuri care conțin aceste valori. X1.) returnează valoarea logică TRUE dacă orice argument este adevărat și valoarea logică FALSE dacă toate argumentele sunt false.. șiruri de caractere (plasate între ghilimele).Y) testează argumentul condiție și în funcție de rezultatul evaluării logice.. furnizăm următoarea aplicație pentru calculul impozitului pe salariile colaboratorilor angajați cu Convenție Civilă de Prestări Servicii: Aplicația este astfel construită încât să exemplifice (didactic) toate funcțiile logice (figura 1. 22 PDF created with pdfFactory trial version www..66)..

de unde informația va fi consultată sau extrasă. .pentru o bază de date. =DAVERAGE(bază de date.câmp de criterii: reprezintă unul sau mai multe câmpuri continue în care se pot preciza restricțiile.rubrica: semnifică atributul sau proprietatea asupra căruia operează calculul făcut de funcția tip bază de date. caută.Fig.rubrică.minim.pdffactory.rubrică.1.câmp de criterii) returnează cea mai mică valoare dintr-o rubrică aferentă unei baze de date. după o anumită rubrică. care se regrupează în criterii de selecție la care trebuie să răspundă interogarea respectivă. Fig.valori sau etichete (sumă. corespunzător unui criteriu de selecție. conform unui criteriu de selecție Funcțiile tip bază de date au în mod invariabil aceeași listă de argumente: .baza de date: reprezintă tabelul Excel sub forma unui câmp de date.com .rubrică/nr. potrivit criteriului de 23 PDF created with pdfFactory trial version www.numără) dintr-un câmp de date . Rubrica poate fi identificată prin numele său sau prin numărul de ordine al acesteia în cadrul bazei de date.rubrică.rubrică.corespunzător unei baze de date. 16 Funcții logice(II) 2.maxim. corespunzător unui criteriu de selecție.medie.rubrică/nr. care răspunde unui criteriu de selecție. =DMAX(bază de date. 17 Aplicație pentru funcțiile bază de date =DMIN(bază de date.câmp de criterii) returnează cea mai mare valoare dintr-o rubrică aferentă unei baze de date.rubrică/nr.rubrică/nr.câmp de criterii) calculează media valorilor unei rubrici aferente unei tabele .5 FUNCȚIILE BAZĂ DE DATE Funcțiile bază de date (Database) returnează acțiuni . Principalele funcții tip bază de date sunt: =DSUM(bază de date.câmp de criterii) returnează suma valorilor unei rubrici aferente unei baze de date. .

=ROWS(câmp) returnează numărul de linii pe care îl ocupă câmpul specificat ca argument. Prezentăm în figurile 17. corespunzător unui index numeric.rubrică/nr. Pornind de la un tabel definit pe coordonatele A6:H17. Indexul este un număr cuprins între 0 și 29. Exemple edificatoare de utilizare a funcțiilor tip bază de date sunt ilustrate în figura următoare.6 FUNCȚIILE DE CĂUTARE ȘI CONSULTARE Funcțiile de căutare și consultare (Lookup & Reference) permit căutarea.1.rubrică/nr. Indexul numeric determină care valoare (de tip text. =DGET(bază de date. ce urmează a fi activată sau executată. numerică sau referință celulară) din lista de argumente va fi selectată.pdffactory.rubrică. 18 Modul de utilizare a funcțiilor bază de date =CHOOSE(index-numeric. =COLUMNS(câmp) returnează numărul de coloane aferente câmpului specificat ca argument. Funcția este utilă pentru a regăsi o informație unică. =COLUMN(referință celulară sau câmp) returnează numărul colanei corespunzătoare referinței celulare sau numărul primei coloane pentru câmpul specificat.selecție specificat=DCOUNT(bază de date. urmând ca alte aplicații mai complexe să fie prezentate în detaliu în capitolul ce tratează bazele de date create și exploatate sub Excel.câmp de criterii) returnează conținutul unei rubrici pentru o bază de date. o acțiune sau o valoare.18 câteva exemple de utilizare a funcțiilor tip bază de date.câmp de criterii) numără celulele ocupate într-o tabelă bază de date.listă de valori) returnează în urma unei alegeri dintr-o listă de valori. se pot pune în evidență cu ajutorul funcțiilor tip bază de date. considerat a fi o bază de date care repertoriază facuturile emise de o firmă către clienții săi. corespunzător unui criteriu specificat.com .rubrică. 24 PDF created with pdfFactory trial version www. utilizând câmpuri de criterii definite de utilizator potrivit unor cerințe de interogare. conform unor criterii specificate. identificarea și referirea conținutului unor celule: Fig. =ROW(referință celulară sau câmp) returnează numărul liniei corespunzătoare referinței celulare sau numărul primei linii a câmpului specificat ca argument. informații calculate potrivit unor interogări specifice. 2.

cheie: reprezintă valoarea după care are loc căutarea sau consultarea. iar în rubrica Sort by se va preciza numărul sau numele coloanei după care se va face sortarea) =HLOOKUP(cheie. . Fig. (adresă absolută/relativă sau nume de câmp).com . Argumentul cheie (sub forma unei referințe celulare sau nume de câmp) va fi căutat în prima linie a câmpului de consultare. În figura 19 sunt prezentate mai multe exemple de utilizare a funcțiilor enumerate mai sus. .linie de recuperat) returnează conținutul unei celule ce figurează într-o anumită linie a unui tablou de consultare orizontală. În mod obligatoriu tabelul de consultare va fi sortat crescător după coloana care conține valorile cheii de consultare (comanda Data Sort.=AREAS(referință celulară) indică numărul de zone contigue dintr-un câmp. iar dacă valoarea va fi găsită pe un numărul de linie precizat de ultimul argument. butonul Option și din rubrica Orientation se alege opțiunea Sort left to right. se va selecta tabelul de consultare și se va activa comanda de sortare (de la stânga spre dreapta): Data Sort.pdffactory.coloană de recuperat) returnează conținutul unei celule ce figurează într-o coloană dintr-un tablou de consultare verticală. Dacă valorile cheii nu sunt sortate. Dacă respectivul câmp conține mai multe zone contigue.câmp de consultare. corespunzător valorii cheii de căutare. valoarea respectivă va fi returnată de funcția HLOOKUP. În mod obligatoriu tabelul de consultare orizontală trebuie sortat după valorile crescătoare ale cheii de consultare aflate în prima linie (sortare de la stânga la dreapta). 19 Aplicație pentru funcțiile de căutare și consultare =VLOOKUP(cheie.coloană de recuperat: este numărul coloanei (numerotarea începe cu 1) de unde va fi recuperată informația găsită în tabelul de consultare. 25 PDF created with pdfFactory trial version www. atunci argumentul se mai închide într-o paranteză suplimentară. Sintaxa funcției de consultare verticală admite trei argumente și anume: .câmp (sau tabel) de consultare: este câmpul asupra căruia operează consultarea prin căutarea valorii cheii precizate anterior.câmp de consultare.

Pentru exemplificarea celor două funcții de consultare propunem următoarea aplicație: O societate comercială de distribuție întocmește. Cele două baze de date sunt sortate după valorile crescătoare ale primei coloane și conțin informații pertinente ce concură la realizarea automată a facturii. facturi pentru livrările efectuate. cu ajutorul procesorului de tabele EXCEL. Tarifele de transport sunt grupate într-un tablou în funcție de destinație (prima linie) și de cantitatea transportată (prima coloană).70) și a fost în prealabil sortat de la stânga la dreapta după prima linie. Opțional. “Localitate”. Firma își are înregistrați clienții într-o bază de date (definită pe coordonatele E1:I7) (figura 17) care regrupează elementele de identificare ale acestora (“Client”. 18 Date pentru aplicația de căutare 26 PDF created with pdfFactory trial version www. Tabloul care urmează a fi considerat tabel de consultare orizontală a fost definit pe coordonatele F20:J28 (figura 1. Fig. firma practicând tarife diferențiate în funcție de cantitatea transportată (în tone) și de orașul de destinație. Fig.Dacă informația căutată în tabelul de consultare verticală sau orizontală nu va fi găsită. “Cod fiscal”. “Cont bancar”).pdffactory. 17 Date pentru aplicația de căutare.com . În egală măsură există și o altă bază de date –definită pe coordonatele A20:C28 (figura 18) sub forma unui nomenclator de prețuri pentru fiecare produs în parte. respectiva societate efectuează și transportul mărfii comandate la domiciliul clientului. adică după destinație. “Adresa”. se va returna cea mai apropiată valoare (pe vericală sau pe orizontală) de cheia de consultare.

Fig. codul produsului facturat. În rest toate operațiile sunt făcute automat cu ajutorul formulelor și a funcțiilor Excel.pdffactory. 19 Nomenclatorul de prețuri Factura procesată cu Excel are următoarea formă (figura 19): Utilizatorul va introduce prin tastare. La calculul "Valorii" se va lua în calcul și o cotă variabilă de adaos comercial (celula D10 a fost fixată cu adresă absolută -$D$10. iar “Valoarea facturii” reprezintă suma dintre “Valoare”. "TVA-ul" și "Valoarea facturată". 27 PDF created with pdfFactory trial version www. “Majorările” de întârziere se pot calcula pe tranșe. “Codul fiscal” și “Contul bancar”. se vor recupera automat dintr-un tabel de consultare verticală (definit anterior pe coordonatele E1:I7). cota de adaos comercial. “Majorări” și “TVA”. cantitatea livrată. informațiile legate de acest identificator și anume: “Adresa”. precum și cheltuielile de transport. “Majorările”. La tastarea numelui de client în celula C3. 20 Factura obținută copierea formulei ce calculează valoarea). prin structuri condiționale imbricate. “TVA”-ul reprezintă 22% din “Valoare” + “Majorări”.com . iar opțional dacă se dorește sau nu transport. “Localitatea”. Factura se procesează în mod obișnuit. pentru completarea facturii doar denumirea clientului.pentru a nu se decala la Fig. Interesante de prezentat sunt facilitățile de consultare verticală și orizontală. începând a se calcula într-un prim timp "Valoarea". precum și destinația transportului. Într-un al doilea timp se pot calcula totalurile pe rubricile procesate anterior utilizând clasica funcție SUM.

adică informațiile legate de clientul “Star”. Dacă cheia are valoarea vidă “ISBLANK($C$3) sau (OR()) dacă conține o valoare alta decât text “ISNONTEXT($C$3). Dacă valoarea respectivă există în tabel înseamnă că s-a găsit cheia de consultare și în consecință consultarea verticală se va efectua returnând un rezultat corect. În aceste condiții. corespunzătoare cheii de consultare”.VLOOKUP($C$3. 21 Funcția de consultare verticală Coordonatele cheii și tabelului de consultare au fost blocate prin utilizarea de adrese absolute pentru ca formula ce conține consultarea verticală să poată fi copiată fără ca respectivele coordonate să se decaleze. funcția VLOOKUP nu va semnala lipsa informației din tabel ci va returna informația legată de cea mai apropiată valoare a cheii de consultare.ISNONTEXT($C$3)). se va recupera informația din coloana 2. consultarea verticală va avea următoarea formă: =IF(OR(ISBLANK($C$3).$E$1:$H$7. atunci se va afișa un spațiu (“”). 22 Funcția de consultare verticală Dacă se tastează un client care nu există în nomenclatorul de clienți (în tabelul de consultare verticală).””. Fig. Fig.com . 28 PDF created with pdfFactory trial version www.3)).Astfel în celula C4 s-a scris formula de consultare verticală (VLOOKUP) (figura 21) pentru recuperarea adresei clientului. anume: “se caută cheia de consultare (celula $C$3Client) în tabelul de consultare definit pe coordonatele $E$1:$I$7 și în caz că valoarea este găsită. procedura de consultarea verticală a fost completată cu teste făcute asupra celulei care conține cheia de consultare ($C$3).pdffactory. procedura de consultare verticală a fost completată cu un test de existență a cheii ce consultare în tabelul de consultare”. Acest test de existență verifică dacă valoarea cheii de consultare este găsită în prima coloană a tabelului de consultare. Funcția VLOOKUP nu va semnala inexistența cheii de consultare “Sarmis”. dacă s-ar introduce clientul cu numele “Sarmis”. altfel se va face consultarea verticală. se vor recupera prin VLOOKUP informațiile adiționale corespunzătoare celei mai apropiate valori ale cheii. De exemplu. Pentru înlăturarea acestui neajuns. fapt ilustrat și în figura 22. altfel se va afișa spațiu sau zero (ultimul caz folosindu-se dacă celula respectivă participă ulterior la calcule) sau un mesaj de genul “cheie inexistentă”. Pentru aceasta. Cheia de consultare fiind în acest caz de tip text nu trebuie să aibă valori vide și nici numerice.

pdffactory.VLOOKUP($C$3. Rubricile: “Adresa” –C4-. corespunzător valorilor cheii de consultare declarate la adresa $C$3 (figura 23). “Localitatea” –C5-. recuperânduse după caz. dacă celula C13 – “Cantitatea livrată” – ar fi avut valoarea 3. anume "Cantitatea livrată" coincide logic cu numărul de linie de recuperat orizontal din tablou (astfel. s-a operat un mic artificiu. În exemplul prezentat în figura 25.$E$1:$I$7.se vor recupera prin același procedeu de consultare verticală. adică valoarea cheltuielilor de transport aferente pentru 2 tone transportate) 29 PDF created with pdfFactory trial version www. Consultarea orizontală a tabelului declarat pe coordonatele $F$20:$J$28 are loc după valorile luate de cheia de consultare . Dacă cheia este găsită în tablou. 23 Consultare verticală. anume: în momentul tastării "Codului de produs" este consultat vertical tabelul "PREȚURI" declarat la adresa A20:C28. celula “Cantitatea livrată” va indica numărul liniei de recuperat și va avea valoarea incrementată cu o unitate pentru a exista o concordanță între valorile luate de aceasta și numărul liniei de recuperat. prin funcția VLOOKUP conținutul coloanelor 2. 24 Aplicație de consultare verticală În figura 24 este prezentată procedura completă (cu teste făcute asupra celulei ce conține cheia de consultare și cu test de existență a valorii cheii în tabelul de consultare) de extragere a denumirii produsului.$E$1:$I$7.$G$10 “Destinația”. 3. Dacă nu s-ar fi operat acest artificiu. numărul liniei de recuperat ar fi decalat cu o unitate (adică.Formula de testare a existenței cheii de consultare în tabel este următoarea: IF(VLOOKUP($C$3. se va recupera numărul de linie care va conține valoarea cheltuielilor de transport corespunzătoare destinației specificate.se vor recupera automat: conținutul coloanei 2 și 3 din tablou. aflată la adresa C13). Similar se procedează pentru extragerea prețului din tablou. În mod asemănător se procedează și cu a doua consultare verticală. adică "Denumire produs" și "Preț". s-ar fi recuperat linia numărul 3 din tabel –prima linie conține titlul rubricilor-.””. Fig. nu s-a precizat numărul liniei recuperate. “Cod fiscal” –C6-. prin consultare verticală. corespunzăror valorilor luate de codul produsului.1)<>$C$3. 4. și dacă în tabelul respectiv este găsită cheia de consultare "Cod produs" . Datorită faptului că procedura de consultare orizontală este operațională începând cu linia 1 (care conține invariabil titlurile rubricilor aferente destinației). bancar” –C7. “Cont Fig. și 5.com . ci celula care conține livrată.4)).

$G$10<>HLOOKUP($G$10.).1)). .0.…….ISBLANK($G$10). în procesul de consultare verticală și orizontală.$F$20:$J$28. 30 PDF created with pdfFactory trial version www. căutându-se valoarea luată de “Destinație” în celula $G$10. 25 Aplicație de consultare orizontală .un test făcut asupra celulelor ce conțin: “Destinația” (să nu fie valoare vidă sau numerică) și “Cantitatea livrată” (să nu fie valoare de tip text. Dacă nu există valoarea unei cantități livrate în tabloul de consultare verticală definit pe coordonatele $E$20:$E$28. Procedura de consultare orizontală poate fi completată și astfel îmbunătățită (celula D14) prin următoarele teste: .. dacă transportul este făcut de furnizor (celula $D$8 are valoarea “da”).ISTEXT(C14).$E$20:$E$28. atunci se procedează la testele de mai sus și se execută în final consultarea orizontală. vidă sau zero): =IF(OR(ISNONTEXT($G$10).$F$20:$J$28.com . Tabloul de consultare trebuie în mod obligatoriu sortat alfabetic după prima linie a sa.C14= 0.….pdffactory.un test de existență a “Destinației” (celula $G$10) în prima linie a tabloului de consultare orizontală: =IF(OR(…. .). funcția va returna valoarea zero.IF(……) . Dacă cel puțin unul din argumente este adevărat.1). funcția va returnează valoarea zero. altfel se vor testa și alte condiții de îndeplinit. Figura 26 indică corespondențele creeate între diferitele câmpuri. Dacă “Destinația” este inexistentă în tablou.0. altfel se procedează la consultarea propriu-zisă. recuperându-se numărul de linie ce corespunde logic cu “Cantitatea livrată”. altfel se procedează la consultarea propriu-zisă: (……HLOOKUP($G$10.C14+1)).ISBLANK(C14).un test de existență a “Cantității livrate” în prima coloană a unui tablou de consultare verticală: =IF(OR(C14<>VLOOKUP(C14. Fig.Prin funcția HLOOKUP s-a consultat deci respectivul tablou.procedura ar putea fi completată și cu un test de efectuare a transportului: astfel. altfel cheltuielile de transport vor fi zero. funcția returnează zero.

=WEEKDAY(X) returnează numărul zilei din săptămână corespunzător argumentului X care poate fi de tip număr dată calendaristică sau text în format dată calendaristică. =DAY(număr-dată) generează un număr corespunzător zilei cu valori între 1 și 31.dată sfârșit) calculează numărul de zile între două date calendaristice considerând anul ca având 360 de zile.999988426 pentru ora 23:59:59). un număr cuprins între 0 (1900) și 199 (2099) .000000 pentru ora 24:00:00 și 9.cu zecimale ce reprezintă ora. sub forma unui număr întreg cuprins între 0 și 59. minutului și secundei.lună. =TODAY() returnează un număr-dată corespunzător datei curente.minut.1.zi) calculează numărul-dată pentru data calendaristică specificată ca argument. =DAYS360(dată debut.pdffactory. 26 Consultarea verticală și orizontală. =MONTH(număr-dată) extrage luna dintr-un număr-dată. =HOUR(număr-timp) extrage ora dintr-un număr-timp (0.Fig.secundă) calculează un număr-timp corespunzător orei.7 FUNCȚIILE TIP DATĂ CALENDARISTICĂ ȘI ORĂ Funcțiile tip dată calendaristica și ora (Date & Time) manipulează și operează calcule cu valori numerice ce reprezintă date calendaristice sau timp: =NOW() returnează un număr corespunzător datei curente . sub forma unui număr cuprins între 0 și 23. sub formă de valori cuprinse între 1 și 12. =TIMEVALUE(“șir de caractere”) returnează numărul-timp corespunzător șirului de caractere specificat în format dată/oră (între ghilimele). Corespondențe 2.com . =MINUTE(număr-timp) extrage minutul dintr-un număr-timp. =DATEVALUE("șir de caractere") calculează numărul-dată corespunzător șirului de caractere în format dată calendaristică (șirul trebuie plasat între ghilimele). =YEAR(număr-dată) returnează corespunzător anului.extrăgând rezultatul dintr-un număr-dată. =DATE(an. =TIME(oră. 31 PDF created with pdfFactory trial version www.

28 Funcțiile tip dată și oră 2. =MID(text.X. =PROPER(text) determină scrierea cu majusculă a fiecărei prime litere din textul specificat ca argument. =REPT(text. Un exemplu edificator de utilizare a funcțiilor de tip dată calendaristică și oră este prezentat în figura 28.com .8 FUNCȚIILE TEXT SAU ȘIR DE CARACTERE Functiile text (Text): permit diferite operații cu șiruri de caractere și furnizează în egală măsură informații legate de textul existent în celule: =CHAR(cod numeric ASCII) returnează caracterul corespunzător codului numeric ASCII specificat ca argument. =LOWER(text) afișează cu minuscule textul specificat ca argument. =UPPER(text) afișează cu majuscule textul specificat ca argument. Fig. =CODE(text) returnează codul numeric pentru primul caracter din textul specificat ca argument. =TRIM(text) afișează șirul de caractere specificat ca argument în care toate spațiile inutile sunt anulate (cu excepția spațiilor care separă cuvintele textului).text2.=SECOND(număr-timp) extrage secunda dintr-un număr-timp sub forma unui număr întreg cuprins între 0 și 59. 32 PDF created with pdfFactory trial version www. începând cu poziția “N”.pdffactory. într-unul singur.text-nou) returnează un nou șir de caractere (text-nou) la a “N”-a poziție a textului-sursă.N.N. =EXACT(tect1.număr de ori) repetă afișarea textului de un număr specificat de ori. după ce au fost anulate X caractere.…) concatenează mai multe șiruri de caractere specificate ca argumente. Comparând cele două șiruri. =LEN(text) returnează numărul caracterelor ce formează textul specificat ca argument.text2) verifică dacă două șiruri de caractere sunt identice.X) afișează X caractere ale textului specificat ca argument.1. =SUBSTITUTE(text-sursă. funcția returnează valoarea logică TRUE dacă acestea sunt identice sau valoarea logică FALSE în caz contrar. =CONCATENATE(text1.

=RATE(număr de perioade.) calculează valoarea actuală netă a unei investiții bazate pe o serie periodică de intrări de numerar (cash flows). =PV(rata dobânzii.tipul]) returnează valoarea actuală (present value) aferentă unei sume investite sau depozitate la bancă. =FV(rata dobânzii.valoare prezentă) returnează rata dobânzii pe perioada unei anuități. valoarea prezentă.valoare2. tipul]) returnează valoarea viitoare (future value) a unei investiții sau plasament în condiții de anuitate (plăți și rate ale dobânzii constante).mărimea plății. împrumuturilor etc.[valoare viitoare.valoarea plății.valoare reziduală.număr de periode[. ținând cont de o 33 PDF created with pdfFactory trial version www.text2. trebuie să corespundă unuia din formate numerice consacrate). la rentabilitatea investițiilor.valoare prezentă[.pdffactory.zecimale) convertește un număr în text. =SLN(valoare de inventar.durata normată de funcționare) calculează amortismentul linear al unei imobilizări cu o valoare de inventar dată. plasamentelor. FUNCȚIILE FINANCIARE (informativ) Funcțiile financiare (Financial) efectuează o serie de calcule economico-financiare furnizând prin valorile returnate informații utile referitoare la amortismente. Exemplificările funcțiilor de tip text sau șir de caractere se găsesc prezentate în figura 29.număr de perioade.valoarea plății.. =NPER(rata dobânzii.număr de perioade.N) localizează poziția la care începe textul1 în textul2 începând căutarea cu poziția N. pentru un împrumut sau o investiție. 29 Exemple de funcții text =VALUE(text) convertește un text ce reprezintă un număr într-o valoare numerică (numărul ce figurează în textul tespectiv.valoare1.mărimea plății.valoare prezentă) returnează numărul de perioade de plată pentru o investiție sau un plasament. =PMT(rata dobânzii. în condițiile unei rate constante a dobânzii. folosind un format monetar. =NPV(rata dobânzii.…. =FIND(text1.valoare viitoare.tip]) calculează valoarea lunară sau anuală a plății pentru o investiție sau un împrumut. =DOLLAR(număr..com . prin plăți periodice.Fig.

De exemplu daca e mult mai uşor de scris suma ca =SUM(a1:a20) decât A1+A2+. pentru un număr de periode cât se presupune că va funcționa investiția. însă chiar şi fără o astfel de experienţă facilităţile VBA sunt accesibile. amortizabilă pe mai mulți ani.pdffactory. =SYD(valoare de inventar.. cu o anumită rată de depreciere.durata normată de funcționare. 2) Se tastează liniile de program în limbaj Visual Basic pentru funcţie ca de exemplu: Function name [(arglist)][As type] [statements] 34 PDF created with pdfFactory trial version www. Experienţa în programare este utilă. o funcţie definită de utilizator poate fi chiar şi mai utilă în situaţia când.rata de depreciere. =DDB calculează amortizarea după metoda softy și este o funcție asemănătoare cu DB. fără a corecta ultimele anuități pentru amortizarea completă a investiției. perioada pentru care se calculează amortizarea) returnează amortismentul degresiv absolut.modul (Module) utilizând comenzile Insert/Macro/Module din meniu. Funcţiile sunt utilizate pentru a simplifica scrierea.durată normată de funcționare. deci ia în calcul un posibil aspect sezonier de utilizare al acesteia. O funcţie definită de utilizator de creează in trei etape: 1) Se selectează sau creează un foaie . perioada pentru care se calculează amortizarea.valoare reziduală.+A20.comutator]) calculează amortismentul degresiv ajustat (variable declining balance) al unei imobilizări cu o valoare de inventar anume.debutul perioadei.sfârșitul perioadei[. Foaia poate fi redenumită pentru a fi mai sugestivă făcând dublu .valoare reziduală estimată. în mod repetat suntem nevoiţi să efectuăm un anumit tip de calcule pentru care Excel nu are funcţii predefinite.valoare reziduală. Nu se vor utiliza nume pentru foaie care sunt nume de funcţii existente.com .durată normată de funcționare.click pe numele implicit (module1). o oarecare valoare reziduală. cu excepția faptului că ultimul argument este un factor de multiplicare al amortizării degresive. =DB(valoare de inventar. O subrutină poate executa un proces ca de exemplu afişarea unei ferestre de dialog în care utilizatorul introduce date. O data ce o funcţie definită de utilizator a fost scrisă corect (liniile de program) ea poate fi utilizată în acelaşi mod ca şi o funcţie predefinită. În cele ce urmează însă se vor crea funcţii pe foi – module diferite. FUNCŢII DEFINITE DE UTILIZATOR Microsoft Excel include un limbaj de programare puternic denumit Visual Basic pentru aplicaţii (VBA) care dă posibilitatea utilizatorului să scrie module care pot fi subrutine sau funcţii. O funcţie (definită de utilizator) returnează o valoare unei celule (sau unui domeniu de celule) în acelaşi fel ca şi o funcţie predefinită dintr-o foaie de calcul Excel. =VDB(valoare de inventar. În cele ce urmează se va prezenta modul de scriere a funcţiilor. ținând cont de numărul de luni pe an de funcționare a imobilizării. O singura foaie – modul poate fi utilizată pentru a găzdui mai mult de o singură funcţie.valoare reziduală. Se vor exemplifica pentru început scrierea unor funcţii simple..numărul de luni pe an de funcționare a imobilizării) returnează amortismentul degresiv absolut.

expression O expresie ce urmează să fie setată la valoarea ce va fi returnată de către functie. Exemplu 1: O funcţie simplă În acest exerciţiu se va scrie o funcţie definită de utilizator care să calculeze aria unui triunghi căruia i se dau doua laturi şi unghiul dintre acestea după formula: Area = ½*a*b*sin(θ) Pentru a testa funcţia formula din D3 este =0. Se scriu următoarele linii program fără numărul liniei: 1 ' To compute area of triangle 2 ' given two sides and the included angle 3 Function Triarea(side1. Theta) 35 PDF created with pdfFactory trial version www. Valorile dintre parantezele pătrate […] sunt opţionale.121320344 Se tasteaza Alt+F11.732050808 2. Deocamdată E4:E6 se vor lăsa goale. Latura A Functie test pentru calculul ariei Latura B Unghi Formula 1 2 90 2 2 2 2 2 3 45 60 45 Functia 1 1 1.121320344 2.[name = expression] [Exit Function] [statements] [name = expression] End Function name Numele dat funcţiei arglist Lista argumentelor pasate functiei. 3) Se testează funcţia creată utilizând-o într-o foaie de calcul Excel. Se vor copia în jos până în linia 6. apoi din meniul Insert se selectează macro. Argumentele sunt separate unul de celalalt prin virgula.732050808 1. type Tipurile valorilor returnate de funcţie.414213562 1.com . apoi module pentru a crea o noua foaie – modul.pdffactory. foaia se recalculează apasând tasta F9.414213562 1. Dacă valoarea returnată este eronată se revine la etapa 2. statement O linie validă de comandă Visual Basic. Daca se editează o funcţie la care s-a făcut deja referire.5 * A3 * B3 * SIN( RADIANS (C4)) şi va calcula aria astfel încât vom putea să verificăm funcţia. side2.

Opţional se poate utiliza procedeul ”Wizard” oferit de Excel pentru introducerea datelor cerute de funcţie. Visual Basic va schimba numela în aşa fel ca să coincidă ultimei forme utilizată. Visual Basic ignoră orice text care urmează după apostrof şi afişează textul în verde. Numele funcţiei create poate fi găsit la categoria ”User-defined”. puncte.Radians(Theta) ' Degrees to Radians Triarea = 0. Se pot utiliza ca nume de funcţie orice nume dar trebuie avut grijă să nu coincidă cu numele unei foi de calcul existente sau cu o altă funcţie.B3. semnificative. Linia 4 . Pot fi găsite în ”Help for keywords”. Valorile din coloanele D şi E trebuie să coincidă. Întrucât aceasta nu este o funcţie Visual Basic ci una Excel este necesar să fie precedată de cuvântul cheie Application urmat de un punct. Fiecare funcţie trebuie să conţină cel puţin o linie de program care atribuie o valoare funcţiei. Elementul alpha se numeşte variabilă. Se reaminteşte că după orice reeditare a funcţiei trebuie apăsată tasta F9 pentru a se recalcula foaia. Funcţia trigonometrică sin este disponibilă în Visual Basic deci nu mai este nevoie să se apeleze la instrucţiunea Application. Oricum nu trebuiesc memorate toate căci Visual Basic le selectează şi afişează un mesaj de eroare. Linia are de asemenea un comentariu precedat de apostrof. |În foaia de calcul.1416/180 dar a fost aleasă funcţia mult mai exactă RADIANS. Aceasta pasează valorile argumetelor către funcţie prin poziţie şi nu prin nume. Semnificaţia liniilor de program este următoarea: Linia 1 este un comentariu utilizat pentru documentare. Linia 2 continuă comentariul. Cuvintele cheie sunt afişate în albastru.Alpha = Application. funcţii sau argumente este recomandabil să se utilizeze nume scurte. deoarece se utilizează o funcţie trigonometrică. B4.5 * sidel * side2 * Sin(Alpha) ' Compute area End Function Se revine la foaia de calcul şi se introduce formula =TRIAREA(A4.variabila alpha primeşte o valoare într-o linie de atribuire. Linia 3 deschide funcţia cu cuvântul cheie Function. semne de exclamaţie. funcţiei îi este atribuită o valoare ce va fi returnată foii de calcul. funcţia este apelată sau invocată utilizând formula =TRIAREA(A3. C4). Argumentele funcţiei desemnează variabilele ce stochează valorile primite de la foaia de calcul. La sfârşitul liniei 3 se găseşte un comentariu explicativ ce începe cu un apostrof. Un nume nu trebuie să coincidă cu un cuvânt cheie rezervat Visual Basic.C3).com . Pentru variabile. În general acestea sunt afişate în albastru. 4 5 6 36 PDF created with pdfFactory trial version www. Linia 5 . @.în această linie de program. Un nume nu trebuie să conţină spaţii. Dacă se utilizează de exemplu numele term într-un loc şi Term in alt loc.pdffactory. Toate funcţiile trebuie să se termine cu End Function. Visual Basic nu face distincţie între literele mari sau mici. Este comod să se introducă unghiul în grade în celulă dar. Linia 6 termină funcţia cu End Function. Comentariul poate fi atât o linie de sine stătătoare sau adăugat unei ale linii. Este obligatoriu să se respecte următoarele trei reguli: Primul caracter trebuie să fie o literă. Astfel valoarea din celula A3 este transmisă variabilei Side1 din funcţie. trebuie calculat echivalentul în radiani. S-ar fi putut utiliza următoarea linie de program: Alpha=Theta*3. Funcţia TRIAREA poate fi găsită în orice foaie de calcul aparţinând dosarului de calcul curent. $ sau #.

Prin înjumătăţire intervalului avem o idee mai exactă cu privire la valoarea rădăcinii.com . Unele ecuaţii se pot rezolva analitic. 37 PDF created with pdfFactory trial version www. Dacă ecuaţia se scrie ca f(x) atunci o rădăcină a ecuaţiei este o valoare a lui x asfel ca valoarea lui f(x)=0. Loop Gaseste mijlocul intervalului m=(a+b)/2 Calculează valoarea f(m) Daca f(m) şi f(b) au semne opuse Atribuie lui a valoare lui m Altfel Atribuie lui b valoare lui m şi lui a valoare lui b Sfârşit dacă Până când se atinge precizia dorită. Microsoft Excel pune la dispoziţie două instrumente (Goal Seek şi Solver) pentru aflare rădăcinilor. Aceasta ne permite să concepem un algoritm pentru a găsi o rădăcină a lui f(x): Se incepe cu valori ale lui a şi b pentru care f(a) şi f(b) au semne opuse. Deoarece F(m) are semnul opus lui F(b). ca de exemplu ecuatia de gradul doi. Exemplu 1: Metoda bisecţiei În figura 8 valorile lui F(a) şi F(b) sunt reprezentate de o parte şi de alta a axei x. Această rădăcină se găseşte între m şi b. Cu altele metodele analitice pot fi foarte complexe sau chiar nu există. Urmărind funcţia G(x) observăm că trebuie să utilizăm valorile m şi a pentru a afla următoarea următoare aproximaţie. Putem acum să înjumătăţim intervalul dintre b şi m şi astfel să îmbunătăţim localizarea rădăcinilor.pdffactory. Exemplele următoare utilizează Goal Seek şi Solver pentru a afla rădăcinile aproximative. În primul exemplu este arătat modul cum poate fi implementată pe o foaie de calcul metoda bisecţiei sau a înjumatăţirii intervalului. De aceea între a şi b se găseşte o rădăcină a lui F(x). În aceste situaţii putem utiliza metode numerice pentru a găsi rădăcinile aproximative.Rezolvarea ecuatiilor în Excel Aflarea rădăcinilor Se vor examina metodele de aflare a rădăcinilor ecuaţiilor neliniare ca de exemplu ale ecuaţiei polinomiale (3x3-7x2-22x+40=0) sau ale ecuaţie transcedentale (exp(-x) sin(x)=0). Să presupunem că m este mijlocul intervalului dintre a şi b.

Deschide nou carnet de calcul. Fig. 10.8 Pozitia mijlocului intervalului Figura 9 este un grafic al funcţiei exp(-x) . Dacă sunt diferite celula A5 ia valoare lui m din prima aproximaţie.6 şi alta de aproximativ 3.A4).com .pdffactory.sin(x) pentru valori ale lui x de la 0 la 4.5 Prima valoare a lui a B4: 1 Prima valoare a lui b C4: =(A4+B4)/2 Calculează valoare punctul din mijloc m D4: =EXP(-A4)-SIN(A4) Valoarea lui f(a) E4: =EXP(-B4)-SIN(B4) Valoarea lui f(b) F4: =EXP(-C4)-SIN(C4) Valoarea lui f(m) În A5 se introduce formula =IF(SIGN(F4)<>SIGN(E4). Fig. sarcina noastră este să gasim rădacinile cu o precizie mai bună. Pe linia 4 se introduce: A4: 0. În caz contrar celula reţine vechea valoare a lui a. 38 PDF created with pdfFactory trial version www.C4. Cu siguranţă această ecuaţie are o rădăcină de aproximativ 0.sin(x) evalaută pentru valori ale lui x de la 0 la 4. 9 Graficul funcţiei exp(-x) .Fig . În exemplele următoare se va utiliza Goal Seek şi Solver pentru a afla rădăcinile ecuaţiei si pentru a le compara între ele. Aceasta compară semnele lui f(a) şi f(b). Pe foaia numărul 1 se introduce textul din celulele A1:F3.

A14) =IF(SIGN(F15)<>SIGN(E15).5625 0.0364802 -0.C12.59 f(a) 0.0364802 0.C13.Aflarea radacinilor prin metoda bisectiei a 0.C21.A10) =IF(SIGN(F11)<>SIGN(E11).C18.C13.B10) =IF(A12=A11.C4.578125 0.0072207 -0.75 0.C6.C9.586 0.A7) =IF(SIGN(F8)<>SIGN(E8).B20) =IF(A22=A21.C18.C9.2092722 -0.A20) =IF(SIGN(F21)<>SIGN(E21).C16.0498358 -0.A13) =IF(SIGN(F14)<>SIGN(E14).C8.C10.B9) =IF(A11=A10.594 0.C5.C15.B6) =IF(A8=A7.C14.A15) =IF(SIGN(F16)<>SIGN(E16).0144946 0.2092722 -0.5 0.B5) =IF(A7=A6.A16) =IF(SIGN(F17)<>SIGN(E17).C14.C5.C19.C8.C7.5 =IF(SIGN(F4)<>SIGN(E4).B17) =IF(A19=A18.0364802 0.4735915 -0.C17.5625 0.A4) =IF(SIGN(F5)<>SIGN(E5).5859375 b 1 0.A21) b 1 =IF(A5=A4.0036031 -0.B4) =IF(A6=A5.A18) =IF(SIGN(F19)<>SIGN(E19).C19.B16) =IF(A18=A17.C15.C20.A8) =IF(SIGN(F9)<>SIGN(E9).75 0.625 0.C6.C7.5 0.0498358 -0.0036031 f(b) -0.59375 mijloc 0.0072207 -0.1271051 0.B12) =IF(A14=A13.A19) =IF(SIGN(F20)<>SIGN(E20).B11) =IF(A13=A12.C10.C20.C11.pdffactory.A17) =IF(SIGN(F18)<>SIGN(E18).0144946 0.0072207 0.A6) =IF(SIGN(F7)<>SIGN(E7).A9) =IF(SIGN(F10)<>SIGN(E10).0498358 0. 10 Calculul radacinilor prin metoda bisectiei 39 PDF created with pdfFactory trial version www.0072207 f(mijloc) -0.563 0.B7) =IF(A9=A8.0018173 Aflarea radacinilor prin metoda bisectiei a 0.1271051 0.A12) =IF(SIGN(F13)<>SIGN(E13).B13) =IF(A15=A14.625 0.59375 0.625 0.578 0.5 0.B14) =IF(A16=A15.com .C12.B21) mijloc =(A4+B4)/2 =(A5+B5)/2 =(A6+B6)/2 =(A7+B7)/2 =(A8+B8)/2 =(A9+B9)/2 =(A10+B10)/2 =(A11+B11)/2 =(A12+B12)/2 =(A13+B13)/2 =(A14+B14)/2 =(A15+B15)/2 =(A16+B16)/2 =(A17+B17)/2 =(A18+B18)/2 =(A19+B19)/2 =(A20+B20)/2 =(A21+B21)/2 =(A22+B22)/2 f(a) =EXP(-A4)-SIN(A4) =EXP(-A5)-SIN(A5) =EXP(-A6)-SIN(A6) =EXP(-A7)-SIN(A7) =EXP(-A8)-SIN(A8) =EXP(-A9)-SIN(A9) =EXP(-A10)-SIN(A10) =EXP(-A11)-SIN(A11) =EXP(-A12)-SIN(A12) =EXP(-A13)-SIN(A13) =EXP(-A14)-SIN(A14) =EXP(-A15)-SIN(A15) =EXP(-A16)-SIN(A16) =EXP(-A17)-SIN(A17) =EXP(-A18)-SIN(A18) =EXP(-A19)-SIN(A19) =EXP(-A20)-SIN(A20) =EXP(-A21)-SIN(A21) =EXP(-A22)-SIN(A22) f(b) =EXP(-B4)-SIN(B4) =EXP(-B5)-SIN(B5) =EXP(-B6)-SIN(B6) =EXP(-B7)-SIN(B7) =EXP(-B8)-SIN(B8) =EXP(-B9)-SIN(B9) =EXP(-B10)-SIN(B10) =EXP(-B11)-SIN(B11) =EXP(-B12)-SIN(B12) =EXP(-B13)-SIN(B13) =EXP(-B14)-SIN(B14) =EXP(-B15)-SIN(B15) =EXP(-B16)-SIN(B16) =EXP(-B17)-SIN(B17) =EXP(-B18)-SIN(B18) =EXP(-B19)-SIN(B19) =EXP(-B20)-SIN(B20) =EXP(-B21)-SIN(B21) =EXP(-B22)-SIN(B22) f(mijloc) =EXP(-C4)-SIN(C4) =EXP(-C5)-SIN(C5) =EXP(-C6)-SIN(C6) =EXP(-C7)-SIN(C7) =EXP(-C8)-SIN(C8) =EXP(-C9)-SIN(C9) =EXP(-C10)-SIN(C10) =EXP(-C11)-SIN(C11) =EXP(-C12)-SIN(C12) =EXP(-C13)-SIN(C13) =EXP(-C14)-SIN(C14) =EXP(-C15)-SIN(C15) =EXP(-C16)-SIN(C16) =EXP(-C17)-SIN(C17) =EXP(-C18)-SIN(C18) =EXP(-C19)-SIN(C19) =EXP(-C20)-SIN(C20) =EXP(-C21)-SIN(C21) =EXP(-C22)-SIN(C22) Fig.A5) =IF(SIGN(F6)<>SIGN(E6).B18) =IF(A20=A19.C11.C4.C21.B19) =IF(A21=A20.59375 0.1271051 0.B15) =IF(A17=A16.C17.A11) =IF(SIGN(F12)<>SIGN(E12).C16.B8) =IF(A10=A9.

Acelaşi lucru se întâmplă la trecerea de la linia 5 la linia 6.pdffactory. un milion de înjumătăţiri. După 20 de iteraţii intervalul se reduce printr-un factor de 220 . Se copiază D4:F4 în jos pe linia 5. Să presupunem că A1 conţine orice valoare (să spunem 1) iar coloana B1 conţine formula =3*A1^3. Înlocuiţi valorile iniţiale ale lui a şi b în linia 4 pentru a găsi a doua rădăcină.10*A1^2-A1+1 Când rulează Goal Seek trebuiesc specificate trei lucruri şi anume: că B1 este celula care ne interesează – celula Set Cell. Intervalul este înjumătăţit pe măsură ce ne deplasăm în josul paginii de calcul.5x – 12 = 0 utilizând Goal Seek. Aflarea rădăcinilor cu Goal Seek Cum s-ar putea răspunde la această întrebare: pentru ce valori ale lui x funcţia 3x3-10x2 – x + 1 ia valoarea 100? Răspunsul poate fi aflat cu uşurinţă cu ajutorul lui Goal Seek din Excel. astfel în linia 7 valoarea lui m este atribuită lui a şi noua valoare a lui b este fosta valoare a lui a. 1 =3*A1^3. Pe lina 24. (unele liniile sunt ascunse în Fig 3 din lipsă de spaţiu) În linia 4. Nu contează dacă se utilizează 3 şi 4 sau 3 şi 3. pentru x=0. funcţia este evaluată la 8*10-8 ceea ce este rezonabil de apropiat de zero. În caz contrar se foloseşte valoarea b. Goal Seek este un instrument foarte uşor dar limitat. Se pot largi coloanele pentru a se observa mai bine ce se modifică.10*A1^2-A1+1. astfel că noua valoare a lui b din linia 5 este valoare precedenta a lui m. Din linia 5 se vede ca valoare funcţiei este -0.În B5 se introduce formula =IF(A5=A4. cca. Se copiază A5:F5 în jos până la linia 24. în care caz noua valoare a lui b este valoarea m din prima aproximaţie. 2) că valoarea căutaţă este 100 şi că A1 este celula a cărei valoare urmează să fie schimbată celula – By Changing (de schimbat).625. Aceasta operaţiune termină prima iteraţie din bucla. Valorile în A şi B nu se mai schimbă prea mult în acest moment. Intâi o aproximare grafica a rădăcinilor 40 PDF created with pdfFactory trial version www.588533.C4.B4).com . Exemplul 2: O ecuaţie de gradul doi În acest exerciţiu vom găsi rădăcinile ecuaţiei 2x2 . Acum f(b) şi f(m) au aceeaşi valoare.5..04984 pentru x=0. În secţiune următoare se va vedea că Solver este mult mai puternic. Aceasta compară semnele lui f(m) şi f(b). f(b) şi f(m) au acelaşi semn. Valorile in A5 şi A4 sunt egale când a nu a fost înlocuit de m. Din figura 9 ştim că există o rădăcină în vecinătatea lui 3.

se poate executa Solver dacă se face clic pe Solver în meniul Tools.5*A1-12 Se completează fereastra aplicaţiei astfel: Aflarea rădăcinilor cu Solver Instalarea şi executarea Solver Optiunea solver nu se instaleaza implicit atunci cand se instaleaza pachetul de programe Office. Pentru a instala Solverîn Excel. După ce se instalează programul de completare (Add-In). se face clic pe Add-Ins din meniul Tools.30 300 51 76 105 200138 150175 216 100261 250 Serie s1 50 0 -50 2 5 -1 0 -7 -4 -1 8 Apoi din meniul Tools alegem Goal Seek pentru ecuaţia din celula C1: 5 -1 =2*A1^2 . apoi se selectează caseta Solver Add-In. Se face clic pe OK şi Excel va instala Solver. CD-ul de instalare al Office-ului trebuie să se afle în unitate. Fereastra aplicatiei arată astfel: 11 41 PDF created with pdfFactory trial version www.com .pdffactory.

8.2.9} (sau ca un nume al orcărei variante menţionate anterior).4. Aplicatia Solver poate fi utilizata şi în probleme de optimizare. Sintaxă: MDETERM(array) Array este un tablou (matrice) cu un numar egal de linii si coloane. de examplu. Observaţii Array poate fi introdusă ca un domeniu (range) de celule. {1.pdffactory. de exemplu pentru o matrice singulară de 1E-16. Pentru un tablou A1:C3 de trei linii si trei coloane determinantul se defineşte ca: MDETERM(A1:C3) = A1*(B2*C3-B3*C2) + A2*(B3*C1-B1*C3) + A3*(B1*C2B2*C1) Determinantul unei matrici se utilizează în general pentru rezolvarea sistemelor de ecuaţii matematice care implică mai multe variabile. Determinantul unei matrici este un număr rezultat din valorile conţinute in tablou.functia MDETERM () Functia MDETERM(array) returnează valoarea determinantului unei matrici.Completarea se face asemănător. Dacă oricare din celulele tabloului este gol sau contine text.6. MDETERM este calculat cu o precizie de 16 cifre. în fereastra Subject to the Constrains introducându-se restricţiile problemei de optimizare. Rezultatele obţinute sunt însă de o precizie mult mai mare. Rezolvarea sistemelor de ecuaţii liniare .com . 42 PDF created with pdfFactory trial version www.7. ceea ce poate conduce la o mică eroare numerică.5.3. A1:C3. ca o constanta tablou ex. MDETERM returnează eroarea #VALUE! MDETERM returnează de asemenea eroarea #VALUE! Daca tabloul nu contine un număr egal de linii şi coloane.

Exemplu: 1 2 3 4 5 A Data 1 1 1 7 B Data 3 3 1 3 C Data 8 6 1 10 D Data 5 1 0 2 Formula =MDETERM(A2:D5) =MDETERM({3.2}) =MDETERM({3.10.1.6.pdffactory.5.com .3.1.1}) =MDETERM({1.3.1.1}) Rezultat Determinant al matricei din tabelul anterior (valoare 88) Determinantul matricei ca o constanta tablou (1) Determinantul matricei din constanta tablou (-3) Returneaza o eroare deoarece tabloul nu are un numar egal de linii si coloane (#VALUE!) 43 PDF created with pdfFactory trial version www.1.8.6.0.3.1.6.

com .pdffactory.• Exemplu de foaie de calcul pentru rezolvarea unui sistem de 5 ecuatii cu 5 necunoscute • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • =A1 =A1 =A2 =A3 =A4 =A5 =A6 =A1 =A2 =A3 =A4 =A5 =A6 =F1 =F2 =F3 =F4 =F5 =F6 x1 4 2 54 4 1 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • =B1 =B1 =B2 =B3 =B4 =B5 =B6 =F1 =F2 =F3 =F4 =F5 =F6 =B1 =B2 =B3 =B4 =B5 =B6 x2 -34 4 -76 76 23 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • =C1 =F1 =F2 =F3 =F4 =F5 =F6 =C1 =C2 =C3 =C4 =C5 =C6 =C1 =C2 =C3 =C4 =C5 =C6 x3 3 98 6677 98 1 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • =F1 =D1 =D2 =D3 =D4 =D5 =D6 =D1 =D2 =D3 =D4 =D5 =D6 =D1 =D2 =D3 =D4 =D5 =D6 x4 -6 -4 12 7 -3 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • =E1 =E1 =E2 =E3 =E4 =E5 =E6 =E1 =E2 =E3 =E4 =E5 =E6 =E1 =E2 =E3 =E4 =E5 =E6 x5 8 -43 0 -76 1 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • TL =A2*H$1+B2*I$1+C2*J$1+D2*K$1+E2*L$1 =A3*H$1+B3*I$1+C3*J$1+D3*K$1+E3*L$1 =A4*H$1+B4*I$1+C4*J$1+D4*K$1+E4*L$1 =A5*H$1+B5*I$1+C5*J$1+D5*K$1+E5*L$1 =A6*H$1+B6*I$1+C6*J$1+D6*K$1+E6*L$1 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 567 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • XI=Dxi/D 2 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 76 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • X3= Dx2= X2= Dx2= X1= Dx1= D= 4 44 PDF created with pdfFactory trial version www.

pdffactory.com .• • • • • • • • • • • • • =A2 =A3 =A4 =A5 =A6 • • • • • • • =B2 =B3 =B4 =B5 =B6 • • • • • • • =C2 =C3 =C4 =C5 =C6 • • • • • • • =F2 =F3 =F4 =F5 =F6 • • • • • • • =E2 =E3 =E4 =E5 =E6 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • Dx2= X3= =A1 =A2 =A3 =A4 =A5 =A6 • • • • • • =B1 =B2 =B3 =B4 =B5 =B6 • • • • • • =C1 =C2 =C3 =C4 =C5 =C6 • • • • • • =D1 =D2 =D3 =D4 =D5 =D6 • • • • • • =D33 =D34 =D35 =D36 =D37 =D38 • • • • • • Dx2= X3= 45 PDF created with pdfFactory trial version www.

pe deplin. De regula un formular este o fereastră care apare pe ecran. un limbaj orientat pe obiecte. cu ar fi butoanele de comandă. 46 PDF created with pdfFactory trial version www. puternic în ce priveşte manipularea bazelor de date. egaland sau depasind facilitatile oferite de C. dimensiunile. FORTRAN. Toate programele Visual Basic au cel puţin un formular. atunci când programul este în execuţie. orientat pe obiecte. Un obiect îi permite utilizatorului să dea comenzi către program. flexibil.SECŢIUNEA II – PROGRAMARE ÎN EXCEL Visual Basic pentru aplicatii – prezentare sumară Visual Basic este un limbaj de programare deosebit de puternic pentru numeroase aplicaţii.com .pdffactory. Interfaţa cu utilizatorul Interfaţa cu utilizatorul este ceea ce vede de fapt cineva.0 i-au fost adăugate o serie de caracteristici care l-au făcut. localizarea şi aspectul pe ecran (stanga-mijloc-jos). Obiectele sunt elementele care apar într-un formular. sub Visual Basic. Pasul următor după proiectarea interfeţei constă în definirea proprietăţilor fiecărei ferestre si ale fiecărui obiect. şi obiecte (objects). Visual Basic a devenit aproape la fel de structurat. bare de deruare şi butoanele de opţiune (dreapta sus). este alcătuită din formulare (forms) în cazul Excel fiind chiar foaia de calcul. Proprietăţile unui obiect îi determină numele. deşi majoritatea au mai multe. culoarea. O interfaţă cu utilizatorul. mai ales că începând cu versiunea 5. Fox sau Smalltalk. Pascal.

mişcă mousul sau execută clic pe butonul mousului. Visual Basic îi asignează valori prestabilite ale proprietăţilor. De aceea versiunile mai noi de Visual Basic (5. în timp ce. Se plaseaza cursorul in locul dorit să fie colţul 47 PDF created with pdfFactory trial version www. Se intra in modul proiectare respectiv rulare facand click pe pictograma reprezentata printr-un echer si creion. De exemplu.com . comenzile BASIC îi comunică calculatorului apariţia unui eveniment. Scopul instrucţiunilor Visual Basic este acela de a indica obiectelor dintr-o fereastră cum să acţioneze atunci când utilizatorul face un anumit lucru. să vadă conţinutul unui fişier din interiorul aplicaţiei etc. Noul control va fi afişat în Toolbox. dacă se execută clic cu mousul pe butoanele de comandă OK sau Cancel nu se întâmplă nimic până când nu se scriu comenzile BASIC. Cu ajutorul lor se vor construi ferestre şi casete de dialog. code) care vor face ca programul să funcţioneze. Ce sunt controalele intrinseci şi ce sunt controalele ActiveX ? Controalele intrinseci sunt un număr relativ mic de controale. care spun exact ceea ce trebuie să se întâmple. Deşi controalele intrinseci sunt foarte puternice.pdffactory. să apese un buton. Ori de câte ori un utilizator apasă pe o tastă. Pasul următor implică scrierea comenzilor BASIC (numite si instrucţiuni. Instrucţiuni BASIC Scrierea unui program Visual Basic este diferită de scrierea unui program în Pascal sau C.Obiectele diferite au proprietăţi diferite. dar foarte puternice. şi care se încarcă automat la lansarea IDE (Integrated Development Environment) în Toolbox. se recomandă modificarea acestora în funcţie de program. acest lucru este numit un eveniment (event). executând un click pe controlul dorit. De fiecare dată când are loc un eveniment. disponibile în fiecare ediţie Visual Basic. Utilizatorul trebuie să stabilească o legătură între proiect şi o anumită componentă. Modul proiectare si modul rulare Din view-toolar se bifeaza controltoolbox. Acest lucru se realizează selectând comanda Components şi bifând din lista de controale ce se doresc a fi folosite în proiect. în Visual Basic se începe cu schiţarea interfaţa cu utilizatorul. Formele şi controalele Forma constituie fundaţia de la care se pleacă în proiectarea interfeţei. Forma este locul unde se vor insera controale cu care utilizatorii interacţionează în timp ce folosesc aplicaţia. Programatorii care folosesc C si Pascal încep de obicei cu scrierea instrucţiunilor.6) oferă posibilitatea de a folosi o serie întreagă de controale ActiveX. Deşi se pot folosi aceste valori prestabilite. Adăugarea şi ştergerea controalelor Adăugarea controalelor se poate realiza astfel: I. De fiecare dată când se crează un obiect nou. să valideze o opţiune. Acestea nu fac parte din mediul de programare şi nu sunt încărcate în mod automat la lansarea IDE. Controalele sunt acele lucruri care le permit utilizatorilor care folosesc programul să facă diferite lucruri: să introducă un text. ele nu satisfac toate nevoile de programare.

Proprietaţi şi evenimentelor Formele şi controalele Visual Basic sunt obiecte ce au propriile proprietăţi. indicând ce pot face ele efectiv. width. Pentru ştergerea unui control: clic cu moue-ul pe el şi apoi apăsând tasta Delete sau comanda Delete din meniul de context (Edit) Mutarea redimensionarea şi blocarea controalelor Pentru a muta un control în cadrul formei se selectează şi ţinând mouse-ul apăsat pe el. se trage de el până ajunge în poziţia dorită. visible sunt doar câteva din proprietăţile ce se întâlnesc la marea majoritate a controalelor.com . Evenimentul este o acţiune recunoscută de către un obiect. top. Fiecare obiect are un set predefinit de evenimente care i se pot întâmpla şi pentru care se poate scrie cod care se va executa în momentul producerii acelui eveniment.(ex: metoda Move întâlnită la majoritatea controalelor determină o schimbare a poziţiei controlului. metode şi evenimente. Pentru fiecare eveniment se poate scrie o procedură. Se deplasează mouse-ul ţinând apăsat butonul stâng până când Controlul are dimensiunea dorită. Evenimentele sunt ceea ce se întâmplă când un obiect face ceva.) Evenimentele definesc interacţiunea cu utilizatorul. Name. O mică parte din proprietăţi sunt accesibile doar în timpul execuţiei programului(run-time).pdffactory. adică blocuri de cod. Majoritatea proprietăţolor unui control (sau forme) sunt afişate în fereastra Properties şi pot fi setate (primi valori ) în timpul proiectării aplicaţiei(design-time). height.stânga sus al controlului. Metodele sunt de fapt nişte proceduri. left. Pentru a schima dimensiunile unui control se poziţioneză cu mouse-ul pe una din laturi şi în momentul în care cursorul mouse-ului s-a transformat într-o săgeată se deplasaţi mouse-ul până când controlul are dimensiunea dorită. Metodele stabilesc comportamentul acestor obiecte. Proprietăţile sunt atribute pe care le posedă obiectul şi care îi descriu modul de apariţie. care determină obiectul să facă un anumit lucru. numită „numeobiect_ eveniment” 48 PDF created with pdfFactory trial version www.

proprietatea WindowState stabileşte modul în care se va afişa forma la început: minimizată. Este recomandat să fie schimbate aceste de numiri cu unele mai familiare şi mai uşor de reţinut. proprietatea Name stabileşte un identificator cu ajutorul căruia puteţi referi forma respectivă. In Cazul Excel acestea sunt chiar foile de calcul. Timpul execuţiei (run time) este timpul în care aplicaţia rulează pe calculator şi se poate lucra cu ea. Utilizarea controalelor ce manipulează texte Principalele contoale utilizate pentru manipularea textelor sunt etichetă (Label) şi casetă de text (TextBox).care se va executa în momentul producerii acelui eveniment.pdffactory. nu se scriu proceduri pentru toate evenimentele. Ele constituie ferestrele prin intermediul cărora utilizatorul va interacţiona cu aplicaţia. Schimbând proprietatea BorderStyle se poate controla modul de redimensionare al formei. Utilizarea butoanelor de comandă Butoanele de comandă sunt utilizate pentru a permite utilizatorilor aplicaţiei să îndeplinească o anumită sarcină. proprietatea MaxButton şi MinButton stabilesc dacă forma poate să fie maximizată sau minimizată în timpul rulării. Majoritatea proprietăţilor formei influenţează modul de afişare. proprietatea Icon stabileşte iconiţa pentru formă. maxmizată sau normală. sau în timpul execuţiei (run time) scriind cod. Cu ajutorul proprietăţii Caption se poate afişa text pe buton. proprietăţile Left şi Top stabilesc locaţia formei faţă de colţul stânga sus al ecranului. Proiectarea unei forme Formele constituie fundaţia de la care se începe construirea unei interfeţe în Visual Basic. În general se pot scrie proceduri pentru evenimentele considerate importante pentru aplicaţie. Stabilind proprietăţile unui obiect şi scriind cod pentru a răspunde la evenimente se particularizează obiectul astfel încât să răspundă la cerinţele aplicaţiei. Acestea pot fi stabilite în timpul proiectării (design time) cu ajutorul ferestrei Properties window . Formele posedă propriile proprietăţi. Proprietatea Caption stabileşte care va fi mesajul afişat în bara de titlu a formei. De câte ori utilizatorul va apăsa butonul acest eveniment se va produce şi va determina executarea codului ce se afla scris in procedura numită NumeButon_Click(). moment în care butonul va arăta ca şi cum ar fi apăsat. evenimente şi metode cu ajutorul cărora se poate le controla modul de afişare şi comportamentul. Utilizatorii vor executa click pe buton sau îl vor selecta în alt mod (apăsând tasta Tab până ajung la ele apoi tasta Enter).com . Primul pas în proiectarea unei forme este stabilirea proprietăţilor. Notă Timpul proiectării (design time) este timpul în care se lucrează la aplicaţie în mediul de programare. Cel mai frecvent eveniment întâlnit la acest control şi pentru care se scrie cel mai mult cod este evenimentul Click. 49 PDF created with pdfFactory trial version www. Proprietăţile Height şi Width stabilesc dimensiunile iniţiale ale formei.

Acesta poate fi stabilit din faza de proiectare dar se poate modifica în timpul execuţiei prin intermediul codului. Dacă textul trebuie afişat pe mai multe linii proprietatea MultiLine trebuie să aibă valoarea True. Caseta de validare (CheckBox) Un control casetă de validare oferă utilizatorilor posibilitatea de a alege sau nu o anumită obţine. Textul ce va fi afişat se stabileşte prin intermediul proprietăţii Caption .Eticheta este un control grafic folosit pentru afişarea de text pe care utilizatorul nu îl poate modifica. Când utilizatorul alege acea opţiune caseta de validare este marcată. La o formă se adaugă un control casteă de validare numit chkVerifica şi un control etichetă pe numit lblVerifica . 2=nebifat. Textul care se va afişa sau care va fi preluat se gestionează cu ajutorul proprietăţii Text. introdus de utilizator la rulare sau asociat controlului prin program. 2=Indisponibil .pdffactory. pornind de la un simplu „da” sau „nu” până la selectarea unor articole dintr-o listă cu mii de posibilităţi. Spre deosebire de controlul etichetă. controlul Casetă de text este folosit pentru a fişa text furnizat de programator din faza de proiectare. Exemplu de utilizare a acestui control. Deci controlul poate fi folosit şi pentru ca aplicaţia să preia diferite informaţii de la utilizatori. De asemenea cu ajutorul proprietăţii ScollBars se pot adăuga controlului bare de defilare. În cadrul unei forme pot exista o multitudine de casete de validare utilizatorul să le bifeze câte vrea. Se adaugă apoi în fereastra de cod următoarele rânduri: Private Sub chkVerifica_Click() Select Case chkVerifica Case 0 mesaj= „Opţiunea nu este bifată” Case 1 mesaj=„Opţiunea este bifată” Case 2 mesaj= „Opţiunea este indisponibilă” End Select 50 PDF created with pdfFactory trial version www. Procedura evenimentului va trebui să testeze starea în care se află caseta de validare.com .Ca şi la butoanele de comandă evenimentul click al controlului apare ori de câte ori utilizatorul efectuează clik pe caseta de validare. Utilizarea controalelor ce permit alegerea anumitor optiuni Majoritatea aplicaţiilor permit utilizatorilor să aleagă dintre anumite opţiuni. Cu ajutorul proprietăţii Caption puteţi adăuga test în dreptul casetei. semnul de marcare dispare când caseta este deselectată. Prorietatea Valuie este utilizată pentru a determina starea controlului: 1=bifat. În acel moment procedura aferentă evenimentului clik al controlului îşi începe execuţia.

Butonul de opţiune care este marcat are proprietatea Value=True în timp ce celelalte butoane din grup au proprietatea Value=False. De exemplu. Dacă se doreşte ca utilizatorul să poată selecta mai multe articole din listă. de asemenea. Dar spre deosebire de casetele de validare utilizatorul are posibilitatea să marcheze o singură opţiune. un set de opţiuni la dispoziţia utilizatorului. Butonul de opţiune (OptionButton) Butoanele de opţiune reprezintă.lblVerifica. Numerotarea articolelor în listă începe de la 0. Dacă numărul de variante este mai mare se va afişa.pdffactory. proprietatea MultiSelect trebuie să ia valoarea 2. De asemenea.List(lstAlegere. În această procedură se poate scrie cod care să verifice starea butonului. Dacă utilizatorul nu doreşte să selecteze nici una din 51 PDF created with pdfFactory trial version www. Dacă se mai doreste să se introducă un alt set de butoane de opţiune trebuie să fie încadrate în interiorul unui Frame. Proprietatea ListCount a unei liste returnează numărul de articole din listă.Caption=lstAlegere. Pentru a prelucra selecţia se utilizează în special evenimentele Click sau DoubleClick ale casetei cu listă. de cate ori utilizatorul marchează sau demarchează un buton de opţiune se declanşează eveniment click() al controlului care începe execuţia procedurii aferentă acestui eveniment. Selectarea unui buton implică automat deselectarea celorlalte.Caption=mesaj End Sub Eticheta va afişa un text indicând starea casetei. Implicit articolele sunt afişate pe o singură coloană însă acest lucru se poate schimba prin modificarea proprietăţii Columns.ListIndex) End Sub Adăugarea unui articol în listă se face cu ajutorul proprietăţii AddItem. la executarea unui click într-o casetă numită lstAlegere următoarea secvenţă de cod va afişa selecţia utilizatorului într-o etichetă numită lblAlegere : Private Sub lstAlegere_Click() lblAlegere. Proprietatea ListIndex este utilizată pentru a determina numărul articolului selectat. în mod automat.com . Caseta combinată (ComboBox) Caseta combinată este un control ce combină caracteristicile controlului casetă cu listă cu cele ale controlului casetă de text. Ştergerea unui articol se face cu metoda RemoveItem iar ştergerea întregului conţinut al listei cu metoda Clear. Caseta cu lista (ListBox) Caseta cu listă este un control ce permite afişarea unei serii de articole din care utilizatorul poate alege unul sau mai multe. Toate butoanele de opţiune plasate direct pe formă constituie un singur grup. o bară de derulare verticală.

La apăsarea butonului Mutare opţiunile selectate vor fi transferate în cea de-a doua casetă cu listă. Pentru exemplificarea modului de utilizare a casetelor cu listă şi a casetelor combinate se prezenta următorul program. Selectarea se face ţinând apăsată tasta Ctrl şi efectuând click cu mouse-ul pe opţiunile pe care doriţi să le selectaţi.AddItem cboFructe.Text = „” End If 52 PDF created with pdfFactory trial version www. în funcţie de valoarea proprietăţii Style: 0 – casetă derulantă combinată – conţine o listă derulantă şi o casetă de text.pdffactory. Utilizatorul are posibilitatea să selecteze din listă una sau să scrie în caseta de text. Respectiva variantă va fi trecută automat in prima casetă cu listă. Alegeţi pe rând mai multe variante.List(cboFructe. Dimensiunea unui asemenea control este suma dimensiunilor porţiunii de editare şi a listei. Prima casetă cu listă permite utilizatorului să selecteze mai multe opţiuni odată. Permite doar selectarea din lista derulantă .ListIndex) End Sub Private Sub cboFructe_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then lstFructe1.opţiunile din listă poate să adauge una în porţiunea casetei de text a controlului.AddItem cboFructe. Utilizatorul are la dispoziţie o casetă combinată din care poate alege o anumită variantă cu ajutorul mouse-ului sau poate scrie una şi apoi apasă Enter. Se setează astfel următoarele proprietăţi: Casetă combinată Casetă cu listă 1 Casetă cu listă 2 Name cboFructe Name lstFructe1 Name lastFructe2 List Mere MultiSelect 2 Pere Prune Caise Nuci Buton de comandă 1 Buton de comandă 1 Name cmdMutare Name cmdGolire Caption Mutare Caption Golire Se adaugă următorul cod : Private Sub cboFructe_Click() lstFructe1.casetă combinată simplă – conţine o castă de text şi o listă nederulantă. Se adaugă pe foaie următoarele controale : o casetă combinată.com . două casete cu listă şi doua butoane de comandă. Există trei tipuri de casetă combinată. 2 – casetă cu listă derulantă – acesta nu este deloc o casetă combinată. porţiunea de text fiind neaccesibilă.Text cboFructe. Utilizatorul mai are la dispoziţie şi butonul golire la apăsarea căruia se golesc ambele liste. 1 .

Poza care se afişează este stabilită de proprietatea Picture care utilizează ca valoare numele fişierului ce conţine poza (opţional se poate specifica şi calea). Însă redimensionarea controlului nu va ţine cont de celelalte elemente de interfaţă putând să le acopere.End Sub Private Sub cmdGolire_Click() lstFructe1. pentru a afişa o poză sau pentru a o schimba folosiţi funcţia LoadPicture pentru a stabili proprietatea Picture.Clear lstFructe2. Linie(Line). 53 PDF created with pdfFactory trial version www.List(i) lstFructe1.com . În timpul execuţiei programului. Acestea sunt: Cutia de poze (PictureBox). Picture1. Visual Basic oferă programatorilor patru controale cu ajutorul cărora pot afişa imagini grafice.RemoveItem (i) b = False Exit For End If Next i Loop While b = False End Sub Utilizarea controalelor ce afisează imagini şi grafică Deoarece Visual Basic este un sistem de operare cu interfaţă grafică este important ca să ofere o posibilitate de afişa imagini grafice în cadrul interfeţei aplicaţiilor. Figură (Shape).Clear End Sub Private Sub cmdMutare_Click() Dim i As Integer: i = 0 Do nrelem = lstFructe1.gif˝) Dacă poza care va fi afişată nu are aceeaşi dimensiune cu ceea a controlului se poate seta proprietatea AutoSize=True şi astfel controlul va avea aceleaşi dimensiuni cu poza.Selected(i) = True Then lstFructe2. Caseta cu poză (PictureBox) Este un control utilizat pentru a pentru a fişa poze şi imagini grafice utilizatorilor.AddItem lstFructe1.pdffactory. Imagine (Image).Picture=LoadPicture(˝Poza.ListCount – 1 b = True For i = 0 To nrelem If lstFructe1.

definiţi de Visual Basic. . formă modul sau chiar proiectul însuşi.să înceapă cu o literă. Elementele componente ale unei aplicatii Visual Basic Setul de caractere Pentru a putea scrie instrucţiuni pe care calculatorul să le interpreteze se folosesc cuvinte.Separatorii: spaţiu. proprietate. ./ ^ () [] {}. constantă. Un identificator trebuie să respecte urătoarele reguli: . . Next. . funcţie. O redeclarare a lor va duce la nerecunoaşterea sensurilor iniţiale. . Then . control. := <>. În cazul limbajului Visual Basic se pot folosi următoarele caractere: . . Public. . Imagine (Image) Se utilizează pentru a afişa o imagine dintr-un fisier de pe disc pe un form. Array .nu pot fi identificatori cuvintele cheie ale limbajului.pdffactory.Cifrele sistemului de numerotaţie zecimal:0-9. For . .com . Un proiect Visual Basic poate să conţină maxim 32000 identificatori. . Exemple: Dim. enumerare. care nu pot fi folosiţi în alt context decât cel precizat de semantica limbajului. procedură. Identificatori Un identificator este numele unui element dintr-un program. formelor şi claselor nu pot fi mai lungi de 40 caractere.Caseta cu poză poate fi folosită şi ca un container pentru alte controale. If. Se poate deasemenea utiliza metodele Circle. a-z. Cea mai importantă este este proprietate Picture prin care se deschide o casetă de dialog care permite alegerea unui fisier grafic. Aceste cuvinte sunt entităţi formate din caractere.să nu conţină în interior unul din caracterele: . tab şi caracteru Enter.. modulelor. Cuvintele cheie sunt identificatori cu semnificaţie fixată. Trebuie definite proprietăţile prin care se indică imaginea de afişat şi modul de afişare al acestui form. La selectare si plasare pe form nu este afisată nici o imagine.. End etc. obiect. Line sau Pset pentru a afişa imagini grafice în cutia de poze. .numele variabilelor nu pot fi mai lungi de 255 caractere iar cele ale controalelor.Caracterele speciale perechi: <=. fie el variabilă.literele mari şi mici ale alfabetului limbii române: A-Z. %!$&#@. De exemplu plasând în cutia de poze controale imagine care să se comporte ca butoane se poate transforma în bară de instrumente sau introducând controale etichetă care să afişeze text se poate transforma în bară de stare. Pentru a face codul cât mai lizibil identificatorii folosiţi ar trebui să descrie rolul lor în 54 PDF created with pdfFactory trial version www. >=. tip definit de utilizator.nu trebuie să existe doi identificatori identici cu acelaşi scop. Private. . :_ ! # % & $ etc.Else.Caractere speciale: + . metodă.există o serie de identificatori standard.

com . se pot scrie mai multe declaraţii pe o singură linie despărţindu-le cu ajutorul separatorului de instrucţiuni şi declaraţii care este caracterul (:) . Acest lucru se realizează folosind caracterul continuator de linie ( _)( un spaţiu urmat de o linie jos).pdffactory. _ ByVal nFileSystemNameSize As Long) As Boolean Private Declare Function GetDriveType Lib „kernel32” Alias _ „GetDriveTypeA” (ByVal lpRootPathName As String) As Integer Tipuri de date Tipul unei date defineşte mulţimea de valori pe care le poate conţine o variabilă şi mulţimea de operaţii care pot fi efectuate cu elementele mulţimii respective.aplicaţie. Totuşi. În funcţie de tipul de dată pe care-l stochează o anumită variabilă compilatorul alocă o zonă mai mare sau mai mică de memorie pentru a fi reprezentată. separatori. _ lpFileSystemFlags As Long. Comentarii. _ lpMaximumComponentLength As Long. Exemplu: Private Declare Function GetVolumeInformation Lib _ „kernel32” Alias „GetVolumeInformationA” _ (ByVal lpRootPathName As String. lpFileSystemNameBuffer. dacă se doreste. împărţirea liniei Comentariile sunt şiruri de caractere care au în faţă caracterul (`). Au rolul de a face textul programului mai lizibil. De aceea mulţi programatori folosesc prefixe în definirea identificatorilor care indică tipul de date referit şi scopul lor. Exemplu: Dim a as Integer : a=10 De asemenea pentru a spori lizibilitatea programelor. Exemple: ´ Aici începe programul Dim iVirsta as Integer ´ Vârsta angajaţilor Dim iGreutatea as Interger ´ Greutatea angajaţilor în kilograme De asemenea se pot utiliza comentariile pentru a determina compilatorul să nu mai execute anumite instrucţiuni (facilitatea este folosită mai ales în faza de corectare a programului). _ lpVolumeSerialNumber As Long. _ ByVal nVolumeNameSize As Long. _ ByVal lpVolumeNameBuffer As String. 55 PDF created with pdfFactory trial version www. În general în Visual Basic se scrie doar o singură declaraţie pe o linie. dacă o declaraţie este prea mare o se poate scrie pe mai multe linii.

. pentru a spori lizibilitatea programului şi pentru a nu fi nevoie de numeroase modificări în caz că o valoare des întâlnită trebuie modificată. împărţirea întreagă (\) a \ b returnează câtul împărţirii lui a cu b.operaţiile care se pot face cu valorile unui tip întreg sunt: adunarea (+).=. împărţirea(/). scăderea(-). ridicarea la putere (^) de asemenea sunt permise operaţiile relaţionale: mai mic sau egal (<=). O definiţie de constantă introduce un identificator ca sinonim al unei valori constante. Rezultatul unor astfel de operaţii este de tip boolean. Cu ajutorul operaţiilor de comparaţie se stabileşte poziţia alfabetică a şirurilor de caractere.<=. egal (=).operaţiile care se pot face cu valorile unui tip real sunt: adunarea (+). se pot folosi constantele. Astfel: . Cu ajutorul acestei operaţii se verifică dacă două variabile de tip obiect referă acelaşi obict sau nu. Visual Basic pune la dispoziţie o serie întreagă de constante pentru culori. înmulţirea(*). ridicarea la putere (^). booleane (True şi False) suportă următoarele operaţii logice: negarea logică (Not). având valorile True sau False. figuri etc. Astfel.Cu fiecare tip de dată sunt permise o serie de operaţii.şirurile de caractere suportă operaţia de concatenarea (&) şi operaţiile de comparaţie (<. înmulţirea(*). scăderea(-). restul împărţirii întregi (mod). Prin concatenare două sau mai multe şiruri de caractere pot fi lipite formând un singur şir de caractere.04. Constante în programe se întâlnesc valori constante ce se repetă de nenumărate ori.14159265358979 Const NR_ZILE_LUCRATORE = 22 Const ZI_DE_NASTERE = #02. .valorile logice. mai mare sau egal (>=). echivalenţa logică (Eqv).1981# Const NUME_DE_COD = ˝Calul˝ 56 PDF created with pdfFactory trial version www.tipurile de dată de tip obiect suportă o singură operaţie – cea de comparaţie (Is).pdffactory.com . mai mare(>). şi logic (And). . sau logic (Or).simbolice sau definite de utilizator. mai mic (<). sau exclusiv logic (Xor). Se pot defini propriile constante cu ajutorul cuvântului cheie Const astfel: [Public|Private] Const NumeConstanta[As type] = expresie Exemple: Const PI = 3. sunt permise operaţiile relaţionale prezentate la tipurile întregi.>=. împărţirea reală(/). . În Visual Basic există două tipuri de constante: . .>).intrinseci sau definite de sistem . taste. implicaţia logică (Imp).

În funcţie de tipul variabilei compilatorul alocă o zonă mai mică sau mai mare de memorie pentru variabila respectivă. de fiecare dată când se rulează un program. fiecare locaţie de memorie are o adresă unică. As este un cuvânt cheie care îi spune programului că se doreşte declararea tipul variabilei TipVariabilă este numele unui tip de date din cele pe care le acceptă Visual Basic Exemple: Dim i as Integer ´ defineşte variabila i de tip Integer Dim dtZiSalar as Date ´ defineşte variabila dtZiSalar de tip Date Private sNume as String ´ defineşte variabila sNume de tip String Public lstListaPreturi as ListBox ´ defineşte variabila lstListaPreturi ce va conţine o ´ referinţă către un obiect de tip ListBox 57 PDF created with pdfFactory trial version www. Pentru a simplifica stocarea informaţiei programele definesc variabile. Aşa cum indică şi cuvântul variabilă. A declara o variabilă însemnă a-i comunica programului de la început despre ea astfel încât programul să ştie câtă memorie să-i aloce şi unde. Acestea sunt nişte nume pe care programul le asociază cu anumite locaţii din memorie. de fiecare dată când rulează va afişa un mesaj care cere numele fişierului şi numărul de copii care se doresc a fi tipărite. Pentru a ajuta programul să găsească locaţia de memorie unde au fost plasate datele . Când se scriu aceste informaţii. Tipul Variant conţine nu numai variabila dar şi informaţii despre variabilă. Variabile poate să stocheze valori diferite în momente diferite. programele trebuie să stocheze informaţia.3 şi aşa mai departe. 1. Deoarece pot fi milioane de asemenea adrese. programul păstrează valorile introduse în anumite locaţii de memorie. ţinerea evidenţei fiecărei locaţii poate deveni foarte dificilă. cum ar fi de exemplu un document de editat în mai multe sesiuni de lucru cu calculatorul. cum ar fi locaţia 0. Declararea unei variabile se face astfel: [Public| Private] Dim NumeVariabilă as TipVaribilă Public. Folosirea variantelor fără tip de date (prin utilizarea tipului implici Variant) a devenit deosebit de importantă. NumeVaribilă este identificatorul variabilei. sistemul de operare încarcă instrucţiunile programului în memoria calculatorului. Astfel un program care tipăreşte un document. Dim sunt cuvinte specifice limbajului Visual Basic care îi spun că se declară o variabilă. După cum se ştie. valoarea pe care programul o păstrează în aceste locaţii se poate modifica în cursul execuţiei programului. Din punct de vedere al utilizării variabilelor Visual Basic poate fi considerat un limbaj cu 2 feluri de variabile: cu tip şi fără tip.2 .pdffactory. O variabilă se caracterizează prin două elemente: numele variabilei care este un identificator cu ajutorul căruia putem să referim variabila pe parcursul programului şi tipul variabilei care determină ce tip de dată poate stoca variabila.Variabile Pentru a realiza diferite funcţiuni.com . Private. într-un fişier şi în memoria internă.

com . Un al treile tip de variabile sunt cele globale la nivelul întregului program. Declararea acestor variabile se face cu cuvântul cheie Public. Este recomandabil ca declararea lor să se facă cu ajutorul cuvântului cheie Private în loc de Dim chiar dacă Visual Basic acceptă şi Dim. În mod implicit Visual Basic le declară de tip Variant pe toate. Una dintre cele mai periculoase erori întâlnite la declararea unei variabile este următoarea: Dim a. De asemenea ele pot fi utilizate numai în cadrul acelei proceduri neavând nici o semnificaţie în altă parte a programului. Au un domeniu de valabilitate doar la nivelul proceduri şi au o durată de viaţă temporară. Este deosebit de folositoare această opţiune (şi este recomandat să fie folosită) pentru a evita greşelile legate de tipărirea numelor variabilelor. Declararea explicită a variabilelor presupune ca înainte să folosiţi o variabilă să o declaraţi anterior cu ajutorul unuia dintre cuvintele cheie Dim. Este recomandat să se folosească Dim doar pentru declararea acestui tip de variabile chiar dacă Visual Basic vă va permit să-l folosiţi şi în alte contexte. Există atâta timp cât este folosit modulul respectiv. Nu este necesară o declarare prealabilă cu ajutorul cuvintelor cheie Dim. Un alt tip de variabile sunt cele cu domeniu de vizibilitate la nivelul unui modul.c as Integer . Dacă procedura va fi din nou apelată variabila statică nu va fi iniţializată automat de Visual Basic. Un alt tip de variabile sunt cele statice. Spre exemplu se poate defini o variabilă statică la nivelul unei proceduri. Acestea sunt pot fi folosite oriunde în program. În modul implicit o variabilă este considerată declarată la prima ei folosire.b.Ele există atâta timp cât se execută procedura în care au fost declarate. Astfel există variabile locale la nivelul unei proceduri. b. Aceste pot avea un domeniu de valabilitate locală sau la nivelul unei proceduri dar o durată de existenţă permanentă. Aceste variabile se declară in interiorul procedurii cu ajutorul cuvântului cheie Dim . lucru ce se întâmplă cu variabilele care nu sunt statice.Public. Aceste variabile pot fi folosite oriunde în interiorul modulului în care au fost declarate. E va fi vizibilă doar la nivelul acelei proceduri dar îşi va păstra valoarea şi după ce procedura îşi va termina execuţia. Nu se definesc trei variabile a. Private. Private.c de tip Integer ci de fapt numai c 58 PDF created with pdfFactory trial version www. ci va avea valoare pe care a avut-o la ultima ei folosire. au un domeniu de valabilitate global Există atâta timp cât se execută programul.pdffactory. Declararea variabilelor se poate face în două moduri : implicit sau explicit. Variabilele locale la nivelul unui modul sau publice se declară în secţiune de declaraţii a modulului (Declarations). Se poatei scrie la începutul modului opţiunea Option Explicit sau se poate cere mediului de programare să facă acest lucru automat selectând din meniul Tool->Options->Editor opţiunea Require Variable Declaration şi in acest caz Visual Basic va atenţiona dacă se utilizează o variabilă nedeclarată anterior. Public.O caracteristică deosebit de importantă a variabilelor este domeniul de valabilitate şi durata de existenţă. Declararea se face cu ajutorul cuvântului cheie Static.

Proprietatea Cancel şi proprietatea Default. utilizatorul apasă tasta Esc. proprietatea Default trebuie să aibă valoarea True.com . ordinea de mutare cu tasta 59 PDF created with pdfFactory trial version www. O altă problemă deosebită în legătură cu variabilele o constituie conversia tipurilor. părăsirea form-ului (uneori şi a aplicaţiei) se poate face prin clic pe butonul respectiv.este de tip Integer celelalte fiind în mod implicit de tip Variant . Se ştie că tasta Esc are semnificaţia de abandonare a unei acţiuni sau operaţiuni. sNume = ”Popescu” . În mod implicit. Vor exista situaţii în care se va dori să se atribuie unei variabile de un anumit tip o valoare de alt tip lucru care nu este posibil.1980# .05.variabila va stoca data 01. Un singur buton de comandă de pe un anumit form poate avea valoarea True pentru proprietatea Cancel. prin apăsarea tastei Esc (dacă butonul are setat True pentru proprietatea Cancel) sau printr-o combinaţie de taste (dacă s-a folosit caracterul & în textul proprietăţii Caption). Un singur buton de comandă de pe un anumit form poate avea True pentru proprietatea Default (stabilirea valorii True pentru un nou buton va face ca la precedentul proprietatea Default să ia automat valoarea False. în atare condiţii.1980 Semnul egal din aceste exemple este operator de atribuire şi nu operator de egalitate. c as Integer. Proprietatea Default arată care dintre butoanele de comandă din form-ul curent interceptează un clic simulat de apăsarea tastei Enter. De aceea va trebui să se facă o conversie a valorii de atribuit la tipul variabilei. Dacă proprietatea Cancel a unui buton de comandă are valoarea True. Proprietatea TabIndex Am arătat că focus-ul se poate muta de la un control la următorul prin apăsarea tastei TAB (sau Shift+TAB pentru precedentul).05.pdffactory. b as Integer. Ordinea parcurgerii controalelor. Proprietatile controalelor Notiunea Focus –arata controlul care va receptiona un eveniment Clic simulat prin tasta Enter. Exemple: iNotaMaxima = 10 – variabila va stoca valoarea 10. Visual Basic îi atribuie în mod implici o valoare in funcţie de tipul de variabilei. În versiunile mai vechi de Basic la operaţia de atribuire se folosea şi cuvântul cheie Let pentru a se face distincţie între operaţia de atribuire şi cea de egalitate. Când se crează o variabilă.variabila va stoca şirul de caractere ˝Popescu˝ dtDataNasterii=#01. context în care se recomandă ca proprietatea Cancel să aibă valoarea True pentru butoanele de comandă de tipul Exit sau Abandon. Proprietatea Cancel este specifică butoanelor de comandă şi este cumva asemănătoare cu focus-ul. (majoritatea limbajelor fac această distincţie folosind operatori diferiţi). Stocarea datelor în variabile se face cu ajutorul instrucţiuni de atribuire. În numeroase cazuri Visual Basic execută în mod automat aceste conversii de date însă este recomandat ca programatorul să realizeze aceste conversii utilizând funcţiile de conversie. menţinându-se astfel integritatea form-ului). la execuţie. în acest scop. pentru butonul de comandă dorit. respectivul buton va recepta un eveniment clic simulat atunci când.Corect este Dim a as Integer .

a. Pentru a putea schimba culoarea implicită trebuie modificată valoarea proprietăţii Style (1-Graphical.pdffactory. iar unele controale nu este necesar să primească focus (spre exemplu. mărimii şi atributelor fontului. în aplicaţiile elaborate se lucrează cu mai multe proprietăţi. salvarea sau abandonarea aplicaţiei. Totuşi. Caption Este textul care se afişează pe butonul de comandă. variabilele dintr-un tablou) începe de la 0 (zero) şi se termină.com . cel mai adesea se definesc numai proprietăţile Name şi Caption şi se scrie doar procedura pentru evenimentul Click. Style Stabileşte dacă butonul va apărea ca un buton Windows standard . 2 pentru al treilea ş.numai cu text (valoarea 0-Standard) sau cu text şi imagine (valoarea 1Graphical). E bine de reţinut că în Visual Basic numerotarea elementelor unei mulţimi (articolele dintr-o listă. deşi există şi câteva excepţii. Tabelul 1. Left Indică distanţa până la marginea stângă a form-ului.d. Pentru definirea unui buton de comandă: > se plasează şi se conturează butonul pe form. Observaţie. în twips. cum ar fi tipărirea la imprimantă. Cu toate acestea. MousePointer Stabileşte forma cursorului mouse-ului atunci când. Are valoarea implicită True. utilizatorul indică butonul de comandă.ico) care apare pe buton (valoarea proprietăţii Style trebuie să fie 1-Graphical). cele mai importante fiind prezentate în tabelul 1. Se alege dintr-o listă de culori. logic. Enabled Stabileşte dacă butonul este activ (True) sau nu (False). > se definesc proprietăţile Name (preferabil cu prefixul cmd) şi Caption. nu are sens să stabilim focus pentru o etichetă). Principalele proprietăţi ale unui buton de comandă Proprietate Descriere BackColor Specifică culoarea fundalului butonului. la execuţie. Cancel Stabileşte dacă butonul va recepta un eveniment clic la apăsarea tastei Esc. Există 36 de proprietăţi şi 15 evenimente posibile pentru un buton de comandă. Butoane de comandă (Command Button) Sunt utilizate pentru declanşarea unei acţiuni sau operaţiuni. Default Stabileşte dacă butonul va recepta un eveniment clic la apăsarea tastei Enter. Font Permite schimbarea tipului. Se utilizează proprietatea TabIndex pentru care se stabilesc valori numerice: 0 pentru primul control. Dar nu întotdeauna controalele sunt definite în ordinea în care trebuie parcurse la utilizarea aplicaţiei. în loc de 0-Standard).l. l pentru al doilea. Height Precizează înălţimea butonului în twips. cu n . 60 PDF created with pdfFactory trial version www.TAB este dată de ordinea în care au fost definite controalele. Picture Precizează numele unei imagini grafice de tip icon (fişier de tip .m. > se adaugă cod pentru evenimentul Click. chiar dacă un alt control deţine focusul.

Tablndex Specifică. poziţia în ordinea de parcurgere a controalelor la execuţie. Enabled Stabileşte dacă eticheta este activă (True) sau nu (False). Height Precizează înălţimea etichetei în twips. este introdus un text prea mare pentru dimensiunile date. în Specifică. BackColor Specifică culoarea fundalului etichetei. 61 PDF created with pdfFactory trial version www. la indicarea butonului cu ajutorul mouse-ului. Indică distanţa până la marginea de sus a form-ului. modifică dimensiunile etichetei atunci când. dreapta. printr-o valoare numerică. conţinând explicaţii asupra a ceea ce trebuie să introducă utilizatorul în caseta de text. utilizatorul indică eticheta. Stabileşte dacă butonul va apărea pe ecran la execuţie (True) sau este invizibil (False).pdffactory. Are valoarea implicită True. mărimii şi atributelor fontului. MousePointer Stabileşte forma cursorului mouse-ului atunci când. poziţia în ordinea de parcurgere a controalelor la momentul execuţiei (eticheta nu poate deţine focus. la indicarea etichetei cu ajutorul mouse-ului. Se alege dintr-o listă de culori. Principalele proprietăţi ale unei etichete Proprietate Descriere Alignment Indică modul de aliniere a textului etichetei (stânga. centru). Tabelul 2. dar poate face parte din această ordine). BorderStyle Stabileşte stilul marginii etichetei. la execuţie. BackStyle Stabileşte stilul fundalului etichetei. explicaţii sau indicaţii) care se afişează pe form în poziţii bine precizate. Precizează textul (explicaţii sau indicaţii) ce se va afişa întro casetă de tip tooltip. dar numai prin codul-sursă.Tablndex TabStop ToolTipText Top Visible Width Etichete (Label) Conţin texte (titluri.com . Textul afişat de o etichetă (valoarea proprietăţii Caption) se poate modifica pe parcursul execuţiei aplicaţiei. AutoSize Dacă este setată True. printr-o valoare numerică. în twips. Cel mai adesea o etichetă însoţeşte o casetă de text. la execuţie. conform cerinţelor. Font Permite schimbarea tipului. ForeColor Stabileşte culoarea textului etichetei. Top Indică distanţa până la marginea de sus a form-ului. ToolTipText Precizează textul (explicaţii sau indicaţii) ce se va afişa întro casetă de tip tooltip. Precizează lăţimea butonului în twips. Precizează dacă butonul va obţine (True) sau nu (False) focus la parcurgerea cu tasta TAB. Left Indică distanţa până la marginea stângă a form-ului în twips. Caption Este textul care se afişează pe etichetă.

utilizatorul indică acest control. Pot apărea probleme specifice atunci când lungimea textului conţinut variază dacă acest text este introdus la execuţia aplicaţiei . MultiLine Permite (True) sau nu (False) introducerea textului pe mai multe linii. o dată cu plasarea etichetei. pe lângă cele de dimensionare. poziţia în ordinea de parcurgere a controalelor la execuţie.pdffactory. la execuţie. Tabelul 3. La scrierea pe mai multe linii se poate utiliza proprietatea ScrollBars. PasswordChar Stabileşte caracterul care apare repetat în casetă atunci când utilizatorul introduce o parolă. ForeColor Stabileşte culoarea cu care se va scrie textul. WordWrap Stabileşte dacă este posibilă scrierea textului pe mai multe linii în cadrul etichetei. MaxLength Specifică numărul maxim de caractere pe care le poate introduce utilizatorul în casetă. BorderStyle Stabileşte stilul fundalului casetei.dimensiunile etichetei se pot dovedi prea mari sau prea mici. Tablndex Specifică. pentru a permite deplasarea mai facilă în casetă.com . BackColor Specifică culoarea fundalului casetei. Left Indică distanţa până la marginea stângă a form-ului în twips. Are valoarea implicită True. dreapta. Ajustarea automată a textului va permite afişarea corespunzătoare a acestuia. Locked Precizează dacă utilizatorul poate (True) sau nu (False) să editeze textul ce apare în casetă. practic se utilizează mai mult proprietăţile Name şi Caption. centru). Visible Stabileşte dacă eticheta apare pe ecran la execuţie (True) sau este invizibilă (Fa îs e). MousePointer Stabileşte forma cursorului mouse-ului atunci când. TabStop Precizează dacă controlul va obţine (True) sau nu (False) focus la execuţie. care se pot preciza automat. Font Permite schimbarea tipului. mărimii şi atributelor fontului.twips. Enabled Stabileşte dacă caseta este activă (True) sau nu (False). printr-o valoare numerică. Se alege dintr-o listă de culori. Valoarea implicită 0 înseamnă număr nelimitat. Ca şi la butoanele de comandă. ScrollBars Specifică prezenţa barelor de derulare în cazul scrierii textului pe mai multe linii. Acesta 62 PDF created with pdfFactory trial version www. Text Specifică textul care se va afişa iniţial în casetă. Principalele proprietăţi ale unei casete de text Proprietate Descriere Alignment Indică modul de aliniere a textului în casetă (stânga. Width Precizează lăţimea etichetei în twips. Height Precizează înălţimea casetei în twips.

având aceeaşi semnificaţie. se obţine imediat ajutor prin apăsarea tastei F1 după ce s-a selectat proprietatea respectivă. mărimii şi atributelor fontului. Caption Este textul care se afişează în linia de titlu a form-ului. MousePointer Stabileşte forma cursorului mouse-ului atunci când. ToolTipText 63 PDF created with pdfFactory trial version www. De remarcat absenţa proprietăţii Caption. Se lucrează cu această proprietate doar în aplicaţii cu mai multe form-uri (MDI). la indicarea căsuţei de text cu ajutorul mouse-ului.poate fi înlocuit sau nu de către utilizator la execuţie. la execuţie. Cele mai importante proprietăţi sunt cuprinse în tabelul Tabelul 4 Principalele proprietăţi ale unui form Proprietate Descriere BackColor Specifică culoarea fundalului form-ului. în plus.com . ForeColor Stabileşte culoarea cu care se va scrie textul. se recomandă ca în caseta de text să se scrie o valoare implicită (proprietatea Text).pdffactory. Font Permite schimbarea tipului. Astfel. ca şi celelalte controale. Top Indică distanţa până la marginea de sus a form-ului în twips. la momentul execuţiei. Observaţie: după parcurgerea principalelor proprietăţi pentru trei dintre cele mai utilizate controale se observă că multe dintre ele se repetă. Enabled Stabileşte dacă form-ul este activ (True) sau nu (False). Height Precizează înălţimea form-ului în twips. Precizează textul (explicaţii sau indicaţii) ce se va afişa întro casetă de tip tooltip la execuţie. utilizatorul indică form-ul. MinButton Specifică dacă form-ul va avea sau nu buton de minimizare. Width Precizează lăţimea casetei în twips. Atunci când logica aplicaţiei o permite. o puteţi utiliza exact la fel şi pentru alte controale. Moveable Stabileşte dacă utilizatorul poate muta sau nu form-ul pe ecran. dacă sunt nelămuriri în privinţa unei proprietăţi. form-ul are proprietăţile sale. BorderStyle Stabileşte stilul fundalului form-ului. Proprietăţile form-ului Fiind el însuşi un obiect. Left Indică distanţa până la marginea stângă a ecranului. pe care utilizatorul poate să o menţină sau să o schimbe. Icon Arată imaginea de tip icon ce se va afişa pe taskbar atunci când utilizatorul minimizează form-ul. Visible Stabileşte dacă controlul va apărea pe ecran la execuţie (True) sau este invizibil (False). în twips. dacă aţi înţeles rolul proprietăţii Visible de la etichete. MaxButton Specifică dacă form-ul va avea sau nu buton de maximizare. Se alege dintr-o listă de culori.

iar reprezentarea grafică din figura 1 arată succesiunea în care se vor executa instrucţiunile programului. Implicit este twip. Indică distanţa până la marginea de sus a ecranului. Acestea arată de fapt căile pe care le poate urma prelucrarea datelor. pixel. Casetele de intrare (Input Box) se utilizează pentru introducerea datelor. dar acestea nu pot afişa mesaje de eroare sau de avertizare într-un format adecvat. în twips. acţiunea ia un curs sau altul. în funcţie de rezultatul evaluării acestora (adevărat sau fals).ico) care apare pe fundalul form-ului la execuţie. centimetri sau altele). maximizată sau cu aceleaşi dimensiuni ca la proiectare). Precizează înălţimea form-ului. Derularea unei aplicaţii presupune purtarea unui dialog cu utilizatorul. inch. Structurile de control din categoriile b) şi c) cuprind condiţii. Stabileşte dacă form-ul apare sau nu la execuţie în linia de start a Windows-ului.Picture ScaleMode ShowInTaskbar StartUpPosition Top Visible Width WindowState Precizează numele unei imagini de tip icon (fişier de tip . Stabileşte dacă form-ul va apărea pe ecran la execuţie (True) sau este invizibil (False). Stabileşte unitatea de măsură utilizată pentru form (twip. Se utilizează în acest scop casetele de mesaj (Message Box). cât şi prin afişarea de componente grafice pe un form. atât sub forma întrebare-răspuns. Condiţiile sunt construite cu ajutorul operatorilor de comparare.pdffactory. selecţia (b) şi iteraţia (c). a b Figura 1. 64 PDF created with pdfFactory trial version www. dar poate fi afişat centrat pe ecran sau centrat în cadrul unui form-părinte -vezi aplicaţiile MDI). O primă variantă de realizare a dialogului o constituie etichetele şi casetele de text. Stabileşte starea iniţială a ferestrei în care apare form-ul la execuţie (minimizată. Stabileşte poziţia form-ului pe ecran (implicit acesta apare în stânga sus. având opţiuni suplimentare faţă de casetele de text. STRUCTURI DE CONTROL Din teoria programării se ştie că algoritmul de rezolvare a unei probleme se codifica utilizând structurile de control. Structurile de control fundamentale c Structurile de control fundamentale sunt secvenţa (a).com . în twips.

o txtRaspuns .Caption Are rezultatul True atunci când valoarea din stânga este mai mică sau egală (numeric sau alfabetic) decât cea din dreapta.Operatorii de comparare în timp ce operatorii matematici produc ca rezultat valori numerice.Caption > Are rezultatul True (adevărat) atunci Estimat când valoarea din stânga este strict mai mare (numeric sau alfabetic) decât cea din dreapta. iar a este 83. Observaţie: Visual Basic nu face diferenţă între literele mari şi literele mici. întrucât operatorii de comparare se utilizează pentru construirea condiţiilor.litere mici nu se referă la cuvintelecheie (de exemplu. s Vârsta = LimitaMin Are rezultatul True atunci când valoarea din stânga este egală sau identică cu cea din dreapta. Notă: dacă nu este adevărată condiţia construită cu oricare dintre operatorii de comparare. Atunci cum este „Da" diferit de „DA"? Diferenţa litere mari . operatorii de comparare sunt utilizaţi în expresii care produc rezultatul Adevărat sau Fals (True/ False). iar txtNumePren este acelaşi lucru cu txtnumepren). < Salariu < 1200000 Are rezultatul True atunci când valoarea din stânga este strict mai mică (numeric sau alfabetic) decât cea din dreapta. <= N <= IblNumar. Pentru exemplificarea comparaţiilor.Text <> "Da" Are rezultatul True atunci când valoarea din stânga este diferită de cea din dreapta. Tabelul 1. >= Nume >= "Popa" Are rezultatul True atunci când valoarea din stânga este mai mare sau egală (numeric sau alfabetic) decât cea din dreapta. valoarea „Da" este diferită de „DA".exemple 65 PDF created with pdfFactory trial version www. atunci rezultatul nu poate fi decât False (fals). Rezultate comparaţii . ci la constantele de tip şir de caractere. declaraţia Dim se poate scrie şi dim sau DIM. Operatorii de comparare Operat Exemplu Descriere or > IblProfit .com . De remarcat din tabelul l că operatorii de comparare se pot utiliza atât pentru valori numerice. în această reprezentare A este 65. La compararea şirurilor. Rezultatul evaluării unei condiţii este întotdeauna de tip Boolean. de unde şi cele două căi posibile de acţiune. trebuie să se ţină cont de codurile ASCII ale literelor. ei se mai numesc operatori condiţionali. Tabelul 2. vezi tabelul 2. cât şi pentru şiruri de caractere.pdffactory. Considerând o variabilă strRaspuns.

Operatorul OR („sau" logic) face ca o condiţie să fie adevărată dacă cel puţin una dintre subcondiţiile care o compun este adevărată. urmat de And şi Or. Operatorul NOT (negaţie logică) are ca efect inversarea valorii de adevăr a unei condiţii. sngSalar>1000000 And (intAn=2001 Or 1=1) este adevărată dacă şi numai dacă sngSalar este mai mare de 1000000 şi intAn este 2001. prin utilizarea operatorilor NOT.pdffactory.com .Comparaţie Rezultat 4 > 2 True 4 < 1 False 4 < 8 True "Popa" <= "Popescu" True "Nu" o "NU" True 0 >= 0 True 0 <= 0 True 1 <> 2 True 2 >= 3 False Combinarea condiţiilor cu ajutorul operatorilor logici Condiţiile pot fi compuse din subcondiţii. AND şi OR (vezi tabelul 3). Pentru modificarea ordinii de evaluare implicite într-una dorită de programator se folosesc parantezele. Tabelul 3. 66 PDF created with pdfFactory trial version www. dar operatorii logici o pot schimba. sngSalar>1000000 And intAn=2001 Or 1=1 este adevărată oricând. Or If (A > B) Or (C < Are rezultatul True (adevărat) atunci D) când măcar una dintre condiţii este adevărată. Exemplu: sngSalar>1000000 And 1=1 este adevărată doar dacă sngSalar este mai mare de 1000000. Operatorul AND („şi" logic) face ca o condiţie să fie adevărată dacă şi numai dacă subcondiţiile care o compun sunt ambele adevărate. Negaţia trebuie utilizată cu atenţie şi numai dacă nu există alternativă (pentru exemplul din tabelul 3 exista o variantă mai simplă: strRasp<>"Da"). cel mai important în ordinea priorităţii este Not. care au exact acelaşi rol cu cele din aritmetica elementară. sngSalar>1000000 Or 1=1 este adevărată oricând.Utilizarea operatorilor logici Operator Exemplu Descriere And If (A > B) And Are rezultatul True (adevărat) atunci (C < D) când ambele condiţii sunt adevărate. Not If NottstrRasp = Are rezultatul True (adevărat) atunci "Da") când condiţia evaluată este falsă şi invers. în scrierea unor asemenea condiţii compuse trebuie cunoscută prioritatea operatorilor logici. Ordinea în care se evaluează o condiţie este în mod normal de la stânga la dreapta.

Când condiţia este adevărată.Text > 100000000) Then ' se calculează sporul cuvenit sngSporVanz = txtVanzari. Se recomandă. considerăm că în calculul salariului la firma X se acordă un spor de 10% din salariu angajaţilor care realizează vânzări mai mari de 100 milioane lei în luna respectivă. pentru a urmări mai uşor logica prelucrărilor. O instrucţiune If scurtă se poate scrie pe o singură linie. O astfel de comparaţie generează un mesaj de eroare de tipul „Data type mismatch". Un format frecvent utilizat este: If <condiţie> Then <bloc de instrucţiuni> End If Spre exemplu. Integer şi Single). Ele ajută doar la delimitarea acesteia de restul codului.Observaţie: Atenţie la compatibilitatea tipurilor celor două valori supuse comparării. în caz contrar. care indică nepotrivirea. La execuţia secvenţei de mai sus se verifică dacă valoarea introdusă în caseta de text este mai mare de 100 de milioane. Poate părea ciudată formula de calcul pentru total sporuri.com . Visual Basic le converteşte tacit într-o valoare numerică cu care se pot realiza calcule. astfel: If <condiţie> Then <instrucţiune> 67 PDF created with pdfFactory trial version www. Pentru calculul sporurilor.1 'se cumulează sporul cuvenit la total sporuri sngSporuri = sngSporuri + sngSporVanz End If Datele introduse de utilizatori prin intermediul controalelor precum casetele de text ţin de proprietatea Text. Matematic.pdffactory. se va scrie următoarea secvenţă de cod: If (txtVanzari. scrierea indentată a instrucţiunilor. în Visual Basic şi în multe alte limbaje. O interpretare completă ar suna astfel: la valoarea precedentă (sngSporuri din membrul drept) se adaugă sporul realizat (sngSporVanz) şi se obţine o nouă valoare a totalului sporurilor (sngSporuri din membrul stâng). Compatibilitatea tipurilor se referă la faptul că se pot compara două date numerice. fără a fi necesar terminatorul End If. Observaţie: nu este obligatorie prezenţa parantezelor în scrierea condiţiei. semnul „=" arată egalitatea dintre cele două părţi. Structuri alternative (selecţia) Instrucţiunea If Este probabil cea mai întâlnită instrucţiune în logica derulării unei aplicaţii. Cu alte cuvinte. el are şi semnificaţia de atribuire: elementului din stânga i se atribuie valoarea din dreapta. se calculează sporul cuvenit şi se adaugă sporul calculat la total sporuri. care este foarte flexibilă. nu se poate compara direct o valoare numerică cu un şir de caractere. Valoarea vânzărilor este introdusă de utilizator într-o casetă de text denumită txtVanzari. cum am mai menţionat. în exemplul de faţă s-a realizat actualizarea variabilei sngSporuri. If evaluează o condiţie în urma căreia se execută una din două acţiuni posibile (specificate prin blocuri de instrucţiuni). nu se execută nimic. chiar dacă sunt de tipuri diferite (de exemplu.Text * 0. Atunci când se introduc cifre.

As String ' I se cere utilizatorului sa specifice numele localităţii ' Valoarea implicita este Iaşi strLocalitate = InputBox("Specificaţi localitatea". atunci variabilei strLocalitate i s-a atribuit un şir nul ("").Else în forma simplificată de mai sus. firma X oferă o reducere de 5% pentru facturile care au valori mai mari de 20 de milioane lei.pdffactory. Dim strLocalitate. Pentru a defini o altă secvenţă de instrucţiuni care să se execute atunci când condiţia este falsă. Fără operatorul logic Or. acesta se va afişa într-o casetă de mesaj. Dacă utilizatorul a introdus numele localităţii. "Iaşi") ' Se verifica localitatea introdusa If (strLocalitate = "") Then ' Utilizatorul a selectat butonul Cancel MsgBox "Nu aţi introdus nici o localitate" Else ' Utilizatorul a indicat localitatea. considerăm că. considerăm că o anumită taxă este O pentru cei care au vârsta sub 25 de ani sau peste 60 de ani. Dacă utilizatorul a terminat dialogul prin butonul Cancel. astfel: If <condiţie> Then <bloc de instrucţiuni 1> Else <bloc de instrucţiuni 2> End If Spre exemplu. în calculul valorii de plată corespunzătoare facturilor întocmite. . secvenţa este mai concisă: If (sngVarsta < 25) Or (sngVarsta >60) Then 68 PDF created with pdfFactory trial version www.Instrucţiunea If. Într-o casetă de intrare i se cere utilizatorului să specifice numele localităţii. If execută o secvenţă de instrucţiuni doar atunci când condiţia testată este adevărată. MsgBox "Aţi introdus localitatea " & strLocalitate" End If Operatorii logici simplifică modul de scriere a structurilor alternative. Then.95 Else sngValDePlata = sngValFact End If Un exemplu complex este prezentat în continuare.com . . If (sngValFact >= 20000000) Then sngValDePlata = sngValFact * 0. . __ "Nume localitate". se utilizează formatul complet al lui If. . secvenţa s-ar scrie: If (sngVarsta < 25) Then sngTaxa = 0 Else If (sngVarsta >60) Then sngTaxa = 0 End If End If Dacă se utilizează operatorul logic Or. In exemplul de mai jos.

Caption = "Personal nedidactic" End If O alternativă elegantă pentru astfel de situaţii este instrucţiunea Select Case. Aceasta nu conţine decât un terminator End If.Caption = " Grad didactic: Conferenţiar" Else If (intCategorie = 5) Then IblTitlu.Caption = "Grad didactic: Asistent " Elseif (intCategorie = 3) Then lblTitlu. 69 PDF created with pdfFactory trial version www.com .Caption = "Grad didactic: Preparator" Else If (intCategorie = 2) Then IblTitlu.Caption = "Grad didactic: Preparator" Elseif (intCategorie = 2) Then lblTitlu.ElseIf... If (intCategorie = 1) Then IblTitlu.pdffactory..Caption = " Grad didactic: Conferenţiar" Elseif (intCategorie = 5) Then IblTitlu.sngTaxa = 0 End If Instrucţiunea Select Case (structura alternativă generalizată) S-a observat din exemplele de mai sus că. Formatul ei este: Select Case <expresie> Case <valoarel> <bloc de instrucţiuni> Case <valoare2> <bloc de instrucţiuni> . Exemplul ce urmează vine în sprijinul acestei afirmaţii.Then.Caption = "Grad didactic: Asistent " Else If (intCategorie = 3) Then lblTitlu..Caption = " Grad didactic: Lector" Else If (intCategorie = 4) Then lblTitlu. este posibilă imbricarea mai multor instrucţiuni If. If (intCategorie = 1) Then lblTitlu. ce permite selecţia multiplă.Caption = " Grad didactic: Profesor" Else IblTitlu.Caption = "Personal nedidactic" End If End If End If End If End If Codul de mai sus devine puţin mai clar dacă se foloseşte o variantă specială a instrucţiunii If..Caption = " Grad didactic: Profesor" Else lblTitlu. pentru a codifica mai multe alternative.. dar cu cât numărul acestora este mai mare.Caption = " Grad didactic: Lector" Elseif (intCategorie = 4) Then IblTitlu. cu atât urmărirea lor devine mai dificilă. anume If.

care poate fi numerică sau şir de caractere.com .dacă s-a specificat — blocul de instrucţiuni de după Case Else (altfel. folosind alt operator decât cel de egalitate.Caption = "Personal nedidactic" End Select Deci. dacă variabila intCategorie ar avea valoarea 3. Pentru a extinde posibilităţile de utilizare a structurii alternative generalizate.[Case <valoaren> <bloc de instrucţiuni>] [Case Else <bloc de instrucţiuni>] End Select Acest format pare. există şi alte formate pentru Select Case.pdffactory. Orice altă valoare în afara celor de la l la 5 ar genera textul „Personal nedidactic". Se scrie astfel: Select Case <expresie> Case is <relaţie> <bloc de instrucţiuni> Case is <relaţie> <bloc de instrucţiuni> [Case is <relaţie> <bloc de instrucţiuni>] [Case Else <bloc de instrucţiuni>] End Select Un al doilea format posibil are în vedere mai multe intervale de valori în care poate să se încadreze <expresie>.Caption = " Grad didactic: Profesor" Case Else: IblTitlu. Un prim format permite compararea expresiei cu o valoare.Caption = "Grad didactic: Preparator" Case 2: IblTitlu.Caption = " Grad didactic: Lector" Case 4: IblTitlu. Exemplul privind stabilirea gradului didactic este rescris cu ajutorul instrucţiunii Select Case. Observaţie: se pot scrie două sau mai multe instrucţiuni pe aceeaşi linie dacă sunt separate prin caracterul „:". Dacă expresia are o valoare ce nu se regăseşte între valorile prevăzute se va executa . nu se execută nimic).Caption = "Grad didactic: Asistent " Case 3: IblTitlu. execuţia continuând cu următoarea instrucţiune de după End Select (dacă există). Select Case intCategorie Case 1: IblTitlu. la prima vedere. Select Case <expresie> Case <expresiel> To <expresie2> <bloc de instrucţiuni> Case <expresiel> To <expresie2> <bloc de instrucţiuni> [Case <expresiel> To <expresie2> <bloc de instrucţiuni>] [Case Else <bloc de instrucţiuni>] End Select 70 PDF created with pdfFactory trial version www. Se au în vedere mai multe valori posibile pentru <expresie>. In funcţie de valoarea efectivă a expresiei.Caption = " Grad didactic: Conferenţiar" Case 5: IblTitlu. la fel de dificil ca şi o secvenţă de If-uri imbricate. se va executa un singur bloc de instrucţiuni. s-ar afişa în textul etichetei lblTitlu „Grad didactic: Lector".

Caption = "Nu este bursier.pdffactory. care preia datele despre produse dintr-un fişier de date. ca în exemplul: Select Case intCategorie Case 1.Caption = "Bursa de studiu" Case 10: lblFinal. Structura repetitivă Do While. blocul de instrucţiuni nu se va executa nici măcar o dată! Atenţie! Există riscul unei bucle infinite. Select Case sngMediaGen Case is < 5: lblFinal.Caption = "Cercetător ştiinţific" Case Else IblTitlu. Spre exemplu. cât timp condiţia testată este adevărată (structură repetitivă condiţionată anterior).99: IblFinal.Există şi un format care foloseşte mai multe valori separate prin virgule.Caption = "Personal nedidactic" End Select Mai mult decât atât. . Sau o procedură pentru actualizarea preţurilor produselor.Caption = "Personal didactic" Case 3 IblTitlu.Caption = "Situaţie şcolara neincheiata" Case 9.15 To 9. Formatul general al instrucţiunii Do este: Do While <condiţie> [<bloc de instrucţiuni>] [Exit Do] [<bloc de instrucţiuni>] Loop O varianta mai veche şi mai simplă este: While <condiţie> [<bloc de instrucţiuni>] Wend Instrucţiunile din cuprinsul buclei (una sau mai multe) se execută în mod repetat. Loop (execută-cât-timp) Este probabil cel mai frecvent utilizată în programele Visual Basic (instrucţiunile repetitive se mai numesc bucle). prin care se testează în diferite moduri valoarea variabilei sngMediaGen.Caption = "Bursa.5 IblTitlu.2. Dacă între timp condiţia devine falsă.4. Prin Loop se marchează sfârşitul iteraţiei. Trebuie precizat aici că dacă din start condiţia este falsă. în funcţie de cerinţele aplicaţiei. . dacă nu se are în vedere o modalitate de actualizare a variabilei testate în <condiţie>. Exemplul de mai jos prezintă o astfel de combinaţie. o procedură care calculează numărul de puncte obţinute la finele anului I de toţi cei 1200 de studenţi trebuie să se repete de 1200 de ori." End Select Structuri repetitive (iteraţia) Prin iteraţie se înţelege o secvenţă de program a cărei execuţie se repetă. 71 PDF created with pdfFactory trial version www. programul continuă cu instrucţiunea ce urmează după Loop. este posibilă şi combinarea formatului standard cu cele suplimentare descrise.de merit" Case Else: lblFinal.com . se va repeta până când se ajunge la sfârşitul fişierului.

"Preluare date") ' se verifica daca s-a introdus o valoare 'daca s-a apăsat Cancel. Nu exista avantaje folosind Do While sau Do Until. Do Until execută un bloc de instrucţiuni cât timp condiţie este falsă. secvenţa de cod anterioară devine mai eficientă: 72 PDF created with pdfFactory trial version www. Trebuie aleasa forma care se potriveşte cel mai bine (în viziunea programatorului) unei situaţii date. trebuie sa aveţi" & _ " vârsta intre 18 si 55 de ani". ." End I f Observaţie: De această dată. "Eroare!" ' se solicita vârsta strVarsta = InputBox('Ce vârsta aveţi?".com . Loop (execută-până-cand) Spre deosebire de Do While. Cu un astfel de format.pdffactory.18) ori (55. vbExclamation. operatorul logic folosit în condiţie este And întrucât ne interesează să solicităm va până ce aceasta se situează în intervalul [18.Structura repetitivă Do Until.55]. abandonam If (strVarsta = "") Then Exit Do End I f intVarsta = Val(strVarsta) Loop If intVarsta = 0 Then End Else MsgBox "Deci aveţi " & intVarsta & " ani. . până când o condiţie devine adevărată (structură repetitivă. pe când la exemplul anterior se solicita vârsta atât timp cât nu era în unul din intervalele (0. Altfel spus. 32767). Formatul general al instrucţiunii Do Until este: Do Until <condiţie> [<bloc de instrucţiuni>] [Exit Do] [<bloc de instrucţiuni>] Loop Tot ceea ce s-a discutat la Do While rămâne valabil (cu excepţia faptului că bucla se execută cât timp condiţia este falsă). condiţionată posterior). în funcţie de rezultatul evaluarii condiţiei. Exemplul anterior se poate rescrie astfel: Do Until ((intVarsta >= 18) And (intVarsta <= 55)) MsgBox "Pentru a putea participa. Există nişte variante ale instrucţiunilor Do While şi Do Until care permit executia necondiţionată a unui bloc de instrucţiuni cel puţin o dată: Do [<bloc de instrucţiuni>] [Exit Do] [<bloc de instrucţiuni>] Loop While|Until <condiţie> Execuţia blocului de instrucţiuni se reia sau nu.

trebuie sa aveţi" & _ " vârsta intre 18 si 55 de ani". Instrucţiunea For. Exit For are cam acelaşi rol ca Exit Do de la comenzile Do .Dim strVarsta As String Dim intVarsta As Integer Do ' Se preia valoarea introdusa de utilizator strVarsta = InputBox("Ce vârsta aveţi?". variabila este incrementată/decrementată cu valoarea specificată prin clauza Step (implicit se consideră valoarea 1).pdffactory. "Eroare!" End I f Loop While ((intVarsta < 18) Or (intVarsta > 55)) If intVarsta = O Then End Else MsgBox "Deci aveţi " & intVarsta & " ani.<contor> . "Preluare date") ' Se verifica daca s-a introdus o valoare If (strVarsta = "") Then Exit Do End I f intVarsta = Val(strVarsta) If ((intVarsta < 18) Or (intVarsta > 55)) Then ' Valoarea introdusa nu respecta restricţia MsgBox "Pentru a participa. Exemplu: intSuma = 0 For intNumar = l To 10 73 PDF created with pdfFactory trial version www. _ vbExclamation. După o execuţie.care ia valori într-un interval specificat. execuţia blocului de instrucţiuni se reia. aceasta se va executa o dată pentru a cere introducerea vârstei şi se va repeta doar dacă valoarea introdusă nu respectă restricţia stabilită. Dacă nu a ajuns la valoarea finală.. în caz contrar. execuţia trece la linia de după Next.com . apoi comparată cu valoarea finală (<val-stop>). Formatul de utilizare este: For <contor> = <val-start> To <val-stop> [Step <increment>] [<bloc de instrucţiuni>] [Exit For] [<bloc de instrucţiuni>] Next <contor> Repetarea este controlată de o variabilă . Next Codifică structura repetitivă cu număr definit de paşi. Variabila nu trebuie declarată anterior: ea primeşte o valoare iniţială (<valstart>). ." End I f Plasând funcţia InputBox () la începutul buclei. în care o secvenţă de cod se repetă de un număr specificat de ori.. Loop. .

valoare ce va fi adunată la intSuma: intSuma = intSuma + 2 Repetarea se va face în mod evident de 10 ori.com . până când intNumar ajunge la valoarea 10. . ce are valoarea iniţială l şi valoarea finală 10 (pasul este 1). De asemenea. astfel că intNumar va avea valoarea 2. combinată cu programarea modulară contribuie la creşterea eficienţei şi productivităţii în proiectarea de aplicaţii. . Exit For. instrucţiunea Next va duce intNumar la valoarea 11. intSuma este variabila care va reda suma numerelor de la l la 10. Variabila-contor este intNumar. realizând pentru intNr numărătoarea inversă (valoarea de start este mai mare decât valoarea de oprire de data aceasta). se porneste de la ideea că dacă valoarea salariului este 0. care realizează ieşirea forţată din procedură. astfel că se produce ieşirea din buclă. ce va fi adunată la intSuma: intSuma = intSuma + 10 După a 10-a execuţie.intSuma = intSuma + intNumar Next intNumar Secvenţa de mai sus calculează suma numerelor de la l la 10. în secvenţa For .pdffactory. Este mai greu daca sunt 100 sau 1000 de numere sau mai multe. PROGRAMAREA MODULARĂ ÎN VISUAL BASIC Programarea structurată. sunt executate în contextul unei instrucţiuni I f. De regulă. La prima execuţie a buclei. Next s-ar fi modificat doar valoarea finală pentru variabila de control (For intNumber = l To 100). ca în exemplul ce urmează: For intNr = 5 To l Step -l Beep Next intNr Această secvenţă produce de 5 ori un semnal sonor (instrucţiunea Beep). continuând cu următoarea instrucţiune de după Next. intNumar are valoarea l. „responsabilă" cu introducerea structurilor de control în programe. o dată cu numărul de erori în scrierea programelor. fiind iniţializată cu valoarea 0. Observaţie: în mod similar se poate utiliza în cadrul unei proceduri instrucţiunea Exit Sub. Prin divizarea aplicaţiei în mai multe proceduri se reduce efortul. este simplificată întreţinerea aplicaţiei. se produce ieşirea din buclă. în schimb. care este mai mare decât valoarea finală. Exemplu care utilizează clauza Exit For: For intN = l To intNrSalariati sngSalariu = Val(strSalariu) If (sngSalariu = 0) Then Exit For Next intN în exemplul de mai sus. ca şi Exit Do. valoare care se adună la intSuma: intSuma = intSuma + l Când se ajunge la Next. intNumar se realizează incrementarea variabilei-contor cu l. Instrucţiunea propusă mai sus nu mai este la fel de uşor de scris. Dacă este necesar se poate lucra cu un pas negativ. Sigur că adunarea numerelor de la l la 10 se facea mult mai uşor printr-o singură linie decod:intSum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10. 74 PDF created with pdfFactory trial version www.

Ele sunt definite şi apelate apoi de oriunde din program. în programarea modulară se utilizează frecvent doi termeni: procedură apelată (procedura care a fost invocată de o altă procedură) şi procedură apelantă (procedura care a invocat o altă procedură). Singura deosebire dintre funcţii şi subrutine este că funcţia returnează o valoare pe care procedura apelantă o atribuie unei variabile sau unui control (cuvintele-cheie sunt Function. în timp ce subrutina nu (cuvintele-cheie sunt Sub. Call Iniţializare () If txtCalculSal= "Regie" Then Call CalculSalRegie() Else Call CalculSalAcord () EndIf Se urmăreşte împărţirea unei sarcini în subsarcini şi a acestora în alte subsarcini. Atunci când o procedură-eveniment este foarte complexă. End Function). iar corectarea erorilor şi modificarea programului sunt simplificate. End Sub). Apelul procedurilor. simplu şi uşor de urmărit. pe lângă procedurile-eveniment. . scrise pentru realizarea diverselor sarcini. .com . o procedură standard (subrutină) este o procedură independentă non-eveniment care se execută atunci când este apelată de o altă procedură. după procedurileeveniment sau într-un modul extern.proceduri proprietate Aceste categorii de proceduri nu sunt declanşate de producerea unui eveniment. . să apeleze o altă procedură. modul de elaborare a aplicaţiilor în Visual Basic este un ghid. Formatul său este: Call <nume-procedură> La sfârşitul execuţiei procedurii apelate (marcat prin End Sub sau Exit Sub) procedura apelantă redobândeşte controlul asupra execuţiei aplicaţiei. De fapt. Deci. ataşat proiectului. apelarea se poate face de oriunde dacă procedura a fost definită prin cuvântul-cheie Public.Chiar dacă nu se cunoaste nimic despre metoda programării structurate. ea este descompusă în proceduri mai mici. apelate la nevoie. dacă este definită cu Private. ea va putea fi apelată doar de celelalte proceduri ale modulului din care face parte. la rândul său.subrutine (proceduri) standard.pdffactory.proceduri funcţii. concretizează programarea structurată. după care se returnează o valoare şi controlul procedurii din care s-a apelat funcţia. Codul devine astfel foarte bine structurat. Visual Basic lucrează cu alte trei categorii de proceduri: . în condiţiile în care o procedură apelată poate. . . până la ultimul nivel de detaliere posibil. . Procedurile standard şi funcţiile sunt păstrate în modulul form-ului. O funcţie este o procedură 75 PDF created with pdfFactory trial version www. care execută sarcini clare. Procedurile-eveniment de dimensiuni mici. în locul programelor vaste. secvenţa dintr-o procedură pentru calculul salariilor de mai jos apelează (prin instrucţiunea Call) trei proceduri. Deci. al cărei rol este de apelare a procedurii al cărei nume se specifică. Spre exemplu. La fel se întâmplă şi cu funcţiile apelate: se execută procedura definită pentru funcţia respectivă. monolitice. Subrutine şi funcţii în exemplul de mai sus a fost folosită instrucţiunea Call.

se parcurg următorii paşi: 1. se scrie codul. Visual Basic le va adăuga automat)._ sngNotaLab As Single. care va genera automat prima şi ultima linie a procedurii. astfel că se va scrie codul o singură dată. Pentru o subrutină locală.prin dublu clic se deschide fereastra Code în care se va scrie codul. Noul modul apare în structura proiectului . bas). altfel se adaugă codul în modulul form-ului (la sfârşitul acestuia). considerând că se adaugă în modulul form-ului curent. dacă se are în vedere utilizarea procedurii şi în alte aplicaţii se adaugă un nou modul standard (din cele cu extensia .pdffactory. Definirea subrutinelor Termenii „subrutină" şi „procedură" sunt sinonimi. se realizează calcule specifice pentru determinarea salariului de bază. Pentru a adăuga un modul extern într-o aplicaţie. sngNotaTest2 As Single. pentru procedură (de exemplu CalculPunctaj sau Punctaj PartialMedii). apoi a diferitelor sporuri. a impozitului etc. 3. 2. acelaşi rezultat se obţine prin comanda Tools|Add Procedure. Private Sub CalculPunctaj() Dim sngNotaTestl As Single. se stabileşte un nume adecvat. procedura care tipăreşte antetul firmei va fi utilizată în mai multe aplicaţii. Spre exemplu. Pentru definirea unei subrutine ce calculează pentru fiecare student punctajul obţinut la sfârşitul semestrului la disciplina Medii de programare. Se includ aici subrutinele şi funcţiile necesare în mai multe aplicaţii diferite. Se pot defini subrutine distincte pentru fiecare calcul în parte. în general. 4. programatorii preferă să pună procedurile standard de utilitate generală în module externe. sngPunctaj As Single Dim intNrAbsente As Integer ' iniţializare variabile sngNotaTestl = txtNotaTl sngNotaTest2 = txtNotaT2 sngNotaLab = txtNotaLab sngNotaProiect = txtNotaP intNrAbsente = txtNrAbs If intNrAbsente > 3 sngPunctaj = 0 76 PDF created with pdfFactory trial version www. care se va include în orice aplicaţie în care este necesară tipărirea antetului. Subrutinele sunt frecvent utilizate în aplicaţiile complexe.independentă non-eveniment care se execută atunci când este apelată de o altă procedură şi căreia îi returnează după execuţie o valoare. Visual Basic scrie automat sfârşitul procedurii End Sub. După cum se ştie. se începe cu Private Sub CalculPunctaj() (dacă se omit parantezele. cât mai explicit. sngNotaProiect As Single. se va salva într-un modul extern. Exemplu o aplicaţie pentru calculul salariilor. în fereastra Project Explorer se execută clic dreapta şi se selectează comanda Add Module.com .

se utilizează într-o relaţie de calcul ori se compară valoarea returnată cu una dintre valorile posibile (în cazul nostru funcţia returnează valoarea 0 sau 1): If VErori 0=1 Then Exit Sub End If Dacă funcţia Calclmp () s-ar utiliza pentru determinarea impozitului pe salariu.###") End Sub + sngNotaLab*0. care se poate utiliza astfel: IblImpozitSal.15 + sngNotaTest2*0. txtNrAbs. dar poate fi salvată într-un modul extern. toate numele controalelor trebuie precedate de numele form-ului (exemplu: frmNote. funcţia returnează o valoare care se va utiliza în procedura apelantă. dar în instrucţiunile de atribuire nu s-a specificat proprietatea Text aceasta este proprietatea implicită pentru o casetă de text. Dacă sunt definite mai multe astfel de funcţii şi subrutine. 77 PDF created with pdfFactory trial version www. atunci valoarea returnată ar fi a impozitului calculat. caz în care nu se mai specifică nici parantezele. se poate alcătui o bibliotecă de rutine generale. Text). o funcţie definită de utilizator nu se include automat între funcţiile bibliotecii Visual Basic.Caption = CalcImp() sau sngTotalRetineri = sngTotalRetineri + CalcImp() Spre deosebire de funcţiile predefinite (built-in functions).Else SngPunctaj = sngNotaTestl*0.funcţia VErori () care verifică posibilele erori la preluarea datelor.com . Apelarea acestei proceduri dintr-o altă procedură (să zicem procedura-eveniment Click () a unui buton de comandă de pe form) se poate face: Call CalculPunctaj() sau CalculPunctaj Deci. "##. care se atribuie de obicei unui control sau unei variabile.1 + Observaţie: dacă subrutina ar face parte dintr-un modul extern. accesibile oricărei aplicaţii. la redarea controlului. Considerând exemplul dintr-un capitol anterior .l Endlf lblPunctaj = Format(sngPunctaj. apelarea ei NU se face prin: VErori() Această funcţie (şi oricare alta) returnează o valoare. accesibil de oricâte ori este necesar. Daca se studiaza partea de iniţializare a variabilelor se observa ca datele se preiau din mai multe casete de text. Definirea funcţiilor Singura deosebire esenţială faţă de subrutine este că. de aceea şi modul de apelare este diferit. o procedură se poate apela prin simpla specificare a numelui ei.15 sngNotaProiect*0.pdffactory.

8% din vânzările realizate.008 'preluarea valorii vânzărilor sngVanzari = Val(txtVanzari) 'calcul comision general din vânzări sngComis = sngVanzari * sngCG 'adăugare comision suplimentar Select Case sngVanzari Case Is >= 200000000 sngComis = sngComis + sngVanzari*sngCSl Case Is 100000000 To 200000000 sngComis = sngComis + sngVanzari*sngCS2 End Select Comision = sngComis ' Returneaza valoarea calculata End Function De reţinut modalitatea în care unei funcţii îi este atribuită valoarea calculată: Comision = sngComis Nu există nici o variabilă cu numele Comision.dacă vânzările sunt mai mari de 100 de milioane. agenţii primesc un bonus de 0.5% din vânzări..com . . 78 PDF created with pdfFactory trial version www. Exemplu unei funcţii care calculează comisionul din vânzări cuvenit agenţilor unei firme. în condiţiile în care: . End Function în linia de început se specifică domeniul (se va scrie Private dacă funcţia este accesibilă doar dintr-un form).01 sngCSl = 0.. care primeşte astfel valoarea variabilei sngComis. sngComis As Single Dim sngCG As Single. începutul şi sfârşitul unei astfel de proceduri se scriu: Public Function VErori() As Integer .toţi agenţii primesc 1% din vânzările realizate. Deocamdată nimic despre argumentele (sau parametrii) funcţiei. sngCSl As Single. sngCS2 As Single ' iniţializare variabile ' indicarea comisioanelor din vânzări acordate sngCG =0. Private Function Comision() As Single Dim sngVanzari As Single.005 sngCG = 0. iar dacă sunt mai mari de 200 de milioane.Modul de definire a unei proceduri funcţii este asemănător cu cel al subrutinelor.pdffactory. se foloseşte numele funcţiei. numele funcţiei şi tipul valorii returnate (As Integer arată că se returnează un număr întreg). bonusul este de 0.

Public Sub Calcul(Y As String.trebuie prevăzută câte o ieşire din funcţie pe fiecare ramură a acestei structuri de control.Observaţie: pentru a încheia o procedură funcţie înainte de finalul propriu-zis se foloseşte instrucţiunea Exit Function. ci doar parantezele de rigoare. sunt posibile şi modificarea valorii acestor variabile de către procedura apelată şi transmiterea noilor valori procedurii apelante. dacă folosim această procedură la calculul 79 PDF created with pdfFactory trial version www. aflând deci numărul de valori dintr-o listă (pentru câţi salariaţi se aplică acest calcul): intNrSal = Ubound(SalBaza) Am întâlnit aici cuvântul-cheie Opţional. SalBaza() As Single. _ Altele () as Single) Cu ajutorul funcţiei UBourid () se determină cea mai mare valoare a indicelui unei variabile listă.V) 'apelare procedura . După transmiterea datelor.pdffactory.. dar vor putea fi utilizate în execuţia procedurii apelate. Numele de argumente utilizate la apelarea unei proceduri pot fi diferite de numele utilizate de aceasta. W As Single) 'începe procedura Singura restricţie este ca numărul de argumente transmise.com . Call Calcul(X. Spre exemplu. Dacă se transmit unei proceduri variabile de tip listă. Se va scrie: Public Sub Calcul(AniVechime() As Integer. în mod normal. De avut în vedere în acest caz că întotdeauna funcţia trebuie să returneze o valoare: atribuirea valorii de returnat trebuie să se facă înainte de Exit Function. fiind disponibile pentru toate procedurile din modul. De regulă se lucrează cu variabile locale (este chiar recomandat de practica programării să se evite pe cât posibil variabilele publice . nu trebuie indicat indicele variabilei în lista de argumente. Variabilele declarate cu Public (în loc de Dim) în secţiunea generală sunt globale pentru întreaga aplicaţie. ordinea şi tipul lor să fie aceleaşi ca în instrucţiunea Call. în funcţie de modalitatea de transmitere a variabilelor. Este obligatoriu de precizat tipul tuturor argumentelor transmise la începutul procedurii apelate. Printr-o listă de argumente se transmit procedurii apelate variabilele locale necesare acesteia pentru prelucrările de efectuat. Observaţia este valabilă şi dacă în funcţie avem o structură de control alternativă . Reamintim că o variabilă locală poate fi utilizată numai în procedura în care a fost declarată. Singura posibilitate de partajare a datelor este prin intermediul unei liste de argumente. Opţional ConditiiGrele() As Single. aceasta îi trimite prin instrucţiunea Call şi o listă de argumente. care permite declararea unui argument ce poate lipsi la apelul procedurii..din cauza unor conflicte de nume ori de conţinut pe care le pot genera). care trebuie să fie cel declarat pentru variabilele transmise în procedura apelantă. acestea rămân variabile locale. Atunci când o procedură apelată are nevoie de date din procedura apelantă. în exemplul următor variabila Y de la începutul procedurii este aceeaşi cu variabila X din cadrul procedurii apelate (la fel W cu V). ceea ce ridică problema disponibilităţii variabilelor în procedurile apelate. Variabilele declarate în secţiunea generală a modulului form-ului (General) sunt globale. Utilizarea de argumente în procedurile apelate în Visual Basic se lucrează cu două tipuri de variabile: locale şi globale. o variabilă locală dintr-o procedură apelantă nu poate fi utilizată de o procedură apelată din aceasta.

va trebui să transmitem sporurile de condiţii grele. S-a specificat că modul implicit de transmitere este prin adresă .SalBazaUzina(). Se poate apela o procedură şi fără specificarea cuvântului-cheie Call (şi fără paranteze. modificări care sunt apoi transmise procedurii apelante. Dacă se transmit prin adresă (modul implicit în Visual Basic). Transmiterea prin valoare protejează variabilele transmise. sau în „sărirea" argumentelor opţionale. astfel: Calcul AniVechimeUzina(). AlteleUzina() O altă posibilitate de transmitere a argumentelor în Visual Basic este folosirea argumentelor cu nume (named arguments). dacă o folosim pentru salariaţii care nu sunt direct productivi. variabilele transmise şi modificate vor rămâne cu noile valori. _ Altele():=AlteleUzina() Observaţie: din moment ce listele din tabloul de mai sus au toate acelaşi număr de elemente (fiind vorba de acelaşi număr n de salariaţi). atunci când modificarea lor nu e necesară sau e riscantă.AlteleUzina()) Notă: Argumentul opţional ConditiiGreleUzina () se va omite dacă nu e cazul să preluăm astfel de sporuri. Dacă se transmit prin valoare. valorile lor neputând fi modificate în procedura apelantă (procedura apelată primeşte copii ale variabilelor din procedura apelantă). procedura apelată poate modifica valorile variabilelor transmise. AlteleUzina() faţă de varianta completă: Call Calcul(AniVechimeUzina(). în funcţie de care se indică dacă procedura care le primeşte le poate modifica şi transmite înapoi modificările sau nu. Transmiterea argumentelor prin adresă (referinţă) şi prin valoare Există două variante de transmitere a argumentelor.sporurilor pentru salariaţii din sectoarele calde ale unui combinat siderurgic.SalBazaUzina(). nu va fi nevoie (probabil) de astfel de sporuri. Argumentele se trec sub forma unei liste după numele procedurii: Calcul AniVechimeUzina(). în cazul acesta): Calcul Numele procedurii este suficient pentru a o apela. După ce acesta redobândeşte controlul. Transmiterea prin adresă permite funcţiei sau subrutinei să actualizeze variabilele. Această tehnică reclamă precizarea numelui argumentului urmat de operatorul „: =" şi are o mare utilitate în transmiterea argumentelor în altă ordine decât au fost ele definite în procedura apelată. astfel: Calcul AniVechime():=AniVechimeUzina() . cu n linii şi 4 coloane. dar aceste modificări nu se pot transmite procedurii apelante. Se recomandă transmiterea datelor prin valoare. ConditiiGreleUzina (). care de obicei se omite). 80 PDF created with pdfFactory trial version www. el ar trebui declarat de tip Variant. _ SalBaza():= SalBazaUzina () . Trebuie avut însă în vedere faptul că tablourile de tip Variant consumă mult mai multă memorie decât tipurile de dată „convenţionale". modificările fiind percepute de variabile şi în procedura apelantă.pdffactory.com . s-ar fi putut lucra cu un singur masiv. Dacă într-un astfel de tablou e nevoie de mixarea elementelor de tip numeric cu unele de tip şir de caractere ori dată calendaristică. ConditiiGreleUzina().SalBazaUzina(). declarate de tip Single (ordin de mărime care include şi Integer-ul de la AniVechime).deci cu posibilitate de modificare (există pentru acest mod cuvântul-cheie ByRef. procedura apelată ar putea modifica valorile.

Principalele funcţii Visual Basic. Tabelul 1. Sunt utilizate în calcule matematice şi inginereşti.Pentru a indica transmiterea prin valoare trebuie specificat cuvântul-cheie ByVal înaintea fiecărei variabile de transmis prin valoare. deşi le modifică valoarea. Sin () Calculează sinus. x fiind un anume exponent. Câteva funcţii numerice Funcţie Descriere Abs() Calculează valoarea absolută a argumentului specificat. Cos () Calculează cosinus. l sau mai multe argumente.com . pentru dată şi timp. Exp() Calculează ex. de formatare) pentru a realiza diferite operaţiuni pentru care altfel ar trebui scrise secvenţe de iod. Y As Single) ' transmitere argumente prin adresa N = N * 2 ' dublează valoarea S=S*2 ' când procedura apelanta redobândeşte controlul ' cele doua variabile locale vor avea alte valori End Sub Sub NuModifica (ByVal X AS Integer. ele vor rămâne neschimbate în procedura apelantă. Câteva funcţii reprezentative sunt cuprinse în tabelul 1. iar procedura NuModifica primeşte datele prin valoare. Tan() Calculează tangenta. Funcţii de tip şir 81 PDF created with pdfFactory trial version www. în exemplele următoare sunt redate două proceduri: procedura Modifica primeşte datele prin adresă şi actualizează valorile variabilelor. astfel că.pdffactory. Log () Calculează logaritm. pe categorii: Funcţii numerice Cuprind funcţii matematice şi trigonometrice. ByVal Y As Single) ' transmitere argumente prin valoare N = N * 2 'dublează valoarea S = S * 2 ' când procedura apelanta redobândeşte controlul ' cele doua variabile locale vor avea aceleaşi valori ' ca atunci când au fost transmise (nu se modifica) End Sub FUNCŢII PREDEFINITE Visual Basic oferă utilizatorului mai multe funcţii. având ca argumente şi ca rezultate valori numerice. şir. Atn() Calculează arctangenta. Sqrt () Calculează rădăcina pătrată dintr-un număr pozitiv. cu ajutorul căreia funcţia execută calcule sau prelucrări şi furnizează un rezultat. Sub Modifica (X As Integer. Unei funcţii i se indică 0. grupate în categorii (numerice. La funcţiile numerice fundamentale se adaugă o listă suplimentară de funcţii derivate (Derived Math Functions).

Aceste funcţii realizează prelucrări simbolice asupra unor şiruri de caractere. Cele mai frecvent utilizate funcţii sunt prezentate în tabelul 2. S-au specificat şi argumentele funcţiilor. Tabelul 2. Principalele funcţii de tip şir Funcţie Descriere Chr (<int>) Dă caracterul care are codul ASCII specificat ca argument. Lcase (<str>) Converteşte toate literele din şirul specificat ca argument în litere mici. Left(<str>, <int>) Extrage primele <int> caractere din şirul <str>. Len(<str>) Calculează numărul de caractere din şirul <str> specificat. Ltrim(<str>) Elimină spaţiile de la începutul unui şir de caractere. Mid(<str>, <intStart> Extrage int caractere din interiorul şirului <str>, [, <intLen>]) începând cu caracterul din poziţia <intstart>. Dacă nu se precizează <intLen>, se extrag toate caracterele, până la sfârşit. Right(<str>, <int>) Extrage ultimele int caractere din şirul <str>. Rtrim(<str>) Elimină spatiile de la sfârşitul unui şir de caractere. Str(<num>) Converteşte valoarea numerică care este argument într-un şir de caractere. Trim(<str>) Elimină spaţiile de la începutul şi de la sfârşitul unui şir. Ucase(<str>) Converteşte toate literele din şirul specificat în litere mari. Exemple de utilizare: > Pentru a stabili dacă la stabilirea unei parole utilizatorul a specificat cel puţin 5 caractere se poate utiliza funcţia Len () astfel: If Len(strParola)<5 Then MsgBox "Aţi specificat doar " & Len(strParola) Endlf > Pentru a vedea dacă utilizatorul a răspuns afirmativ la o întrebare, trebuie să se ţină cont că acesta putea răspunde „Da", „da" sau „DA". Pentru a nu testa toate variantele, se va folosi funcţia Ucase (), care face conversia în majuscule: If Ucase(strRasp) = "DA" Then Compararea se face, fireşte, tot cu majuscule... O altă variantă de lucru este conversia în litere mici, prin LCase (). > Dacă se doreşte afişarea într-o casetă de mesaj a notei obţinute la un examen de fiecare student, va trebui să se convertească valoarea numerică în şir de caractere prin funcţia St r (): MsgBox strNumeStud & " a obţinut nota " & _ str(sngNota) > Dacă într-o prelucrare se utilizează primele 5 caractere din numele studenţilor (să zicem, drept criteriu de repartizare a studenţilor pe grupe), se va scrie: strCriteriul = Left(txtNumeStudent, 5)

82

PDF created with pdfFactory trial version www.pdffactory.com

> Dacă un şir de caractere utilizat într-o prelucrare poate avea spaţii la început sau la sfârşit, acestea se pot elimina prin funcţiile LTrim (), RTrim () sau Trim (), ca în exemplul de mai jos: strSirulMeu= " <orice text> " strSirScurtatSt. = LTrim (strSirulMeu) 'sirul va fi "<orice text> " strSirScurtatDr = RTrim (strSirulMeu) 'şirul va fi " <orice text>" strSirScurtatDeTot = Trîm(strSirulMeu) 'şirul va fi "<orice text>" Funcţii pentru dată calendaristică şi timp Sunt utilizate frecvent în aplicaţii: de la afişarea datei şi/sau orei curente, la transformarea din ani în zile sau din ore în minute. Principalele funcţii sunt incluse în tabelul 3. Tabelul 3. Funcţii pentru dată şi timp Funcţie Descriere Date Redă data curentă. DateSerial (<intAn>, Redă data specificată prin cele trei argumente. <intLuna>, <intZi>) DateAdd (<strInterval>, Adună numărul de intN la data specificată prin <intN>, <dteData>) dteData, corespunzător intervalului de timp dorit (strlnterval). DateDiff (<strInterval>, Calculează numărul de intervale de timp <datal>, <data2>) (specificat prin strlnterval) dintre două date DatePart (<strInterval>, Determină intervalul specificat dintr-o dată <dteData>) calendaristică. Now Redă data şi ora curentă. Time Redă ora curentă. Timer Determină numărul de secunde care au trecut de la miezul nopţii. TimeSerial (<ora>, <min>, Redă ora specificată prin cele trei argumente. <sec>) Observaţie: întrucât nu au argumente, funcţiile Date, Now, Timer şi Time nu folosesc parantezele. Funcţiile din această categorie returnează de obicei valori de tip dată calendaristică şi timp, care se păstrează în variabile de tip Date. Pentru a păstra data naşterii într-o variabilă se va scrie: dteDataNastere = DateSerial(1981,5, 29) La funcţia DateSerial (), ordinea argumentelor trebuie să fie cea indicată de formatul funcţiei. Anul (dacă este în secolul XX) se poate specifica doar prin ultimele 2 cifre: 81 în loc de 1981. Afişarea respectivei date se va face în funcţie de setările stabilite de sistem sau de formatul indicat, în mod similar se utilizează TimeSerial (). Cu ajutorul funcţiei DateSerial () se poate afişa o dată specificată printr-o expresie. Dacă dorim să afişăm data la care trebuie returnată o carte împrumutată, adică peste 15 zile de la data de 18 octombrie 2000, putem scrie: dteDataReturn = DateSerial(2000,10,18+15)

83

PDF created with pdfFactory trial version www.pdffactory.com

Funcţiile DateAdd(), DateDiff () şi DatePart () sunt mai complexe, dar şi deosebit de utile pentru diferite calcule legate de dată şi timp. în formatul lor trebuie specificat intervalul de timp care se are în vedere, sub forma unui şir de caractere, astfel: h ora d ziua m luna n minut q trimestru s secunda y zi din an w zi din săptămână ww săptămână yyyy an Spre exemplu, lucrăm cu o variabilă pentru data emiterii unei facturi: dteDataFact. Ştiind că termenul de plată este de 21 de zile, se poate determina data la care factura devine scadentă prin: IngScadenta = DateAdd("d", 21, dteDataFact) în mod similar, putem afla data cu 21 de luni în urmă faţă de data curentă: IngAnterioara = DateAdd("m", -21, dteDataCurenta) Observaţie: şirurile de caractere ce indică intervalul de timp avut în vedere se scriu între ghilimele. Pentru a afla intervalul de timp care s-a scurs între două date, exprimat în zile, luni sau ani, după caz, folosim DateDiff (). Spre exemplu, numărul de luni care a trecut de la darea în folosinţă a unui mijloc fix se determină cu: IngLuniVechime = DateDiff("m", Date, dteDatlnFolosinta) Pentru data curentă s-a utilizat funcţia Date. Putem afla în care zi a săptămânii a fost dat în folosinţă mijlocul fix, dacă scriem: intCareZi = datePart("w", dteDatInFolosinta) Rezultatul este un număr întreg cu valori de la l (duminică) la 7 (sâmbătă). Dacă vrem să aflăm câte zile mai sunt până la sfârşitul anului, scriem: intCateRamase = 365 - datePart("y", Date) Pe lângă funcţiile prezentate, există trei funcţii utilizate pentru a extrage, într-o variabilă de tip Integer, ziua, luna sau anul dintr-o dată calendaristică: Day(), Month() şi Year (). Fiecare dintre ele are un singur argument: data calendaristică din care se extrage informaţia dorită, ca în exemplul următor: intAnCurent = Year(Now) Funcţia Timer se poate dovedi utilă dacă se doreşte măsurarea intervalului de timp scurs între două momente. Se utilizează două variabile: prima păstrează numărul de secunde scurse de la miezul nopţii Ia momentul to, iar a doua numărul de secunde scurse de la miezul nopţii la momentul t|. Iată un exemplu de utilizare: Dim IngStart As Long Dim IngStop As Long Dim IngCatTimp As Long Dim strRasp As String IngStart = Timer Do strRasp = InputBoxC'Cat fac 275 + 295?", "Repede") Loop Until Val(strRasp) = 570 IngStop = Timer IngCatTimp = IngStop - IngStart MsgBox ("V-au trebuit" & Str (IngCatTimp) &" secunde!") Nu confundaţi funcţia Timer cu evenimentul Timer al controlului cu acelaşi nume!

84

PDF created with pdfFactory trial version www.pdffactory.com

Funcţii pentru testarea tipurilor de date Funcţiile Is... () sunt denumite şi funcţii pentru inspectarea datelor, stabilind dacă o variabilă este sau nu de un anume tip. Rezultatul acestor funcţii poate fi True (adevărat) sau False (fals). Aceste funcţii sunt prezentate în tabelul 4. Tabelul 4. Funcţii Is...(). Funcţie IsDate (<arg>)

Descriere Dă valoarea True dacă argumentul poate fi convertit într-o dată de tip Date. Se poate utiliza şi pentru controale. IsEmpty (<arg>) Dă valoarea True dacă argumentul a fost vreodată iniţializat după declararea sa. Se utilizează numai pentru variabile. IsNull (<arg>) Dă valoarea True dacă argumentul are valoarea Null. Se poate utiliza şi pentru controale. IsNumeric (<arg>) Dă valoarea True dacă argumentul poate fi convertit într-o valoare numerică. Se poate utiliza şi pentru controale. Nu există o funcţie IsString (). Pentru a testa dacă o variabilă este de tip String, se utilizează funcţia VarType (<variabilă>). Aceasta are ca argument variabila testată, iar rezultatul indică tipul variabilei, sub forma unui număr întreg (vezi tabelul 5). Astfel, dacă rezultatul este 8, înseamnă că variabila testată este şir de caractere. Funcţia TypeName (<variabilă>) este asemănătoare, dar returnează un şir de caractere reprezentând numele tipului de dată: Long, Integer, Ob j ect etc. Tabelul 5. Valorile returnate de funcţia VarType () Valoare Literal Descriere 0 vbEmpty Argument neiniţializat 1 vbNull Şir nul sau dată incorectă 2 vblnteger Argument de tip Integer 3 vbLong Argument de tip Long 4 vbSingle Argument de tip Single 5 vbDouble Argument de tip Double 6 vbCurrency Argument de tip Currency 7 vbDate Argument de tip Date 8 vbString Argument de tip St ring 9 vbObject Argument de tip Ob j ect 10 vbError Argument Error 11 vbBoolean Argument de tip Boolean 12 vbVariant Argument de tip Variant 13 vbDataObject Argument de tip Data Access Ob j ect (DAO) (spre exemplu, un câmp sau o înregistrare dintro bază de date) 14 vbDecimal Argument de tip Decimal 17 vbByte Argument de tip Byte

85

PDF created with pdfFactory trial version www.pdffactory.com

Tabelul 6. un control sau o expresie formată din acestea. CCur (<arg>) Converteşte argumentul într-o dată de tip Currency. Fix (<arg>) Extrage doar partea întreagă a unui număr (fără rotunjire). Hex (<arg>) Converteşte argumentul numeric în valoarea corespunzătoare în hexazecimal. Returnează o dată de tip Variant. Funcţii de conversie Se utilizează pentru a converti argumentul într-o dată de tipul specificat de funcţia utilizată (vezi tabelul 6). Formatul de utilizare este: Format (<expresie>.se modifică doar modul de afişare a expresiei specificate. <strFormat>) <expresie> poate fi o variabilă. a datei calendaristice ori a timpului. 8194 indică un tablou de tip întreg). afişarea cu 2 zecimale. Formatarea are loc de regulă după ce s-au efectuat toate calculele sau prelucrările. care este formatată după specificaţiile utilizatorului. separarea grupurilor de 3 cifre.pdffactory. a şirurilor. dacă nu se modifică această setare). CVar (<arg>) Converteşte argumentul într-o dată de tip Variant. CSng (<arg>) Converteşte argumentul într-o dată de tip Single. Tabelul 7. Int (<arg>) Rotunjeşte argumentul specificat la valoarea întreagă mai mică sau egală cu argumentul. A nu se înţelege că funcţia Format () transformă expresia specificată în Variant . CDbl (<arg>) Converteşte argumentul într-o dată de tip Double. 86 PDF created with pdfFactory trial version www. Funcţia Format () Se utilizează pentru a specifica modul de afişare a numerelor. CLng(<arg>) Converteşte argumentul într-o dată de tip Long. în vederea afişării într-o formă finală. <strFormat> este una dintre valorile predefinite prezentate în tabelul 7 sau un format de afişare definit de utilizator sub forma unui şir de caractere. Oct (<arg>) Converteşte argumentul în valoarea corespunzătoare în sistemul de numeraţie octal. Moduri de formatare predefinite pentru funcţia Format() <strFormat> Descriere "Currency" Afişează expresia numerică în format monetar: seninul $ (utilizat implicit. CStr (<arg>) Converteşte argumentul într-o dată de tip String. o constantă.8192+int vbArray Argument Array. Funcţii de conversie Funcţie Descriere Asc (<şir>) Converteşte şirul de caractere specificat în codul ASCII corespunzător primului caracter din şir. de tipul indicat de valoarea ce depăşeşte 8192 (de exemplu. CInt (<arg>) Rotunjeşte argumentul specificat la următoarea valoare întreagă.com .

utilizatorul îşi poate defini propriile formate de afişare utilizând caracterele # şi 0. „##. "Yes/No") > afişarea datei curente în format zz-11-aaaa: IblDataCurenta = Format(Date.) Afişează On dacă expresia este diferită de zero sau are valoarea True şi Of f dacă expresia este zero sau False. şi . "dd-mm-yyyy") Notă.70) > afişarea salariului calculat fără zecimale. y pentru an. "##.22 se va afişa 2.00%): lblTotal = Format (l. listă ori etichetă (în cod sau direct în fereastra Properties) 87 PDF created with pdfFactory trial version www.com .00" afişează 9. care nu se regăseşte între cele definite pentru <strFormat>. "Scientific" Afişează expresia numerică în notaţia ştiinţifică.00") (dacă scriam „##. împreună cu cele pentru delimitarea grupurilor de 3 cifre şi indicarea mărcii zecimale (.m. Şabloanele funcţiei Format () se pot utiliza şi pentru proprietatea DataFormat a controalelor de tip casetă de text.). m pentru lună.m. De multe ori utilizatorul doreşte (pentru valorile numerice în special) propriul format de afişare. iar O precizează dacă apar în completare zerouri la început sau la sfârşit.211 lei) > afişarea în format procentual a numărului l (adică 100. "Fixed" "Mediem Time" "On/Off" Afişează expresia numerică cu 2 zecimale. Afişează ora în format 12-ore (cu specificaţia a. "Percent" Afişează expresia numerică în format procentual (valoarea înmulţită cu 100.343.##". Exemple: > afişarea cu 2 zecimale a mediei anuale obţinute de un student: lblMediaAnuala = Format(sngMedieAn. sau p.### lei") (valoarea 2343211. afişată cu semnul %). Pentru data calendaristică se poate defini format propriu utilizând d pentru zi. Pentru numere.7 s-ar fi afişat 9. "###.pdffactory. "Short Time" Afişează ora în format 24-ore. Orice alt text specificat în format se va afişa ca atare (vezi exemplul al doilea). "Percent") > afişarea textului „Yes" în locul valorii l: lblR = Format(l. "Yes/No" Afişează Yes dacă expresia este diferită de zero sau are valoarea True şi No dacă expresia este zero sau False. 9. Fiecare caracter # indică o cifră. cu separarea grupurilor de 3 cifre: lblSalariu = Format(sngSal.Valorile negative sunt afişate între paranteze. "True/False" Afişează True dacă expresia este diferită de zero sau are valoarea f rue şi False dacă expresia este zero sau False.7.

Sign up to vote on this title
UsefulNot useful