Sunteți pe pagina 1din 87

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, producie, comer sau orice alta societate comerciala. Utilitarul Excel din Microsoft Office este o unealt foarte puternica i oricnd la ndemn permind rezolvarea unor probleme inginereti complexe, inclusiv programare fr alte cheltuieli suplimentare pentru achiziionarea unor pachete de programe sau limbaje de programare costisitoare si dificil de utilizat. Posibilitile remarcabile ale acestui utilitar l recomand cu prisosin i n domeniul la care face referire prezentul curs. SECIUNEA I FORMULE, ECUATII, FUNCTII Lucrul cu formule Formulele sunt utilizate pentru a aduna, a scdea, a nmuli sau a mpri numerele pe foile de calcul. Ele sunt alctuite din dou pri: Celulele pe care se dorete s le includei n formul. Operatorii aritmetici, care i spun programului Excel ce calcul dorii s se efectueze. Formulele Excel ncep ntotdeauna cu un semn egal (=), ceea ce indic programului Excel c se dorete s creai o formul. Aa c o formul simpl va arta cam aa: =B3-B2 Pentru a vedea toate formulele din foaia de ca1cu1, se alege Options din meniul Tools, selectai pagina View din caseta de dialog Options, apoi n caseta de validare, Formulas. sau CTRL+` (single left quotation mark) Crearea formulelor S se alctuiasc o formul care va scdea numrul coninut n celula B3 din numrul coninut n celul si care s pun rezultatul n celula B4. (Aceast formul este artat n figura 1.) 1. Punei numerele n celulele B2 i B3. n celula B2 punei un numr mai mare dect cel din celula B3. 2. Mutai cursorul n celula B4 i tastai semnul egal (=). 3. Dai clic n bara de formule. 4. Dai clic pe celula B2. Celula B2 este nconjurat de un marcaj ce indicnd c este selectat. Adresa celulei apare n bara de formule. 5. Asigurai-v c nc mai avei cursorul n bara de formule si tastai la dreapta referinei B2, semnul minus (-), pentru ecuaia dumneavoastr. 6. Poziionai cursorul pe celula B3 i dai clic. Din nou, adresa celulei apare n bara de formule. 7. Apsai ENTER pentru a termina formula. Dac ai introdus valori n celulele B2 si B3. valoarea coninut n B3 este sczut din valoarea din B2, iar diferena 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 Cnd lucrai cu formule, inei minte c: O formul cu referine la celule (cum ar fi B6*B7) va efectua calculele indicate n formul indiferent de numerele aflate n acele celule. Putei schimba numerele din celule, dar formula va efectua aceeai sarcin pe care i-ai repartizat-o. Putei s creai i o formul care conine numere, nu referine la celule. Totui formulele, cu multe numere n ele, vor necesita s v rentoarcei de multe ori la ele, pentru a face ajustrile de rigoare; nu vei putea modifica pur i simplu, numrul din celul. Multe formule sunt un amestec de referine 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 numr. Ordinea operaiunilor n formule. Parantezele care conin operaiuni. Ridicarea la putere. nmulirea i mprirea Adunarea i scderea. Aplicarea de formule la noi celule Se pot copia formulele dintr-o celul n alta. De exemplu, dac creai o ecuaie pentru a aduna toate numerele din coloana D, se poate utiliza o formul similar pentru coloanele E i F. Fiecare dintre urmtoarele metode de copiere ale formulelor produce rezultate diferite: Pentru a aplica o formul pe care ai creat-o ntr-o coloan si pentru a o muta la alte coloane, selectai colul din dreapta al celulei-formul i tragei 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 numete o referin relativ ia celule (spre deosebire de o referin absolut). Pentru a muta o formul ntr-o nou celul, laolalt cu referinele sale, dai clic, pe celula-formul, cu sgeata mouse-ului (dai clic pe marginea celulei) i tragei-o ntr-un alt loc. Dac cursorul nu este exact peste marginea celulei, el nu va arta ca o sgeat. Dac se dorete ca s mutai formula dumneavoastr ntr-o nou celul (nu s o copiai) i ca formula s se refere la celulele din coloana de unde ai mutat-o, inei apsat tasta CTRL n timp ce tragei formula.

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 2: Aplicarea de formule la noi celule Tragei formula pe care ai 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, inei apsat tasta SHIFT n timp ce selectai formulele, eliberai tasta SHIFT, iar apoi mutai-le. Cnd tragei formule grupate ntr-o nou locaie, formulele se vor referi la setul iniial de celule. Dac inei apsat 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 explicai mai uor, operatorii programului Excel pot fi mprii n patru categorii generale: aritmetici, de comparaie, de text i de referin. n majoritatea cazurilor vei utiliza operatori aritmetici. Ceilali sunt utili pentru proiecte mai complexe.

Operatorii aritmetici Colecia standard de operatori aritmetici este: Operator + * / %

Efectueaz Adunare Scdere nmulire mprire Procentaj

PDF created with pdfFactory trial version www.pdffactory.com

Ridicare 1a putere

Exemple: =B5*10% calculeaz 10 la sut din coninutul celulei B5. =B5^2 calculeaz ptratul coninutului celulei B5.

Operatori de comparaie Operatorii de comparaie v permit s inspectai dou valori i s ajungei la o concluzie n privina valorilor lor relative. Ei sunt de obicei cuplai cu funciile logice din Excel Iat operatorii de comparaie: Operator Semnificaie = Egal cu > Mai mare dect >= Mai mare sau egal cu < Mai puin dect <= Mai puin 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 avei cuvntul cow n celula C7 i cuvntul boy n C8, formula =C7&C8 va crea iru1 de text cowboy. Operatori de referin Excel ofer i operatori de referin. Cea mai obinuit 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 vei folosi dou puncte pentru a separa prima i ultima celul dintr-un domeniu. Referirea la celule n formule Cnd tastai numele unei celule ntr-o formul, ai creat o referin. Ea ofer formulei o legtur cu acea celul. S examinm diferena 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 dorete ca formula s se refere la o celul, dai clic pe celula respectiv sau tastai 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

Aceast formul mparte coninutul celulei B3 la 8 i apoi nmulete rezultatul cu 115%. Unele formule calculeaz un ntreg domeniu de celule. n urmtorul exemplu, celulele de la B3 pn la B5 reprezint domeniul de referin asupra cruia va aciona formula. (8*SUM(B3:B5)*115%) n acest exemplu, formula nmulete 8 cu suma celulelor de la B3 la B5 si apoi nmulete produsul cu 115%. Aa cum putei vedea, pentru a specifica un domeniu de celule, inserai dou puncte ntre dou adrese de celule. Formula va examina apoi automat toate celulele dintre ele, inclusiv cele dou celule. Observaie: n loc s introducei un domeniu de celule ntr-o formul, dai clic i tragei peste toate celulele pe care dorii s le includei, iar Excel va insera automat domeniul n formul. Folosirea tabelelor de cutare Tabelele de cutare sunt matrice speciale (domenii de celule) create astfel nct o funcie de cutare s poat folosi datele. Exemplu:

Tabelul de cutare const din domeniul de celule A3:B5. Celulele A3 pn la A5 conin cantiti, n timp ce celulele B3 la B5 conin preurile. In exemplul de mai sus, cantitatea pe care o introducei n coloana A (de exemplu, 10, 25 sau 50) face ca un pre special al materialelor s apar n coloana B. Tabelul de cutare a fost creat pentru a oferi cele mai sczute preuri ($7.75, coloana B) pentru cumprarea celei mai mari cantiti (50 sau mai mult, coloana A). Cumprarea unui volum mai mic de materiale (s zicem 10 sau mai puin), face ca celula adiacent din coloana B s afieze un pre mai mare pentru un bilet. Scopul unui tabel de cutare este, deci, acela de a permite specificarea unui domeniu de numere introduse ntr-o anumit coloan va declana un anumit rezultat ntr-o alt coloan. Aa cum se vede din acest exemplu, celula B 10 conine o formul a unui tabel de cutare i afieaz rezultatele unei formule aplicabile. Uneori, se pot utiliza tabele de cutare care s cuprind att text, ct i numere. In exemplul urmtor, Excel insereaz diferite cuvinte n funcie de cantitile comandate. Coninutul celulelor din B3, B4 si B5 a fost nlocuit cu text.

PDF created with pdfFactory trial version www.pdffactory.com

Tehnici avansate de lucru cu formule Exist formule care declaneaz aciuni bazate pe anumite criterii, cum ar fi prezena unei anumite fraze de text, a unui numr sau a unei date.

Semnificatia formulei: Daca celula G7 contine IS atunci inmulteste B19 cu 1.08

Figura 3: Formula supravegheaz celula G7 pentru prezena textului IS.

PDF created with pdfFactory trial version www.pdffactory.com

Celula B 19 arat suma tuturor achiziiilor (cantitatea comenzilor) care sunt listate n coloana B. Pentru a crea o formul care adaug numerele din coloana B i care afieaz rezultatele n B:19, trebuie s se tasteze: Pentru a crea suma achiziiilor, se fac urmtorii pai: 1. Se selecteaz locul n care se dorete s apar suma achiziiilor (n acest exemplu, suma apare n celula B19). 2. Se d clic pe semnul egal din bara de formule. 3. Se tasteaz formula Sum(B11:B15) (Excel adaug automat semnul egal). Pentru a termina formula, se apas Enter sau clic din nou pe semnul egal. Pentru a face ca o foaie de calcul s aleag ntre dou aciuni, trebuie s i se ordone s supravegheze ndeplinirea unei anumite condiii. Construirea unei formule Foaia de calcul din figura 3 are un cmp referitor la stat, iar funcia, Ori de cte ori cmpul Stat conine IS, adaug TVA la totalul cumprturilor. Cmpul Stat este celula G7. Suma cumprturilor se af1 n celula B19. Aceast formul va aprea ntr-un cmp etichetat Total General, care va conine suma dintre totalul cumprturilor i taxa pe valoare adugat. Celula B20 va fi celula-formul care va conine att formula, ct i totalul general afiat. Formula ESTE: =IF(G7=IS,B19*1.08,N/A) Interpretare: Dac celula G7 conine IS, atunci nmu1ete celula B19 cu 1.08 la sut. Altfel, afieaz N/A. Stabilirea unei condiii cu ajutorul funciei if 1. Se d clic pe celula n care se dorete s apar formula i apoi pe semnul egal de pe bara de formule. Se d clic pe sgeata cu vrful n jos af1at n stnga barei de unelte i se deruleaz n jos. Se selecteaz funcia IF din lista derulant. Apare o caset de dialog, figura 4.

Fig. 4: Caseta de dialog a formulei IF. Caseta de dialog are trei linii n care se introduc diferite pri ale formulei.

PDF created with pdfFactory trial version www.pdffactory.com

Logical_test Se specific condiia a crei ndeplinire trebuie s o verifice formula. n acest exemplu, formula trebuie s caute textul IS n celula pe care o definit ca fiind celula Stat. Aceast celul este 07. Value_if_true Se specific ce se va ntmpla dac se ndeplinete condiia (True). In acest exemplu, dac textul IS apare n celula Stat, atunci taxa pe valoare adugat ar trebui adunat cu suma achiziiilor. Value_if_false Se specific ce ar trebui s se ntmple dac textul IS nu apare n celula State. In acest caz, n coloana taxei pe valoare adugat va aprea un simplu N/A (non aplicabil). Elaborarea liniei logical_test Trebuie stabili condiia pe care se dorete ca formula s o supravegheze. 1.Se d clic pe butonul Range Selector af1at la dreapta primei linii, i caseta principal de dialog a formulei este nlocuit cu o singur linie af1at n partea de sus a ecranului.

2. Aceast parte a formulei ncepe cu o referin la celul. n loc s se tasteze adresa celulei, se d clic pe celul (n acest caz, G7), iar referina la celul va aprea n formul. 3. Se tasteaz =IS (inclusiv ghilimelele) pentru a stabili condiia pe care o va cuta formula. (orice text introdus, trebuie s fie tastat n celula G7, pentru ca formula s funcioneze). Se revine la caseta de dialog a formulei IF 4. Se d clic din nou pe butonul Range Selector (af1at n dreapta) i caseta de dialog a formulei IF se va extinde, permind introducerea restului formulei. Calcule instantanee Unele calcule importante pot fi fcute fr a mai implica direct o formul.

Adunarea rapid a numerelor Pentru a aduna un rnd sau o coloan de cifre, se utilizeaz facilitatea AutoSum. Se selecteaz ntregul rnd sau ntreaga coloan de cifre care se doresc a fi adunate i se d clic pe butonul AutoSum. Linia aflat imediat sub, sau la dreapta grupului de numere selectat, va afia suma acestor numere. AutoSum genereaz de fapt o formul care este localizat n celula ce conine suma. Se poate muta celula-formul i ea se va referi tot la acelai grup de celule. Aceast libertate de micare poate fi important dac lista de numere crete i este nevoie de spaiu pentru a aduga altele.

Efectuarea de calcule obinuite pentru a extrage informaii din celulele selectate Cnd este nevoie de informaii din anumite celule, se pot face rapid calcule obinuite fr a mai apela la formule. Pur i simplu se selecteaz celulele, se d clic cu butonul drept oriunde pe bara de stare din Excel (aflat n partea de jos a ecranului) i se selecteaz funcia adecvat (fig. 5). Se poate utiliza aceast metod pentru a obine rapid

PDF created with pdfFactory trial version www.pdffactory.com

suma unui rnd sau a unei coloane, sau chiar pentru a totaliza celulele aflate n diferite pri ale foii de calcul. Se poate face i media unui grup de numere, localiza valoarea minim sau maxim, sau calcula numrul de celule completate dintr-o selecie. Totui, nu se poate copia rezultatul n clipboard, sau muta acest rezultat ntr-o celul diferit. Aceast facilitate este pur informativ.

Figura 5: Selectai celulele, iar suma lor va aprea n partea de jos a ecranului Excel. Clic cu butonul drept pe bara de stare pentru a vedea rezultatul altor calcule

Proiectarea datelor fr ajutorul unei formule Nu toate coleciile de date necesit o formul. Se pot face proiecii bazate pe o serie de numere, care s indice care vor fi valorile urmtoare. Excel utilizeaz relaiile ntre numerele dintr-un grup de celule selectate si ofer urmtoarea secven logic de numere n celulele vecine. Aceast facilitate este util, cnd se dorete s se determine care va fi evoluia unor parametri n urmtoarele luni, bazat pe valorilor din lunile precedente (figura 6).

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 6: Selectnd cifrele din ianuarie i februarie i apoi trgnd la dreapta, se pot proiecta evoluiile pentru urmtoarele luni.

Proiectarea instantanee a datelor viitoare Pentru ca Excel s analizeze relaia dintre un set de numere i apoi s determine care numere vor urma n mod logic, se parcurg urmtoarele etape: 1. Se selecteaz numerele de la care pornete proiecia. Se d clic pe primul numr din serie, innd apsat tasta SHIFT i apoi dnd clic pe ultimul numr din aceast serie, sau dnd clic i trgnd de la primul la ultimul numr. 2. Se plaseaz mouse-ul peste colul din dreapta-jos al seleciei (un ptrat mic, negru) i sgeata mouse-ului se va transforma ntr-o cruciuli. Se d clic i se trage n jos, selectnd cte celule se dorete. Noile celule continu conform modelului stabilit de celulele selectate mai nainte. Noile celule sunt umplute cu text sau date numerice, nu cu formule. Proiectarea valorilor ntre anumite numere date Dac foaia de calcul are valori de nceput i de sfrit, Excel poate umple celulele dintre cele dou valori cu o suit de numere. Utilizai aceast facilitate atunci cnd trebuie s aflai ce anume s-a ntmplat ntre dou rezultate. Pentru a proiecta valorile dintre dou numere, facei urmtoarele: 1. Selectai numrul iniial i numrul int, apsnd tasta SHIFT n timp ce se d clic pe fiecare numr (sau selectai domeniul dintre cele dou numere dnd clic i trgnd). 2. Dup ce ai selectat domeniul, selectai Fill din meniul Edit i alegei Series. Va aprea caseta de dialog Series.

PDF created with pdfFactory trial version www.pdffactory.com

Pe panoul In din Series se d clic pe Columns. Se verific daca este selectat opiunea Linear i se d clic OK. Excel umple celulele dintre pornire i int.

Figura 7: Se utilizeaz comanda Series pentru a completa numerele dintre cele dou valori existente la cele dou capete ale rndului sau coloanei. Facilitatea de recalculare automat din Excel n mod normal, Excel recalculeaz de fiecare dat cnd se schimb vreun numr pe o foaie de calcul. In afara cazului n care se comand ceva contrar, Excel recalculeaz ntotdeauna nainte de a salva. Dac se dorete s se dezactiveze opiunea de recalculare automat, se selecteaz Options din meniul Tools i se d clic pe pagina Calculation. Sub setrile Calculation, se d opiunea Manual. De acum ncolo, pentru a recalcula manual o foaie de calcul, se aps F9. Utilizarea de referine relative, absolute i mixte Referinele relative, absolute i mixte sunt foarte utile atunci cnd se dorete s se copieze sau s se lipeasc celule i s se mute pe foaia de calcul. O referin variabil va varia n funcie de locul n care este copiat formula. De exemplu, s presupunem c o formul din celula A15 se refer la celula A1. Dac se copiaz formula din A15 i se lipete n celula B15, referina relativ va indica apoi spre celula B1. Toate referinele sunt relative n afara cazului n care se specific a fi absolute. O referin absolut, pe de alt parte, se refer ntotdeauna la aceeai celul, indiferent unde este copiat i lipit formula pe foaia de calcul. De exemplu, dac o formul lin celula A l5 se refer la celula A1, atunci ea se va referi ntotdeauna la celula A1, chiar dac se copie i se lipete n alte celule.

PDF created with pdfFactory trial version www.pdffactory.com

O referin mixt este, aa cum indic si numele, n parte relativ i n parte absolut. Se pot crea trei tipuri de referine mixte: Referine mixte care indic spre o coloan specific i un rnd relativ (cum ar fi $A1) Referine mixte care indic spre un rnd specific i o coloan relativ (cum ar fi A$1) Referine mixte care indic spre o foaie de calcul specific i spre un rnd sau o coloan relative (cum ar fi Sheet2: $A$1) Pentru a schimba tipul de referin, se parcurg paii urmtori: 1. Plasai punctul de inserie n interiorul sau lng celula respectiv. Apsai F4.

PDF created with pdfFactory trial version www.pdffactory.com

2 UTILIZAREA FUNCTIILOR EXCEL

Procesorul de tabele Excel include un numr mare de funcii predefinite (232), dar ofer i posibilitatea ca utilizatorul s-i defineasc propriile funcii, potrivit cerinelor de exploatare a aplicaiilor. Funciile Excel permit efectuarea de calcule i prelucrri diverse, de la cele mai simple pn la cele mai complexe.

2.1 FUNCII PREDEFINITE Funciile predefinite reprezint formule speciale care respectnd o anume sintax, execut operaii i prelucrri specifice, fiind destinate rezolvrii unor probleme i aplicaii ce conin elemente predefinite de calcul. Unele funcii predefinite sunt echivalente formulelor: de exemplu, formula de adunare a coninutului celulelor A1, A2 i A4, adic =A1+A2+A4 este echivalent cu funcia =Sum(A1:A2;A4). Alte funcii (majoritatea cazurilor) nu au echivalent n rndul formulelor, rezultatul scontat neputnd fi obinut dect prin aplicarea funciilor predefinite sau putnd fi obinut pe cale obinuit, prin aplicarea succesiv a mai multor operaii i formule. Folosirea funciilor predefinite este supus unor reguli foarte stricte, a cror nerespectare poate conduce la un rezultat incorect sau generator de eroare. Cea mai mare parte a funciilor predefinite au trei componente: - semnul "egal"= (sau semnul plus +, pentru compatibilitate cu 1-2-3); - numele funciei; - unul sau mai multe argumente; Nici un spaiu nu este admis ca separator ntre cele trei componente ale funciilor predefinite. Argumentele se afl nchise ntre paranteze rotunde i sunt separate printr-un separator zecimal. Acest separator poate fi virgul sau punct i virgul, dup cum a fost configurat iniial sistemul. n exemplele luate, se va lua n consideraie ca separator zecimal caracterul "punct i virgul". Exist i funcii care nu au nevoie de precizarea argumentului, de exemplu:=NOW(), =TRUE(), =TODAY(), etc. Exemplul urmtor ilustreaz diferite argumente care se pot ntlni la o funcie predefinit:

Funcie predefinit

Tip argument

=SUM(A2:A7) plaj continu de celule =SUM(A2:A7;A9;A11:A20) plaj discontinu de celule =MAX(59;36;84) list de valori =DATE(62;10;18) list de valori dat calendaristic =IF(A1=A2;"Bun";Rau") valoare logic =INT(SUM(D1:D9) funcie predefinit =UPPER("Ionescu") ir de caractere

PDF created with pdfFactory trial version www.pdffactory.com

=REPT("Ionescu",3) ir i valoare numeric =FACT(6) valoare numeric Excel accept urmtoarele tipuri de argumente: - o condiie: este o expresie logic care folosete unul din operatorii logici =, <, >, <>, <=, >=, NOT( ), AND( ), OR( ) pentru o adres de celul sau un nume de cmp. Condiia argumentului poate fi deci o formul, un numr, un nume de cmp, un text. Funcia evalueaz condiia i procedeaz la diferite operaii n funcie de faptul dac condiia este adevrat sau fals. - o locaie: este o adres, un nume de cmp, o formul sau funcie care genereaz o adres sau un nume de cmp. - un text: orice secven de caractere inclus ntre ghilimele, adresa sau un nume de cmp ce conine o etichet tip ir de caractere sau o formul sau funcie care returneaz o etichet. Un ir de caractere folosit ntr-o funcie trebuie pus ntre ghilimele pentru a nu fi confundat cu un nume de cmp. - o valoare: un numr, adresa sau numele unei celule care conine un numr, o formul sau funcie predefinit care returneaz un numr. Toate tipurile de argumente pot fi folosite mpreun ntr-o funcie atunci cnd sintaxa este respectat. O funcie predefinit se poate introduce ntr-o celul tastnd-o ca atare (conform sintaxei) sau prin intermediul generatorului de funcii. Cea mai simpl metod o reprezint introducerea nemijlocit a funciilor predefinite, corespunztor sintaxei, n celula unde se va opera calculul respectiv (metod recomandat). n cel de-al doilea caz, se activeaz selectorul funciilor predefinite aflat pe bara de editare sau se activeaz comanda Insert Function (figura 1.52). Apoi, se alege funcia respectiv, din caseta de dialog Paste Function, se valideaz i se completeaz sintaxa generat automat. 2. Se apas butonul egal de pe bara de editare

3. Se alege funia dorit 4. Se completeaz interactiv sintaxa

1. Se poziioneaz cursorul acolo unde se va insera funcia

Fig 2 Etapele inserrii unei funcii

PDF created with pdfFactory trial version www.pdffactory.com

Apelarea selectorului de funcii se face prin apsarea butonului = (egal) aflat pe bara de editare, dup care se deschide lista funciilor predefinite, se alege funcia dorit, dup care se completeaz interactiv argumentele.

Fig. 3, 4 Asistentul de funcii/Exemple de date Acest procedeu este prezentat n figura 3 Funcia poate fi aleas din lista funciilor cele mai utilizate (Most Recently Used), din lista tuturor funciilor disponibile ordonate alfabetic (All), sau din categoriile de funcii specializate (Financial, Date & Time, Math & Trig, Statistical ...) n celula din care s-a apelat funcia predefinit va apare sintaxa funciei selectate i validndu-se operaia prin butonul OK se va genera rezultatul respectivei funcii. Generatorul de funcii sau mai corect asistentul de funcii este prezentat n figura 1.53. De regul, utilizarea asistentului de funcii presupune parcurgerea a doi pai: - pasul 1 semnific alegerea tipului de funcie; - pasul 2 presupune completarea interactiv a sintaxei funciei respective conform exemplului prezentat n figura 4. Categorii de funcii predefinite Excel posed un set impresionant de funcii predefinite, n numr de 232, grupate pe tipuri potrivit utilitii acestora la rezolvarea diferitelor probleme.

PDF created with pdfFactory trial version www.pdffactory.com

Astfel, considerm suficient n rezolvarea aplicaiilor EXCEL, prezentarea a celor mai importante 99 de funcii predefinite, grupate pe urmtoarele categorii (figura 5):

Fig. 5 Categorii de funcii 1. funcii matematice i trigonometrice (Math & Trig): permit efectuarea de calcule matematice simple i complexe; 2. funcii statistice (Statistical): permit efectuarea unor calcule statistice utiliznd serii de valori; 3. funcii de informare (Information): afieaz informaii despre celule i cmpuri; 4. funcii logice (Logical): determin valoarea de adevr sau de fals - corespunztor unei condiii; 5. funcii baz de dat (Database): efectueaz diferite calcule asupra unor rubrici, ntro baz de date, corespunztor unor criterii definite; 6. funcii de cutare i consultare (Lookup & Reference): permit localizarea coninutului unei celule; 7. funcii calendar sau dat calendaristic (Date & Time): manipuleaz numere care reprezint date calendaristice sau timp; 8. funcii text sau ir de caractere (Text): ofer informaii legate de textul existent n celule i permit operaii cu etichete; 9. funcii financiare (Financial): permit realizarea de calcule economico-financiare predefinite. n continuare, prezentm cele mai importante funcii predefinite, preciznd c cea mai mare a parte a lor sunt perfect compatibile ca sintax i ca semnificaie cu funciile arond aferente procesorului de tabele LOTUS 1-2-3. 2.1.1 FUNCIILE MATEMATICE I TRIGONOMETRICE Funciile matematice i trigonometrice (Math & Trig) permit efectuarea diferitelor calcule, de la cele mai simple la cele mai complexe, pentru rezolvarea de aplicaii ce solicit instrumente matematice i trigonometrice de uz curent.

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 6 Funcia SUM =SUM(list) adun valorile dintr-o list precizat ca argument. Lista poate conine cpuri continue sau discontinue referite prin adrese (coordonate) sau prin nume de cmp(uri). Funcia de nsumare este completat - spre uurina utilizatorului - cu butonul Auto Sum. Funcia 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 conin texte). Auto-nsumarea opereaz astfel pe linie sau pe coloan pn acolo unde se ntlnete primul semn de discontinuitate (figura 6). Pot exista mai multe cazuri (exemplificate n figura 6): - se plaseaz cursorul acolo unde se dorete a se calcula suma (eventual selectnd o plaj de celule pe linie sau o coloan unde s se depun rezultatele - calculelor) i se activeaz butonul AutoSum prin dublu-click;

Dublu-clik pe butonul AutoSum

Se selecteaz celula sau plaja de celule unde se va calcula automat suma

Fig. 7 Funcia AutoSum - se selecteaz plaja de celule de nsumat, inclusiv zona unde se vor plasa rezultatele nsumrii (o linie mai jos i/sau o coloan mai la dreapta), dup care se activeaz butonul AutoSum prin dublu-click. =PRODUCT (list) multiplic valorile coninute ntr-o list. Un exemplu edificator este prezentat n figura 8.

PDF created with pdfFactory trial version www.pdffactory.com

=SUBTOTAL(referin-tip;cmp de regrupat) calculeaz un rezultat ce provine dintr-o grupare a datelor opernd diferite operaii specifice (conform referinelor-tip) asupra unui cmp de regrupat.

Fig. 8 Funcia PRODUCT Exemple de referine-tip ar fi: 1 AVERAGE Medie 2 COUNT Numr 4 MAX Maximum 5 MIN Minimum 6 PRODUCT Produs 9 SUM Sum

PDF created with pdfFactory trial version www.pdffactory.com

n exemplul prezentat n figura 9 se calculeaz suma (referina-tip 9) valorilor produselor vndute pe 01-Iul-98 (cmpul de regrupat este E31:E33). =SUMPRODUCT(list) multiplic valorile situate n celulele corespondente, aferente unor serii de cmpuri, iar apoi adun rezultatele obinute. n exemplul prezentat n figura urmtoare se calculeaz prin funcia SUMPRODUCT valoarea total a vnzrilor, adic suma dintre produsele cantitilor (C31:C36) i preurilor (D31:D36). =SUMIF(cmp de evaluat; criteriu; cmp de nsumat) adun coninutul celulelor potrivit unui criteriu dat. n exemplul din figura 9 se calculeaz prin funcia SUMIF, suma

Fig. 9 Funciile SUMTOTAL, SUMPRODUCT, SUMIF comisioanelor la vnzrile de produse (5% din valoare) pentru valorile vndute de peste 10.000.000 lei. n acest caz cmpul de evaluat reprezint valoarea (E31:E36), criteriul este de tip text i anume >10000000, iar cmpul de nsumat este comisionul (F31:F36). =ROMAN(numr;format) convertete numerele din format cifric arab n text ce semnific numere cu format cifric roman. Formatul cu valori de la 0 la 4- reprezint gradul de concizie al numrului roman nou generat. Numrul arab de transformat trebuie s fie ntreg. Un exemplu de astfel de transformare este prezentat n figura 10. =RAND() returneaz un numr aleator cuprins ntre 0 i 1; =ABS(numr) returneaz valoarea absolut dintr-un numr; =LN(numr) calculeaz logaritmul natural

Fig. 10 Funcia ROMAN al unui numr specificat ca argument; =LOG(numr;baz) returneaz logaritmul unui numr ntr-o baz specificat;

19

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 11 Funcii trigonometrice i POWER i SQRT =LOG10(numr) returneaz logaritmul n baza 10 dintr-un numr; =EXP(X) calculeaz baza logaritmului natural ridicat la puterea X. Baza este o constant i are valoarea 2,7182818.;

Fig. 12 Funcii matematice =MOD(X;Y) calculeaz restul mpririi argumentului X la arg. Y; =FACT(numr) calculeaz factorialul unui numr pozitiv; =POWER(numr;putere) returneaz rezultatul unui numr ridicat la putere (figura 1.61); =SQRT(numr) calculeaz rdcina ptrat a argumentului; =SIN(X) returneaz valoarea argumentului X n radiani; =COS(X) calculeaz cosinusul argumentului X n radiani ; =TAN(X) calculeaz tangenta argumentului X n radiani; =ASIN(X) calculeaz arc-sinusul argumentului X n radiani (similar =ACOS(X) i =ATAN(X); =DEGREES(unghi) convertete radianii n grade; =RADIANS(unghi) convertete grade n radiani; =ROUND(X,numr de zecimale) rotunjete argumentul numeric X la un

Fig. 13 Funcia de rotunjire numr specificat de zecimale; =PI() returneaz valoarea numrului PI;
20

PDF created with pdfFactory trial version www.pdffactory.com

=INT(numr) afieaz partea ntreag a argumentului (a numrului real), fr a-l rotunji. 2.1.2 FUNCIILE STATISTICE Funciile statistice (Statistical) permit efectuarea de calcule statistice utiliznd serii de valori: =MAX(list) returneaz cea mai mare valoare din list. Lista poate fi compus din: numere, formule numerice, adrese sau nume de cmpuri; =MIN(list) returneaz cea mai mic valoare din list; =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; =MEDIAN(list) calculeaz valoarea median dintr-o list; =COUNT(list) numr celulele ocupate dintr-o list de cmpuri; Exemplul din figura 14 ilustraz utilizarea funciilor statistice prezentate:

Fig. 14 Funcii statistice 2.1.3 FUNCIILE DE INFORMARE Funciile de informare (Information) afieaz informaii referitoare la celule i cmpuri: =ISBLANK(X) determin dac X sau amplasamentul definit de argumentul X este sau nu o celul vid. Funcia returneaz TRUE -valoarea logic de adevr- dac amplasamentul este o celul vid i FALSE valoarea logic de fals- n caz contrar; =ISNUMBER(X) verific dac X conine o valoare numeric. Funcia returneaz TRUE adevrat- dac X conine un numr, altfel returneaz FALSE sau fals. Argumentul X poate fi o valoare, o adres, text sau o condiie); =ISTEXT(X) verific dac X conine un ir de caractere, returnnd dup caz TRUE sau FALSE. =ISNONTEXT(X) verific dac X nu conine un ir de caractere, returnnd dup caz TRUE sau FALSE. =ISLOGICAL(X) verific dac argumentul X conine o valoare de tip logic returnnd dup caz TRUE sau FALSE. =ISERROR(X) verific dac argumentul X conine o valoare de tip eroare, returnnd dup caz TRUE sau FALSE. O parte din funciile de informare sunt exemplificate mpreun cu funciile logice.
21

PDF created with pdfFactory trial version www.pdffactory.com

2.2 FUNCIILE LOGICE Funciile logice (Logical) determin evaluarea unor expresii i n funcie de acestea furnizeaz aciuni sau rezultate complexe, genernd valori de adevr sau de fals corespunztor unor condiii (acestea pot fi evaluate i nlnuite cu ajutorul operatorilor logici AND, OR, NOT). =IF(condiie;X;Y) testeaz argumentul condiie i n funcie de rezultatul evalurii logice, genereaz argumentul X dac condiia este adevrat sau argumentul Y dac aceasta este fals. Argumentele X sau Y pot fi valori, iruri de caractere (plasate ntre ghilimele), nume de cmpuri sau adrese de celule sau cmpuri care conin aceste valori. n locul argumentelor X sau Y se pot imbrica alte structuri condiionale IF, generndu-se potrivit condiiilor ulterioare, X1,Y1 sau X2,Y2 i aa mai departe. =AND(evaluare logic1,evaluare logic2,...) returneaz valoarea logic TRUE dac toate argumentele sunt adevrate i valoarea logic FALSE dac unul sau mai multe argumente sunt false; =OR(evaluare logic1,evaluarea logic2,...) returneaz valoarea logic TRUE dac orice argument este adevrat i valoarea logic FALSE dac toate argumentele sunt false; =NOT(evaluarea logic) inverseaz valoarea argumentului, returnnd dup caz TRUE sau FALSE; =TRUE() returneaz valoarea logic TRUE; =FALSE() returneaz valoarea logic TRUE; Pentru exemplificarea funciei logice IF, furnizm urmtoarea aplicaie pentru calculul impozitului pe salariile colaboratorilor angajai cu Convenie Civil de Prestri Servicii: Aplicaia este astfel construit nct s exemplifice (didactic) toate funciile logice (figura 1.65, 1.66). ntr-un prim pas s-a construit o coloan de Evaluare logic care returneaz n funcie de un test fcut asupra salariului brut, valoarea logic de fals (FALSE) dac salariul brut este text, blank sau este mai mic ca zero i returneaz valoarea logic de adevr (TRUE) n caz contrar.

Fig. 15 Funcii logice (I)

ntr-un al doilea pas se calculeaz impozitul pe salarii dac coloana Evaluare logic (s-a utilizat funcia NOT()) nu conine valoarea logic FALSE. n aplicaia de mai sus s-a construit o structur condiional imbricat, unde s-a exemplificat ntr-o ramur IF i funcia logic AND.

22

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 16 Funcii logice(II) 2.1.5 FUNCIILE BAZ DE DATE Funciile baz de date (Database) returneaz aciuni - valori sau etichete (sum;medie;maxim;minim; caut;numr) dintr-un cmp de date - corespunztor unei baze de date, dup o anumit rubric, conform unui criteriu de selecie Funciile tip baz de date au n mod invariabil aceeai list de argumente: - baza de date: reprezint tabelul Excel sub forma unui cmp de date, de unde informaia va fi consultat sau extras; - rubrica: semnific atributul sau proprietatea asupra cruia opereaz calculul fcut de funcia tip baz de date. Rubrica poate fi identificat prin numele su sau prin numrul de ordine al acesteia n cadrul bazei de date; - cmp de criterii: reprezint unul sau mai multe cmpuri continue n care se pot preciza restriciile, care se regrupeaz n criterii de selecie la care trebuie s rspund interogarea respectiv. Principalele funcii tip baz de date sunt: =DSUM(baz de date;rubric/nr.rubric;cmp de criterii) returneaz suma valorilor unei rubrici aferente unei baze de date, care rspunde unui criteriu de selecie; =DMAX(baz de date;rubric/nr.rubric;cmp de criterii) returneaz cea mai mare valoare dintr-o rubric aferent unei baze de date, corespunztor unui criteriu de selecie;

Fig. 17 Aplicaie pentru funciile baz de date =DMIN(baz de date;rubric/nr.rubric;cmp de criterii) returneaz cea mai mic valoare dintr-o rubric aferent unei baze de date, corespunztor unui criteriu de selecie; =DAVERAGE(baz de date;rubric/nr.rubric;cmp de criterii) calculeaz media valorilor unei rubrici aferente unei tabele - pentru o baz de date, potrivit criteriului de

23

PDF created with pdfFactory trial version www.pdffactory.com

selecie specificat=DCOUNT(baz de date;rubric/nr.rubric;cmp de criterii) numr celulele ocupate ntr-o tabel baz de date, conform unor criterii specificate; =DGET(baz de date;rubric/nr.rubric;cmp de criterii) returneaz coninutul unei rubrici pentru o baz de date, corespunztor unui criteriu specificat. Funcia este util pentru a regsi o informaie unic; Exemple edificatoare de utilizare a funciilor tip baz de date sunt ilustrate n figura urmtoare, urmnd ca alte aplicaii mai complexe s fie prezentate n detaliu n capitolul ce trateaz bazele de date create i exploatate sub Excel. Pornind de la un tabel definit pe coordonatele A6:H17, considerat a fi o baz de date care repertoriaz facuturile emise de o firm ctre clienii si, se pot pune n eviden cu ajutorul funciilor tip baz de date, informaii calculate potrivit unor interogri specifice. Prezentm n figurile 17- 18 cteva exemple de utilizare a funciilor tip baz de date, utiliznd cmpuri de criterii definite de utilizator potrivit unor cerine de interogare. 2.1.6 FUNCIILE DE CUTARE I CONSULTARE Funciile de cutare i consultare (Lookup & Reference) permit cutarea, identificarea i referirea coninutului unor celule:

Fig. 18 Modul de utilizare a funciilor baz de date =CHOOSE(index-numeric;list de valori) returneaz n urma unei alegeri dintr-o list de valori, o aciune sau o valoare, ce urmeaz a fi activat sau executat, corespunztor unui index numeric. Indexul numeric determin care valoare (de tip text, numeric sau referin celular) din lista de argumente va fi selectat. Indexul este un numr cuprins ntre 0 i 29. =COLUMN(referin celular sau cmp) returneaz numrul colanei corespunztoare referinei celulare sau numrul primei coloane pentru cmpul specificat; =COLUMNS(cmp) returneaz numrul de coloane aferente cmpului specificat ca argument; =ROW(referin celular sau cmp) returneaz numrul liniei corespunztoare referinei celulare sau numrul primei linii a cmpului specificat ca argument; =ROWS(cmp) returneaz numrul de linii pe care l ocup cmpul specificat ca argument;

24

PDF created with pdfFactory trial version www.pdffactory.com

=AREAS(referin celular) indic numrul de zone contigue dintr-un cmp. Dac respectivul cmp conine mai multe zone contigue, atunci argumentul se mai nchide ntr-o parantez suplimentar; n figura 19 sunt prezentate mai multe exemple de utilizare a funciilor enumerate mai sus.

Fig. 19 Aplicaie pentru funciile de cutare i consultare =VLOOKUP(cheie;cmp de consultare;coloan de recuperat) returneaz coninutul unei celule ce figureaz ntr-o coloan dintr-un tablou de consultare vertical. Sintaxa funciei de consultare vertical admite trei argumente i anume: - cheie: reprezint valoarea dup care are loc cutarea sau consultarea, (adres absolut/relativ sau nume de cmp); - cmp (sau tabel) de consultare: este cmpul asupra cruia opereaz consultarea prin cutarea valorii cheii precizate anterior; - coloan de recuperat: este numrul coloanei (numerotarea ncepe cu 1) de unde va fi recuperat informaia gsit n tabelul de consultare, corespunztor valorii cheii de cutare. n mod obligatoriu tabelul de consultare va fi sortat cresctor dup coloana care conine valorile cheii de consultare (comanda Data Sort, iar n rubrica Sort by se va preciza numrul sau numele coloanei dup care se va face sortarea) =HLOOKUP(cheie;cmp de consultare;linie de recuperat) returneaz coninutul unei celule ce figureaz ntr-o anumit linie a unui tablou de consultare orizontal. Argumentul cheie (sub forma unei referine celulare sau nume de cmp) va fi cutat n prima linie a cmpului de consultare, iar dac valoarea va fi gsit pe un numrul de linie precizat de ultimul argument, valoarea respectiv va fi returnat de funcia HLOOKUP. n mod obligatoriu tabelul de consultare orizontal trebuie sortat dup valorile cresctoare ale cheii de consultare aflate n prima linie (sortare de la stnga la dreapta). Dac valorile cheii nu sunt sortate, se va selecta tabelul de consultare i se va activa comanda de sortare (de la stnga spre dreapta): Data Sort, butonul Option i din rubrica Orientation se alege opiunea Sort left to right.

25

PDF created with pdfFactory trial version www.pdffactory.com

Dac informaia cutat n tabelul de consultare vertical sau orizontal nu va fi gsit, se va returna cea mai apropiat valoare (pe verical sau pe orizontal) de cheia de consultare. Pentru exemplificarea celor dou funcii de consultare propunem urmtoarea aplicaie: O societate comercial de distribuie ntocmete, cu ajutorul procesorului de tabele EXCEL, facturi pentru livrrile efectuate. Opional, respectiva societate efectueaz i transportul mrfii comandate la domiciliul clientului, firma practicnd tarife difereniate n funcie de cantitatea transportat (n tone) i de oraul de destinaie. Tarifele de transport sunt grupate ntr-un tablou n funcie de destinaie (prima linie) i de cantitatea transportat (prima coloan). Tabloul care urmeaz a fi considerat tabel de consultare orizontal a fost definit pe coordonatele F20:J28 (figura 1.70) i a fost n prealabil sortat de la stnga la dreapta dup prima linie, adic dup destinaie.

Fig. 17 Date pentru aplicaia de cutare. Firma i are nregistrai clienii ntr-o baz de date (definit pe coordonatele E1:I7) (figura 17) care regrupeaz elementele de identificare ale acestora (Client, Adresa, Localitate, Cod fiscal, Cont bancar). n egal msur exist i o alt baz de date definit pe coordonatele A20:C28 (figura 18) sub forma unui nomenclator de preuri pentru fiecare produs n parte. Cele dou baze de date sunt sortate dup valorile cresctoare ale primei coloane i conin informaii pertinente ce concur la realizarea automat a facturii.

Fig. 18 Date pentru aplicaia de cutare

26

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 19 Nomenclatorul de preuri Factura procesat cu Excel are urmtoarea form (figura 19): Utilizatorul va introduce prin tastare, pentru completarea facturii doar denumirea clientului, codul produsului facturat, cota de adaos comercial, cantitatea livrat, iar opional dac se dorete sau nu transport, precum i destinaia transportului. n rest toate operaiile sunt fcute automat cu ajutorul formulelor i a funciilor Excel. Factura se proceseaz n mod obinuit, ncepnd a se calcula ntr-un prim timp "Valoarea", Majorrile, "TVA-ul" i "Valoarea facturat". 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- pentru a nu se decala la

Fig. 20 Factura obinut copierea formulei ce calculeaz valoarea), precum i cheltuielile de transport. Majorrile de ntrziere se pot calcula pe trane, prin structuri condiionale imbricate. TVA-ul reprezint 22% din Valoare + Majorri, iar Valoarea facturii reprezint suma dintre Valoare, Majorri i TVA. ntr-un al doilea timp se pot calcula totalurile pe rubricile procesate anterior utiliznd clasica funcie SUM. Interesante de prezentat sunt facilitile de consultare vertical i orizontal. La tastarea numelui de client n celula C3, se vor recupera automat dintr-un tabel de consultare vertical (definit anterior pe coordonatele E1:I7), informaiile legate de acest identificator i anume: Adresa, Localitatea, Codul fiscal i Contul bancar.

27

PDF created with pdfFactory trial version www.pdffactory.com

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 gsit, se va recupera informaia din coloana 2, corespunztoare cheii de consultare.

Fig. 21 Funcia de consultare vertical Coordonatele cheii i tabelului de consultare au fost blocate prin utilizarea de adrese absolute pentru ca formula ce conine consultarea vertical s poat fi copiat fr ca respectivele coordonate s se decaleze. Cheia de consultare fiind n acest caz de tip text nu trebuie s aib valori vide i nici numerice. Pentru aceasta, procedura de consultarea vertical a fost completat cu teste fcute asupra celulei care conine cheia de consultare ($C$3). Dac cheia are valoarea vid ISBLANK($C$3) sau (OR()) dac conine o valoare alta dect text ISNONTEXT($C$3), atunci se va afia un spaiu (), altfel se va face consultarea vertical. n aceste condiii, consultarea vertical va avea urmtoarea form: =IF(OR(ISBLANK($C$3);ISNONTEXT($C$3));;VLOOKUP($C$3;$E$1:$H$7;3)), fapt ilustrat i n figura 22.

Fig. 22 Funcia de consultare vertical Dac se tasteaz un client care nu exist n nomenclatorul de clieni (n tabelul de consultare vertical), funcia VLOOKUP nu va semnala lipsa informaiei din tabel ci va returna informaia legat de cea mai apropiat valoare a cheii de consultare. De exemplu, dac s-ar introduce clientul cu numele Sarmis, se vor recupera prin VLOOKUP informaiile adiionale corespunztoare celei mai apropiate valori ale cheii, adic informaiile legate de clientul Star. Funcia VLOOKUP nu va semnala inexistena cheii de consultare Sarmis. Pentru nlturarea acestui neajuns, 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 gsit n prima coloan a tabelului de consultare. Dac valoarea respectiv exist n tabel nseamn c s-a gsit cheia de consultare i n consecin consultarea vertical se va efectua returnnd un rezultat corect, altfel se va afia spaiu sau zero (ultimul caz folosindu-se dac celula respectiv particip ulterior la calcule) sau un mesaj de genul cheie inexistent.

28

PDF created with pdfFactory trial version www.pdffactory.com

Formula de testare a existenei cheii de consultare n tabel este urmtoarea: IF(VLOOKUP($C$3;$E$1:$I$7;1)<>$C$3;;VLOOKUP($C$3;$E$1:$I$7;4)). Rubricile: Adresa C4-, Localitatea C5-, Cod fiscal C6-, Cont

Fig. 23 Consultare vertical. bancar C7- se vor recupera prin acelai procedeu de consultare vertical, recupernduse dup caz, prin funcia VLOOKUP coninutul coloanelor 2, 3, 4, i 5, corespunztor valorilor cheii de consultare declarate la adresa $C$3 (figura 23). n mod asemntor se procedeaz i cu a doua consultare vertical, anume: n momentul tastrii "Codului de produs" este consultat vertical tabelul "PREURI" declarat la adresa A20:C28, i dac n tabelul respectiv este gsit cheia de consultare "Cod produs" - se vor recupera automat: coninutul coloanei 2 i 3 din tablou, adic "Denumire produs" i "Pre".

Fig. 24 Aplicaie de consultare vertical n figura 24 este prezentat procedura complet (cu teste fcute asupra celulei ce conine cheia de consultare i cu test de existen a valorii cheii n tabelul de consultare) de extragere a denumirii produsului, prin consultare vertical. Similar se procedeaz pentru extragerea preului din tablou, corespunzror valorilor luate de codul produsului. Consultarea orizontal a tabelului declarat pe coordonatele $F$20:$J$28 are loc dup valorile luate de cheia de consultare - $G$10 Destinaia. Dac cheia este gsit n tablou, se va recupera numrul de linie care va conine valoarea cheltuielilor de transport corespunztoare destinaiei specificate. n exemplul prezentat n figura 25, s-a operat un mic artificiu, anume "Cantitatea livrat" coincide logic cu numrul de linie de recuperat orizontal din tablou (astfel, nu s-a precizat numrul liniei recuperate, ci celula care conine livrat, aflat la adresa C13). Datorit faptului c procedura de consultare orizontal este operaional ncepnd cu linia 1 (care conine invariabil titlurile rubricilor aferente destinaiei), celula Cantitatea livrat va indica numrul liniei de recuperat i va avea valoarea incrementat cu o unitate pentru a exista o concordan ntre valorile luate de aceasta i numrul liniei de recuperat. Dac nu s-ar fi operat acest artificiu, numrul liniei de recuperat ar fi decalat cu o unitate (adic, dac celula C13 Cantitatea livrat ar fi avut valoarea 3, s-ar fi recuperat linia numrul 3 din tabel prima linie conine titlul rubricilor-, adic valoarea cheltuielilor de transport aferente pentru 2 tone transportate)

29

PDF created with pdfFactory trial version www.pdffactory.com

Prin funcia HLOOKUP s-a consultat deci respectivul tablou, cutndu-se valoarea luat de Destinaie n celula $G$10, recuperndu-se numrul de linie ce corespunde logic cu Cantitatea livrat. Tabloul de consultare trebuie n mod obligatoriu sortat alfabetic dup prima linie a sa. Procedura de consultare orizontal poate fi completat i astfel mbuntit (celula D14) prin urmtoarele teste: - un test fcut asupra celulelor ce conin: Destinaia (s nu fie valoare vid sau numeric) i Cantitatea livrat (s nu fie valoare de tip text, vid sau zero): =IF(OR(ISNONTEXT($G$10),ISBLANK($G$10),ISTEXT(C14),ISBLANK(C14),C14= 0;0;IF() . Dac cel puin unul din argumente este adevrat, funcia va returna valoarea zero, altfel se vor testa i alte condiii de ndeplinit;

Fig. 25 Aplicaie de consultare orizontal - un test de existen a Destinaiei (celula $G$10) n prima linie a tabloului de consultare orizontal: =IF(OR(;$G$10<>HLOOKUP($G$10;$F$20:$J$28;1));0;..). Dac Destinaia este inexistent n tablou, funcia va returneaz valoarea zero, altfel se procedeaz la consultarea propriu-zis; - un test de existen a Cantitii livrate n prima coloan a unui tablou de consultare vertical: =IF(OR(C14<>VLOOKUP(C14;$E$20:$E$28;1);.). Dac nu exist valoarea unei cantiti livrate n tabloul de consultare vertical definit pe coordonatele $E$20:$E$28, funcia returneaz zero, altfel se procedeaz la consultarea propriu-zis: (HLOOKUP($G$10;$F$20:$J$28;C14+1)); - procedura ar putea fi completat i cu un test de efectuare a transportului: astfel, dac transportul este fcut de furnizor (celula $D$8 are valoarea da), atunci se procedeaz la testele de mai sus i se execut n final consultarea orizontal, altfel cheltuielile de transport vor fi zero. Figura 26 indic corespondenele creeate ntre diferitele cmpuri, n procesul de consultare vertical i orizontal.

30

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 26 Consultarea vertical i orizontal. Corespondene 2.1.7 FUNCIILE TIP DAT CALENDARISTIC I OR Funciile tip dat calendaristica i ora (Date & Time) manipuleaz i opereaz calcule cu valori numerice ce reprezint date calendaristice sau timp: =NOW() returneaz un numr corespunztor datei curente - cu zecimale ce reprezint ora; =TODAY() returneaz un numr-dat corespunztor datei curente; =DATEVALUE("ir de caractere") calculeaz numrul-dat corespunztor irului de caractere n format dat calendaristic (irul trebuie plasat ntre ghilimele); =DATE(an;lun;zi) calculeaz numrul-dat pentru data calendaristic specificat ca argument; =YEAR(numr-dat) returneaz corespunztor anului, un numr cuprins ntre 0 (1900) i 199 (2099) - extrgnd rezultatul dintr-un numr-dat; =MONTH(numr-dat) extrage luna dintr-un numr-dat, sub form de valori cuprinse ntre 1 i 12; =DAY(numr-dat) genereaz un numr corespunztor zilei cu valori ntre 1 i 31; =WEEKDAY(X) returneaz numrul zilei din sptmn corespunztor argumentului X care poate fi de tip numr dat calendaristic sau text n format dat calendaristic; =DAYS360(dat debut;dat sfrit) calculeaz numrul de zile ntre dou date calendaristice considernd anul ca avnd 360 de zile; =TIME(or;minut;secund) calculeaz un numr-timp corespunztor orei, minutului i secundei; =TIMEVALUE(ir de caractere) returneaz numrul-timp corespunztor irului de caractere specificat n format dat/or (ntre ghilimele); =HOUR(numr-timp) extrage ora dintr-un numr-timp (0,000000 pentru ora 24:00:00 i 9,999988426 pentru ora 23:59:59), sub forma unui numr cuprins ntre 0 i 23; =MINUTE(numr-timp) extrage minutul dintr-un numr-timp, sub forma unui numr ntreg cuprins ntre 0 i 59;

31

PDF created with pdfFactory trial version www.pdffactory.com

=SECOND(numr-timp) extrage secunda dintr-un numr-timp sub forma unui numr ntreg cuprins ntre 0 i 59; Un exemplu edificator de utilizare a funciilor de tip dat calendaristic i or este prezentat n figura 28.

Fig. 28 Funciile tip dat i or 2.1.8 FUNCIILE TEXT SAU IR DE CARACTERE Functiile text (Text): permit diferite operaii cu iruri de caractere i furnizeaz n egal msur informaii legate de textul existent n celule: =CHAR(cod numeric ASCII) returneaz caracterul corespunztor codului numeric ASCII specificat ca argument; =TRIM(text) afieaz irul de caractere specificat ca argument n care toate spaiile inutile sunt anulate (cu excepia spaiilor care separ cuvintele textului); =CODE(text) returneaz codul numeric pentru primul caracter din textul specificat ca argument; =CONCATENATE(text1;text2;) concateneaz mai multe iruri de caractere specificate ca argumente, ntr-unul singur; =EXACT(tect1;text2) verific dac dou iruri de caractere sunt identice. Comparnd cele dou iruri, funcia returneaz valoarea logic TRUE dac acestea sunt identice sau valoarea logic FALSE n caz contrar; =UPPER(text) afieaz cu majuscule textul specificat ca argument; =LOWER(text) afieaz cu minuscule textul specificat ca argument; =MID(text;N;X) afieaz X caractere ale textului specificat ca argument, ncepnd cu poziia N; =LEN(text) returneaz numrul caracterelor ce formeaz textul specificat ca argument; =SUBSTITUTE(text-surs;N;X;text-nou) returneaz un nou ir de caractere (text-nou) la a N-a poziie a textului-surs, dup ce au fost anulate X caractere; =REPT(text;numr de ori) repet afiarea textului de un numr specificat de ori; =PROPER(text) determin scrierea cu majuscul a fiecrei prime litere din textul specificat ca argument;

32

PDF created with pdfFactory trial version www.pdffactory.com

Fig. 29 Exemple de funcii text =VALUE(text) convertete un text ce reprezint un numr ntr-o valoare numeric (numrul ce figureaz n textul tespectiv, trebuie s corespund unuia din formate numerice consacrate); =DOLLAR(numr;zecimale) convertete un numr n text, folosind un format monetar; =FIND(text1;text2;N) localizeaz poziia la care ncepe textul1 n textul2 ncepnd cutarea cu poziia N; Exemplificrile funciilor de tip text sau ir de caractere se gsesc prezentate n figura 29. FUNCIILE FINANCIARE (informativ) Funciile financiare (Financial) efectueaz o serie de calcule economico-financiare furniznd prin valorile returnate informaii utile referitoare la amortismente, la rentabilitatea investiiilor, plasamentelor, mprumuturilor etc. =PV(rata dobnzii;numr de perioade;mrimea plii;[valoare viitoare;tipul]) returneaz valoarea actual (present value) aferent unei sume investite sau depozitate la banc, prin pli periodice, n condiiile unei rate constante a dobnzii. =FV(rata dobnzii;numr de periode[;mrimea plii; valoarea prezent; tipul]) returneaz valoarea viitoare (future value) a unei investiii sau plasament n condiii de anuitate (pli i rate ale dobnzii constante).. =PMT(rata dobnzii;numr de perioade;valoare prezent[;valoare viitoare;tip]) calculeaz valoarea lunar sau anual a plii pentru o investiie sau un mprumut. =RATE(numr de perioade;valoarea plii;valoare prezent) returneaz rata dobnzii pe perioada unei anuiti, pentru un mprumut sau o investiie. =NPER(rata dobnzii;valoarea plii;valoare prezent) returneaz numrul de perioade de plat pentru o investiie sau un plasament. =NPV(rata dobnzii;valoare1,valoare2,..) calculeaz valoarea actual net a unei investiii bazate pe o serie periodic de intrri de numerar (cash flows). =SLN(valoare de inventar;valoare rezidual;durata normat de funcionare) calculeaz amortismentul linear al unei imobilizri cu o valoare de inventar dat, innd cont de o

33

PDF created with pdfFactory trial version www.pdffactory.com

valoare rezidual estimat, pentru un numr de periode ct se presupune c va funciona investiia. =VDB(valoare de inventar;valoare rezidual;durata normat de funcionare;debutul perioadei;sfritul perioadei[;rata de depreciere;comutator]) calculeaz amortismentul degresiv ajustat (variable declining balance) al unei imobilizri cu o valoare de inventar anume, o oarecare valoare rezidual; amortizabil pe mai muli ani; cu o anumit rat de depreciere. =SYD(valoare de inventar;valoare rezidual;durat normat de funcionare; perioada pentru care se calculeaz amortizarea) returneaz amortismentul degresiv absolut, fr a corecta ultimele anuiti pentru amortizarea complet a investiiei. =DB(valoare de inventar;valoare rezidual;durat normat de funcionare; perioada pentru care se calculeaz amortizarea;numrul de luni pe an de funcionare a imobilizrii) returneaz amortismentul degresiv absolut, innd cont de numrul de luni pe an de funcionare a imobilizrii, deci ia n calcul un posibil aspect sezonier de utilizare al acesteia. =DDB calculeaz amortizarea dup metoda softy i este o funcie asemntoare cu DB, cu excepia faptului c ultimul argument este un factor de multiplicare al amortizrii degresive.

FUNCII DEFINITE DE UTILIZATOR Microsoft Excel include un limbaj de programare puternic denumit Visual Basic pentru aplicaii (VBA) care d posibilitatea utilizatorului s scrie module care pot fi subrutine sau funcii. O subrutin poate executa un proces ca de exemplu afiarea unei ferestre de dialog n care utilizatorul introduce date. O funcie (definit de utilizator) returneaz o valoare unei celule (sau unui domeniu de celule) n acelai fel ca i o funcie predefinit dintr-o foaie de calcul Excel. n cele ce urmeaz se va prezenta modul de scriere a funciilor. Experiena n programare este util, ns chiar i fr o astfel de experien facilitile VBA sunt accesibile. Se vor exemplifica pentru nceput scrierea unor funcii simple. Funciile sunt utilizate pentru a simplifica scrierea. De exemplu daca e mult mai uor de scris suma ca =SUM(a1:a20) dect A1+A2+...+A20, o funcie definit de utilizator poate fi chiar i mai util n situaia cnd, n mod repetat suntem nevoii s efectum un anumit tip de calcule pentru care Excel nu are funcii predefinite. O data ce o funcie definit de utilizator a fost scris corect (liniile de program) ea poate fi utilizat n acelai mod ca i o funcie predefinit. O funcie definit de utilizator de creeaz in trei etape: 1) Se selecteaz sau creeaz un foaie - modul (Module) utiliznd comenzile Insert/Macro/Module din meniu. Foaia poate fi redenumit pentru a fi mai sugestiv fcnd dublu - click pe numele implicit (module1). Nu se vor utiliza nume pentru foaie care sunt nume de funcii existente. O singura foaie modul poate fi utilizat pentru a gzdui mai mult de o singur funcie. n cele ce urmeaz ns se vor crea funcii pe foi module diferite. 2) Se tasteaz liniile de program n limbaj Visual Basic pentru funcie ca de exemplu: Function name [(arglist)][As type] [statements]

34

PDF created with pdfFactory trial version www.pdffactory.com

[name = expression] [Exit Function] [statements] [name = expression] End Function name Numele dat funciei arglist Lista argumentelor pasate functiei. Argumentele sunt separate unul de celalalt prin virgula, type Tipurile valorilor returnate de funcie. statement O linie valid de comand Visual Basic. expression O expresie ce urmeaz s fie setat la valoarea ce va fi returnat de ctre functie. Valorile dintre parantezele ptrate [] sunt opionale. 3) Se testeaz funcia creat utiliznd-o ntr-o foaie de calcul Excel. Dac valoarea returnat este eronat se revine la etapa 2. Daca se editeaz o funcie la care s-a fcut deja referire, foaia se recalculeaz apasnd tasta F9. Exemplu 1: O funcie simpl n acest exerciiu se va scrie o funcie definit de utilizator care s calculeze aria unui triunghi cruia i se dau doua laturi i unghiul dintre acestea dup formula: Area = *a*b*sin() Pentru a testa funcia formula din D3 este =0.5 * A3 * B3 * SIN( RADIANS (C4)) i va calcula aria astfel nct vom putea s verificm funcia. Se vor copia n jos pn n linia 6. Deocamdat E4:E6 se vor lsa 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.414213562 1.414213562 1.732050808 1.732050808 2.121320344 2.121320344

Se tasteaza Alt+F11, apoi din meniul Insert se selecteaz macro, apoi module pentru a crea o noua foaie modul. Se scriu urmtoarele linii program fr numrul liniei: 1 ' To compute area of triangle 2 ' given two sides and the included angle 3 Function Triarea(side1, side2, Theta)
35

PDF created with pdfFactory trial version www.pdffactory.com

Alpha = Application.Radians(Theta) ' Degrees to Radians Triarea = 0.5 * sidel * side2 * Sin(Alpha) ' Compute area End Function Se revine la foaia de calcul i se introduce formula =TRIAREA(A4, B4, C4). Opional se poate utiliza procedeul Wizard oferit de Excel pentru introducerea datelor cerute de funcie. Numele funciei create poate fi gsit la categoria User-defined. Funcia TRIAREA poate fi gsit n orice foaie de calcul aparinnd dosarului de calcul curent. Valorile din coloanele D i E trebuie s coincid. Se reamintete c dup orice reeditare a funciei trebuie apsat tasta F9 pentru a se recalcula foaia. Semnificaia liniilor de program este urmtoarea: Linia 1 este un comentariu utilizat pentru documentare. Visual Basic ignor orice text care urmeaz dup apostrof i afieaz textul n verde. Linia 2 continu comentariul. Linia 3 deschide funcia cu cuvntul cheie Function. Cuvintele cheie sunt afiate n albastru. Se pot utiliza ca nume de funcie orice nume dar trebuie avut grij s nu coincid cu numele unei foi de calcul existente sau cu o alt funcie. Argumentele funciei desemneaz variabilele ce stocheaz valorile primite de la foaia de calcul. |n foaia de calcul, funcia este apelat sau invocat utiliznd formula =TRIAREA(A3,B3,C3). Aceasta paseaz valorile argumetelor ctre funcie prin poziie i nu prin nume. Astfel valoarea din celula A3 este transmis variabilei Side1 din funcie. Linia 4 - variabila alpha primete o valoare ntr-o linie de atribuire. Este comod s se introduc unghiul n grade n celul dar, deoarece se utilizeaz o funcie trigonometric, trebuie calculat echivalentul n radiani. S-ar fi putut utiliza urmtoarea linie de program: Alpha=Theta*3.1416/180 dar a fost aleas funcia mult mai exact RADIANS. ntruct aceasta nu este o funcie Visual Basic ci una Excel este necesar s fie precedat de cuvntul cheie Application urmat de un punct. Elementul alpha se numete variabil. Pentru variabile, funcii sau argumente este recomandabil s se utilizeze nume scurte, semnificative. Este obligatoriu s se respecte urmtoarele trei reguli: Primul caracter trebuie s fie o liter. Visual Basic nu face distincie ntre literele mari sau mici. Dac se utilizeaz de exemplu numele term ntr-un loc i Term in alt loc, Visual Basic va schimba numela n aa fel ca s coincid ultimei forme utilizat. Un nume nu trebuie s conin spaii, puncte, semne de exclamaie, @, $ sau #. Un nume nu trebuie s coincid cu un cuvnt cheie rezervat Visual Basic. n general acestea sunt afiate n albastru. Pot fi gsite n Help for keywords. Oricum nu trebuiesc memorate toate cci Visual Basic le selecteaz i afieaz un mesaj de eroare. La sfritul liniei 3 se gsete un comentariu explicativ ce ncepe cu un apostrof. Comentariul poate fi att o linie de sine stttoare sau adugat unei ale linii. Linia 5 - n aceast linie de program, funciei i este atribuit o valoare ce va fi returnat foii de calcul. Fiecare funcie trebuie s conin cel puin o linie de program care atribuie o valoare funciei. Funcia trigonometric sin este disponibil n Visual Basic deci nu mai este nevoie s se apeleze la instruciunea Application. Linia are de asemenea un comentariu precedat de apostrof. Linia 6 termin funcia cu End Function. Toate funciile trebuie s se termine cu End Function.

4 5 6

36

PDF created with pdfFactory trial version www.pdffactory.com

Rezolvarea ecuatiilor n Excel Aflarea rdcinilor Se vor examina metodele de aflare a rdcinilor ecuaiilor neliniare ca de exemplu ale ecuaiei polinomiale (3x3-7x2-22x+40=0) sau ale ecuaie transcedentale (exp(-x) sin(x)=0). Dac ecuaia se scrie ca f(x) atunci o rdcin a ecuaiei este o valoare a lui x asfel ca valoarea lui f(x)=0. Unele ecuaii se pot rezolva analitic, ca de exemplu ecuatia de gradul doi. Cu altele metodele analitice pot fi foarte complexe sau chiar nu exist. n aceste situaii putem utiliza metode numerice pentru a gsi rdcinile aproximative. Microsoft Excel pune la dispoziie dou instrumente (Goal Seek i Solver) pentru aflare rdcinilor. n primul exemplu este artat modul cum poate fi implementat pe o foaie de calcul metoda biseciei sau a njumatirii intervalului. Exemplele urmtoare utilizeaz Goal Seek i Solver pentru a afla rdcinile aproximative. Exemplu 1: Metoda biseciei n figura 8 valorile lui F(a) i F(b) sunt reprezentate de o parte i de alta a axei x. De aceea ntre a i b se gsete o rdcin a lui F(x). S presupunem c m este mijlocul intervalului dintre a i b. Deoarece F(m) are semnul opus lui F(b), Aceast rdcin se gsete ntre m i b. Prin njumtire intervalului avem o idee mai exact cu privire la valoarea rdcinii. Putem acum s njumtim intervalul dintre b i m i astfel s mbuntim localizarea rdcinilor. Urmrind funcia G(x) observm c trebuie s utilizm valorile m i a pentru a afla urmtoarea urmtoare aproximaie. Aceasta ne permite s concepem un algoritm pentru a gsi o rdcin a lui f(x): Se incepe cu valori ale lui a i b pentru care f(a) i f(b) au semne opuse. 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 Sfrit dac Pn cnd se atinge precizia dorit.

37

PDF created with pdfFactory trial version www.pdffactory.com

Fig .8 Pozitia mijlocului intervalului Figura 9 este un grafic al funciei exp(-x) - sin(x) evalaut pentru valori ale lui x de la 0 la 4. Cu siguran aceast ecuaie are o rdcin de aproximativ 0.6 i alta de aproximativ 3. sarcina noastr este s gasim rdacinile cu o precizie mai bun. n exemplele urmtoare se va utiliza Goal Seek i Solver pentru a afla rdcinile ecuaiei si pentru a le compara ntre ele.

Fig. 9 Graficul funciei exp(-x) - sin(x) pentru valori ale lui x de la 0 la 4. Deschide nou carnet de calcul. Pe foaia numrul 1 se introduce textul din celulele A1:F3, Fig. 10. Pe linia 4 se introduce: A4: 0.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),C4,A4). Aceasta compar semnele lui f(a) i f(b). Dac sunt diferite celula A5 ia valoare lui m din prima aproximaie. n caz contrar celula reine vechea valoare a lui a.

38

PDF created with pdfFactory trial version www.pdffactory.com

Aflarea radacinilor prin metoda bisectiei a 0.5 0.5 0.5 0.5625 0.5625 0.578125 0.5859375 b 1 0.75 0.625 0.625 0.59375 0.59375 0.59375 mijloc 0.75 0.625 0.563 0.594 0.578 0.586 0.59 f(a) 0.1271051 0.1271051 0.1271051 0.0364802 0.0364802 0.0144946 0.0036031 f(b) -0.4735915 -0.2092722 -0.0498358 -0.0498358 -0.0072207 -0.0072207 -0.0072207 f(mijloc) -0.2092722 -0.0498358 0.0364802 -0.0072207 0.0144946 0.0036031 -0.0018173

Aflarea radacinilor prin metoda bisectiei

a 0.5 =IF(SIGN(F4)<>SIGN(E4),C4,A4) =IF(SIGN(F5)<>SIGN(E5),C5,A5) =IF(SIGN(F6)<>SIGN(E6),C6,A6) =IF(SIGN(F7)<>SIGN(E7),C7,A7) =IF(SIGN(F8)<>SIGN(E8),C8,A8) =IF(SIGN(F9)<>SIGN(E9),C9,A9) =IF(SIGN(F10)<>SIGN(E10),C10,A10) =IF(SIGN(F11)<>SIGN(E11),C11,A11) =IF(SIGN(F12)<>SIGN(E12),C12,A12) =IF(SIGN(F13)<>SIGN(E13),C13,A13) =IF(SIGN(F14)<>SIGN(E14),C14,A14) =IF(SIGN(F15)<>SIGN(E15),C15,A15) =IF(SIGN(F16)<>SIGN(E16),C16,A16) =IF(SIGN(F17)<>SIGN(E17),C17,A17) =IF(SIGN(F18)<>SIGN(E18),C18,A18) =IF(SIGN(F19)<>SIGN(E19),C19,A19) =IF(SIGN(F20)<>SIGN(E20),C20,A20) =IF(SIGN(F21)<>SIGN(E21),C21,A21)

b 1 =IF(A5=A4,C4,B4) =IF(A6=A5,C5,B5) =IF(A7=A6,C6,B6) =IF(A8=A7,C7,B7) =IF(A9=A8,C8,B8) =IF(A10=A9,C9,B9) =IF(A11=A10,C10,B10) =IF(A12=A11,C11,B11) =IF(A13=A12,C12,B12) =IF(A14=A13,C13,B13) =IF(A15=A14,C14,B14) =IF(A16=A15,C15,B15) =IF(A17=A16,C16,B16) =IF(A18=A17,C17,B17) =IF(A19=A18,C18,B18) =IF(A20=A19,C19,B19) =IF(A21=A20,C20,B20) =IF(A22=A21,C21,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. 10 Calculul radacinilor prin metoda bisectiei

39

PDF created with pdfFactory trial version www.pdffactory.com

n B5 se introduce formula =IF(A5=A4,C4,B4). Aceasta compar semnele lui f(m) i f(b). Valorile in A5 i A4 sunt egale cnd a nu a fost nlocuit de m; n care caz noua valoare a lui b este valoarea m din prima aproximaie. n caz contrar se folosete valoarea b. Se copiaz D4:F4 n jos pe linia 5. Aceasta operaiune termin prima iteraie din bucla. Din linia 5 se vede ca valoare funciei este -0.04984 pentru x=0.625. Se copiaz A5:F5 n jos pn la linia 24. (unele liniile sunt ascunse n Fig 3 din lips de spaiu) n linia 4, f(b) i f(m) au acelai semn, astfel c noua valoare a lui b din linia 5 este valoare precedenta a lui m. Acelai lucru se ntmpl la trecerea de la linia 5 la linia 6. Acum f(b) i f(m) au aceeai valoare, astfel n linia 7 valoarea lui m este atribuit lui a i noua valoare a lui b este fosta valoare a lui a. Intervalul este njumtit pe msur ce ne deplasm n josul paginii de calcul. Dup 20 de iteraii intervalul se reduce printr-un factor de 220 , cca. un milion de njumtiri. Pe lina 24, pentru x=0.588533, funcia este evaluat la 8*10-8 ceea ce este rezonabil de apropiat de zero. Valorile n A i B nu se mai schimb prea mult n acest moment. Se pot largi coloanele pentru a se observa mai bine ce se modific. Din figura 9 tim c exist o rdcin n vecintatea lui 3. nlocuii valorile iniiale ale lui a i b n linia 4 pentru a gsi a doua rdcin. Nu conteaz dac se utilizeaz 3 i 4 sau 3 i 3.5. Aflarea rdcinilor cu Goal Seek Cum s-ar putea rspunde la aceast ntrebare: pentru ce valori ale lui x funcia 3x3-10x2 x + 1 ia valoarea 100? Rspunsul poate fi aflat cu uurin cu ajutorul lui Goal Seek din Excel. S presupunem c A1 conine orice valoare (s spunem 1) iar coloana B1 conine formula =3*A1^3- 10*A1^2-A1+1.
1

=3*A1^3- 10*A1^2-A1+1

Cnd ruleaz Goal Seek trebuiesc specificate trei lucruri i anume: c B1 este celula care ne intereseaz celula Set Cell, 2) c valoarea cuta este 100 i c A1 este celula a crei valoare urmeaz s fie schimbat celula By Changing (de schimbat). Goal Seek este un instrument foarte uor dar limitat. n seciune urmtoare se va vedea c Solver este mult mai puternic.

Exemplul 2: O ecuaie de gradul doi n acest exerciiu vom gsi rdcinile ecuaiei 2x2 - 5x 12 = 0 utiliznd Goal Seek.. Inti o aproximare grafica a rdcinilor

40

PDF created with pdfFactory trial version www.pdffactory.com

30

300 51
76 105 200138 150175 216 100261

250

Serie s1

50 0 -50

-1 0

-7

-4

-1

Apoi din meniul Tools alegem Goal Seek pentru ecuaia din celula C1:
5 -1 =2*A1^2 - 5*A1-12

Se completeaz fereastra aplicaiei astfel:

Aflarea rdcinilor cu Solver Instalarea i executarea Solver Optiunea solver nu se instaleaza implicit atunci cand se instaleaza pachetul de programe Office. Pentru a instala Solvern Excel, se face clic pe Add-Ins din meniul Tools, 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. Dup ce se instaleaz programul de completare (Add-In), se poate executa Solver dac se face clic pe Solver n meniul Tools. Fereastra aplicatiei arat astfel:

11

41

PDF created with pdfFactory trial version www.pdffactory.com

Completarea se face asemntor. Rezultatele obinute sunt ns de o precizie mult mai mare. Aplicatia Solver poate fi utilizata i n probleme de optimizare, n fereastra Subject to the Constrains introducndu-se restriciile problemei de optimizare.

Rezolvarea sistemelor de ecuaii liniare - functia MDETERM () Functia MDETERM(array) returneaz valoarea determinantului unei matrici. Sintax: MDETERM(array) Array este un tablou (matrice) cu un numar egal de linii si coloane. Observaii Array poate fi introdus ca un domeniu (range) de celule, de examplu, A1:C3; ca o constanta tablou ex. {1,2,3;4,5,6;7,8,9} (sau ca un nume al orcrei variante menionate anterior). Dac oricare din celulele tabloului este gol sau contine text, MDETERM returneaz eroarea #VALUE! MDETERM returneaz de asemenea eroarea #VALUE! Daca tabloul nu contine un numr egal de linii i coloane. Determinantul unei matrici este un numr rezultat din valorile coninute in tablou. Pentru un tablou A1:C3 de trei linii si trei coloane determinantul se definete 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 ecuaii matematice care implic mai multe variabile. MDETERM este calculat cu o precizie de 16 cifre, ceea ce poate conduce la o mic eroare numeric, de exemplu pentru o matrice singular de 1E-16.

42

PDF created with pdfFactory trial version www.pdffactory.com

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,6,1;1,1,0;3,10,2}) =MDETERM({3,6;1,1}) =MDETERM({1,3,8,5;1,3,6,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.pdffactory.com

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.pdffactory.com

SECIUNEA II PROGRAMARE N EXCEL Visual Basic pentru aplicatii prezentare sumar Visual Basic este un limbaj de programare deosebit de puternic pentru numeroase aplicaii, mai ales c ncepnd cu versiunea 5.0 i-au fost adugate o serie de caracteristici care l-au fcut, pe deplin, un limbaj orientat pe obiecte. Visual Basic a devenit aproape la fel de structurat, flexibil, puternic n ce privete manipularea bazelor de date, orientat pe obiecte, egaland sau depasind facilitatile oferite de C, Pascal, FORTRAN, Fox sau Smalltalk. Interfaa cu utilizatorul

Interfaa cu utilizatorul este ceea ce vede de fapt cineva, atunci cnd programul este n execuie. O interfa cu utilizatorul, sub Visual Basic, este alctuit din formulare (forms) n cazul Excel fiind chiar foaia de calcul, i obiecte (objects). De regula un formular este o fereastr care apare pe ecran. Toate programele Visual Basic au cel puin un formular, dei majoritatea au mai multe. Obiectele sunt elementele care apar ntr-un formular, cu ar fi butoanele de comand, bare de deruare i butoanele de opiune (dreapta sus). Un obiect i permite utilizatorului s dea comenzi ctre program. Pasul urmtor dup proiectarea interfeei const n definirea proprietilor fiecrei ferestre si ale fiecrui obiect. Proprietile unui obiect i determin numele, culoarea, dimensiunile, localizarea i aspectul pe ecran (stanga-mijloc-jos).

46

PDF created with pdfFactory trial version www.pdffactory.com

Obiectele diferite au proprieti diferite. De fiecare dat cnd se creaz un obiect nou, Visual Basic i asigneaz valori prestabilite ale proprietilor. Dei se pot folosi aceste valori prestabilite, se recomand modificarea acestora n funcie de program. Instruciuni BASIC Scrierea unui program Visual Basic este diferit de scrierea unui program n Pascal sau C. Programatorii care folosesc C si Pascal ncep de obicei cu scrierea instruciunilor, n timp ce, n Visual Basic se ncepe cu schiarea interfaa cu utilizatorul. Pasul urmtor implic scrierea comenzilor BASIC (numite si instruciuni, code) care vor face ca programul s funcioneze. Scopul instruciunilor Visual Basic este acela de a indica obiectelor dintr-o fereastr cum s acioneze atunci cnd utilizatorul face un anumit lucru. De exemplu, dac se execut clic cu mousul pe butoanele de comand OK sau Cancel nu se ntmpl nimic pn cnd nu se scriu comenzile BASIC, care spun exact ceea ce trebuie s se ntmple. Ori de cte ori un utilizator apas pe o tast, mic mousul sau execut clic pe butonul mousului, acest lucru este numit un eveniment (event). De fiecare dat cnd are loc un eveniment, comenzile BASIC i comunic calculatorului apariia unui eveniment. Modul proiectare si modul rulare Din view-toolar se bifeaza controltoolbox. Se intra in modul proiectare respectiv rulare facand click pe pictograma reprezentata printr-un echer si creion. Formele i controalele Forma constituie fundaia de la care se pleac n proiectarea interfeei. Cu ajutorul lor se vor construi ferestre i casete de dialog. Forma este locul unde se vor insera controale cu care utilizatorii interacioneaz n timp ce folosesc aplicaia. Controalele sunt acele lucruri care le permit utilizatorilor care folosesc programul s fac diferite lucruri: s introduc un text, s apese un buton, s valideze o opiune, s vad coninutul unui fiier din interiorul aplicaiei etc. Ce sunt controalele intrinseci i ce sunt controalele ActiveX ? Controalele intrinseci sunt un numr relativ mic de controale, dar foarte puternice, disponibile n fiecare ediie Visual Basic, i care se ncarc automat la lansarea IDE (Integrated Development Environment) n Toolbox. Dei controalele intrinseci sunt foarte puternice, ele nu satisfac toate nevoile de programare. De aceea versiunile mai noi de Visual Basic (5,6) ofer posibilitatea de a folosi o serie ntreag de controale ActiveX. Acestea nu fac parte din mediul de programare i nu sunt ncrcate n mod automat la lansarea IDE. Utilizatorul trebuie s stabileasc o legtur ntre proiect i o anumit component. Acest lucru se realizeaz selectnd comanda Components i bifnd din lista de controale ce se doresc a fi folosite n proiect. Noul control va fi afiat n Toolbox. Adugarea i tergerea controalelor Adugarea controalelor se poate realiza astfel: I. executnd un click pe controlul dorit. Se plaseaza cursorul in locul dorit s fie colul

47

PDF created with pdfFactory trial version www.pdffactory.com

stnga sus al controlului. Se deplaseaz mouse-ul innd apsat butonul stng pn cnd Controlul are dimensiunea dorit. Pentru tergerea unui control: clic cu moue-ul pe el i apoi apsnd 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 innd mouse-ul apsat pe el, se trage de el pn ajunge n poziia dorit. Pentru a schima dimensiunile unui control se poziionez cu mouse-ul pe una din laturi i n momentul n care cursorul mouse-ului s-a transformat ntr-o sgeat se deplasai mouse-ul pn cnd controlul are dimensiunea dorit. Proprietai i evenimentelor Formele i controalele Visual Basic sunt obiecte ce au propriile proprieti, metode i evenimente. Proprietile sunt atribute pe care le posed obiectul i care i descriu modul de apariie. Name, top, left, height, width, visible sunt doar cteva din proprietile ce se ntlnesc la marea majoritate a controalelor. Majoritatea proprietolor unui control (sau forme) sunt afiate n fereastra Properties i pot fi setate (primi valori ) n timpul proiectrii aplicaiei(design-time). O mic parte din proprieti sunt accesibile doar n timpul execuiei programului(run-time). Metodele stabilesc comportamentul acestor obiecte, indicnd ce pot face ele efectiv. Metodele sunt de fapt nite proceduri, adic blocuri de cod, care determin obiectul s fac un anumit lucru.(ex: metoda Move ntlnit la majoritatea controalelor determin o schimbare a poziiei controlului.)

Evenimentele definesc interaciunea cu utilizatorul. Evenimentele sunt ceea ce se ntmpl cnd un obiect face ceva. Evenimentul este o aciune recunoscut de ctre un obiect. Fiecare obiect are un set predefinit de evenimente care i se pot ntmpla i pentru care se poate scrie cod care se va executa n momentul producerii acelui eveniment. Pentru fiecare eveniment se poate scrie o procedur, numit numeobiect_ eveniment
48

PDF created with pdfFactory trial version www.pdffactory.com

care se va executa n momentul producerii acelui eveniment. n general se pot scrie proceduri pentru evenimentele considerate importante pentru aplicaie, nu se scriu proceduri pentru toate evenimentele. Stabilind proprietile unui obiect i scriind cod pentru a rspunde la evenimente se particularizeaz obiectul astfel nct s rspund la cerinele aplicaiei.

Proiectarea unei forme Formele constituie fundaia de la care se ncepe construirea unei interfee n Visual Basic. Ele constituie ferestrele prin intermediul crora utilizatorul va interaciona cu aplicaia. Formele posed propriile proprieti, evenimente i metode cu ajutorul crora se poate le controla modul de afiare i comportamentul. In Cazul Excel acestea sunt chiar foile de calcul. Primul pas n proiectarea unei forme este stabilirea proprietilor. Acestea pot fi stabilite n timpul proiectrii (design time) cu ajutorul ferestrei Properties window , sau n timpul execuiei (run time) scriind cod. Not Timpul proiectrii (design time) este timpul n care se lucreaz la aplicaie n mediul de programare. Timpul execuiei (run time) este timpul n care aplicaia ruleaz pe calculator i se poate lucra cu ea. Majoritatea proprietilor formei influeneaz modul de afiare. Proprietatea Caption stabilete care va fi mesajul afiat n bara de titlu a formei; proprietatea Icon stabilete iconia pentru form; proprietatea MaxButton i MinButton stabilesc dac forma poate s fie maximizat sau minimizat n timpul rulrii. Schimbnd proprietatea BorderStyle se poate controla modul de redimensionare al formei. Proprietile Height i Width stabilesc dimensiunile iniiale ale formei; proprietile Left i Top stabilesc locaia formei fa de colul stnga sus al ecranului; proprietatea WindowState stabilete modul n care se va afia forma la nceput: minimizat, maxmizat sau normal; proprietatea Name stabilete un identificator cu ajutorul cruia putei referi forma respectiv. Este recomandat s fie schimbate aceste de numiri cu unele mai familiare i mai uor de reinut.

Utilizarea butoanelor de comand Butoanele de comand sunt utilizate pentru a permite utilizatorilor aplicaiei s ndeplineasc o anumit sarcin. Utilizatorii vor executa click pe buton sau l vor selecta n alt mod (apsnd tasta Tab pn ajung la ele apoi tasta Enter), moment n care butonul va arta ca i cum ar fi apsat. Cu ajutorul proprietii Caption se poate afia text pe buton. Cel mai frecvent eveniment ntlnit la acest control i pentru care se scrie cel mai mult cod este evenimentul Click. De cte ori utilizatorul va apsa butonul acest eveniment se va produce i va determina executarea codului ce se afla scris in procedura numit NumeButon_Click().

Utilizarea controalelor ce manipuleaz texte Principalele contoale utilizate pentru manipularea textelor sunt etichet (Label) i caset de text (TextBox).

49

PDF created with pdfFactory trial version www.pdffactory.com

Eticheta este un control grafic folosit pentru afiarea de text pe care utilizatorul nu l poate modifica. Textul ce va fi afiat se stabilete prin intermediul proprietii Caption . Acesta poate fi stabilit din faza de proiectare dar se poate modifica n timpul execuiei prin intermediul codului. Spre deosebire de controlul etichet, controlul Caset de text este folosit pentru a fia text furnizat de programator din faza de proiectare, introdus de utilizator la rulare sau asociat controlului prin program. Deci controlul poate fi folosit i pentru ca aplicaia s preia diferite informaii de la utilizatori. Textul care se va afia sau care va fi preluat se gestioneaz cu ajutorul proprietii Text. Dac textul trebuie afiat pe mai multe linii proprietatea MultiLine trebuie s aib valoarea True. De asemenea cu ajutorul proprietii ScollBars se pot aduga controlului bare de defilare.

Utilizarea controalelor ce permit alegerea anumitor optiuni Majoritatea aplicaiilor permit utilizatorilor s aleag dintre anumite opiuni, pornind de la un simplu da sau nu pn la selectarea unor articole dintr-o list cu mii de posibiliti. Caseta de validare (CheckBox) Un control caset de validare ofer utilizatorilor posibilitatea de a alege sau nu o anumit obine. Cnd utilizatorul alege acea opiune caseta de validare este marcat; semnul de marcare dispare cnd caseta este deselectat. Prorietatea Valuie este utilizat pentru a determina starea controlului: 1=bifat, 2=nebifat, 2=Indisponibil . Cu ajutorul proprietii Caption putei aduga test n dreptul casetei. n cadrul unei forme pot exista o multitudine de casete de validare utilizatorul s le bifeze cte vrea.Ca i la butoanele de comand evenimentul click al controlului apare ori de cte ori utilizatorul efectueaz clik pe caseta de validare. n acel moment procedura aferent evenimentului clik al controlului i ncepe execuia. Procedura evenimentului va trebui s testeze starea n care se afl caseta de validare. Exemplu de utilizare a acestui control. La o form se adaug un control caste de validare numit chkVerifica i un control etichet pe numit lblVerifica . Se adaug apoi n fereastra de cod urmtoarele rnduri: Private Sub chkVerifica_Click() Select Case chkVerifica Case 0 mesaj= Opiunea nu este bifat Case 1 mesaj=Opiunea este bifat Case 2 mesaj= Opiunea este indisponibil End Select

50

PDF created with pdfFactory trial version www.pdffactory.com

lblVerifica.Caption=mesaj End Sub Eticheta va afia un text indicnd starea casetei.

Butonul de opiune (OptionButton) Butoanele de opiune reprezint, de asemenea, un set de opiuni la dispoziia utilizatorului. Dar spre deosebire de casetele de validare utilizatorul are posibilitatea s marcheze o singur opiune. Selectarea unui buton implic automat deselectarea celorlalte. Toate butoanele de opiune plasate direct pe form constituie un singur grup. Dac se mai doreste s se introduc un alt set de butoane de opiune trebuie s fie ncadrate n interiorul unui Frame. Butonul de opiune care este marcat are proprietatea Value=True n timp ce celelalte butoane din grup au proprietatea Value=False. De asemenea, de cate ori utilizatorul marcheaz sau demarcheaz un buton de opiune se declaneaz eveniment click() al controlului care ncepe execuia procedurii aferent acestui eveniment. n aceast procedur se poate scrie cod care s verifice starea butonului.

Caseta cu lista (ListBox) Caseta cu list este un control ce permite afiarea unei serii de articole din care utilizatorul poate alege unul sau mai multe. Implicit articolele sunt afiate pe o singur coloan ns acest lucru se poate schimba prin modificarea proprietii Columns. Dac numrul de variante este mai mare se va afia, n mod automat, o bar de derulare vertical. Dac se dorete ca utilizatorul s poat selecta mai multe articole din list, proprietatea MultiSelect trebuie s ia valoarea 2. Proprietatea ListCount a unei liste returneaz numrul de articole din list. Proprietatea ListIndex este utilizat pentru a determina numrul articolului selectat. Numerotarea articolelor n list ncepe de la 0. Pentru a prelucra selecia se utilizeaz n special evenimentele Click sau DoubleClick ale casetei cu list. De exemplu, la executarea unui click ntr-o caset numit lstAlegere urmtoarea secven de cod va afia selecia utilizatorului ntr-o etichet numit lblAlegere : Private Sub lstAlegere_Click() lblAlegere.Caption=lstAlegere.List(lstAlegere.ListIndex) End Sub Adugarea unui articol n list se face cu ajutorul proprietii AddItem. tergerea unui articol se face cu metoda RemoveItem iar tergerea ntregului coninut al listei cu metoda Clear. Caseta combinat (ComboBox) Caseta combinat este un control ce combin caracteristicile controlului caset cu list cu cele ale controlului caset de text. Dac utilizatorul nu dorete s selecteze nici una din

51

PDF created with pdfFactory trial version www.pdffactory.com

opiunile din list poate s adauge una n poriunea casetei de text a controlului. Exist trei tipuri de caset combinat, n funcie de valoarea proprietii Style: 0 caset derulant combinat conine o list derulant i o caset de text. Utilizatorul are posibilitatea s selecteze din list una sau s scrie n caseta de text. 1 - caset combinat simpl conine o cast de text i o list nederulant. Dimensiunea unui asemenea control este suma dimensiunilor poriunii de editare i a listei. 2 caset cu list derulant acesta nu este deloc o caset combinat. Permite doar selectarea din lista derulant , poriunea de text fiind neaccesibil. Pentru exemplificarea modului de utilizare a casetelor cu list i a casetelor combinate se prezenta urmtorul program. Utilizatorul are la dispoziie o caset combinat din care poate alege o anumit variant cu ajutorul mouse-ului sau poate scrie una i apoi apas Enter. Alegei pe rnd mai multe variante. Respectiva variant va fi trecut automat in prima caset cu list. Prima caset cu list permite utilizatorului s selecteze mai multe opiuni odat. Selectarea se face innd apsat tasta Ctrl i efectund click cu mouse-ul pe opiunile pe care dorii s le selectai. La apsarea butonului Mutare opiunile selectate vor fi transferate n cea de-a doua caset cu list. Utilizatorul mai are la dispoziie i butonul golire la apsarea cruia se golesc ambele liste. Se adaug pe foaie urmtoarele controale : o caset combinat, dou casete cu list i doua butoane de comand. Se seteaz astfel urmtoarele proprieti: 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 urmtorul cod : Private Sub cboFructe_Click() lstFructe1.AddItem cboFructe.List(cboFructe.ListIndex) End Sub Private Sub cboFructe_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then lstFructe1.AddItem cboFructe.Text cboFructe.Text = End If

52

PDF created with pdfFactory trial version www.pdffactory.com

End Sub Private Sub cmdGolire_Click() lstFructe1.Clear lstFructe2.Clear End Sub Private Sub cmdMutare_Click() Dim i As Integer: i = 0 Do nrelem = lstFructe1.ListCount 1 b = True For i = 0 To nrelem If lstFructe1.Selected(i) = True Then lstFructe2.AddItem lstFructe1.List(i) lstFructe1.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 afia imagini grafice n cadrul interfeei aplicaiilor. Visual Basic ofer programatorilor patru controale cu ajutorul crora pot afia imagini grafice. Acestea sunt: Cutia de poze (PictureBox), Imagine (Image), Figur (Shape), Linie(Line).

Caseta cu poz (PictureBox) Este un control utilizat pentru a pentru a fia poze i imagini grafice utilizatorilor. Poza care se afieaz este stabilit de proprietatea Picture care utilizeaz ca valoare numele fiierului ce conine poza (opional se poate specifica i calea). n timpul execuiei programului, pentru a afia o poz sau pentru a o schimba folosii funcia LoadPicture pentru a stabili proprietatea Picture. Picture1.Picture=LoadPicture(Poza.gif) Dac poza care va fi afiat nu are aceeai dimensiune cu ceea a controlului se poate seta proprietatea AutoSize=True i astfel controlul va avea aceleai dimensiuni cu poza. ns redimensionarea controlului nu va ine cont de celelalte elemente de interfa putnd s le acopere.

53

PDF created with pdfFactory trial version www.pdffactory.com

Caseta cu poz poate fi folosit i ca un container pentru alte controale. De exemplu plasnd n cutia de poze controale imagine care s se comporte ca butoane se poate transforma n bar de instrumente sau introducnd controale etichet care s afieze text se poate transforma n bar de stare. Se poate deasemenea utiliza metodele Circle, Line sau Pset pentru a afia imagini grafice n cutia de poze. Imagine (Image) Se utilizeaz pentru a afia o imagine dintr-un fisier de pe disc pe un form. La selectare si plasare pe form nu este afisat nici o imagine. Trebuie definite proprietile prin care se indic imaginea de afiat i modul de afiare al acestui form. Cea mai important este este proprietate Picture prin care se deschide o caset de dialog care permite alegerea unui fisier grafic.

Elementele componente ale unei aplicatii Visual Basic Setul de caractere Pentru a putea scrie instruciuni pe care calculatorul s le interpreteze se folosesc cuvinte. Aceste cuvinte sunt entiti formate din caractere. n cazul limbajului Visual Basic se pot folosi urmtoarele caractere: - literele mari i mici ale alfabetului limbii romne: A-Z, a-z; - Cifrele sistemului de numerotaie zecimal:0-9; - Caractere speciale: + - / ^ () [] {}. , ; :_ ! # % & $ etc.; - Caracterele speciale perechi: <=, >=, := <>; - Separatorii: spaiu, tab i caracteru Enter. Identificatori Un identificator este numele unui element dintr-un program, fie el variabil, constant, tip definit de utilizator, enumerare, procedur, funcie, obiect, metod, proprietate, control, form modul sau chiar proiectul nsui. Un proiect Visual Basic poate s conin maxim 32000 identificatori. Un identificator trebuie s respecte urtoarele reguli: - s nceap cu o liter; - s nu conin n interior unul din caracterele: . %!$&#@; - numele variabilelor nu pot fi mai lungi de 255 caractere iar cele ale controalelor, modulelor, formelor i claselor nu pot fi mai lungi de 40 caractere; - nu trebuie s existe doi identificatori identici cu acelai scop; - exist o serie de identificatori standard, definii de Visual Basic. O redeclarare a lor va duce la nerecunoaterea sensurilor iniiale; - nu pot fi identificatori cuvintele cheie ale limbajului. Cuvintele cheie sunt identificatori cu semnificaie fixat, care nu pot fi folosii n alt context dect cel precizat de semantica limbajului. Exemple: Dim, Private, Public, Array , For , Next, If, Then ,Else, End etc.. Pentru a face codul ct mai lizibil identificatorii folosii ar trebui s descrie rolul lor n

54

PDF created with pdfFactory trial version www.pdffactory.com

aplicaie. De aceea muli programatori folosesc prefixe n definirea identificatorilor care indic tipul de date referit i scopul lor.

Comentarii, separatori, mprirea liniei Comentariile sunt iruri de caractere care au n fa caracterul (`). Au rolul de a face textul programului mai lizibil. Exemple: Aici ncepe programul Dim iVirsta as Integer Vrsta angajailor Dim iGreutatea as Interger Greutatea angajailor n kilograme De asemenea se pot utiliza comentariile pentru a determina compilatorul s nu mai execute anumite instruciuni (facilitatea este folosit mai ales n faza de corectare a programului). n general n Visual Basic se scrie doar o singur declaraie pe o linie. Totui, dac se doreste, se pot scrie mai multe declaraii pe o singur linie desprindu-le cu ajutorul separatorului de instruciuni i declaraii care este caracterul (:) . Exemplu: Dim a as Integer : a=10 De asemenea pentru a spori lizibilitatea programelor, dac o declaraie este prea mare o se poate scrie pe mai multe linii. Acest lucru se realizeaz folosind caracterul continuator de linie ( _)( un spaiu urmat de o linie jos). Exemplu: Private Declare Function GetVolumeInformation Lib _ kernel32 Alias GetVolumeInformationA _ (ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, _ ByVal nVolumeNameSize As Long, _ lpVolumeSerialNumber As Long, _ lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, lpFileSystemNameBuffer, _ 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 definete mulimea de valori pe care le poate conine o variabil i mulimea de operaii care pot fi efectuate cu elementele mulimii respective. n funcie 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.

55

PDF created with pdfFactory trial version www.pdffactory.com

Cu fiecare tip de dat sunt permise o serie de operaii. Astfel: - operaiile care se pot face cu valorile unui tip ntreg sunt: adunarea (+); scderea(-); nmulirea(*); mprirea ntreag (\) a \ b returneaz ctul mpririi lui a cu b; mprirea real(/); restul mpririi ntregi (mod); ridicarea la putere (^) de asemenea sunt permise operaiile relaionale: mai mic sau egal (<=); mai mic (<); egal (=); mai mare(>); mai mare sau egal (>=); Rezultatul unor astfel de operaii este de tip boolean, avnd valorile True sau False. - operaiile care se pot face cu valorile unui tip real sunt: adunarea (+); scderea(-); nmulirea(*); mprirea(/); ridicarea la putere (^); sunt permise operaiile relaionale prezentate la tipurile ntregi; - irurile de caractere suport operaia de concatenarea (&) i operaiile de comparaie (<,<=,=,>=,>). Prin concatenare dou sau mai multe iruri de caractere pot fi lipite formnd un singur ir de caractere. Cu ajutorul operaiilor de comparaie se stabilete poziia alfabetic a irurilor de caractere; - valorile logice, booleane (True i False) suport urmtoarele operaii logice: negarea logic (Not); i logic (And); sau logic (Or); sau exclusiv logic (Xor); echivalena logic (Eqv); implicaia logic (Imp); - tipurile de dat de tip obiect suport o singur operaie cea de comparaie (Is). Cu ajutorul acestei operaii se verific dac dou variabile de tip obiect refer acelai obict sau nu. Constante n programe se ntlnesc valori constante ce se repet de nenumrate ori. Astfel, pentru a spori lizibilitatea programului i pentru a nu fi nevoie de numeroase modificri n caz c o valoare des ntlnit trebuie modificat, se pot folosi constantele. O definiie de constant introduce un identificator ca sinonim al unei valori constante. n Visual Basic exist dou tipuri de constante: - intrinseci sau definite de sistem . Visual Basic pune la dispoziie o serie ntreag de constante pentru culori, taste, figuri etc. - simbolice sau definite de utilizator. Se pot defini propriile constante cu ajutorul cuvntului cheie Const astfel: [Public|Private] Const NumeConstanta[As type] = expresie Exemple: Const PI = 3.14159265358979 Const NR_ZILE_LUCRATORE = 22 Const ZI_DE_NASTERE = #02.04.1981# Const NUME_DE_COD = Calul

56

PDF created with pdfFactory trial version www.pdffactory.com

Variabile Pentru a realiza diferite funciuni, programele trebuie s stocheze informaia, cum ar fi de exemplu un document de editat n mai multe sesiuni de lucru cu calculatorul, ntr-un fiier i n memoria intern. Dup cum se tie, de fiecare dat cnd se ruleaz un program, sistemul de operare ncarc instruciunile programului n memoria calculatorului. Astfel un program care tiprete un document, de fiecare dat cnd ruleaz va afia un mesaj care cere numele fiierului i numrul de copii care se doresc a fi tiprite. Cnd se scriu aceste informaii, programul pstreaz valorile introduse n anumite locaii de memorie. Pentru a ajuta programul s gseasc locaia de memorie unde au fost plasate datele , fiecare locaie de memorie are o adres unic, cum ar fi locaia 0, 1,2 ,3 i aa mai departe. Deoarece pot fi milioane de asemenea adrese, inerea evidenei fiecrei locaii poate deveni foarte dificil. Pentru a simplifica stocarea informaiei programele definesc variabile. Acestea sunt nite nume pe care programul le asociaz cu anumite locaii din memorie. Aa cum indic i cuvntul variabil, valoarea pe care programul o pstreaz n aceste locaii se poate modifica n cursul execuiei programului. Variabile poate s stocheze valori diferite n momente diferite. O variabil se caracterizeaz prin dou elemente: numele variabilei care este un identificator cu ajutorul cruia putem s referim variabila pe parcursul programului i tipul variabilei care determin ce tip de dat poate stoca variabila. n funcie de tipul variabilei compilatorul aloc o zon mai mic sau mai mare de memorie pentru variabila respectiv. Din punct de vedere al utilizrii variabilelor Visual Basic poate fi considerat un limbaj cu 2 feluri de variabile: cu tip i fr tip. Folosirea variantelor fr tip de date (prin utilizarea tipului implici Variant) a devenit deosebit de important. Tipul Variant conine nu numai variabila dar i informaii despre variabil. A declara o variabil nsemn a-i comunica programului de la nceput despre ea astfel nct programul s tie ct memorie s-i aloce i unde. Declararea unei variabile se face astfel:

[Public| Private] Dim NumeVariabil as TipVaribil

Public, Private, Dim sunt cuvinte specifice limbajului Visual Basic care i spun c se declar o variabil; NumeVaribil este identificatorul variabilei; As este un cuvnt cheie care i spune programului c se dorete declararea tipul variabilei TipVariabil este numele unui tip de date din cele pe care le accept Visual Basic Exemple: Dim i as Integer definete variabila i de tip Integer Dim dtZiSalar as Date definete variabila dtZiSalar de tip Date Private sNume as String definete variabila sNume de tip String Public lstListaPreturi as ListBox definete variabila lstListaPreturi ce va conine o referin ctre un obiect de tip ListBox

57

PDF created with pdfFactory trial version www.pdffactory.com

O caracteristic deosebit de important a variabilelor este domeniul de valabilitate i durata de existen. Astfel exist variabile locale la nivelul unei proceduri. Aceste variabile se declar in interiorul procedurii cu ajutorul cuvntului cheie Dim .Ele exist atta timp ct se execut procedura n care au fost declarate. De asemenea ele pot fi utilizate numai n cadrul acelei proceduri neavnd nici o semnificaie n alt parte a programului. Au un domeniu de valabilitate doar la nivelul proceduri i au o durat de via temporar. Este recomandat s se foloseasc Dim doar pentru declararea acestui tip de variabile chiar dac Visual Basic v va permit s-l folosii i n alte contexte. Un alt tip de variabile sunt cele cu domeniu de vizibilitate la nivelul unui modul. Aceste variabile pot fi folosite oriunde n interiorul modulului n care au fost declarate. Exist atta timp ct este folosit modulul respectiv. Este recomandabil ca declararea lor s se fac cu ajutorul cuvntului cheie Private n loc de Dim chiar dac Visual Basic accept i Dim. Un al treile tip de variabile sunt cele globale la nivelul ntregului program. Acestea sunt pot fi folosite oriunde n program, au un domeniu de valabilitate global Exist atta timp ct se execut programul. Declararea acestor variabile se face cu cuvntul cheie Public. Un alt tip de variabile sunt cele statice. Aceste pot avea un domeniu de valabilitate local sau la nivelul unei proceduri dar o durat de existen permanent. Declararea se face cu ajutorul cuvntului cheie Static. Spre exemplu se poate defini o variabil static la nivelul unei proceduri. E va fi vizibil doar la nivelul acelei proceduri dar i va pstra valoarea i dup ce procedura i va termina execuia. Dac procedura va fi din nou apelat variabila static nu va fi iniializat automat de Visual Basic, lucru ce se ntmpl cu variabilele care nu sunt statice, ci va avea valoare pe care a avut-o la ultima ei folosire. Variabilele locale la nivelul unui modul sau publice se declar n seciune de declaraii a modulului (Declarations). Declararea variabilelor se poate face n dou moduri : implicit sau explicit. n modul implicit o variabil este considerat declarat la prima ei folosire. Nu este necesar o declarare prealabil cu ajutorul cuvintelor cheie Dim, Private,Public. n mod implicit Visual Basic le declar de tip Variant pe toate. Declararea explicit a variabilelor presupune ca nainte s folosii o variabil s o declarai anterior cu ajutorul unuia dintre cuvintele cheie Dim, Private, Public. Se poatei scrie la nceputul modului opiunea Option Explicit sau se poate cere mediului de programare s fac acest lucru automat selectnd din meniul Tool->Options->Editor opiunea Require Variable Declaration i in acest caz Visual Basic va ateniona dac se utilizeaz o variabil nedeclarat anterior. Este deosebit de folositoare aceast opiune (i este recomandat s fie folosit) pentru a evita greelile legate de tiprirea numelor variabilelor. Una dintre cele mai periculoase erori ntlnite la declararea unei variabile este urmtoarea: Dim a, b,c as Integer . Nu se definesc trei variabile a,b,c de tip Integer ci de fapt numai c

58

PDF created with pdfFactory trial version www.pdffactory.com

este de tip Integer celelalte fiind n mod implicit de tip Variant .Corect este Dim a as Integer , b as Integer, c as Integer. Stocarea datelor n variabile se face cu ajutorul instruciuni de atribuire. Exemple: iNotaMaxima = 10 variabila va stoca valoarea 10; sNume = Popescu - variabila va stoca irul de caractere Popescu dtDataNasterii=#01.05.1980# - variabila va stoca data 01.05.1980 Semnul egal din aceste exemple este operator de atribuire i nu operator de egalitate. n versiunile mai vechi de Basic la operaia de atribuire se folosea i cuvntul cheie Let pentru a se face distincie ntre operaia de atribuire i cea de egalitate. (majoritatea limbajelor fac aceast distincie folosind operatori diferii). Cnd se creaz o variabil, Visual Basic i atribuie n mod implici o valoare in funcie de tipul de variabilei. O alt problem deosebit n legtur cu variabilele o constituie conversia tipurilor. Vor exista situaii n care se va dori s se atribuie unei variabile de un anumit tip o valoare de alt tip lucru care nu este posibil. De aceea va trebui s se fac o conversie a valorii de atribuit la tipul variabilei. n numeroase cazuri Visual Basic execut n mod automat aceste conversii de date ns este recomandat ca programatorul s realizeze aceste conversii utiliznd funciile de conversie. Proprietatile controalelor Notiunea Focus arata controlul care va receptiona un eveniment Clic simulat prin tasta Enter. Proprietatea Cancel i proprietatea Default. Proprietatea Cancel este specific butoanelor de comand i este cumva asemntoare cu focus-ul. Dac proprietatea Cancel a unui buton de comand are valoarea True, respectivul buton va recepta un eveniment clic simulat atunci cnd, la execuie, utilizatorul apas tasta Esc. Se tie c tasta Esc are semnificaia de abandonare a unei aciuni sau operaiuni, context n care se recomand ca proprietatea Cancel s aib valoarea True pentru butoanele de comand de tipul Exit sau Abandon, n atare condiii, prsirea form-ului (uneori i a aplicaiei) se poate face prin clic pe butonul respectiv, prin apsarea tastei Esc (dac butonul are setat True pentru proprietatea Cancel) sau printr-o combinaie de taste (dac s-a folosit caracterul & n textul proprietii Caption). Un singur buton de comand de pe un anumit form poate avea valoarea True pentru proprietatea Cancel. Proprietatea Default arat care dintre butoanele de comand din form-ul curent intercepteaz un clic simulat de apsarea tastei Enter. n acest scop, pentru butonul de comand dorit, proprietatea Default trebuie s aib valoarea True. 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, meninndu-se astfel integritatea form-ului). Ordinea parcurgerii controalelor. Proprietatea TabIndex Am artat c focus-ul se poate muta de la un control la urmtorul prin apsarea tastei TAB (sau Shift+TAB pentru precedentul). n mod implicit, ordinea de mutare cu tasta

59

PDF created with pdfFactory trial version www.pdffactory.com

TAB este dat de ordinea n care au fost definite controalele. Dar nu ntotdeauna controalele sunt definite n ordinea n care trebuie parcurse la utilizarea aplicaiei, iar unele controale nu este necesar s primeasc focus (spre exemplu, nu are sens s stabilim focus pentru o etichet). Se utilizeaz proprietatea TabIndex pentru care se stabilesc valori numerice: 0 pentru primul control, l pentru al doilea, 2 pentru al treilea .a.m.d. Observaie. E bine de reinut c n Visual Basic numerotarea elementelor unei mulimi (articolele dintr-o list, variabilele dintr-un tablou) ncepe de la 0 (zero) i se termin, logic, cu n - l, dei exist i cteva excepii. Butoane de comand (Command Button) Sunt utilizate pentru declanarea unei aciuni sau operaiuni, cum ar fi tiprirea la imprimant, salvarea sau abandonarea aplicaiei. Pentru definirea unui buton de comand: > se plaseaz i se contureaz butonul pe form; > se definesc proprietile Name (preferabil cu prefixul cmd) i Caption; > se adaug cod pentru evenimentul Click. Exist 36 de proprieti i 15 evenimente posibile pentru un buton de comand. Cu toate acestea, cel mai adesea se definesc numai proprietile Name i Caption i se scrie doar procedura pentru evenimentul Click. Totui, n aplicaiile elaborate se lucreaz cu mai multe proprieti, cele mai importante fiind prezentate n tabelul 1. Tabelul 1. Principalele proprieti ale unui buton de comand Proprietate Descriere BackColor Specific culoarea fundalului butonului. Se alege dintr-o list de culori. Pentru a putea schimba culoarea implicit trebuie modificat valoarea proprietii Style (1-Graphical, n loc de 0-Standard). Cancel Stabilete dac butonul va recepta un eveniment clic la apsarea tastei Esc. Caption Este textul care se afieaz pe butonul de comand. Default Stabilete dac butonul va recepta un eveniment clic la apsarea tastei Enter, chiar dac un alt control deine focusul. Enabled Stabilete dac butonul este activ (True) sau nu (False). Are valoarea implicit True. Font Permite schimbarea tipului, mrimii i atributelor fontului. Height Precizeaz nlimea butonului n twips. Left Indic distana pn la marginea stng a form-ului, n twips. MousePointer Stabilete forma cursorului mouse-ului atunci cnd, la execuie, utilizatorul indic butonul de comand. Picture Precizeaz numele unei imagini grafice de tip icon (fiier de tip .ico) care apare pe buton (valoarea proprietii Style trebuie s fie 1-Graphical). Style Stabilete dac butonul va aprea ca un buton Windows standard - numai cu text (valoarea 0-Standard) sau cu text i imagine (valoarea 1Graphical).

60

PDF created with pdfFactory trial version www.pdffactory.com

Tablndex TabStop ToolTipText

Top Visible

Width Etichete (Label) Conin texte (titluri, explicaii sau indicaii) care se afieaz pe form n poziii bine precizate. Cel mai adesea o etichet nsoete o caset de text, coninnd explicaii asupra a ceea ce trebuie s introduc utilizatorul n caseta de text. Textul afiat de o etichet (valoarea proprietii Caption) se poate modifica pe parcursul execuiei aplicaiei, conform cerinelor, dar numai prin codul-surs. Tabelul 2. Principalele proprieti ale unei etichete Proprietate Descriere Alignment Indic modul de aliniere a textului etichetei (stnga, dreapta, centru). AutoSize Dac este setat True, modific dimensiunile etichetei atunci cnd, la execuie, este introdus un text prea mare pentru dimensiunile date. BackColor Specific culoarea fundalului etichetei. Se alege dintr-o list de culori. BackStyle Stabilete stilul fundalului etichetei. BorderStyle Stabilete stilul marginii etichetei. Caption Este textul care se afieaz pe etichet. Enabled Stabilete dac eticheta este activ (True) sau nu (False). Are valoarea implicit True. Font Permite schimbarea tipului, mrimii i atributelor fontului. ForeColor Stabilete culoarea textului etichetei. Height Precizeaz nlimea etichetei n twips. Left Indic distana pn la marginea stng a form-ului n twips. MousePointer Stabilete forma cursorului mouse-ului atunci cnd, la execuie, utilizatorul indic eticheta. Tablndex Specific, printr-o valoare numeric, poziia n ordinea de parcurgere a controalelor la momentul execuiei (eticheta nu poate deine focus, dar poate face parte din aceast ordine). ToolTipText Precizeaz textul (explicaii sau indicaii) ce se va afia ntro caset de tip tooltip, la indicarea etichetei cu ajutorul mouse-ului. Top Indic distana pn la marginea de sus a form-ului, n

Specific, printr-o valoare numeric, poziia n ordinea de parcurgere a controalelor la execuie. Precizeaz dac butonul va obine (True) sau nu (False) focus la parcurgerea cu tasta TAB. Precizeaz textul (explicaii sau indicaii) ce se va afia ntro caset de tip tooltip, la indicarea butonului cu ajutorul mouse-ului. Indic distana pn la marginea de sus a form-ului, n twips. Stabilete dac butonul va aprea pe ecran la execuie (True) sau este invizibil (False). Precizeaz limea butonului n twips.

61

PDF created with pdfFactory trial version www.pdffactory.com

twips. Visible Stabilete dac eticheta apare pe ecran la execuie (True) sau este invizibil (Fa s e). Width Precizeaz limea etichetei n twips. WordWrap Stabilete dac este posibil scrierea textului pe mai multe linii n cadrul etichetei. Ca i la butoanele de comand, practic se utilizeaz mai mult proprietile Name i Caption, pe lng cele de dimensionare, care se pot preciza automat, o dat cu plasarea etichetei. Pot aprea probleme specifice atunci cnd lungimea textului coninut variaz dac acest text este introdus la execuia aplicaiei - dimensiunile etichetei se pot dovedi prea mari sau prea mici. Ajustarea automat a textului va permite afiarea corespunztoare a acestuia. Tabelul 3. Principalele proprieti ale unei casete de text Proprietate Descriere Alignment Indic modul de aliniere a textului n caset (stnga, dreapta, centru). BackColor Specific culoarea fundalului casetei. Se alege dintr-o list de culori. BorderStyle Stabilete stilul fundalului casetei. Enabled Stabilete dac caseta este activ (True) sau nu (False). Are valoarea implicit True. Font Permite schimbarea tipului, mrimii i atributelor fontului. ForeColor Stabilete culoarea cu care se va scrie textul. Height Precizeaz nlimea casetei n twips. Left Indic distana pn la marginea stng a form-ului n twips. Locked Precizeaz dac utilizatorul poate (True) sau nu (False) s editeze textul ce apare n caset. MaxLength Specific numrul maxim de caractere pe care le poate introduce utilizatorul n caset. Valoarea implicit 0 nseamn numr nelimitat. MousePointer Stabilete forma cursorului mouse-ului atunci cnd, la execuie, utilizatorul indic acest control. MultiLine Permite (True) sau nu (False) introducerea textului pe mai multe linii. La scrierea pe mai multe linii se poate utiliza proprietatea ScrollBars, pentru a permite deplasarea mai facil n caset. PasswordChar Stabilete caracterul care apare repetat n caset atunci cnd utilizatorul introduce o parol. ScrollBars Specific prezena barelor de derulare n cazul scrierii textului pe mai multe linii. Tablndex Specific, printr-o valoare numeric, poziia n ordinea de parcurgere a controalelor la execuie. TabStop Precizeaz dac controlul va obine (True) sau nu (False) focus la execuie. Text Specific textul care se va afia iniial n caset. Acesta

62

PDF created with pdfFactory trial version www.pdffactory.com

poate fi nlocuit sau nu de ctre utilizator la execuie. Precizeaz textul (explicaii sau indicaii) ce se va afia ntro caset de tip tooltip la execuie, la indicarea csuei de text cu ajutorul mouse-ului. Top Indic distana pn la marginea de sus a form-ului n twips. Visible Stabilete dac controlul va aprea pe ecran la execuie (True) sau este invizibil (False). Width Precizeaz limea casetei n twips. Atunci cnd logica aplicaiei o permite, se recomand ca n caseta de text s se scrie o valoare implicit (proprietatea Text), pe care utilizatorul poate s o menin sau s o schimbe. De remarcat absena proprietii Caption. Observaie: dup parcurgerea principalelor proprieti pentru trei dintre cele mai utilizate controale se observ c multe dintre ele se repet, avnd aceeai semnificaie. Astfel, dac ai neles rolul proprietii Visible de la etichete, o putei utiliza exact la fel i pentru alte controale, n plus, dac sunt nelmuriri n privina unei proprieti, se obine imediat ajutor prin apsarea tastei F1 dup ce s-a selectat proprietatea respectiv. Proprietile form-ului Fiind el nsui un obiect, ca i celelalte controale, form-ul are proprietile sale. Cele mai importante proprieti sunt cuprinse n tabelul Tabelul 4 Principalele proprieti ale unui form Proprietate Descriere BackColor Specific culoarea fundalului form-ului. Se alege dintr-o list de culori. BorderStyle Stabilete stilul fundalului form-ului. Caption Este textul care se afieaz n linia de titlu a form-ului. Enabled Stabilete dac form-ul este activ (True) sau nu (False). Se lucreaz cu aceast proprietate doar n aplicaii cu mai multe form-uri (MDI). Font Permite schimbarea tipului, mrimii i atributelor fontului. ForeColor Stabilete culoarea cu care se va scrie textul. Height Precizeaz nlimea form-ului n twips. Icon Arat imaginea de tip icon ce se va afia pe taskbar atunci cnd utilizatorul minimizeaz form-ul. Left Indic distana pn la marginea stng a ecranului, n twips. MaxButton Specific dac form-ul va avea sau nu buton de maximizare. MinButton Specific dac form-ul va avea sau nu buton de minimizare. MousePointer Stabilete forma cursorului mouse-ului atunci cnd, la execuie, utilizatorul indic form-ul. Moveable Stabilete dac utilizatorul poate muta sau nu form-ul pe ecran, la momentul execuiei. ToolTipText

63

PDF created with pdfFactory trial version www.pdffactory.com

Picture ScaleMode ShowInTaskbar StartUpPosition

Top Visible Width WindowState

Precizeaz numele unei imagini de tip icon (fiier de tip .ico) care apare pe fundalul form-ului la execuie. Stabilete unitatea de msur utilizat pentru form (twip, pixel, inch, centimetri sau altele). Implicit este twip. Stabilete dac form-ul apare sau nu la execuie n linia de start a Windows-ului. Stabilete poziia form-ului pe ecran (implicit acesta apare n stnga sus, dar poate fi afiat centrat pe ecran sau centrat n cadrul unui form-printe -vezi aplicaiile MDI). Indic distana pn la marginea de sus a ecranului, n twips. Stabilete dac form-ul va aprea pe ecran la execuie (True) sau este invizibil (False). Precizeaz nlimea form-ului, n twips. Stabilete starea iniial a ferestrei n care apare form-ul la execuie (minimizat, maximizat sau cu aceleai dimensiuni ca la proiectare).

Derularea unei aplicaii presupune purtarea unui dialog cu utilizatorul, att sub forma ntrebare-rspuns, ct i prin afiarea de componente grafice pe un form. O prim variant de realizare a dialogului o constituie etichetele i casetele de text, dar acestea nu pot afia mesaje de eroare sau de avertizare ntr-un format adecvat. Se utilizeaz n acest scop casetele de mesaj (Message Box). Casetele de intrare (Input Box) se utilizeaz pentru introducerea datelor, avnd opiuni suplimentare fa de casetele de text. STRUCTURI DE CONTROL Din teoria programrii se tie c algoritmul de rezolvare a unei probleme se codifica utiliznd structurile de control. Acestea arat de fapt cile pe care le poate urma prelucrarea datelor.

b Figura 1. Structurile de control fundamentale

Structurile de control fundamentale sunt secvena (a), selecia (b) i iteraia (c), iar reprezentarea grafic din figura 1 arat succesiunea n care se vor executa instruciunile programului. Structurile de control din categoriile b) i c) cuprind condiii; n funcie de rezultatul evalurii acestora (adevrat sau fals), aciunea ia un curs sau altul. Condiiile sunt construite cu ajutorul operatorilor de comparare.
64

PDF created with pdfFactory trial version www.pdffactory.com

Operatorii de comparare n timp ce operatorii matematici produc ca rezultat valori numerice, operatorii de comparare sunt utilizai n expresii care produc rezultatul Adevrat sau Fals (True/ False). Rezultatul evalurii unei condiii este ntotdeauna de tip Boolean, de unde i cele dou ci posibile de aciune, ntruct operatorii de comparare se utilizeaz pentru construirea condiiilor, ei se mai numesc operatori condiionali. Tabelul 1. Operatorii de comparare Operat Exemplu Descriere or > IblProfit .Caption > Are rezultatul True (adevrat) atunci Estimat cnd valoarea din stnga este strict mai mare (numeric sau alfabetic) dect cea din dreapta. < Salariu < 1200000 Are rezultatul True atunci cnd valoarea din stnga este strict mai mic (numeric sau alfabetic) dect cea din dreapta. s Vrsta = LimitaMin Are rezultatul True atunci cnd valoarea din stnga este egal sau identic cu cea din dreapta. >= Nume >= "Popa" Are rezultatul True atunci cnd valoarea din stnga este mai mare sau egal (numeric sau alfabetic) dect cea din dreapta. <= N <= IblNumar.Caption Are rezultatul True atunci cnd valoarea din stnga este mai mic sau egal (numeric sau alfabetic) dect cea din dreapta. o txtRaspuns .Text <> "Da" Are rezultatul True atunci cnd valoarea din stnga este diferit de cea din dreapta. Not: dac nu este adevrat condiia construit cu oricare dintre operatorii de comparare, atunci rezultatul nu poate fi dect False (fals). De remarcat din tabelul l c operatorii de comparare se pot utiliza att pentru valori numerice, ct i pentru iruri de caractere. La compararea irurilor, trebuie s se in cont de codurile ASCII ale literelor, n aceast reprezentare A este 65, iar a este 83. Considernd o variabil strRaspuns, valoarea Da" este diferit de DA". Observaie: Visual Basic nu face diferen ntre literele mari i literele mici. Atunci cum este Da" diferit de DA"? Diferena litere mari - litere mici nu se refer la cuvintelecheie (de exemplu, declaraia Dim se poate scrie i dim sau DIM, iar txtNumePren este acelai lucru cu txtnumepren), ci la constantele de tip ir de caractere. Pentru exemplificarea comparaiilor, vezi tabelul 2. Tabelul 2. Rezultate comparaii - exemple

65

PDF created with pdfFactory trial version www.pdffactory.com

Comparaie 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 condiiilor cu ajutorul operatorilor logici Condiiile pot fi compuse din subcondiii, prin utilizarea operatorilor NOT, AND i OR (vezi tabelul 3). Operatorul NOT (negaie logic) are ca efect inversarea valorii de adevr a unei condiii. Negaia trebuie utilizat cu atenie i numai dac nu exist alternativ (pentru exemplul din tabelul 3 exista o variant mai simpl: strRasp<>"Da"). Operatorul AND (i" logic) face ca o condiie s fie adevrat dac i numai dac subcondiiile care o compun sunt ambele adevrate. Operatorul OR (sau" logic) face ca o condiie s fie adevrat dac cel puin una dintre subcondiiile care o compun este adevrat. n scrierea unor asemenea condiii compuse trebuie cunoscut prioritatea operatorilor logici. Ordinea n care se evalueaz o condiie este n mod normal de la stnga la dreapta, dar operatorii logici o pot schimba; cel mai important n ordinea prioritii este Not, urmat de And i Or. Tabelul 3.Utilizarea operatorilor logici Operator Exemplu Descriere And If (A > B) And Are rezultatul True (adevrat) atunci (C < D) cnd ambele condiii sunt adevrate. Or If (A > B) Or (C < Are rezultatul True (adevrat) atunci D) cnd mcar una dintre condiii este adevrat. Not If NottstrRasp = Are rezultatul True (adevrat) atunci "Da") cnd condiia evaluat este fals i invers. Pentru modificarea ordinii de evaluare implicite ntr-una dorit de programator se folosesc parantezele, care au exact acelai rol cu cele din aritmetica elementar. Exemplu: sngSalar>1000000 And 1=1 este adevrat doar dac sngSalar este mai mare de 1000000; sngSalar>1000000 Or 1=1 este adevrat oricnd; sngSalar>1000000 And intAn=2001 Or 1=1 este adevrat oricnd; sngSalar>1000000 And (intAn=2001 Or 1=1) este adevrat dac i numai dac sngSalar este mai mare de 1000000 i intAn este 2001.
66

PDF created with pdfFactory trial version www.pdffactory.com

Observaie: Atenie la compatibilitatea tipurilor celor dou valori supuse comparrii. Cu alte cuvinte, nu se poate compara direct o valoare numeric cu un ir de caractere. O astfel de comparaie genereaz un mesaj de eroare de tipul Data type mismatch", care indic nepotrivirea. Compatibilitatea tipurilor se refer la faptul c se pot compara dou date numerice, chiar dac sunt de tipuri diferite (de exemplu, Integer i Single). Structuri alternative (selecia) Instruciunea If Este probabil cea mai ntlnit instruciune n logica derulrii unei aplicaii. If evalueaz o condiie n urma creia se execut una din dou aciuni posibile (specificate prin blocuri de instruciuni). Un format frecvent utilizat este: If <condiie> Then <bloc de instruciuni> End If Spre exemplu, considerm c n calculul salariului la firma X se acord un spor de 10% din salariu angajailor care realizeaz vnzri mai mari de 100 milioane lei n luna respectiv. Valoarea vnzrilor este introdus de utilizator ntr-o caset de text denumit txtVanzari. Pentru calculul sporurilor, se va scrie urmtoarea secven de cod: If (txtVanzari.Text > 100000000) Then ' se calculeaz sporul cuvenit sngSporVanz = txtVanzari.Text * 0.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, care este foarte flexibil. Atunci cnd se introduc cifre, Visual Basic le convertete tacit ntr-o valoare numeric cu care se pot realiza calcule. La execuia secvenei de mai sus se verific dac valoarea introdus n caseta de text este mai mare de 100 de milioane. Cnd condiia este adevrat, se calculeaz sporul cuvenit i se adaug sporul calculat la total sporuri, n caz contrar, nu se execut nimic. Poate prea ciudat formula de calcul pentru total sporuri. Matematic, semnul =" arat egalitatea dintre cele dou pri, n Visual Basic i n multe alte limbaje, el are i semnificaia de atribuire: elementului din stnga i se atribuie valoarea din dreapta, n exemplul de fa s-a realizat actualizarea variabilei sngSporuri. O interpretare complet ar suna astfel: la valoarea precedent (sngSporuri din membrul drept) se adaug sporul realizat (sngSporVanz) i se obine o nou valoare a totalului sporurilor (sngSporuri din membrul stng). Observaie: nu este obligatorie prezena parantezelor n scrierea condiiei. Ele ajut doar la delimitarea acesteia de restul codului. Se recomand, cum am mai menionat, scrierea indentat a instruciunilor, pentru a urmri mai uor logica prelucrrilor. O instruciune If scurt se poate scrie pe o singur linie, fr a fi necesar terminatorul End If, astfel: If <condiie> Then <instruciune>

67

PDF created with pdfFactory trial version www.pdffactory.com

Instruciunea If. . . Then. . .Else n forma simplificat de mai sus, If execut o secven de instruciuni doar atunci cnd condiia testat este adevrat. Pentru a defini o alt secven de instruciuni care s se execute atunci cnd condiia este fals, se utilizeaz formatul complet al lui If, astfel: If <condiie> Then <bloc de instruciuni 1> Else <bloc de instruciuni 2> End If Spre exemplu, considerm c, n calculul valorii de plat corespunztoare facturilor ntocmite, firma X ofer o reducere de 5% pentru facturile care au valori mai mari de 20 de milioane lei. If (sngValFact >= 20000000) Then sngValDePlata = sngValFact * 0.95 Else sngValDePlata = sngValFact End If Un exemplu complex este prezentat n continuare. ntr-o caset de intrare i se cere utilizatorului s specifice numele localitii. Dac utilizatorul a terminat dialogul prin butonul Cancel, atunci variabilei strLocalitate i s-a atribuit un ir nul (""). Dac utilizatorul a introdus numele localitii, acesta se va afia ntr-o caset de mesaj. Dim strLocalitate, As String ' I se cere utilizatorului sa specifice numele localitii ' Valoarea implicita este Iai strLocalitate = InputBox("Specificai localitatea", __ "Nume localitate", "Iai") ' Se verifica localitatea introdusa If (strLocalitate = "") Then ' Utilizatorul a selectat butonul Cancel MsgBox "Nu ai introdus nici o localitate" Else ' Utilizatorul a indicat localitatea. MsgBox "Ai introdus localitatea " & strLocalitate" End If Operatorii logici simplific modul de scriere a structurilor alternative. In exemplul de mai jos, considerm c o anumit tax este O pentru cei care au vrsta sub 25 de ani sau peste 60 de ani. Fr operatorul logic Or, secvena 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, secvena este mai concis: If (sngVarsta < 25) Or (sngVarsta >60) Then

68

PDF created with pdfFactory trial version www.pdffactory.com

sngTaxa = 0 End If Instruciunea Select Case (structura alternativ generalizat) S-a observat din exemplele de mai sus c, pentru a codifica mai multe alternative, este posibil imbricarea mai multor instruciuni If, dar cu ct numrul acestora este mai mare, cu att urmrirea lor devine mai dificil. Exemplul ce urmeaz vine n sprijinul acestei afirmaii. If (intCategorie = 1) Then IblTitlu.Caption = "Grad didactic: Preparator" Else If (intCategorie = 2) Then IblTitlu.Caption = "Grad didactic: Asistent " Else If (intCategorie = 3) Then lblTitlu.Caption = " Grad didactic: Lector" Else If (intCategorie = 4) Then lblTitlu.Caption = " Grad didactic: Confereniar" Else If (intCategorie = 5) Then IblTitlu.Caption = " Grad didactic: Profesor" Else lblTitlu.Caption = "Personal nedidactic" End If End If End If End If End If Codul de mai sus devine puin mai clar dac se folosete o variant special a instruciunii If, anume If...Then...ElseIf. Aceasta nu conine dect un terminator End If. If (intCategorie = 1) Then lblTitlu.Caption = "Grad didactic: Preparator" Elseif (intCategorie = 2) Then lblTitlu.Caption = "Grad didactic: Asistent " Elseif (intCategorie = 3) Then lblTitlu.Caption = " Grad didactic: Lector" Elseif (intCategorie = 4) Then IblTitlu.Caption = " Grad didactic: Confereniar" Elseif (intCategorie = 5) Then IblTitlu.Caption = " Grad didactic: Profesor" Else IblTitlu.Caption = "Personal nedidactic" End If O alternativ elegant pentru astfel de situaii este instruciunea Select Case, ce permite selecia multipl. Formatul ei este: Select Case <expresie> Case <valoarel> <bloc de instruciuni> Case <valoare2> <bloc de instruciuni> ...

69

PDF created with pdfFactory trial version www.pdffactory.com

[Case <valoaren> <bloc de instruciuni>] [Case Else <bloc de instruciuni>] End Select Acest format pare, la prima vedere, la fel de dificil ca i o secven de If-uri imbricate. Se au n vedere mai multe valori posibile pentru <expresie>, care poate fi numeric sau ir de caractere. In funcie de valoarea efectiv a expresiei, se va executa un singur bloc de instruciuni. Dac expresia are o valoare ce nu se regsete ntre valorile prevzute se va executa - dac s-a specificat blocul de instruciuni de dup Case Else (altfel, nu se execut nimic). Exemplul privind stabilirea gradului didactic este rescris cu ajutorul instruciunii Select Case. Select Case intCategorie Case 1: IblTitlu.Caption = "Grad didactic: Preparator" Case 2: IblTitlu.Caption = "Grad didactic: Asistent " Case 3: IblTitlu.Caption = " Grad didactic: Lector" Case 4: IblTitlu.Caption = " Grad didactic: Confereniar" Case 5: IblTitlu.Caption = " Grad didactic: Profesor" Case Else: IblTitlu.Caption = "Personal nedidactic" End Select Deci, dac variabila intCategorie ar avea valoarea 3, s-ar afia n textul etichetei lblTitlu Grad didactic: Lector", execuia continund cu urmtoarea instruciune de dup End Select (dac exist). Orice alt valoare n afara celor de la l la 5 ar genera textul Personal nedidactic". Observaie: se pot scrie dou sau mai multe instruciuni pe aceeai linie dac sunt separate prin caracterul :". Pentru a extinde posibilitile de utilizare a structurii alternative generalizate, exist i alte formate pentru Select Case. Un prim format permite compararea expresiei cu o valoare, folosind alt operator dect cel de egalitate. Se scrie astfel: Select Case <expresie> Case is <relaie> <bloc de instruciuni> Case is <relaie> <bloc de instruciuni> [Case is <relaie> <bloc de instruciuni>] [Case Else <bloc de instruciuni>] End Select Un al doilea format posibil are n vedere mai multe intervale de valori n care poate s se ncadreze <expresie>. Select Case <expresie> Case <expresiel> To <expresie2> <bloc de instruciuni> Case <expresiel> To <expresie2> <bloc de instruciuni> [Case <expresiel> To <expresie2> <bloc de instruciuni>] [Case Else <bloc de instruciuni>] End Select

70

PDF created with pdfFactory trial version www.pdffactory.com

Exist i un format care folosete mai multe valori separate prin virgule, ca n exemplul: Select Case intCategorie Case 1,2,4,5 IblTitlu.Caption = "Personal didactic" Case 3 IblTitlu.Caption = "Cercettor tiinific" Case Else IblTitlu.Caption = "Personal nedidactic" End Select Mai mult dect att, este posibil i combinarea formatului standard cu cele suplimentare descrise. Exemplul de mai jos prezint o astfel de combinaie, prin care se testeaz n diferite moduri valoarea variabilei sngMediaGen. Select Case sngMediaGen Case is < 5: lblFinal.Caption = "Situaie colara neincheiata" Case 9.15 To 9.99: IblFinal.Caption = "Bursa de studiu" Case 10: lblFinal.Caption = "Bursa.de merit" Case Else: lblFinal.Caption = "Nu este bursier." End Select

Structuri repetitive (iteraia) Prin iteraie se nelege o secven de program a crei execuie se repet, n funcie de cerinele aplicaiei. Spre exemplu, o procedur care calculeaz numrul de puncte obinute la finele anului I de toi cei 1200 de studeni trebuie s se repete de 1200 de ori. Sau o procedur pentru actualizarea preurilor produselor, care preia datele despre produse dintr-un fiier de date, se va repeta pn cnd se ajunge la sfritul fiierului. Structura repetitiv Do While. . . Loop (execut-ct-timp) Este probabil cel mai frecvent utilizat n programele Visual Basic (instruciunile repetitive se mai numesc bucle). Formatul general al instruciunii Do este: Do While <condiie> [<bloc de instruciuni>] [Exit Do] [<bloc de instruciuni>] Loop O varianta mai veche i mai simpl este: While <condiie> [<bloc de instruciuni>] Wend Instruciunile din cuprinsul buclei (una sau mai multe) se execut n mod repetat, ct timp condiia testat este adevrat (structur repetitiv condiionat anterior). Prin Loop se marcheaz sfritul iteraiei. Dac ntre timp condiia devine fals, programul continu cu instruciunea ce urmeaz dup Loop. Trebuie precizat aici c dac din start condiia este fals, blocul de instruciuni nu se va executa nici mcar o dat! Atenie! Exist riscul unei bucle infinite, dac nu se are n vedere o modalitate de actualizare a variabilei testate n <condiie>.

71

PDF created with pdfFactory trial version www.pdffactory.com

Structura repetitiv Do Until. . . Loop (execut-pn-cand) Spre deosebire de Do While, Do Until execut un bloc de instruciuni ct timp condiie este fals. Altfel spus, pn cnd o condiie devine adevrat (structur repetitiv, condiionat posterior). Nu exista avantaje folosind Do While sau Do Until. Trebuie aleasa forma care se potrivete cel mai bine (n viziunea programatorului) unei situaii date. Formatul general al instruciunii Do Until este: Do Until <condiie> [<bloc de instruciuni>] [Exit Do] [<bloc de instruciuni>] Loop Tot ceea ce s-a discutat la Do While rmne valabil (cu excepia faptului c bucla se execut ct timp condiia este fals). Exemplul anterior se poate rescrie astfel: Do Until ((intVarsta >= 18) And (intVarsta <= 55)) MsgBox "Pentru a putea participa, trebuie sa avei" & _ " vrsta intre 18 si 55 de ani", vbExclamation, "Eroare!" ' se solicita vrsta strVarsta = InputBox('Ce vrsta avei?", "Preluare date") ' se verifica daca s-a introdus o valoare 'daca s-a apsat Cancel, abandonam If (strVarsta = "") Then Exit Do End I f intVarsta = Val(strVarsta) Loop If intVarsta = 0 Then End Else MsgBox "Deci avei " & intVarsta & " ani." End I f Observaie: De aceast dat, operatorul logic folosit n condiie este And ntruct ne intereseaz s solicitm va pn ce aceasta se situeaz n intervalul [18,55], pe cnd la exemplul anterior se solicita vrsta att timp ct nu era n unul din intervalele (0,18) ori (55, 32767). Exist nite variante ale instruciunilor Do While i Do Until care permit executia necondiionat a unui bloc de instruciuni cel puin o dat: Do [<bloc de instruciuni>] [Exit Do] [<bloc de instruciuni>] Loop While|Until <condiie> Execuia blocului de instruciuni se reia sau nu, n funcie de rezultatul evaluarii condiiei. Cu un astfel de format, secvena de cod anterioar devine mai eficient:

72

PDF created with pdfFactory trial version www.pdffactory.com

Dim strVarsta As String Dim intVarsta As Integer Do ' Se preia valoarea introdusa de utilizator strVarsta = InputBox("Ce vrsta avei?", "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 restricia MsgBox "Pentru a participa, trebuie sa avei" & _ " vrsta intre 18 si 55 de ani", _ vbExclamation, "Eroare!" End I f Loop While ((intVarsta < 18) Or (intVarsta > 55)) If intVarsta = O Then End Else MsgBox "Deci avei " & intVarsta & " ani." End I f Plasnd funcia InputBox () la nceputul buclei, aceasta se va executa o dat pentru a cere introducerea vrstei i se va repeta doar dac valoarea introdus nu respect restricia stabilit. Instruciunea For. . . Next Codific structura repetitiv cu numr definit de pai, n care o secven de cod se repet de un numr specificat de ori. Formatul de utilizare este: For <contor> = <val-start> To <val-stop> [Step <increment>] [<bloc de instruciuni>] [Exit For] [<bloc de instruciuni>] Next <contor> Repetarea este controlat de o variabil - <contor> - care ia valori ntr-un interval specificat. Variabila nu trebuie declarat anterior: ea primete o valoare iniial (<valstart>). Dup o execuie, variabila este incrementat/decrementat cu valoarea specificat prin clauza Step (implicit se consider valoarea 1), apoi comparat cu valoarea final (<val-stop>). Dac nu a ajuns la valoarea final, execuia blocului de instruciuni se reia. n caz contrar, execuia trece la linia de dup Next. Exit For are cam acelai rol ca Exit Do de la comenzile Do ... Loop. Exemplu: intSuma = 0 For intNumar = l To 10

73

PDF created with pdfFactory trial version www.pdffactory.com

intSuma = intSuma + intNumar Next intNumar Secvena de mai sus calculeaz suma numerelor de la l la 10. Variabila-contor este intNumar, ce are valoarea iniial l i valoarea final 10 (pasul este 1). intSuma este variabila care va reda suma numerelor de la l la 10, fiind iniializat cu valoarea 0. La prima execuie a buclei, intNumar are valoarea l, valoare care se adun la intSuma: intSuma = intSuma + l Cnd se ajunge la Next, intNumar se realizeaz incrementarea variabilei-contor cu l, astfel c intNumar va avea valoarea 2, valoare ce va fi adunat la intSuma: intSuma = intSuma + 2 Repetarea se va face n mod evident de 10 ori, pn cnd intNumar ajunge la valoarea 10, ce va fi adunat la intSuma: intSuma = intSuma + 10 Dup a 10-a execuie, instruciunea Next va duce intNumar la valoarea 11, care este mai mare dect valoarea final, astfel c se produce ieirea din bucl, continund cu urmtoarea instruciune de dup Next. Sigur c adunarea numerelor de la l la 10 se facea mult mai uor printr-o singur linie decod:intSum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10. Este mai greu daca sunt 100 sau 1000 de numere sau mai multe. Instruciunea propus mai sus nu mai este la fel de uor de scris, n schimb, n secvena For . . . Next s-ar fi modificat doar valoarea final pentru variabila de control (For intNumber = l To 100). Dac este necesar se poate lucra cu un pas negativ, ca n exemplul ce urmeaz: For intNr = 5 To l Step -l Beep Next intNr Aceast secven produce de 5 ori un semnal sonor (instruciunea Beep), realiznd pentru intNr numrtoarea invers (valoarea de start este mai mare dect valoarea de oprire de data aceasta). 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, se porneste de la ideea c dac valoarea salariului este 0, se produce ieirea din bucl. De regul, Exit For, ca i Exit Do, sunt executate n contextul unei instruciuni I f. Observaie: n mod similar se poate utiliza n cadrul unei proceduri instruciunea Exit Sub, care realizeaz ieirea forat din procedur. PROGRAMAREA MODULAR N VISUAL BASIC Programarea structurat, responsabil" cu introducerea structurilor de control n programe, combinat cu programarea modular contribuie la creterea eficienei i productivitii n proiectarea de aplicaii. Prin divizarea aplicaiei n mai multe proceduri se reduce efortul, o dat cu numrul de erori n scrierea programelor. De asemenea, este simplificat ntreinerea aplicaiei.

74

PDF created with pdfFactory trial version www.pdffactory.com

Chiar dac nu se cunoaste nimic despre metoda programrii structurate, modul de elaborare a aplicaiilor n Visual Basic este un ghid. Procedurile-eveniment de dimensiuni mici, scrise pentru realizarea diverselor sarcini, n locul programelor vaste, monolitice, concretizeaz programarea structurat. Atunci cnd o procedur-eveniment este foarte complex, ea este descompus n proceduri mai mici, apelate la nevoie. Spre exemplu, secvena dintr-o procedur pentru calculul salariilor de mai jos apeleaz (prin instruciunea Call) trei proceduri, care execut sarcini clare. Call Iniializare () If txtCalculSal= "Regie" Then Call CalculSalRegie() Else Call CalculSalAcord () EndIf Se urmrete mprirea unei sarcini n subsarcini i a acestora n alte subsarcini, pn la ultimul nivel de detaliere posibil, n condiiile n care o procedur apelat poate, la rndul su, s apeleze o alt procedur. Codul devine astfel foarte bine structurat, simplu i uor de urmrit, iar corectarea erorilor i modificarea programului sunt simplificate. 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). Apelul procedurilor. Subrutine i funcii n exemplul de mai sus a fost folosit instruciunea Call, al crei rol este de apelare a procedurii al crei nume se specific. Formatul su este: Call <nume-procedur> La sfritul execuiei procedurii apelate (marcat prin End Sub sau Exit Sub) procedura apelant redobndete controlul asupra execuiei aplicaiei. La fel se ntmpl i cu funciile apelate: se execut procedura definit pentru funcia respectiv, dup care se returneaz o valoare i controlul procedurii din care s-a apelat funcia. Deci, pe lng procedurile-eveniment, Visual Basic lucreaz cu alte trei categorii de proceduri: - subrutine (proceduri) standard; - proceduri funcii; - proceduri proprietate Aceste categorii de proceduri nu sunt declanate de producerea unui eveniment. Ele sunt definite i apelate apoi de oriunde din program. De fapt, apelarea se poate face de oriunde dac procedura a fost definit prin cuvntul-cheie Public; dac este definit cu Private, ea va putea fi apelat doar de celelalte proceduri ale modulului din care face parte. Procedurile standard i funciile sunt pstrate n modulul form-ului, dup procedurileeveniment sau ntr-un modul extern, ataat proiectului. Singura deosebire dintre funcii i subrutine este c funcia returneaz o valoare pe care procedura apelant o atribuie unei variabile sau unui control (cuvintele-cheie sunt Function. . . End Function), n timp ce subrutina nu (cuvintele-cheie sunt Sub. . . End Sub). Deci, o procedur standard (subrutin) este o procedur independent non-eveniment care se execut atunci cnd este apelat de o alt procedur. O funcie este o procedur

75

PDF created with pdfFactory trial version www.pdffactory.com

independent non-eveniment care se execut atunci cnd este apelat de o alt procedur i creia i returneaz dup execuie o valoare. n general, programatorii prefer s pun procedurile standard de utilitate general n module externe. Se includ aici subrutinele i funciile necesare n mai multe aplicaii diferite. Spre exemplu, procedura care tiprete antetul firmei va fi utilizat n mai multe aplicaii, astfel c se va scrie codul o singur dat, se va salva ntr-un modul extern, care se va include n orice aplicaie n care este necesar tiprirea antetului. Pentru a aduga un modul extern ntr-o aplicaie, n fereastra Project Explorer se execut clic dreapta i se selecteaz comanda Add Module. Noul modul apare n structura proiectului - prin dublu clic se deschide fereastra Code n care se va scrie codul. Definirea subrutinelor Termenii subrutin" i procedur" sunt sinonimi. Subrutinele sunt frecvent utilizate n aplicaiile complexe. Exemplu o aplicaie pentru calculul salariilor. Dup cum se tie, se realizeaz calcule specifice pentru determinarea salariului de baz, apoi a diferitelor sporuri, a impozitului etc. Se pot defini subrutine distincte pentru fiecare calcul n parte. Pentru definirea unei subrutine ce calculeaz pentru fiecare student punctajul obinut la sfritul semestrului la disciplina Medii de programare, se parcurg urmtorii pai: 1. se stabilete un nume adecvat, ct mai explicit, pentru procedur (de exemplu CalculPunctaj sau Punctaj PartialMedii); 2. dac se are n vedere utilizarea procedurii i n alte aplicaii se adaug un nou modul standard (din cele cu extensia . bas), altfel se adaug codul n modulul form-ului (la sfritul acestuia); 3. considernd c se adaug n modulul form-ului curent, se ncepe cu Private Sub CalculPunctaj() (dac se omit parantezele, Visual Basic le va aduga automat); Visual Basic scrie automat sfritul procedurii End Sub; 4. se scrie codul. Pentru o subrutin local, acelai rezultat se obine prin comanda Tools|Add Procedure, care va genera automat prima i ultima linie a procedurii. Private Sub CalculPunctaj() Dim sngNotaTestl As Single, sngNotaTest2 As Single,_ sngNotaLab As Single, sngNotaProiect As Single, sngPunctaj As Single Dim intNrAbsente As Integer ' iniializare variabile sngNotaTestl = txtNotaTl sngNotaTest2 = txtNotaT2 sngNotaLab = txtNotaLab sngNotaProiect = txtNotaP intNrAbsente = txtNrAbs If intNrAbsente > 3 sngPunctaj = 0

76

PDF created with pdfFactory trial version www.pdffactory.com

Else SngPunctaj = sngNotaTestl*0.15 + sngNotaTest2*0,15 sngNotaProiect*0.l Endlf lblPunctaj = Format(sngPunctaj, "##.###") End Sub

+ sngNotaLab*0.1

Observaie: dac subrutina ar face parte dintr-un modul extern, toate numele controalelor trebuie precedate de numele form-ului (exemplu: frmNote. txtNrAbs. Text). Daca se studiaza partea de iniializare a variabilelor se observa ca datele se preiau din mai multe casete de text, dar n instruciunile de atribuire nu s-a specificat proprietatea Text aceasta este proprietatea implicit pentru o caset de text. 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, o procedur se poate apela prin simpla specificare a numelui ei, caz n care nu se mai specific nici parantezele. Definirea funciilor Singura deosebire esenial fa de subrutine este c, la redarea controlului, funcia returneaz o valoare care se va utiliza n procedura apelant; de aceea i modul de apelare este diferit. Considernd exemplul dintr-un capitol anterior - funcia VErori () care verific posibilele erori la preluarea datelor, apelarea ei NU se face prin: VErori() Aceast funcie (i oricare alta) returneaz o valoare, care se atribuie de obicei unui control sau unei variabile, se utilizeaz ntr-o relaie de calcul ori se compar valoarea returnat cu una dintre valorile posibile (n cazul nostru funcia returneaz valoarea 0 sau 1): If VErori 0=1 Then Exit Sub End If Dac funcia Calclmp () s-ar utiliza pentru determinarea impozitului pe salariu, atunci valoarea returnat ar fi a impozitului calculat, care se poate utiliza astfel: IblImpozitSal.Caption = CalcImp() sau sngTotalRetineri = sngTotalRetineri + CalcImp() Spre deosebire de funciile predefinite (built-in functions), o funcie definit de utilizator nu se include automat ntre funciile bibliotecii Visual Basic, dar poate fi salvat ntr-un modul extern, accesibil de oricte ori este necesar. Dac sunt definite mai multe astfel de funcii i subrutine, se poate alctui o bibliotec de rutine generale, accesibile oricrei aplicaii.

77

PDF created with pdfFactory trial version www.pdffactory.com

Modul de definire a unei proceduri funcii este asemntor cu cel al subrutinelor, nceputul i sfritul unei astfel de proceduri se scriu: Public Function VErori() As Integer ... End Function n linia de nceput se specific domeniul (se va scrie Private dac funcia este accesibil doar dintr-un form), numele funciei i tipul valorii returnate (As Integer arat c se returneaz un numr ntreg). Deocamdat nimic despre argumentele (sau parametrii) funciei. Exemplu unei funcii care calculeaz comisionul din vnzri cuvenit agenilor unei firme, n condiiile n care: - toi agenii primesc 1% din vnzrile realizate; - dac vnzrile sunt mai mari de 100 de milioane, agenii primesc un bonus de 0.5% din vnzri, iar dac sunt mai mari de 200 de milioane, bonusul este de 0.8% din vnzrile realizate. Private Function Comision() As Single Dim sngVanzari As Single, sngComis As Single Dim sngCG As Single, sngCSl As Single; sngCS2 As Single ' iniializare variabile ' indicarea comisioanelor din vnzri acordate sngCG =0.01 sngCSl = 0.005 sngCG = 0.008 'preluarea valorii vnzrilor sngVanzari = Val(txtVanzari) 'calcul comision general din vnzri sngComis = sngVanzari * sngCG 'adugare 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 reinut modalitatea n care unei funcii i este atribuit valoarea calculat: Comision = sngComis Nu exist nici o variabil cu numele Comision; se folosete numele funciei, care primete astfel valoarea variabilei sngComis.

78

PDF created with pdfFactory trial version www.pdffactory.com

Observaie: pentru a ncheia o procedur funcie nainte de finalul propriu-zis se folosete instruciunea Exit Function. De avut n vedere n acest caz c ntotdeauna funcia trebuie s returneze o valoare: atribuirea valorii de returnat trebuie s se fac nainte de Exit Function. Observaia este valabil i dac n funcie avem o structur de control alternativ - trebuie prevzut cte o ieire din funcie pe fiecare ramur a acestei structuri de control. Utilizarea de argumente n procedurile apelate n Visual Basic se lucreaz cu dou tipuri de variabile: locale i globale. Reamintim c o variabil local poate fi utilizat numai n procedura n care a fost declarat. Variabilele declarate n seciunea general a modulului form-ului (General) sunt globale, fiind disponibile pentru toate procedurile din modul. Variabilele declarate cu Public (n loc de Dim) n seciunea general sunt globale pentru ntreaga aplicaie. De regul se lucreaz cu variabile locale (este chiar recomandat de practica programrii s se evite pe ct posibil variabilele publice - din cauza unor conflicte de nume ori de coninut pe care le pot genera), ceea ce ridic problema disponibilitii variabilelor n procedurile apelate, n mod normal, o variabil local dintr-o procedur apelant nu poate fi utilizat de o procedur apelat din aceasta. Singura posibilitate de partajare a datelor este prin intermediul unei liste de argumente. Atunci cnd o procedur apelat are nevoie de date din procedura apelant, aceasta i trimite prin instruciunea Call i o list de argumente. Printr-o list de argumente se transmit procedurii apelate variabilele locale necesare acesteia pentru prelucrrile de efectuat. Dup transmiterea datelor, acestea rmn variabile locale, dar vor putea fi utilizate n execuia procedurii apelate, n funcie de modalitatea de transmitere a variabilelor, sunt posibile i modificarea valorii acestor variabile de ctre procedura apelat i transmiterea noilor valori procedurii apelante. Numele de argumente utilizate la apelarea unei proceduri pot fi diferite de numele utilizate de aceasta, n exemplul urmtor variabila Y de la nceputul procedurii este aceeai cu variabila X din cadrul procedurii apelate (la fel W cu V). Call Calcul(X,V) 'apelare procedura ... Public Sub Calcul(Y As String, W As Single) 'ncepe procedura Singura restricie este ca numrul de argumente transmise, ordinea i tipul lor s fie aceleai ca n instruciunea Call. Este obligatoriu de precizat tipul tuturor argumentelor transmise la nceputul procedurii apelate, care trebuie s fie cel declarat pentru variabilele transmise n procedura apelant. Dac se transmit unei proceduri variabile de tip list, nu trebuie indicat indicele variabilei n lista de argumente, ci doar parantezele de rigoare. Se va scrie: Public Sub Calcul(AniVechime() As Integer, SalBaza() As Single, Opional ConditiiGrele() As Single, _ Altele () as Single) Cu ajutorul funciei UBourid () se determin cea mai mare valoare a indicelui unei variabile list, aflnd deci numrul de valori dintr-o list (pentru ci salariai se aplic acest calcul): intNrSal = Ubound(SalBaza) Am ntlnit aici cuvntul-cheie Opional, care permite declararea unui argument ce poate lipsi la apelul procedurii. Spre exemplu, dac folosim aceast procedur la calculul

79

PDF created with pdfFactory trial version www.pdffactory.com

sporurilor pentru salariaii din sectoarele calde ale unui combinat siderurgic, va trebui s transmitem sporurile de condiii grele; dac o folosim pentru salariaii care nu sunt direct productivi, nu va fi nevoie (probabil) de astfel de sporuri. Se poate apela o procedur i fr specificarea cuvntului-cheie Call (i fr paranteze, n cazul acesta): Calcul Numele procedurii este suficient pentru a o apela. Argumentele se trec sub forma unei liste dup numele procedurii: Calcul AniVechimeUzina(),SalBazaUzina(), ConditiiGreleUzina(), AlteleUzina() fa de varianta complet: Call Calcul(AniVechimeUzina(),SalBazaUzina(), ConditiiGreleUzina (),AlteleUzina()) Not: Argumentul opional ConditiiGreleUzina () se va omite dac nu e cazul s prelum astfel de sporuri, astfel: Calcul AniVechimeUzina(),SalBazaUzina(), AlteleUzina() O alt posibilitate de transmitere a argumentelor n Visual Basic este folosirea argumentelor cu nume (named arguments). Aceast tehnic reclam precizarea numelui argumentului urmat de operatorul : =" i are o mare utilitate n transmiterea argumentelor n alt ordine dect au fost ele definite n procedura apelat, sau n srirea" argumentelor opionale, astfel: Calcul AniVechime():=AniVechimeUzina() , _ SalBaza():= SalBazaUzina () , _ Altele():=AlteleUzina() Observaie: din moment ce listele din tabloul de mai sus au toate acelai numr de elemente (fiind vorba de acelai numr n de salariai), s-ar fi putut lucra cu un singur masiv, cu n linii i 4 coloane, declarate de tip Single (ordin de mrime care include i Integer-ul de la AniVechime). Dac ntr-un astfel de tablou e nevoie de mixarea elementelor de tip numeric cu unele de tip ir de caractere ori dat calendaristic, el ar trebui declarat de tip Variant. Trebuie avut ns n vedere faptul c tablourile de tip Variant consum mult mai mult memorie dect tipurile de dat convenionale". Transmiterea argumentelor prin adres (referin) i prin valoare Exist dou variante de transmitere a argumentelor, n funcie de care se indic dac procedura care le primete le poate modifica i transmite napoi modificrile sau nu. Dac se transmit prin adres (modul implicit n Visual Basic), procedura apelat poate modifica valorile variabilelor transmise, modificri care sunt apoi transmise procedurii apelante. Dac se transmit prin valoare, procedura apelat ar putea modifica valorile, dar aceste modificri nu se pot transmite procedurii apelante. Transmiterea prin adres permite funciei sau subrutinei s actualizeze variabilele, modificrile fiind percepute de variabile i n procedura apelant. Dup ce acesta redobndete controlul, variabilele transmise i modificate vor rmne cu noile valori. Transmiterea prin valoare protejeaz variabilele transmise, valorile lor neputnd fi modificate n procedura apelant (procedura apelat primete copii ale variabilelor din procedura apelant). Se recomand transmiterea datelor prin valoare, atunci cnd modificarea lor nu e necesar sau e riscant. S-a specificat c modul implicit de transmitere este prin adres - deci cu posibilitate de modificare (exist pentru acest mod cuvntul-cheie ByRef, care de obicei se omite).

80

PDF created with pdfFactory trial version www.pdffactory.com

Pentru a indica transmiterea prin valoare trebuie specificat cuvntul-cheie ByVal naintea fiecrei variabile de transmis prin valoare. n exemplele urmtoare sunt redate dou proceduri: procedura Modifica primete datele prin adres i actualizeaz valorile variabilelor, iar procedura NuModifica primete datele prin valoare, astfel c, dei le modific valoarea, ele vor rmne neschimbate n procedura apelant. Sub Modifica (X As Integer, Y As Single) ' transmitere argumente prin adresa N = N * 2 ' dubleaz valoarea S=S*2 ' cnd procedura apelanta redobndete controlul ' cele doua variabile locale vor avea alte valori End Sub Sub NuModifica (ByVal X AS Integer, ByVal Y As Single) ' transmitere argumente prin valoare N = N * 2 'dubleaz valoarea S = S * 2 ' cnd procedura apelanta redobndete controlul ' cele doua variabile locale vor avea aceleai valori ' ca atunci cnd au fost transmise (nu se modifica) End Sub FUNCII PREDEFINITE Visual Basic ofer utilizatorului mai multe funcii, grupate n categorii (numerice, ir, pentru dat i timp, de formatare) pentru a realiza diferite operaiuni pentru care altfel ar trebui scrise secvene de iod. Unei funcii i se indic 0, l sau mai multe argumente, cu ajutorul creia funcia execut calcule sau prelucrri i furnizeaz un rezultat. Principalele funcii Visual Basic, pe categorii: Funcii numerice Cuprind funcii matematice i trigonometrice, avnd ca argumente i ca rezultate valori numerice. Cteva funcii reprezentative sunt cuprinse n tabelul 1. Sunt utilizate n calcule matematice i inginereti. Tabelul 1. Cteva funcii numerice Funcie Descriere Abs() Calculeaz valoarea absolut a argumentului specificat. Atn() Calculeaz arctangenta. Cos () Calculeaz cosinus. Exp() Calculeaz ex, x fiind un anume exponent. Log () Calculeaz logaritm. Sin () Calculeaz sinus. Sqrt () Calculeaz rdcina ptrat dintr-un numr pozitiv. Tan() Calculeaz tangenta. La funciile numerice fundamentale se adaug o list suplimentar de funcii derivate (Derived Math Functions). Funcii de tip ir

81

PDF created with pdfFactory trial version www.pdffactory.com

Aceste funcii realizeaz prelucrri simbolice asupra unor iruri de caractere. Cele mai frecvent utilizate funcii sunt prezentate n tabelul 2. S-au specificat i argumentele funciilor. Tabelul 2. Principalele funcii de tip ir Funcie Descriere Chr (<int>) D caracterul care are codul ASCII specificat ca argument. Lcase (<str>) Convertete toate literele din irul specificat ca argument n litere mici. Left(<str>, <int>) Extrage primele <int> caractere din irul <str>. Len(<str>) Calculeaz numrul de caractere din irul <str> specificat. Ltrim(<str>) Elimin spaiile de la nceputul unui ir de caractere. Mid(<str>, <intStart> Extrage int caractere din interiorul irului <str>, [, <intLen>]) ncepnd cu caracterul din poziia <intstart>. Dac nu se precizeaz <intLen>, se extrag toate caracterele, pn la sfrit. Right(<str>, <int>) Extrage ultimele int caractere din irul <str>. Rtrim(<str>) Elimin spatiile de la sfritul unui ir de caractere. Str(<num>) Convertete valoarea numeric care este argument ntr-un ir de caractere. Trim(<str>) Elimin spaiile de la nceputul i de la sfritul unui ir. Ucase(<str>) Convertete toate literele din irul specificat n litere mari. Exemple de utilizare: > Pentru a stabili dac la stabilirea unei parole utilizatorul a specificat cel puin 5 caractere se poate utiliza funcia Len () astfel: If Len(strParola)<5 Then MsgBox "Ai specificat doar " & Len(strParola) Endlf > Pentru a vedea dac utilizatorul a rspuns afirmativ la o ntrebare, trebuie s se in cont c acesta putea rspunde Da", da" sau DA". Pentru a nu testa toate variantele, se va folosi funcia Ucase (), care face conversia n majuscule: If Ucase(strRasp) = "DA" Then Compararea se face, firete, tot cu majuscule... O alt variant de lucru este conversia n litere mici, prin LCase (). > Dac se dorete afiarea ntr-o caset de mesaj a notei obinute la un examen de fiecare student, va trebui s se converteasc valoarea numeric n ir de caractere prin funcia St r (): MsgBox strNumeStud & " a obinut nota " & _ str(sngNota) > Dac ntr-o prelucrare se utilizeaz primele 5 caractere din numele studenilor (s zicem, drept criteriu de repartizare a studenilor 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 spaii la nceput sau la sfrit, acestea se pot elimina prin funciile 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 = Trm(strSirulMeu) 'irul va fi "<orice text>" Funcii pentru dat calendaristic i timp Sunt utilizate frecvent n aplicaii: de la afiarea datei i/sau orei curente, la transformarea din ani n zile sau din ore n minute. Principalele funcii sunt incluse n tabelul 3. Tabelul 3. Funcii pentru dat i timp Funcie Descriere Date Red data curent. DateSerial (<intAn>, Red data specificat prin cele trei argumente. <intLuna>, <intZi>) DateAdd (<strInterval>, Adun numrul de intN la data specificat prin <intN>, <dteData>) dteData, corespunztor intervalului de timp dorit (strlnterval). DateDiff (<strInterval>, Calculeaz numrul 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 numrul de secunde care au trecut de la miezul nopii. TimeSerial (<ora>, <min>, Red ora specificat prin cele trei argumente. <sec>) Observaie: ntruct nu au argumente, funciile Date, Now, Timer i Time nu folosesc parantezele. Funciile din aceast categorie returneaz de obicei valori de tip dat calendaristic i timp, care se pstreaz n variabile de tip Date. Pentru a pstra data naterii ntr-o variabil se va scrie: dteDataNastere = DateSerial(1981,5, 29) La funcia DateSerial (), ordinea argumentelor trebuie s fie cea indicat de formatul funciei. Anul (dac este n secolul XX) se poate specifica doar prin ultimele 2 cifre: 81 n loc de 1981. Afiarea respectivei date se va face n funcie de setrile stabilite de sistem sau de formatul indicat, n mod similar se utilizeaz TimeSerial (). Cu ajutorul funciei DateSerial () se poate afia o dat specificat printr-o expresie. Dac dorim s afim 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

Funciile 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 sptmn ww sptmn yyyy an Spre exemplu, lucrm 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) Observaie: 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, numrul 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 funcia Date. Putem afla n care zi a sptmnii a fost dat n folosin mijlocul fix, dac scriem: intCareZi = datePart("w", dteDatInFolosinta) Rezultatul este un numr ntreg cu valori de la l (duminic) la 7 (smbt). Dac vrem s aflm cte zile mai sunt pn la sfritul anului, scriem: intCateRamase = 365 - datePart("y", Date) Pe lng funciile prezentate, exist trei funcii 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 informaia dorit, ca n exemplul urmtor: intAnCurent = Year(Now) Funcia Timer se poate dovedi util dac se dorete msurarea intervalului de timp scurs ntre dou momente. Se utilizeaz dou variabile: prima pstreaz numrul de secunde scurse de la miezul nopii Ia momentul to, iar a doua numrul de secunde scurse de la miezul nopii 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 confundai funcia Timer cu evenimentul Timer al controlului cu acelai nume!

84

PDF created with pdfFactory trial version www.pdffactory.com

Funcii pentru testarea tipurilor de date Funciile Is... () sunt denumite i funcii pentru inspectarea datelor, stabilind dac o variabil este sau nu de un anume tip. Rezultatul acestor funcii poate fi True (adevrat) sau False (fals). Aceste funcii sunt prezentate n tabelul 4. Tabelul 4. Funcii Is...(). Funcie 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 iniializat 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 funcie IsString (). Pentru a testa dac o variabil este de tip String, se utilizeaz funcia VarType (<variabil>). Aceasta are ca argument variabila testat, iar rezultatul indic tipul variabilei, sub forma unui numr ntreg (vezi tabelul 5). Astfel, dac rezultatul este 8, nseamn c variabila testat este ir de caractere. Funcia TypeName (<variabil>) este asemntoare, dar returneaz un ir de caractere reprezentnd numele tipului de dat: Long, Integer, Ob j ect etc. Tabelul 5. Valorile returnate de funcia VarType () Valoare Literal Descriere 0 vbEmpty Argument neiniializat 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 cmp 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

8192+int vbArray

Argument Array, de tipul indicat de valoarea ce depete 8192 (de exemplu, 8194 indic un tablou de tip ntreg).

Funcii de conversie Se utilizeaz pentru a converti argumentul ntr-o dat de tipul specificat de funcia utilizat (vezi tabelul 6). Tabelul 6. Funcii de conversie Funcie Descriere Asc (<ir>) Convertete irul de caractere specificat n codul ASCII corespunztor primului caracter din ir. CCur (<arg>) Convertete argumentul ntr-o dat de tip Currency. CDbl (<arg>) Convertete argumentul ntr-o dat de tip Double. CInt (<arg>) Rotunjete argumentul specificat la urmtoarea valoare ntreag. CLng(<arg>) Convertete argumentul ntr-o dat de tip Long. CSng (<arg>) Convertete argumentul ntr-o dat de tip Single. CStr (<arg>) Convertete argumentul ntr-o dat de tip String. CVar (<arg>) Convertete argumentul ntr-o dat de tip Variant. Fix (<arg>) Extrage doar partea ntreag a unui numr (fr rotunjire). Int (<arg>) Rotunjete argumentul specificat la valoarea ntreag mai mic sau egal cu argumentul. Hex (<arg>) Convertete argumentul numeric n valoarea corespunztoare n hexazecimal. Oct (<arg>) Convertete argumentul n valoarea corespunztoare n sistemul de numeraie octal. Funcia Format () Se utilizeaz pentru a specifica modul de afiare a numerelor, a irurilor, a datei calendaristice ori a timpului. Returneaz o dat de tip Variant, care este formatat dup specificaiile utilizatorului. A nu se nelege c funcia Format () transform expresia specificat n Variant - se modific doar modul de afiare a expresiei specificate. Formatarea are loc de regul dup ce s-au efectuat toate calculele sau prelucrrile, n vederea afirii ntr-o form final. Formatul de utilizare este: Format (<expresie>, <strFormat>) <expresie> poate fi o variabil, o constant, un control sau o expresie format din acestea. <strFormat> este una dintre valorile predefinite prezentate n tabelul 7 sau un format de afiare definit de utilizator sub forma unui ir de caractere. Tabelul 7. Moduri de formatare predefinite pentru funcia Format() <strFormat> Descriere "Currency" Afieaz expresia numeric n format monetar: seninul $ (utilizat implicit, dac nu se modific aceast setare), separarea grupurilor de 3 cifre, afiarea cu 2 zecimale.

86

PDF created with pdfFactory trial version www.pdffactory.com

Valorile negative sunt afiate ntre paranteze. "Fixed" "Mediem Time" "On/Off" Afieaz expresia numeric cu 2 zecimale. Afieaz ora n format 12-ore (cu specificaia a.m. sau p.m.)

Afieaz On dac expresia este diferit de zero sau are valoarea True i Of f dac expresia este zero sau False. "Percent" Afieaz expresia numeric n format procentual (valoarea nmulit cu 100, afiat cu semnul %). "Scientific" Afieaz expresia numeric n notaia tiinific. "Short Time" Afieaz ora n format 24-ore. "True/False" Afieaz True dac expresia este diferit de zero sau are valoarea f rue i False dac expresia este zero sau False. "Yes/No" Afieaz Yes dac expresia este diferit de zero sau are valoarea True i No dac expresia este zero sau False. De multe ori utilizatorul dorete (pentru valorile numerice n special) propriul format de afiare, care nu se regsete ntre cele definite pentru <strFormat>. Pentru numere, utilizatorul i poate defini propriile formate de afiare utiliznd caracterele # i 0, mpreun cu cele pentru delimitarea grupurilor de 3 cifre i indicarea mrcii zecimale (. i ,). Fiecare caracter # indic o cifr, iar O precizeaz dac apar n completare zerouri la nceput sau la sfrit. Orice alt text specificat n format se va afia ca atare (vezi exemplul al doilea). Pentru data calendaristic se poate defini format propriu utiliznd d pentru zi, m pentru lun, y pentru an. Exemple: > afiarea cu 2 zecimale a mediei anuale obinute de un student: lblMediaAnuala = Format(sngMedieAn, "##.00") (dac scriam ##.##", 9.7 s-ar fi afiat 9.7; ##.00" afieaz 9.70) > afiarea salariului calculat fr zecimale, cu separarea grupurilor de 3 cifre: lblSalariu = Format(sngSal, "###,### lei") (valoarea 2343211.22 se va afia 2,343,211 lei) > afiarea n format procentual a numrului l (adic 100.00%): lblTotal = Format (l, "Percent") > afiarea textului Yes" n locul valorii l: lblR = Format(l, "Yes/No") > afiarea datei curente n format zz-11-aaaa: IblDataCurenta = Format(Date, "dd-mm-yyyy") Not. abloanele funciei Format () se pot utiliza i pentru proprietatea DataFormat a controalelor de tip caset de text, list ori etichet (n cod sau direct n fereastra Properties)

87

PDF created with pdfFactory trial version www.pdffactory.com

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