Naredbe

Naredbe specifične za rad sa objektima (For Each…In naredba i With naredba) biće posebno obrađene.

Naredba dodele

Postoje dva oblika naredbe dodele:

  1. Let (za promenljive prostog tipa)
  2. Set (za reference na objekte)

Naredba dodele Let

Let promenljiva = izraz 
ili kraće
promenljiva = izraz 

Naredba ovog oblika izračunava vrednost izraza i upisuje tu vrednost u promenljivu. Npr, ako je x celobrojna promenljiva (tipa Integer ili Long), tada naredba dodele

x = 3*4-2
izračunava izraz 3*4-2 i njegovu vrednost (10) upisuje u promenljivu x. Slično, ako je ind promenljiva logičkog tipa, tada naredba dodele
ind = False
upisuje vrednost logičkog izraza (False) u promenljivu ind.

Ukoliko su promenljiva i izraz različitih tipova, dolazi do konverzije

Naredba dodele Set

Ova naredba je posebna opisana u odeljku o objektima.

Blok naredba

Niz naredbi koji se izvršava kao celina (tj. ili se izvršavaju sve naredbe niza ili se nijedna naredba niza ne izvršava) predstavljaju blok naredbu. Blok naredba predstavlja sastavni deo For…Next i For Each…In naredbi. If Then Else naredbe, Select Case naredbe, For…Next petlje, While…Wend petlje, Do…While petlje, Do…Until petlje, For Each…In naredbe i With naredbe.

Razgranata struktura

IF naredba

Uslovno izvršavanje naredbi. Ako je uslov (nekakav logički izraz) ispunjen (tj. ima vrednost True), tada se izvršava If-blok naredbi, a naredbe Else-bloka se ignorišu. U protivnom, ako uslov nije ispunjen (tj. ima vrednost False), naredbe If-bloka se ignorišu, a izvršavaju se naredbe Else-bloka.


If uslov Then

    naredba 'If-blok naredbi

    naredba

    …

    naredba

Else

    naredba 'Else-blok naredbi

    naredba

    …

    naredba

End If

Ponekad je Else-blok prazan, pa se If-naredba navodi u obliku:


If uslov Then

    naredba 'If-blok naredbi

    naredba

    …

    naredba

End If

Ako je uslov ispunjen, izvršava se If-blok naredbi, u protivnom se If-naredba preskače i prelazi se na sledeću naredbu programa.

Opšti oblik If-naredbe je:


If uslov1 Then

    naredba 'If-blok naredbi

    naredba

    …

    naredba

ElseIf uslov2 Then

    naredba 'ElseIf-blok naredbi

    naredba

    …

    naredba

ElseIf uslov3 Then

    naredba 'ElseIf-blok naredbi

    naredba

    …

    naredba

…

Else

    naredba 'Else-blok naredbi

    naredba

    …

    naredba

End If

Ako uslov1 ima vrednost True, tada se izvršava If-blok naredbi, ostali blokovi (ElseIf i Else) se ignorišu. U protivnom, ako uslov1 nije ispunjen (tj. ima vrednost False), naredbe If-bloka se ignorišu, a testira se uslov2. Ako je uslov2 ispunjen (True), izvršavaju se naredbe odgovarajućeg ElseIf-bloka, a ostali blokovi se ignorišu. Ako uslov2 nije ispunjen, testira se uslov3 itd.

Dakle, ako postoji neki uslov iz If ili ElseIf-bloka koji je ispunjen, izvršavaju se naredbe bloka koji odgovara prvom takvom uslovu (posmatrano odozgo nadole). Ukoliko nijedan od uslova iz If ili ElseIf-bloka nije ispunjen, izvršavaju se naredbe Else-bloka. U svakom slučaju, naredbe ostalih blokova se ignorišu.

If x > 5 Then 'izvršava se za vrednosti veće od 5

    x = x - 5

Else If x > 3 Then 'izvršava se za vrednosti 4 i 5

    x = x - 3

Else If x > 2 Then 'izvršava se za vrednost 3

    x = x + 2

Else

    x = 1 'izvršava se za sve ostale celobrojne vrednosti (x <= 2)

End If

Select Case naredba

U slučaju da je potrebno testirati vrednost neke promenljive i izvršiti različite akcije u slučaju različitih konkretnih vrednosti te promenljive, pogodnije je umesto If-naredbe koristiti Select Case naredbu:

Select Case TestIzraz

        Case SpisakSlučajeva1

            naredbe

        Case SpisakSlučajeva2

            naredbe

        Case SpisakSlučajeva3

            naredbe

        …    

        Case Else 

            naredbe 'podrazumevana akcija

End Select

Pritom:

Sledeća Select Case naredba određuje broj dana u mesecu na osnovu rednog broja meseca m (1-12) i tekuće godine g:

Select Case m

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

            BrDanaUMesecu = 31

        Case 4, 6, 9, 11

            BrDanaUMesecu = 30

        Case 2

            If JePrestupna(g) Then

                BrDanaUMesecu = 29

            Else

                BrDanaUMesecu = 28

            End If

        Case Else

             BrDanaUMesecu = 0

            'MsgBox "Nepostojeci mesec " & m

End Select

Ciklička struktura

For…Next naredba (petlja, ciklus)

Ponavljanje grupe naredbi naveden broj puta.

For brojač = početna To krajnja [Step korak]

    naredba 'For-blok naredbi 

    …

    naredba

Next

Srednje zagrade ([]) se ne pišu u naredbi, već se ovde koriste samo da bi naglasile da je deo naredbe između njih neobavezan (tj. da se ne mora navesti). Ako nije naveden korak (tj. Step korak), podrazumeva se da je njegova vrednost 1. For…Next naredba se izvršava na sledeći način:

  1. Celobrojnoj promenljivoj brojač se dodeljuje vrednost početna (inicijalizacija brojača). Prelazi se na 2.
  2. Uslov koji se proverava zavisi od vrednosti koraka:
    1. ako je vrednost koraka pozitivna, proverava se da li je vrednost promenljive brojač manja od ili jednaka vrednosti krajnja;
    2. ako je vrednost koraka negativna, proverava se da li je vrednost promenljive brojač veća od ili jednaka vrednosti krajnja.
    Ako je uslov ispunjen, izvršavaju se naredbe For-bloka i prelazi se na 3. Ako uslov nije ispunjen, For…Next naredba je završena.
  3. Na vrednost promenljive brojač se dodaje vrednost korak. Ako nije naveden korak (tj. Step korak), podrazumeva se da je njegova vrednost 1. Prelazi se na 2.

Dakle, brojač uzima celobrojne vrednosti iz intervala početna..krajnja (pri čemu se uzastopne vrednosti brojača razlikuju za vrednost korak) i za svaku od tih vrednosti izvršava sve naredbe For-bloka. korak je vrednost za koju se brojač menja tokom svakog prolaska kroz petlju.

While…Wend

While uslov

    naredbe 'blok naredbi = telo petlje

Wend

Ako je uslov True, izvršava se blok naredbi tela petlje (između While i Wend). Zatim se ponovo testira uslov i proces se ponavlja sve dok je njegova vrednost True. Ako uslov nije ispunjen (False), prelazi se na sledeću naredbu programa iza While…Wend petlje.

Ukoliko na samom početku izvršavanja naredbe uslov nije ispunjen (False), naredbe tela petlje neće nijednom biti izvršene.

Preko While-petlje mogu da se realizuju sve ostale petlje. Ona je opštija od For-petlje jer omogućava da se telo petlje ponavlja nepoznat broj puta u zavisnosti od ispunjenosti nekog uslova

Do…While


Do

    naredbe 'blok naredbi = telo petlje

Loop While uslov

Najpre se izvršava blok naredbi tela petlje (između Do i Loop). Zatim se testira uslov i proces se ponavlja sve dok je njegova vrednost True. Ako je vrednost uslova False, prelazi se na sledeću naredbu programa iza Do…While petlje.

Za razliku od While-petlje čije telo ne mora nijednom da se izvrši, telo Do…While petlje se uvek izvršava bar jednom.

Do…Until

Do

    naredbe 'blok naredbi = telo petlje

Loop Until uslov



Najpre se izvršava blok naredbi tela petlje (između Do i Loop). Zatim se testira uslov (nekakav logički izraz) i proces se ponavlja sve dok uslov ima vrednost False. Ako je vrednost uslova jednaka True, prelazi se na sledeću naredbu programa iza Do…Until petlje.

Za razliku od While-petlje čije telo ne mora nijednom da se izvrši, telo Do…Until petlje se uvek izvršava bar jednom.