Baze de date
Structurile de decizie si selectieStructurile de decizie si selectieDeseori este necesara testare conditiilor specifice inaintea executarii instructiunilor. Structurile de decizie sunt numite si alternative, permit alegerea alternativei, la sfarsitul unei evaluari. Se disting doua structuri de decizie si selectie: IFTHENELSE SELECTCASE Functia IIF poate fi utilizata si pentru a defini o valoare in functie de o conditie. INSTRUCTIUNEA IF IF Permite executarea instructiunilor in functie de rezultatul unei conditii. In general, instructiunile IFTHENELSE pot contine alte structuri de decizie de atatea ori cat este necesar. Sintaxa multilinie cu indentarea corespunzatoare este mai usor de utilizat. Sintaxa 1 (pe o singura linie) If <conditie> Then <instructiuni> [Else <instructiuni>] <instructiuni> poate fi alcatuit de mai multe instructiuni separate de : Sintaxa 2 (pe mai multe linii) If <conditie 1 > Then <secventa de instructiuni 1> [ElseIf <conditie 2 > Then <secventa de instructiuni 2>] [Else <secventa de instructiuni 3>] EndIf Alte posibilitati If <conditie 1 > Then <secventa de instructiuni 1> [Else If <conditie 2 > Then <secventa de instructiuni 2>] [Else <secventa de instructiuni 3>] EndIf] EndIf Exemplu: Afisarea rezultatului comparatiei intre A si B: If A>B Then MsgBox „A>B” Else If A=B Then MsgBox „A=B” Else MsgBox „A<B” EndIf EndIf INSTRUCTIUNEA SELECTCASE Select Case Executa secventele de instructiuni specificate in functie de valoarea unei expresii. Permite inlocuirea lui ELSE IF in instructiunile IFTHENELSE in timpul comparatiei intre o expresie si mai multe valori. Sintaxa: Select Case <expresia de testat> [Case <lista de expresii 1> <secventa de instructiuni 1>] [Case <lista de expresii 2> <secventa de instructiuni 2>] [Case Else <secventa de instructiuni 3>]
End Select <lista de expresii> poate lua formele urmatoare:
Exemplu: Afisarea unui comentariu despre temperatura Select Case Temperatura Case 0 MsgBox(„Ger”) Case 1 to 10 MsgBox(„Frig”) Case 10 to 16 MsgBox(„Racoare”) Case 17, 18, 19 MsgBox(„Temperatura interioara iarna”) Case 20 to 25 MsgBox(„Agreabil”) Case Is > 25 MsgBox(„Cald”) Case Else MsgBox(„Temperatura nereferentiata”) End Select FUNCTIA IIF IIf Returneaza o valoare in functie de o conditie. Sintaxa IIf (<conditie>, <valoare daca Adevarat>, _ <valoare daca Fals>) Exemplu Dim bln As Boolean Bln = IIF(A=B, True, False) Este posibila utilizarea mai multor imbricari ale functiei IIF. Exemplu Dim IntI As Integer IntI = IIf(A = B, IIf(B = C, 1, 0),0) STRUCTURI ITERATIVE Structurile iterative sau repetitive permit repetarea executiei unui ansamblu de actiuni. Se pot distinge mai multe tipuri de structuri iterative: DoLoop WhileWend For..Next For EachNext DoLoop si WhileWend repeta o prelucrare a datelor pana cand o anumita conditie este realizata, in timp ce For..Next efectueaza o prelucrare de un numar stabilit de ori, in functie de contor. For EachNext permite parcurgerea elementelor unei colectii. INSTRUCTIUNEA DOLOOPDo Loop Executa o secventa de instructiuni in timp ce (While) sau pana cand (Until) conditia specificata este verificata. Sintaxa 1: secventa de instructiuni neexecutata (conditia a fost testata inaintea secventei). Do [<conditions>] <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni> Loop Sintaxa 2: secventa de instructiuni executata cel putin odata (conditie testata dupa secventa). Do <Secventa de instructiuni> [Exit Do] <Secventa de instructiuni> Loop [<conditions>] Observatie: Exit Do este deseori folosita dupa evaluarea unei conditii interne iteratiei si permite iesirea din aceasta fara verificarea conditiei de control. Exemplu: Calcularea si afisarea cheltuielilor anuale: Dim intCpt Integer Dim CheltAn As Currency CheltAn = 0 IntCpt = 0 Do IntCpt = IntCpt + 1 CheltAn = CheltAn + CheltTot(IntCpt) Loop Until IntCpt = 12 MsgBox („Cheltuieli Anuale = ” & CheltAn) INSTRUCTIUNEA WHILEWEND WhileWend Executa o secventa de instructiuni atata timp cat conditia specificata este verificata. Sintaxa: While <conditie> < secventa de instructiuni> Wend Exemplu Calcularea si afisarea cheltuielilor anuale. Dim intCpt Integer Dim CheltAn As Currency CheltAn = 0 IntCpt = 1 While IntCpt <= 12 CheltAn = CheltAn + CheltTot(IntCpt) IntCpt = IntCpt + 1 Wend MsgBox („Cheltuieli Anuale = „ & CheltAn INSTRUCTIUNEA FORNEXT ForNext Permite repetarea executarii unei secvente de instructiuni in functie de un contor. Sintaxa For <contor> = <inceput> to <sfarsit> [Step p] <secventa de instructiuni> [Exit For] <secventa de instructiuni> Next <contor> [, <contor 2>] [,]] Observatie: Exit For, deseori amplasata dupa evaluarea unei conditii, permite iesirea fortata dintr-o iteratie. Exemplu Calcularea si afisarea cheltuielilor anuale Dim intCpt Integer Dim CheltAn As Currency CheltAn = 0 For IntCpt 1 To 12 CheltAn = CheltAn + CheltTot(IntCpt) Next MsgBox („Cheltuieli Anuale = „ & CheltAn) Cuvantul cheie Step permite incrementarea si decrementarea printr-un pas specificat a variabilei contor. Exemplu Variabila contor j este incrementata cu 5 la fiecare iteratie. La sfarsirea iteratiilor, totalul corespunzand sumei de la 5 la 10, 15 si 20. Dim j As Integer Dim total As Integer total = 0 For j =5 To 20 Step 5 Total = total + j Next j MsgBox („Totalul este de” & total) INSTRUCTIUNEA FOR EACHNEXT For EachNext Permite parcurgerea tuturor elementelor unui tablou (sau a unei colectii). Sintaxa For Each <element> In <tablou>/<colectie> <secventa de instructiuni> [Exit For] <secventa de instructiuni> Next [element] Exemplu Afisarea cheltuielilor lunare (conform exemplului ForNext Dim Cheltuieli As Currency For Each Cheltuieli In CheltLunare MsgBox (“Cheltuieli”) Next
|