VB - 4. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

VB - 4. lekceVB - 4. lekce

 

VB - 4. lekce

Google       Google       15. 4. 2005       28 495×

4.1 Podmínka If Else
4.2 Užitečné
4.3 Timer
4.4 MessageBox
4.5 Kalkulačka
4.6 Domácí úkol
4.7 V příští lekci

4.1 Podmínka If Else

Podmínky jsou prakticky tím, co nám umožňuje programovat. Bez podmínek by nebylo prakticky možné vytvořit smysluplnou aplikaci. Nyní si povíme o základním druhu podmínek, to je podmínka If Else. Může mít několik způsobů zapsání, a to podle použití.


If a = b Then       'podmínka, která musí být splněna, aby se vykonal příkaz
  Text1.Text = a   'příkaz podmínky
End If                  'ukončení podmínky

Tento zápis znamená: když „a“ se rovná „b“, pak  Text1.Text = a. Pokud podmínka splněná není, potom se pokračuje bez provedení příkazu. Ukončení podmínky čili End If  musí být zapsáno vždy, kromě podmínky psané na jeden řádek, ta vypadá takto:


If a = b Then Text1.Text = a

Podmínky tohoto typu na plnohodnotné programování nestačí, proto je tato podmínka rozšířená o ElseIf a Else. Tady máme drobnou ukázku použití.


Private Sub Form_Click()
  If a = b Then
    Text1.Text = a
  ElseIf a = b + 3 Then
    Text1.Text = a + 7
  ElseIf a = b - 1 Then
    Text1.Text = b
  Else
    Text1.Text = "chyba"
  End If
End Sub

Když se „a“ rovná „b“, tak se v textovém poli „Text1.Text“ objeví hodnota proměnné „a“. Když ne, tak se pokračuje druhou podmínkou, a pokud je splněno, že „a“ se rovná „b“ plus 3, pak se v textovém poli „Text1.Text“ objeví hodnota proměnné „a“ plus 7. Pokud se nesplní ani tato podmínka, pokračuje se další, a pokud se nesplní ani ta, tak se vykoná „else“, to znamená, že pokud není splněna žádná podmínka, tak se splní tato. Pokud není „else“ obsažena, prostě se pokračuje dále v kódu. Pokud se splní jakákoliv podmínka, na další už se nehledí a přeskočí se za „End If“, tedy konec podmínky if. To by tedy bylo k teorii a teď se podíváme na operátory. Nemusíte používat jen rovná se, je tu třeba i :


= rovno
< menší
> větší
>= větší nebo rovno
<= menší nebo rovno
<> nerovná se

To by tedy byly základní operátory. Pomocí nich už se dá udělat ledacos.

Ukážeme si drobný příklad využití:/p>


Dim Vek As Byte
Dim Reakce As String

Private Sub Command1_Click()
  Vek = Text1.Text
  If Vek > 100 Then
    Reakce = "už tu nemáš co dělat"
  ElseIf Vek > 50 Then
    Reakce = "užívej života, moc času ti nezbývá"
  ElseIf Vek > 20 Then
    Reakce = "jsi v nejlepších letech"
  ElseIf Vek > 15 Then
    Reakce = "jen by mě zajímalo, kolikrát už jsi ztratil občanku"
  ElseIf Vek > 6 Then
    Reakce = "to už možná chodíš do školy"
  ElseIf Vek <= 6 Then
    Reakce = "takovej prcek"
  Else
    Reakce = "asi jsi udělal něco blbě"
  End If
  Label1.Caption = Reakce
End Sub

Třeba tahle drobná ukázka okomentuje váš věk a krásně vypovídá o tom, jak se dají využít proměnné, podmínky i operátory. Nyní vám ukážu tentýž kód bez proměnných, není to žádný problém, ale uvidíte, jak vám proměnné dokážou zjednodušovatt práci.


Private Sub Command1_Click()
  If Text1.Text > 100 Then 
    Label1.Caption = "už tu nemáš co dělat"
  ElseIf Text1.Text > 50 Then 
    Label1.Caption = "užívej života moc času ti nezbývá"
  ElseIf Text1.Text > 20 Then
    Label1.Caption = "jsi v nejlepších letech"
  ElseIf Text1.Text > 15 Then
    Label1.Caption = "zajímalo by mě, kolikrát už jsi ztratil občanku"
  ElseIf Text1.Text > 6 Then
    Label1.Caption = "to už možná chodíš do školy"
  ElseIf Text1.Text <= 6 Then
    Label1.Caption = "takovej prcek"
  Else
    Label1.Caption = "asi jsi udělal něco blbě"
  End If
End Sub

Následující text je možná na výšku kratší, ale počet znaků je vyšší a hlavně je s ním mnohem horší manipulace, a pokud chcete uložit nějaké číslo někam, kde by třeba nemuselo být vidět, tak je na to proměnná optimální. Samozřejmě se na to „dá“ použít nějaký objekt, třeba TextBox a jeho viditelnost, tedy vlastnost Visible nastavíte na False. Ale ta představa, že pracujete se stovkou proměnných vás od tohoto řešení určitě odradí.

4.2 Užitečné

Zde jsou některé jednoduché příkazy, které jsou vcelku užitečné:

Beep - Pípnutí kdekoliv, když potřebujete pípnout.
Cls - Vymaže z formuláře prvky vypsané metodou Print nebo vykreslené metodou Line, kterou se budeme zabývat v některé z následujících kapitol.
End - Tímto jednoduchým příkazem napsaným v kódu můžete spuštěný program vypnout.
Exit Sub - Pokud program narazí na tento příklad, tak proceduru přeruší a vrací se tam, odkud byla procedura volána.

4.3 Timer

Timer  je objekt velmi důležitý, a to především schopností vykonávat určité příkazy v časových intervalech. Má jen několik málo vlastností, které vám přes jejich nízký počet nepopíšu všechny. První vlastností je jméno name, druhá je potom Enabled, pokud je na False, tak Timer nepočítá, pokud je na True tak ano. Dále nás bude zajímat vlastnost Interval, již z jejího názvu vyplývá, že se jedná o čas mezi vykonáním kódu obsaženého v proceduře Timer1.timer. Ten se udává v milisekundách, jedna sekunda se rovná 1000 milisekund. Teoreticky to znamená, že tento prvek je schopen vykonat kód 1000 za sekundu. V praxi je to ovšem nemožné, protože pokud si představíte třeba stránku kódu, obsaženého v Timeru, jeho zpracování může trvat třeba i několik vteřin. Interval tedy udává dobu od toho, co se zpracoval kód, až po dobu, kdy se začne zase opakovat. Teď si tedy ukážeme, jak bude vypadat prográmek, který nás bude informovat o délce své činnosti. Vložíme si jeden TextBox a jeden Timer na formulář a poklikneme na formulář a vepíšeme následující kód:


Private Sub Form_Load()
  Timer1.Interval = 1000
  Text1.Text = 1
End Sub

Private Sub Timer1_Timer()
  Text1.Text = Text1.Text + 1
End Sub

Po spuštění programu se zavedou hodnoty do vlastností objektů a každou vteřinu se vám zvýší text v TextBoxu o jednu. To je poměrně jednoduché. Teď něco jiného. Prohlédněte si následující kód, zapněte si reproduktory, zkuste si ho pustit.


Private Sub Form_Click()
  Timer1.Interval = 1000
  Beep
End Sub

Private Sub Timer1_Timer()
  If Timer1.Interval > 51 Then _
    Timer1.Interval = Timer1.Interval - 50
  Beep
End Sub

S tímto prvkem se dají dělat mnohé zajímavé věci, omezené jen vaší tvořivostí nebo tím, co ještě neznáte. Vše je potřeba procvičovat a zkoušet. Nyní se pusťme do další zajímavé a vcelku použitelné věci, a tou je MsgBox

4.4 MessageBox

MessageBox, zkráceně MsgBox, je formulář, který nás většinou o něčem informuje. Pokud jste více či méně spokojenými zákazníky Microsoftu, určitě znáte hlášky o chybách (např. výjimka na adrese #0006456FF511 počítač se asi ztratí), nebo ony otázky, zda si jste jisti, že chcete smazat soubor či složku. To vše je MsgBox. MsgBox má několik módů zobrazení, ten základní je jen s tlačítkem OK, v dalších jsou v nabídce tlačítka Ano a Ne, Storno a další. Volání MsgBoxu není nijak složité. Stačí napsat:


MsgBox "Katastrofální chyby - asi se něco stane",  _
    vbOKOnly, "Chyba jak Brno"

Text v prvních uvozovkách je text zobrazený na MsgBoxu. Text mimo uvozovky, zde   vbOKOnly   označuje mód zobrazení MsgBoxu. Poslední text s uvozovkami udává Titulek okna. Zde jsou některé z možností módů.


MsgBox "Zpráva uživateli", Konstanta + Konstanta, "Titulek"
MsgBox "ahoj", vbCritical + vbYesNo, "nic" 

První je konstanta zobrazeného obrázku a druhá tlačítek.


Tlačítka Konstanty
Jen tlačítko OK (Výchozí) vbOKOnly
OK a Storno vbOKCancel
Ano, Ne, Storno vbYesNoCancel
Přerušit, znovu, ignorovat vbAbortRetryIgnore
Ano, Ne vbYesNo
Znovu, Storno vbRetryCancel
Zobrazí ikonu křížku vbCritical
Zobrazí ikonu otazníku vbQuestion
Zobrazí ikonu vykřičníku vbExclamation
Zobrazí ikonu informace vbInformation

S takovou by nám ale MsgBox byl celkem nanic, protože tímto způsobem zápisu z něj nemůžeme získávat informace o stisknutém tlačítku. Je tedy hezké, že uživateli nabídneme zda ano či ne, ale k čemu nám to bude, když nebudeme vědět, co udělal. Proto je potřeba tyto informace odněkud získat. To se provádí následujícím kódem. Je ale potřeba zavést si proměnnou.


Dim a As Byte
Private Sub Form_Click()
  a = MsgBox("Katastrofální chyby - asi se něco stane", _ 
vbOKOnly, "Chyba jak Brno")
End Sub<

Každé tlačítko má svou hodnotu, tyto hodnoty jsou zapsány v následující tabulce.


OK 1
Storno 2
Přerušit 3
Opakovat 4
Pokračovat 5
Ano 6
Ne 7

Jelikož už znáte kód odpovědi, tak váš program může různě reagovat na reakce uživatele, např. takto


Private Sub Form_Click()
  a = MsgBox("Chcete program  vypnout hned", vbYesNo,  "Vypínání...")
If a = 6 Then End
End Sub

MsgBox využívá velké množství programů, tak proč ho nevyužít také? Například při ukládání anebo při různých úpravách nastavení programu.

4.5 Kalkulačka

Na tohle se ale určitě těšíte nejvíc, tj. na to, že uděláte program, který by byl alespoň k něčemu. Tak tedy k té napodobenině kalkulačky. Připravte si formulář, na který umístíte dva TextBoxy, jeden Label a pět tlačítek. Může vypadat třeba takto:

Tento prográmek bude fungovat tak, že do každého TextBoxu napíšeme číslo a stisknutím tlačítka se provede vyznačená matematická operace, třeba při stisknutí „/“ se první číslo vydělí druhým a výsledek se zobrazí v Labelu. Po stisknutí tlačítka OFF se nám zobrazí MsgBox a ten se nás zeptá, jestli chceme program ukončit. Kód:




Private Sub Command1_Click()
  Label1.Caption = Val(Text1.Text) + Val(Text2.Text)
End Sub

Private Sub Command2_Click()
  Label1.Caption = Val(Text1.Text) - Val(Text2.Text)
End Sub

Private Sub Command3_Click()
  Label1.Caption = Val(Text1.Text) * Val(Text2.Text)
End Sub

Private Sub Command4_Click()
  Label1.Caption = Val(Text1.Text) / Val(Text2.Text)
End Sub

Private Sub Command6_Click()
  off = MsgBox("Chcete program  ukončit", _ 
  vbYesNo, "Vypínání...")
  If off = 6 Then End
  End Sub

Ještě vám vysvětlím použití „Val()“. Tento příkaz z jakékoliv proměnné určitým způsobem vybere hodnotu číselné proměnné. Při početních úkonech je velmi vhodné jeho použití. Zkuste si tento prográmek trochu upravit podle sebe. Ať si vyzkoušíte, co umíte.

4.6 Domácí úkol

Znáte Timer, znáte podmínky, znáte MsgBox, tak toho všeho využiji a za úkol vám dám vytvořit program, který po spuštění ohlásí pomocí MsgBoxu, že se za 30 vteřin vypne nebo jestli jej chcete vypnout sami, a pokud ne, tak se po třiceti vteřinách ohlásí opět MsgBoxem, že čas vypršel a po odklepnutí dialogu se zavře. Ale to není vše, posledních pět vteřin tento program každou vteřinu pípne.

4.7 V příští lekci

se podíváme na další typy podmínek, na cykly, k MsgBoxu si přidáme jeho kolegu InputBox a podíváme se na práci s proměnnými, a to převážně s textovými a vůbec na práci s textem.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý