22. října 2004
.:Přidat k oblíbeným
.:Napsat e-mail





Lekce
:01: základy :02: řetězce

Co je to VbScript a k čemu je vůbec dobrý?

VbScript je ve skutečnosti zkratka pro Microsoft Visual Basic Scripting Edition. Jde tedy o skriptovací jazyk, přímo stvořený pro oživení internetových stránek. Ani pro programování ve VbScriptu nepotřebujete žádný software, který by pravděpodobně již teď nebyl součástí vašeho skromného vybavení. Docela obstojně vystačíte s Notepadem (nebo jiným podobným textovým editorem) a nějakou verzí Microsoft Internet Exploreru (verze 4.0 a vyšší). Pokud dokonce vlastníte nějaký "lepší" program pro tvorbu HTML souborů - pak se dá říci, že jste dokonce za vodou.

Výhody a nevýhody použití VbScriptu

Uznávám, že odstavec s takovýmhle názvem se vám asi moc nebude chtít číst, ale myslím si, že by jste těch pár vteřin tomuhle věnovat mohli nebo pak zjistíte, že u vás níže uvedené příklady nefungují a vůbec nebudete vědět proč! VbScript má totiž jednu "menší" nevýhodu. Je totiž (tedy doposavad) podporován pouze Microsoft Internet Explorerem! Situace je sice dnes taková, že Explorera používá stále víc uživatelů, ale pokud by na vaše stránky zabrousil nějaký zatvrzelý fanda Netscapu nebo dokonce jiného prohlížeče tak se asi moc nepokochá :-)

V těchto prohlížečích se totiž neděje vůbec nic, žádné varovné hlášení uživatele varovat nebude a pravděpodobně se na vaše "nefungující" stránky už nepodívá. VbScript má ale také své výhody. Pokud se chcete naučit programovat, je VbScript skvělým odrazovým můstkem k dalším programovacím jazykům (zejména ke klasickému Visual Basicu a Visual Basicu for Aplications), nebo naopak, pokud již Visual Basic ovládáte, pak by pro vás měl VbScript být úplná hračka. Oproti JavaScriptu má navíc (alespoň pro začátečníka) o poznání lehčí syntaxi a navíc jeho klíčová slova více odpovídají běžné angličtině - to je pro nás fakt užitečný :-))

VbScript a DHTML

Syntaxe pro vytvoření jednoduché hlášky je téměř stejná jako u JavaScriptu. Klepnutím na TENTO text hlášku zobrazíte. A nějak takto to vypadá ve zdrojovém kódu:

<html> 
<head>
   <title>VbScript</title>

<script language="VbScript">   
<!--   
sub hlaska1()
    alert("Klikl jsi na text!") 
end sub    
//-->  
</script>
</head>

<body bgcolor="#ffffcc">
 Klepnutím na 
 <span onClick="hlaska1()">
    TENTO
 </span>
 text hlášku zobrazíte.
</body> 
</html> 

Všimněte si, že jsou zde patrné pouze 2 rozdíly oproti našemu prvnímu příkladu s DHTML a to sice: Použití Sub (procedura) a End Sub místo Function (funkce) a složených závorek v zápisu skriptu a potom, že parametr language tagu <script> není nastaven na hodnotu "JavaScript" nýbrž "Vbscript". Jak se ve VbScriptu zapisují procedury si řekneme o něco níže. VbScript má ale také svoji, lepší formu hlášky a to sice funkci MsgBox. Díky ní můžete komunikaci s uživatelem více zpestřit. Můžete například rozlišit různé charaktery hlášek a obměnit i jejich horní lištu. Kliknutím na TENTO text hlášku zobrazíte.
Potom vypadá zdrojový kód nějak takhle:

<html>
<head>
<title>VbScript</title>
<script language="VbScript">
<!--
sub hlaska2()
MsgBox "Klikl jste na text! Obávám se, že byla zobrazena hláška",vbAbortRetryIgnore+vbExclamation, "Varovná hláška"
end sub
//-->
</script>
</head>
<body bgcolor="#ffffcc">
Kliknutím na <span onClick="hlaska2()">TENTO</span> text hlášku zobrazíte.
</body>
</html>

Toto již nepatří pod kapitolu o DHTML, ale spíše do následujících kapitolek, se základy VbScriptu, kde také naleznete syntaxi k použití funkce MsgBox.

Ve VbScriptu je ovšem možno používat všechny vlastnosti, události a metody objektového modelu Exploreru. Protože jejich syntaxe je naprosto stejná (viz. použití metody alert) a je zmiňována v kapitolách o DHTML nebudu je zde opět zmiňovat.

Programování ve VbScriptu

Procedury

Procedura, neboli podprogram je základním stavebním kamenem v celém programování ve VbScriptu. Umožňuje vám reagovat na různé události a můžete je spouštět podle potřeby. Zápis procedury je zhruba takovýto:

<script language="VbScript">
<!--
sub libovolny_nazev_procedury(proměnná/é nebo nic)
tělo procedury se všemi příkazy, podmínkami, cykly atd.
end sub
//-->
</script>

Na takovouto proceduru se můžete kdykoli odvolat (jako příkaz použijete pouze název procedury - nezapomeňte na závorky i když v nich nic není), nebo v rámci DHTML zapsat její název pod nějakou událost u nějakého obrázku, odkazu nebo něčeho podobného.

Kdekoli v těle skriptu také můžete použít tzv. Komentáře. Jde o poznámky zapsané přímo ve zdrojovém kódu, které ovšem nijak neovlivňují běh skriptu. Pokud chcete zapsat komentář napište apostrof ' nebo použijte příkaz Rem. Před tímto příkazem (narozdíl od apostrofu, kde tomu tak není) je však vyžadována dvojtečka pokud se před ním na řádku, kde je uveden, nachází nějaké příkazy.

Správně zapsané komentáře vypadají takto:

'tato procedura vyvolá hlášku
Rem tato procedura vyvolá hlášku
MsgBox "OK" 'Zde je ta hláška
MsgBox "OK" :Rem Zde je ta hláška

Proměnné

Proměnné ve VbScriptu, ostatně jako v jiných programovacích jazycích, slouží k ukládání určitých hodnot. Jméno proměnné musí začínat písmenem a nesmí přesáhnou délku 255 znaků. Deklaraci proměnné provedeme použitím klíčového slova Dim. Pokud proměnné oddělíte čárkami, můžete pomocí jednoho příkazu Dim deklarovat i více proměnných najednou.

 Dim autobus
 Dim jmeno1, jmeno2

Pokud chcete, aby vás prohlížeč upozornil, že používáte nedeklarovanou proměnou, umístěte hned na začátek skriptu příkaz Option Explicit. Potom bude každá nedeklarovaná proměnná, kterou použijete nahlášena jako chyba.

Důležité je taky naplnění proměnné určitou hodnotou. Hodnotou zde může být např. libovolné číslo, řetězec znaků (potom musíte tento řetězec umístit do uvozovek - viz. příklad), nebo logická pravda a nepravda (true a false).

 plat = 15000
 name = "Petr Novák"
 zaplaceno = false

Kromě proměnných se můžete setkat i s tzv. konstantami. Konstanty se používají, pokud budete nějakou hodnotu v programu vícekrát používat. !! Jakmile je konstanta definovaná NENÍ možné její hodnotu v programu změnit. !! Deklarace konstanty se provádí klíčovým slovem const.

 const cena = 1250

Ještě se zde krátce zmíním o polích. Pole zde neznamená hospodářskou půdu, nýbrž jde o několik logických částí, které tvoří celek. Například můžete lépe pracovat výdělky z jednotlivých měsíců, protože místo těžkopádného názvu pro každý měsíc budete mít ten samý název, pouze s jiným číslem. Pokud chceme tedy vytvořit takovéto pole, aby mělo 12 částí použijeme tento zápis:

 Dim mesic(11)

To je teda dobrý co? Každej přece ví, že rok má 12 měsíců a tam se píše 11?! No, ono jde o to, že leden nenajdeme pod Mesic(1), jak by leckdo logicky očekával, ale pod Mesic(0)! Pod Mesic(1) bude hodnota pro únor, pod Mesic(2) hodnota pro březen a pod Mesic(11) bude hodnota pro prosinec. Pokud nevíte, k čemu je to dobré, když stále musíme pracovat se 12 různými údaji, tak to pochopíte, až se začneme zabývat cykly, protože ty nám umí práci s poli neuvěřitelně ulehčit. Samozřejmě, že VbScript nám nabízí i vícerozměrná pole, ale těmi se budeme zabývat až v nějaké z dalších lekcí.

Podmínky

Podmínky všeobecně slouží k tomu, aby program sám rozhodl (on si ostatně často stejně udělá co chce), zda provést, či neprovést určitou skupinu příkazů. Syntaxe je následující:

 If podmínka then příkazy

...kde podmínka je porovnávání nějakého výrazu nebo proměnné a příkazy označuje blok příkazů které se mají provést, pokud bude podmínka pravdivá.

Pro porovnávání se používají tyto porovnávací (relační) operátory:

SymbolVýznam
=rovnost
<> nerovnost
<menší
>větší
<=menší nebo rovno
>=větší nebo rovno

Pokud v případě nesplnění podmínky chcete provést příkazy jiné, můžete použít konstrukci If - Then - Else. V tomto případě je ale potřeba celý blok zakončit pomocí End If.

If hotovost >= 100 Then
  MsgBox "Můžete si koupit knihu."
Else
  MsgBox "Je mi líto, ale nemáte dost peněz."
End If

V tomto případě bude zobrazena hláška (ale jen jedna), která vás v závislosti na hodnotě proměnné hotovost bude informovat o vašich možnostech. Pokud chcete do podmínky shrnout více podmínek, budou se vám hodit tyto logické operátory:

Klíčové slovoPříkladKdy má hodnotu true
andA = True And B = TruePokud A i B mají hodnotu True
or A = True Or B = TruePokud jeden z obou výrazů (A i B) má hodnotu true
not Not (hotovost >= 120)Pokud hotovost je menší něž 120
eqvA Eqv BPokud A i B mají stejnou hodnotu a to jak True tak i False
xorA = True Xor B = TruePokud A nebo B mají hodnotu True NE VŠAK OBA!

Příklad:

<script language="VbScript">
<!--
Dim cena_knihy, moje_penize, chci_si_koupit_knihu
cena_knihy = 150
moje_penize = 160
chci_si_koupit_knihu = true

If (moje_penize >= cena_knihy) And chci_si_koupit_knihu = True Then
'Mám na knihu dost peněz a zároveň bych ji chtěl
MsgBox "Nic vám nebrání knihu si koupit."

Else
'Buď na knihu nemáte dost peněz nebo si ji nechcete koupit (chci_si_koupit_knihu = false)

MsgBox "Tu knihu si nekoupíte!"

End If
//-->
</script>

V tomto konkrétním příkladě samozřejmě bude samozřejmě vždy výsledkem ta první hláška, ale kdyby ty proměnné nebyly již dané, ale naplnily by se až při běhu programu podle uživatelem zadaných skutečností, pak by mohlo dojít i na hlášku druhou. (zejména protože by na knihu neměl peníze, kdo by si nechtěl něco koupit?)

Dialogová okna

Dialogová okna nám umožňují velmi spolehlivou komunikaci s uživatelem, protože by musel být slepý, aby je přehlédl. Jde zejména o již výše zmíněnou funkci Msgbox. Její syntaxe je následující:

MsgBox "text hlášky", konstanty ovlivňující vzhled hlášky navzájem spojené pomocí +, "doplněk horní lišty"

Zde jsou ony konstanty:

KonstantaHodnotaZobrazená tlačítka
vbOkOnly0OK
vbOkCancel1OK Storno
vbAbortRetryIgnore2Přerušit Znovu Ignorovat
vbYesNoCancel3Ano Ne Storno
vbYesNo4Ano Ne
vbRetryCancel5Znovu Storno

KonstantaHodnotaZobrazená ikona
vbCritical16Kritické hlášení
vbQuestion32Dotaz
vbExclamation48Varování
vbInformation 64Informacet

Hodnota vrácená funkcí MsgBox podle stisklého tlačítka:
KonstantaHodnotaStisknuté tlačítko
vbOk1OK
vbCancel2 Storno
vbAbort3Přerušit
vbRetry4Znovu
vbIgnore5Ignorovat
vbYes6Ano
vbNo7Ne
vbRetryCancel5Znovu Storno


Jak se dá funkce MsgBox použít spolu s podmínkou ukazuje následující příklad:

Dim dotaz
dotaz = MsgBox ("Chcete knihu?", vbYesNo+vbQuestion, "Dotaz")
'Já vím, že s tou knihou už jsem otravnej

If dotaz = vbYes Then
 MsgBox "Vy chcete knihu."
Else
 MsgBox "Vy nechcete knihu."
End If

Druhým velmi užitečným oknem, je tzv. Vstupní okno. Má následující syntaxi:

proměnná = InputBox ("text hlášky", "text v liště", "Výchozí nastavení")

Nyní si můžeme ukázat malý příklad využití:

Klepni na mě pro zadání jména!

<html>
<head>
 <title>VbScript</title>

<script language="VbScript">
<!--
sub hlaska3()
Dim jmeno
jmeno = InputBox("Zadejte své jméno", "Toto je výzva k zadání jména", "Uživatel")
If jmeno = "" Then 'Jméno nebylo zadáno - výsledkem je prázdný řetězec
 MsgBox "Jméno nebylo zadáno!", vbCritical
else
 MsgBox "Vaše jméno je " + jmeno, vbInformation
end if
end sub
//-->
</script>
</head>

<body bgcolor="#ffffcc">
  <div OnClick="Hlaska3()">Klepni na mě pro zadání jména!</div>
</body>
</html>

Tak, to by byla dialogová okna a můžeme se konečně vrhnout na ty cykly.

Cykly

Cykly jsou stvořeny pro opakování nějaké operace, dokud se nedosáhne předem stanoveného cíle, nebo nedošlo k určenému počtu opakování.

Cyklus For - To - Next je cyklem s pevným počtem opakování. Dá se použít pokud něco chcete provést přesně několikrát a nechcete se s tím vypisovat nebo třeba pro naplňování nějakých proměnných nebo polí. Pro příklad bych se vrátil k měsícům, které jsem zmínil v kapitole o polích. Normálně by šly proměnné leden - prosinec naplnit údaji asi takto:

Dim leden, unor, brezen, duben, kveten, cerven, cervenec, srpen, zari, rijen, listopad, prosinec
leden = InputBox("Zadejte prodej za leden.")
unor = InputBox(Zadejte prodej za unor."
...
...
...
...
...
...
...
...
...
prosinec = InputBox("Zadejte prodej za prosinec.")

Samozřejmě, že takhle to jde, ale uznejte, že je to poněkud mírně zdlouhavé (-:
Pokud však použijeme pole a cyklus bude to vypadat asi takhle:

Klikni pro vyzkoušení

sub Prodeje()
dim I
dim Mesic(11)
dim cislomesice
For I=0 To 11 '12 opakování
cislomesice = I +1 'Skutečné pořadové číslo měsíce v roce
Mesic(I) = InputBox("Zadejte prodej za " & cislomesice & ". měsíc")
next
end sub

Tak to by byl příklad užití cyklu a pole.

Cyklus Do - Until (nebo Do - While) je cyklus s neurčeným počtem opakování. Hodí se, pokud chcete, aby byla splněna nějaká podmínka. Cyklus se provádí do té doby, dokud podmínka není splněna, takže se občas může stát, že podmínka prostě nemůže být splněna a nekonečná smyčka je na světě. Jelikož omylem stvořit takovouhle věc není vůbec těžké a nejspíš po jejím spuštění se budete muset uchýlit ke stisku kláves Ctrl+Alt+Delete (nebo také můžete hrdinně čekat, jestli přece jen někdy nebude podmínka splněna) tak vám doporučuji vaše rozpracované stránky před každým testem uložit.

Syntaxe:

Do
  příkazy, které se mají provést  
Loop Until podmínka 
 
Do
  příkazy, které se mají provést
Loop While podmínka

dim jmeno
Do
 jmeno=InputBox("Zadejte své jméno")
Loop Until jmeno <> ""
' Dokud jmeno nebude něco jiného než prázdný řetězec, bude se okno neustále vracet

dim jmeno
Do
 jmeno=InputBox("Zadejte své jméno")
Loop While jmeno = ""
' Dokaď jmeno bude prázdný řetězec, bude se okno neustále vracet

Tak a to by bylo snad všechno k cyklům.

A zároveň je to prozatím všechno k VbScriptu. Zatím s tím snad vystačíte a my se vynasnažíme co nejrychleji tuto kapitolu ještě doplnit.

Azrael
De speelautomaat kenner – GamblingCity.net – heeft de beste casino on line opties voor je op een rij gezet zodat je precies kunt zien wie de leukste speelautomaten in de aanbieding heeft.


Další lekce >>
_
^
Back to top

Valid XHTML 1.0!   Valid CSS!
TOPlist