Visual Basic Scripts

Alapok Programozás
A VBScript nyelv egy Visual BASIC alapokon nyugvó leírónyelv (angolul: script), amelyet a Microsoft fejlesztett ki. Miért pont vbs? Mert nem kell hozzá semmit telepíteni, elég egy egyszerű szövegszerkesztő program. Annyi a lényeg, hogy vbs legyen a fájl típusa. (NotePad++ ajánlott)

A programok felépítése
Minden program fő felépítése azonos, és a következőhárom részből áll.
(1) Adatbevitel,
(2) Adatfeldolgozás,
(3) Eredménykiírás.
Az adatok bevitele megvalósulhat egyrészt az adatbeviteli eszközök segítségével, tehát a billentyűzettel és az egérrel, de olvashatunk adatokat helyi vagy internetes fájlból is. Külön-
böző utasítások és függvények állnak a rendelkezésünkre, hogy a felhasználótól érkező információkat a programban is felhasználható formában át tudjuk venni. A feldolgozás alatt azt kell érteni, hogy a kapott adatokból valamilyen más jellegű információt akarunk kinyerni,
és az ehhez szükséges lépéseket valósítjuk meg. A kapott adatokat az eredménykiírás programrészben adjuk át a felhasználónak. Az eredmény az esetek többségében szöveges vagy képi adat, amit a rendelkezésünkre álló utasításokkal megjelenítünk a képernyőn, de az eredmény lehet egy új fájl, egy hang vagy bármilyen más formátumú fájl is.

Első programunk, szöveg kiíratása

Írassunk ki egy szöveget. Ehhez egy üzenetablakot fogunk használni. (MsgBox) Ennyi az egész program:

MsgBox "Üzenet", 64, "Hello World!"

Értelmezzük a programot. Maga a MsgBox annyit ír ki, hogy üzenet. A 64 megadja, milyen fajta ikont jelenítsen meg. Program neve Hello World.

Változók

Változók segítségével nem kell előre megadott adatokkal dolgoznunk, hanem bekérhetjük őket a felhasználótól. Típusuk lehet szöveges és numerikus. A szöveges adatot mindig dézőjelek közé kell tenni, míg a numerikus értékeket soha nem szabad.A változó neve csak angol betűt, számjegyet és né-hány egyedi karaktert tartalmazhat,például aláhúzásjelet. A VBScriptben nincs különbség a kis- és nagybetűk között. A változóba az egyenlőségjel operátorral helyezünk értéket. Például:kod=32

Nézzük meg az előző kódot változókkal: legyen minden információ egy-egy változóban elmentve. (uzenet, fejlec, kod)

uzenet="Üzenet"
fejlec="Hello World"
kod=64
MsgBox uzenet, kod, fejlec
Szövegek összefűzése
Lehetőségünk van szövegek összefűzésére is:
a = "Írd " : b = "be az" 
c = " üzenet szövegét!" 
uzenet = a + b + c 
MsgBox uzenet, 64, "SzövegÖsszefűzése"
 
 
Adatbevitel billentyűzetről
 
Adatokat bekérni az InputBox segítségével lehet. Kérjük be a felhasználótól mit írjunk ki. Ezt fogja tartalmazni az izenet nevű változó. A fejléc szövegét a fejlec, az ikon kódját a kod változó tárolja.
Kerdes = "Írd be az üzenet szövegét!"
uzenet = InputBox(Kerdes) 
fejlec="Hello World"
kod=64
MsgBox uzenet, kod, fejlec

Műveletek számokkal

Option explicit
Dim a,b,hanyados,kulonbseg,szorzat,osszeg

a=InputBox("a szám")
b=InputBox("b szám")

a=cdbl(a)
b=cdbl(b)

hanyados=a/b
kulonbseg=a-b
szorzat=a*b
osszeg=a+b

MsgBox hanyados, 64, "Hanyados"
MsgBox kulonbseg, 64, "Kulonbseg"
MsgBox szorzat, 64, "Szorzat"
MsgBox osszeg, 64, "Osszeg"

Négyzet területe, kerülete, adat bekéréssel

3 változónk lesz: oldal, terulet, kerulet. Az oldalt bekérjük a felhasználótól, a területet és kerületet kiszámoltatjuk a programmal. A végén kiíratjuk őket.

Option Explicit: amennyiben használjuk, minden változót létre kell hozni (deklarálni kell) mielőtt használjuk. Ezzel kiszürhető például, ha elgépeltük valamelyiknek a nevét, mert ilyen esetben hibaüzenetet kapunk.

Option Explicit
Dim oldal, terulet, kerulet
oldal=InputBox("A négyzet oldala:")
terulet=oldal*oldal
kerulet=oldal*4
MsgBox("Területe:" &terulet)
MsgBox("Kerülete:" &kerulet)

Téglalap kerülete, területe

Itt szükségünk lesz két változóra, a és b oldalra. Ahhoz, hogy jól működjön az összeadás, ne szövegként hanem számként kezelje a bekért adatokat szükség lesz még a cdbl függvényre is.

Option Explicit
Dim aoldal, boldal,terulet, kerulet
aoldal=InputBox("A téglalap -A- oldala:")
boldal=InputBox("A téglalap -B- oldala:")
terulet=aoldal*boldal
kerulet=(cdbl(aoldal)+cdbl(boldal))*2
MsgBox("Területe:" &terulet)
MsgBox("Kerülete:" &kerulet)

Üzemanyag költség kalkulátor

A program kérje be az útvonal hosszát. Az üzemanyag költsége fix 365Ft, ezt az ar változó rátolja. Az autónk átlag fogyasztása is fix 6 liter/100km, ezt a fogyasztas változó tárolja. Ezen adatok alapján kiszámoljuk, mennyi lesz az utazás költsége, melyet a koltseg változó fog tárolni.

Dim tav, fogyasztas, ar, koltseg
fogyasztas=6
ar=365
tav=InputBox("Távolság?")
koltseg=tav/100*ar*fogyasztas
MsgBox(koltseg)

Feltételek

Az If utasítással tudunk feltételt megadni, és vizsgálni. Nézzünk egy egyszerű példát: vizsgáljuk meg, nagyobb-e x, mint 5. Ha igen, akkor írja ki a program, hogy X nagyobb, mint 5: (ha megnézzük a fordítottját, akkor nem történik semmi, nincs mit kiírnia)

c=10
If c>5 Then MsgBox "X nagyobb, mint 5"

Az Else utasítás:

Bővítsük ki az előző példát, kérjünk be egy számot, és írassunk ki üzenetet akkor is, ha c kisebb mint 5.

c=InputBox("Kérek egy számot 1 és 10 között: ")
If c>5 Then valasz="Nagyobb, mint 5" Else valasz="Kisebb, mint 5" 
MsgBox valasz

Mi a helyzet akkor, ha c=5? A megoldás az Elseif

c=InputBox("Kérek egy számot 1 és 10 között: ")
if c=5 then 
v="Egyenlő öttel" 
elseif c>5 then
v="Nagyobb, mint 5"
elseif c<5 then
v="Kisebb, mint 5" 
End if
MsgBox v

Ha több feltétel is van… AND, OR

Például, osztható-e egy adott szám hattal? Azok a számok oszthatóak hattal, amelyek 2-vel és 3-mal is oszthatóak. A feltételek közé a jobb átláthatóság miatt érdemes zárójeleket tenni, de azok nélkül is működik.

Option Explicit
Dim szam
szam=InputBox("Vizsgalt szam: ")
    if ((szam Mod 2 = 0) and (szam Mod 3 = 0)) then
        MsgBox("Ez a szam oszthato hattal! " &szam)
    else MsgBox("Nem oszthato hattal!") end if

Milyen számjegyekből állhat egy bináris szám? Ha a válasz 0 vagy 1, akkor helyes, ha nem akkor rossz:

Option Explicit
Dim szam
szam=InputBox("Milyen számjegyekből állhat egy bináris szám? ")
    if szam = 0 or szam = 1 then
        MsgBox("Helyes valasz! ")
    else MsgBox("Hibas! Csak 0 vagy 1 lehet!") end if

Egy kicsit összetettebb példa. Dollár-forint átváltás. Kérjünk be a felhasználótól f betűt, ha forintora akarunk átváltani, d betűt, ha dollárra. Ha mást ír be, akkor  a program adjon egy hibaüzenetet. Ha a helyes betűket kapja, számolja át a pénznemeket. Az egyszerűség kedvéért fix árfolyammal dolgozunk.

dim arfolyam, penznem, mennyit, usd, huf
arfolyam=281
penznem=InputBox("Mire váltsak át? F USD>HUF D HUF>USD")
mennyit=InputBox("Mennyit váltsak át? ")
    if penznem="f" then
      usd=arfolyam*mennyit
      MsgBox mennyit &" dollár= "& usd&" Ft"
    elseif penznem="d" then
      huf=mennyit/arfolyam
      MsgBox mennyit &" forint= "& huf&" $"
    End if

Hibakezeléssel: (csak f vagy d betű esetén kezd átváltani)

dim arfolyam, penznem, mennyit, usd, huf
arfolyam=281
penznem=InputBox("Mire váltsak át? F USD>HUF D HUF>USD")
    if penznem<>"f" and penznem<>"d" then
    MsgBox "Csak d vagy f betűvel működik"
  elseif penznem="f" then
     mennyit=InputBox("Mennyit váltsak át? ")
     usd=arfolyam*mennyit
     MsgBox mennyit &" dollár= "& usd&" Ft"
  elseif penznem="d" then
     mennyit=InputBox("Mennyit váltsak át? ")
     huf=mennyit/arfolyam
     MsgBox mennyit &" forint= "& huf&" $"
End if

Ciklusok

For ciklus

Addig ismétlődik a ciklusmag, amíg a megadott számot el nem éri. Nézzünk egy példát: Írassuk ki 10x a bekért változót. (közben számolja, éppen hol tart)

Dim nev
Dim i
nev=InputBox("Név:")
For i=1 To 10
MsgBox(nev&" ismétlés száma: "&i)
Next

Nézzük meg mennyi az első 5 szám összege:
Az s változó fogja tárolni a számok összegét. Nézzük mennyi az i és az s értéke futás során:
i=1 s=1      mert ekkor még s=0 tehát s=0+1 ami 1 lesz
i=2 s=3      mert ekkor s=1 tehát s=1+2 ami 3 lesz
i=3 s=6      mert ekkor s=3 tehát s=3+3 ami 6 lesz
i=4 s=10    mert ekkor s=6 tehát s=6+4 ami 10 lesz
i=5 s= 15    mert ekkor s=10 tehát s=10+5 ami 15 lesz

Dim i,s s=0 For i=1 To 5 s=s+i Next MsgBox(„Az összeg: ” & s)

While ciklus

Addig ismétel, amíg nem teljesül a feltétel. Nézzünk egy egyszerű barkoba játékot.

A program 1 és 10 között generál egy véletlen számot, ez lesz az x változó. x=Round(Rnd()*10+0.5)
*10 hogy 1-10 között legyen a szám, +0,5, hogy biztos ne legyen 0. A Randomize függvény arra szolgál, hogy minden játékhoz új számot generáljon a program.
A felhasználótól bekérünk egy tippet, ez lesz a tipp változó. A Cdbl függvény biztosítja, hogy a bekért tipp szám (double) típusú változó legyen.
A program mindaddig fut, amíg a tipp nem lesz egyenlő a ‘gondolt’ számmal. Mivel felhasználóbarát, ezért kiírja, hogy a gondolt szám kisebb, vagy nagyobb a tippnél.

Dim tipp, x
Randomize
x=Round(Rnd()*10+0.5)
   While x<>tipp
    tipp=InputBox("Tipped?")
    tipp=Cdbl(tipp)
    If tipp>x Then
       MsgBox("A keresett szám kisebb...")
    ElseIf tipp<x Then
       MsgBox("A keresett szám nagyobb...")
    End if
  Wend
MsgBox("Gratulálok!")