Podmínky a operátory

4. díl - Podmínky a operátory

Tomáš Herceg       26.04.2007       VB.NET       27913 zobrazení

V minulém díle jsme si vysvětlili, co je to proměnná a jak se s ní pracuje. Ukázali jsme si také několik základních datových typů. Dnes si řekneme, jak měnit chování programu v závislosti na hodnotě nějaké proměnné, naučíme se totiž používat podmínky.

Doufám, že si pamatujete datové typy, které jsme se naučili v minulém díle. Pokud ne, tak se můžete vrátit k minulému dílu a připomenout si je, dnes se nám budou hodit.

InputBox

Ještě před tím, než přistoupíme k podmínkám, se naučíme úplně jednoduchou funkci, a to InputBox. Slouží k jednoduchému zjištění vstupu od uživatele. Tato funkce zobrazí okno s textem, pod kterým bude textové pole, do kterého uživatel může napsat nějaký text.

 Okno funkce InputBox

 Dim vstup1, vstup2 As String 
 vstup1 = InputBox("Zadejte číslo:") 
 vstup2 = InputBox("Zadejte číslo:", "Můj program")

Na tomto příkladu jsou vidět dvě možná použití funkce InputBox. Do každé proměnné přiřazujeme výsledek této funkce, tedy do této proměnné se uloží to, co uživatel napsal. Hodnotám, které píšeme do závorky za název funkce, říkáme argumenty nebo též parametry funkce. Ty upravují chování funkce. Některé funkce žádný parametr nepotřebují, některé jich potřebují více. To musíme u každé funkce vědět, ale nebojte se, nemusíte si pamatovat argumenty pro tisíce funkcí, které .NET Framework obsahuje. Programovací prostředí Visual Studio (Visual Basic 2010 Express je pouze jeho součást) vám při použití funkce zobrazí, které parametry funkce potřebuje, kolik jich je, a zobrazí vám k nim i stručnou nápovědu (anglicky).

Nápověda při zadávání 

V okamžiku, kdy píšeme InputBox, filtruje se nám seznam funkcí, které obsahují slovo Input. Pokud jsme spokojeni, napíšeme znak, který bychom psali za slovem funkce, například mezeru nebo kulatou závorku. V okamžiku, kdy to uděláme, zobrazí se detaily volané funkce.

Detaily volané funkce

Důležitý je první řádek – vidíme, že funkce má parametr Prompt typu String (text v okně) a dále nepovinné parametry Title (titulek okna), DefaultResponse (co má být předvyplněno) a XPos a YPos, které určují pozici okna na obrazovce. Pokud jsou parametry v hranatých závorkách (což jsou všechny kromě prvního), znamená to, že jsou nepovinné.

Druhý řádek pak popisuje, co celá funkce InputBox dělá. Třetí pak obsahuje popis k parametreu, který právě zadáváme. Se znalostí technické angličtiny je používání těchto funkcí hračka, pomoci může článek Nejčastěji používaná anglická slovíčka v programování.

Zavoláme tedy funkci InputBox, přičemž argumenty si nachystáme do proměnných (nemuseli bychom).

 Dim otazka As String = "Zadejte číslo:" 
 Dim titulek As String = "Můj program" 
 Dim vstup3 As String 
 vstup3 = InputBox(otazka, titulek)

Podotýkám, že tato funkce vždy vrací hodnotu typu String. Pokud tedy potřebujeme, aby uživatel zadával číslo, musíme hodnotu převést.

 Dim cislo As Integer 
 cislo = CInt(InputBox("Zadejte číslo:"))

Na tomto příkladu vidíme vnořené funkce. Výsledek vnitřní funkce (InputBox) předáme vnější funkci (CInt) jako argument. Vnitřní funkci jsem podbarvil žlutě, abyste ji viděli. Počítá se k ní i její závorka a argument. Nejprve se vyhodnotí funkce InputBox (žlutě vyznačená oblast). Zobrazí se tedy okno, do kteérho uživatel něco napíše. Jakmile klikne na tlačítko OK, Visual Basic dostane hodnotu této funkce a místo žluté oblasti se "dosadí" tato výsledná hodnota. Až v této chvíli se zavolá funkce CInt, která výsledek funkce InputBox převede na číslo a až úplně nakonec se tato číselná hodnota uloží do proměnné cislo.

Pokud se vám zatím vnořené funkce nelíbí, můžete se jim vyhnout velmi jednoduše přes proměnnou:

 Dim vysledek As String = InputBox("Zadejte číslo:") 
 Dim cislo As Integer = CInt(vysledek)

Tento kód provede úplně to samé, akorát k němu potřebujeme ještě jednu proměnnou. Ale nebojte se, za chvíli si na vnořené funkce zvyknete. Důležité je si uvědomit, že nejprve se provede to, co je uvnitř. Takže je někdy lepší nejprve napsat vnitřní funkci, pak ji dát do závorky a před to napsat název vnější funkci. Časem se ale stejně naučíte "myslet dopředu" a budete ve většině případů kód psát rovnou.

Podmínky

Nyní můžeme přikročit ke slíbeným podmínkám. V jazyce Visual Basic máme dva typy podmínek. Zde vidíte schéma, jak se podmínky zapisují. Není to zdrojový kód, místo [podmínka] a [příkaz] se musí zapsat skutečné příkazy a podmínky! Podmínky slouží k tomu, abychom část programu neprováděli vždy, ale jen pokud platí nějaký vztah.

 If [podmínka] Then [příkaz] 
  
 If [podmínka] Then 
     [příkaz] 
     [příkaz] 
     [...] 
 End If

Příkazy, které jsou v ukázce, se provedou, pouze pokud zadaná podmínka platí.

Pokud potřebujeme za nějaké podmínky provést pouze jeden příkaz, stačí nám první typ (tzv. krátká podmínka), který se vejde na jeden řádek. Můžeme ovšem použít i druhý typ.

Pokud potřebujeme za nějaké podmínky provést více příkazů, použijeme druhý způsob (tzv. dlouhá podmínka). Nezapomeneme na konci podmíněný blok ukončit příkazem End If.

Někdy potřebujeme provést i nějaké příkazy, pokud podmínka neplatí. K tomu použijeme tato rozšíření schématu podmínky.

 If [podmínka] Then [příkaz] Else [příkaz] 
  
 If [podmínka] Then 
     [příkaz] 
     [příkaz] 
     [...] 
 Else 
     [příkaz] 
     [příkaz] 
     [...] 
 End If

To, co je před slovem Else se provede, pokud podmínka platí. Pokud neplatí, provede se to, co je za slovem Else.

Všimněte si, že příkazy uvnitř podmínky jsou odsazené. Visual Basic toto odsazení provádí sám. Možná vám přijde, že odsazovat nemá smysl, ale brzy poznáte, že neodsazovaný kód je velmi nepřehledný. Odsazování příkazů uvnitř podmínek naznačuje, že tyto příkazy se neprovádí pokaždé, že jsou v nějakém ohledu speciální, a že patří do nějakého bloku.

Tyto odsazené bloky mají ještě jeden význam – pokud v nich nadeklarujete proměnnou, bude platit jenom v tom bloku a ne vně. Jakmile blok se při vykonávání opustí, proměnná zanikne.

Zde vidíme úplně jednoduchý program, který již dělá něco užitečného. Zjistí, jestli uživatel zadal liché či sudé číslo. Využíváme toho, že pokud je číslo sudé, jehozbytek po vydělení dvěmi (operátor Mod) bude nula.

 Dim cislo As Integer 
 cislo = CInt(InputBox("Zadejte číslo:")) 
 If cislo Mod 2 = 0 Then 
     MsgBox("Číslo je sudé!") 
 Else 
     MsgBox("Číslo je liché!") 
 End If

Toto je tedy první praktický příklad, jak použít podmínku. Dá se jich samozřejmě vymyslet celá řada.

Podmínkou je v tomto případě výraz cislo Mod 2 = 0. Říkali jsme si, že značka rovná se se používá k přiřazení hodnoty do proměnné. V tomto případě ale tento operátor provede porovnání. Spočítá výrazy na obou stranách a porovná je.

To, jestli rovná se znamená přiřazení nebo porovnání, se pozná podle toho, kde je použito. Uvnitř podmínek je to porovnání, pokud stojí jako samostatný příkaz (např. a = 5), pak se provede přiřazení.

Relační operátory

Relace je vztah něčeho k něčemu. Relační operátory mezi sebou porovnávají dvě hodnoty. Visual Basic zná tyto:

Operátor Význam
= rovná se
<> nerovná se
< je menší než
> je větší než
<= je menší nebo rovno
>= je větší nebo rovno

Výsledkem výrazu s relačním operátorem je vždy hodnota typu Boolean, tedy buď True (pravda) nebo False (nepravda). Podmínka se splní, pokud výsledek výrazu je True.

Při porovnávání čísel se porovnává jejich hodnota. Porovnávat můžeme i řetězce, v takovém případě se porovnává podle abecedy (“jablko” > “hruška”).

Pozor, u operátorů <= a >= záleží na pořadí, nesmíme napsat =< ani =>, první operátor by byl nesmysl, druhý znamená něco jiného.

Logické operátory

Dalším typem operátorů jsou operátory logické. Ty pracují s hodnotami typu Boolean, nejčastěji se používají ve spojitosti s výrazy s relačními operátory. Základní logické operátory jsou tři:

Operátor Význam
And a
Or nebo
Not ne

Místo True budeme používat jedničku, místo False nulu. Zde je tabulka, která ukazuje, jak se tyto operátory chovají:

A B A And B (a) A Or B (nebo)
0 0 0 And 0 = 0 0 Or 0 = 0
0 1 0 And 1 = 0 0 Or 1 = 1
1 0 1 And 0 = 0 1 Or 0 = 1
1 1 1 And 1 = 1 1 Or 1 = 1

Operátor Not potřebuje jen jednu vstupní hodnotu:

A Not A (ne)
0 Not 0 = 1
1 Not 1 = 0

Jako malé cvičení si můžete zkusit zjistit, jaká je hodnota následujících výrazů:

  • (True And False) And (True Or Not (False Or True))
  • (True And (3 <= 7))
  • Not (“hello” = “hello”)
  • “3” < “100”
  • (True And False) = Not (True Or False)

Správné odpovědi: False, True, False, False, True

Složené podmínky

Na tomto příkladu je krásně vidět, jak fungují výrazy s oběma typy operátorů.

Je to jednoduchý program, který se uživatele zeptá na dvě čísla a vypíše, jestli alespoň jedno z nich byla trojka nebo jestli obě byly sedmičky.

 Dim cislo1 As Integer = CInt(InputBox("Zadejte první číslo:")) 
 Dim cislo2 As Integer = CInt(InputBox("Zadejte druhé číslo:")) 
 If (cislo1 = 3) Or (cislo2 = 3) Then 
     MsgBox("Zadal jste alespoň jednu trojku.") 
 End If 
 If (cislo1 = 7) And (cislo2 = 7) Then 
     MsgBox("Zadal jste dvě sedmičky.") 
 End If

Obě podmínky dáváme do závorek a mezi ně napíšeme logický operátor, který řekne, jestli musí platit obě podmínky zároveň (And), nebo stačí, když platí jedna z nich (Or).

Trojúhelníková nerovnost

Nyní si napíšeme velmi jednoduchou aplikaci, které zadáme délky stran trojúhelníka, a ona nám vypíše, jestli trojúhelník můžeme sestrojit, nebo jej sestrojit nemůžeme.

Pokud je součet délek každých dvou stran trojúhelníka větší než délka strany třetí, trojúhelník lze sestrojit. Důležité je si uvědomit, že každé dvě strany musí být větší než ta třetí. Nestačí tedy sečíst první dvě délky a porovnat je se třetí, musíme udělat dohromady 3 testy.

Trojúhelník a jeho strany

Vytvořte si tedy nový projekt (Windows Forms Application, jako vždycky), přidejte si na formulář 3 textová pole (TextBox), do každé zadáme délku jedné strany trojúhelníka, a nakonec tlačítko (Button), na které napište třeba text Zkontrolovat.

Dvakrát klikněte na tlačítko, napíšeme proceduru, která se spustí po kliknutí na toto tlačítko.

 Dim a As Double = CDbl(TextBox1.Text) 
 Dim b As Double = CDbl(TextBox2.Text) 
 Dim c As Double = CDbl(TextBox3.Text) 
  
 If (a + b > c) And (b + c > a) And (c + a > b) Then 
     MsgBox("Trojúhelník existuje.") 
 Else 
     MsgBox("Trojúhelník neexistuje.") 
 End If

To je celé. Na prvních třech řádcích vytváříme proměnné a, b, c typu Double, tedy desetinné číslo, a nahráváme do nich texty z textových polí. Jelikož jsou to texty, musíme je převést na typ Double funkcí CDbl, protože texty do proměnných na desetinná čísla "nacpat" nemůžeme.

Podmínka testuje tři výrazy a mezi nim jsou klíčová slova And, což znamená, že musí platit všechny podmínky zároveň. Jakmile jedna z nich neplatí, trojúhelník už neexistuje. Testujeme každé dvě strany proti straně třetí, myslím, že z ukázky kódu je to jasné.

Pokud se podmínky splní, zobrazíme zprávu, že trojúhelník existuje, pokud ne, zobrazí se, že trojúhelník neexistuje.

SOUTĚŽ: Byla vyhlášena malá programátorská soutěž pro všechny soutěživé začátečníky! Úkolem bylo přidat do tohoto prográmku tlačítko Spočítat obsah, které po kliknutí vypíše obsah trojúhelníka se stranami zadaných délek.

VYHODNOCENÍ: Na můj mail dorazila tři řešení, všechna byla správná. Výherce tedy máme tři - jsou jimi Luboš Blader, Jiří Pavliš a Tomáš Balvar, jehož správné řešení se mi zatoulalo do složky nevyžádaná pošta a objevil jsem jej až dodatečně, za což se mu omlouvám. Všem třem výhercům gratuluji.

Pro spočítání obsahu stačilo použít tzv. Herónův vzorec:

Herónův vzorec

Více informací o tomto vzorci najdete třeba na této stránce, kde najdete také důkaz platnosti tohoto vzorce. Druhou odmocninu čísla dostaneme přes funkci Math.Sqrt.

 s = (a + b + c) / 2 
 MsgBox(Math.Sqrt(s * (s - a) * (s - b) * (s - c))) 

Komentáře

Komentáře jsou vysvětlivky uvnitř programového kódu, které se neprovádí, ale slouží k tomu, abychom si popsali, co daná část kódu dělá. Visual Basic je ignoruje, nevšímá si jich, takže pokud potřebujeme něco testovat a chcemě nějaký kus kódu dočasně vyřadit z činnosti, můžeme jej do komentářů uzavřít.

Nedoporučuji ale zakomentovaný kód v projektu nechat, mívá totiž tendenci se hromadit a po čase už každý zapomene, k čemu tam vlastně byl a proč byl zakomentován.

Komentáře se zapisují kamkoliv do kódu, musíme před ně akorát napsat znak apostrof (většinou Shift a klávesa vedle klávesy Backspace). Cokoliv za apostrofem až do konce řádku je komentář, Visual Studio jej zvýrazní zeleně, aby se nepletl s programovým kódem. Zde je příklad:

 'nadeklarujeme si proměnné a,b,c a uložíme do nich délky stran z textových polí 
 Dim a As Double = CDbl(TextBox1.Text) 
 Dim b As Double = CDbl(TextBox2.Text) 
 Dim c As Double = CDbl(TextBox3.Text) 
  
 'otestujeme, zda trojúhelníková nerovnost platí 
 If (a + b > c) And (b + c > a) And (c + a > b) Then 
     MsgBox("Trojúhelník existuje.")    'trojúhelník lze sestrojit 
 Else 
     MsgBox("Trojúhelník neexistuje.")  'trojúhelník nelze sestrojit 
 End If

Za domácí úkol si můžete aplikaci pro práci s trojúhelníky rozšířit, aby uměla počítat obvod trojúhelníka a dále zjistila, jestli je pravoúhlý. K tomu může posloužit třeba Pythagorova věta.

 

hodnocení článku

8 bodů / 8 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Všechny díly tohoto seriálu

18. Dědičnost 06.10.2008
17. Objektově orientované programování - základy 30.06.2008
16. Třídy a funkce .NET frameworku, o kterých je dobré vědět 31.12.2007
15. Práce se soubory, úvod do objektově orientovaného programování 19.11.2007
14. Vykreslujeme graf 31.08.2007
13. Úvod do grafiky 27.08.2007
12. Práce s textem a řetězci 17.08.2007
11. Kolekce a pole 27.07.2007
10. Funkce a procedury 01.06.2007
9. Přidáváme druhý formulář 18.05.2007
8. Pole, cykly a práce se soubory 14.05.2007
7. Pole 09.05.2007
6. Cyklus For 05.05.2007
5. Složitější podmínky a rozhodovací struktury 26.04.2007
4. Podmínky a operátory 26.04.2007
3. Proměnné a datové typy 25.04.2007
2. Začínáme programovat 25.04.2007
1. Úvod, vývojové prostředí a základní pojmy 25.04.2007

 

Mohlo by vás také zajímat

Řešené příklady v ASP.NET - díl 2.: Aplikace pro zamlouvání sedadel (část 2)

V této části si vysvětlíme základy používání LINQ to SQL a napíšeme si jednoduchou třídu, která bude vracet data, která potřebujeme ve stránce, a rezervovat jednotlivá sedadla.

Řešené příklady v ASP.NET - díl 3.: Aplikace pro zamlouvání sedadel (část 3)

V této části si ukážeme, jak vygenerovat a naplnit tabulku, a jak napsat komponentu, která má vlastní serverové události. Nakonec si ukážeme, jak aktualizovat jen část stránky pomocí komponenty UpdatePanel.

Windows Presentation Foundation (WPF) - díl 4.: Architektura a objektový model WPF

Na jaké kompromisy museli architekti WPF frameworku přistoupit, aby nabídli vývojářům pohodlný vývoj ve vyšších programovacích jazycích a zároveň odpovídající výkon výsledného uživatelského prostředí? Tento článek se věnuje architektuře WPF frameworku.

 

 

Nový příspěvek

 

ee

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

Dim a As Double

If Double.TryParse(TextBox1.Text, a) = True Then

'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else

'uživatel zadal něco, co se na číslo nedá převést

MsgBox("Zadaná hodnota není číslo, ty osle jeden.")

TextBox1.Text = ""

End If

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Do programu jsem přidal i možnost výpočtu, jestli je trojúhelník rovnostranný + domácí úkol :-). Všechny výpočty mi fungovaly, tak sem dávám i zdrojový kód celého programu pro kontrolu :

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As Double = CDbl(TextBox1.Text)
        Dim b As Double = CDbl(TextBox2.Text)
        Dim c As Double = CDbl(TextBox3.Text)

        If (a + b > c) And (b + c > a) And (c + a > b) Then
            MsgBox("Trojúhelník lze sestrojit.")
        Else
            MsgBox("Trojúhelník nelze sestrojit.")
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim a As Double = CDbl(TextBox1.Text)
        Dim b As Double = CDbl(TextBox2.Text)
        Dim c As Double = CDbl(TextBox3.Text)
        Dim d As Double = a + b + c

        MsgBox(d)

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim a As Double = CDbl(TextBox1.Text)
        Dim b As Double = CDbl(TextBox2.Text)
        Dim c As Double = CDbl(TextBox3.Text)

        If (a = b) Or (a = c) Or (b = a) Or (b = c) Or (c = a) Or (c = b) Then
            MsgBox("Trojúhelník je rovnoramenný.")
        Else
            MsgBox("Trojúhelník není rovnoramenný.")
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim a As Double = CDbl(TextBox1.Text)
        Dim b As Double = CDbl(TextBox2.Text)
        Dim c As Double = CDbl(TextBox3.Text)

        If (a = b) And (a = c) And (b = c) Then
            MsgBox("Trojúhleník je rovnostranný.")
        Else
            MsgBox("Trojúhleník není rovnostranný.")
        End If
    End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A kde je ten domácí úkol? V zadání znělo pravoúhlý. Ne rovnoramenný či rovnostranný.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim a As Double = CDbl(TextBox1.Text)

Dim b As Double = CDbl(TextBox2.Text)

Dim c As Double = CDbl(TextBox3.Text)

Label1.Text = CStr(a + b + b)

If (a + b > c) And (a + c > b) And (b + c > a) Then

MsgBox("Lze sestrojit trojuhelnik")

Else

MsgBox("Nelze sestrojit trojuhelnik")

End If

If (Math.Sqrt(a * a + b * b) = c) Or (Math.Sqrt(c * c + b * b) = a) Or (Math.Sqrt(a * a + c * c) = b) Then

Label2.Text = "Trojuhelnik je pravohuli"

Else

Label2.Text = "Trojuhelnik neni pravohli"

End If

End Sub

End Class

Dobrý den,

prvni řadek mi pri deklaraci Dim a... mi to zviraznuje zlute a nemohu prijit na to proc.

Dekuji za odpoved.

dekuji uz nemusite .. doslo mi to kdyz jsem odentroval prispevek..

chyba byla v label

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Na úvod musím přiznat, když jsem dostal odkaz na tento web, že jsem byl uchvácen "lidským" pojetím výkladu. Ovšem byl jsem rozjásán moc dopředu, protože po kalkulačce došlo k nějakému zvratu (ve výkladu - bez přesnějšího popisu a ukázek celého zápisu) a přestal jsem to chápat. Ikdyž bylo uvedeno že ono

Dim vstup1, vstup2 As String

vstup1 = InputBox("Zadejte číslo:")

vstup2 = InputBox("Zadejte číslo:", "Můj program")

může být v buttonu... ovšem ať jsem to psal kam chtěl, nikdy se mi InputBox "nezobrazilo" v možném výběru. Jen tam mám {}inputbox a toto mi jaksi kompilátor nebere...

Error 1 'inputbox' is a namespace and cannot be used as an expression.

Tak tedy nevím, ke to všichni berete a kam to strkáte :-))

Nicméně bych byl rád za jakoukoliv pomoc... rád bych pokračoval dále ve výuce....

Děkuji Vám všem předem... i za shovívavost nad mou maličkostí...

PS: A bacha na to, jsem nejsíš starší než kdokoli z Vás zde!!!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Bylo zde zmíněno ošetření Double( a dalších)pro špatné zadání

Dim a As Double
If Double.TryParse(TextBox1.Text, a) = True Then
    
Else
    MsgBox("Zadaná hodnota není číslo, ty osle jeden.")
    TextBox1.Text = ""
End If

Zajímalo bymě, jestli je možné aplikovat toto řešení na více neznámích za ráz, nebo to musím udělat pro každou zadávanou neznámou zvlášť

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, dá se to ošetřit tak, že kontrolujete vstup (textbox) po vstupu, a pokud je chyba, procedura vynadá a ukončí se:

Dim a As Double, b As Double

If Double.TryParse(TextBox1.Text, a) = False Then
    MsgBox("V poli TextBox1 není číslo !!!")
    TextBox1.Text = "" ' Vymaže hodnotu
    TextBox1.Focus() ' Skočí do Textboxu
    Return
End If

If Double.TryParse(TextBox2.Text, b) = False Then
    MsgBox("V poli TextBox2 není číslo !!!")
    TextBox2.Text = "" ' Vymaže hodnotu
    TextBox2.Focus() ' Skočí do Textboxu
    Return
End If

' ... pokud je vše OK pokračujeme

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Podmínky a operátory

Chci, aby zadavatel zapsal číslo, ale on mi napíše slovo např. "jldj" (omylem). Příkaz CInt nebo Cdbl bude zmatený a vyhodí error. Jakým zůsobem ošetřím to, aby při zadání špatného řetězce, například smazal tento řetězec a žádal po mě nové zadání?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Musíte použít funkci Integer.TryParse (popř. Double.TryParse). Tato funkce má dva parametry - text, který uživatel zadal, a proměnnou, do které se přiřadí výsledek. Samotná funkce vrací True, pokud se převod povedl, popřípadě False, pokud text převést nejde.

Dim a As Double
If Double.TryParse(TextBox1.Text, a) = True Then
    'převod se podařil, v proměnné a je hodnota, kterou uživatel zadal

Else
    'uživatel zadal něco, co se na číslo nedá převést
    MsgBox("Zadaná hodnota není číslo, ty osle jeden.")
    TextBox1.Text = ""
End If
nahlásit spamnahlásit spam 5 / 5 odpovědětodpovědět

Díky moc za rychlou pomoc. Funguje to tak jak jsem chtěl.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Když budu mít více proměnných, tak to musim napsat pro každou zvlášť nebo to lze napsat pro všechny najednou?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

jak muzu udelat aby byly promene pristupne do vsech sub?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Neuvedl jste zda VB.Net nebo C# - podle SUB asi VB.NET

proměnná se uvede dovnitř třídy mimo (nad Sub)


Class Trida

  Dim Retezec As String
  Dim Cislo As Integer

  Sub Nastav()
    Retezec = "text"
     Cislo = 1
  End Sub

  Sub Cti()
    Debug.Print Retezec
   Debug.Print Cislo
  End Sub

End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den, chtěl bych aby mi program vypocital strany pomoci Pythagorovy věty - (c*c)=(a*a)+(b*b),ale nevím jak, poradil by mi prosim někdo?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jsem začátečník v programování, takže to možná nebude správně, ale přesto se pokusím.

Nejdřív musíš ošetřit, aby program zjistil jaká proměnná je přepona(nejdelší strana)

Pak použiješ pytagorovu větu. Bude to za pomocí If a podle toho jaká neznámá bude největší upravíš pytagorovku.

(c*c)=(a*a)+(b*b),

(b*b)=(a*a)+(c*c),

(a*a)=(c*c)+(b*b),

problém je, že nevím jak to prakticky uvést do programu, aby to správně fungovalo

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ono je to tím, že dotaz byl položen tak blbě, že na něj nešlo odpovědět. Dotazující nenapsal co je vstup a co potřebuje jako výstup ... Pak holt nikdo nebude ztrácet čas odpovědí

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrá, potom sem napíšu vlastní problém.

Právě si lámu hlavu s tou pravoúhlostí.

Nevím jak to mám řešit. Když zadám C jako nejdelší stranu tak to funguje, ale nevím jak to mám napsat i pro ostatní strany.

If

c > b >= a or c > a > b then

MsgBox((c*c) = (a*a)+(b*b))

MsgBox("Trojúhelník je pravoúhlý")

else

MsgBox("Trojúhelník není pravoúhlý")

end if

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak hned po nahlédnutí do další lekce sem na to přišel.

If

c > b >= a or c > a > b then

MsgBox((c*c) = (a*a)+(b*b))

MsgBox("Trojúhelník je pravoúhlý, přepona je c")

elseif b > c >= a or b > a > c then

MsgBox ("Trojúhelník je pravoúhlý, přepona je b")

elseif a > b >= c o a > c > b then

MsgBox ("Trojúhelník je pravoúhlý, přepona je a")

else

MsgBox("Trojúhelník není pravoúhlý")

end if

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Mám problém, co když chci napsat podmínku pro prázdný textbox:

 If TextBox2.Text = "" Then
            MsgBox("musíš zadat číslo")
        End If

je ot tak spravne? a proc mi to tedy nejde?

Prostě chci aby mi vyhodil textbox kdyz clicknu na buttonek a textak je prazdny...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Cau, jsem rovnez zacatecnik, ale nejsem si jist jestli pro datovou promennou Integer resp. Double (kterou asi pouzivas u cisel) lze pouzit TextBox2.Text = "" duvodem je ze se promenna Integer a Double neuklada jako text (tj. neuklada se jako znaky)

cituji Tomase Hercega:

"(String je v paměti uložen jinak než Integer, String je uchováván po znacích, kdežto Integer se ukládá jako číslo ve dvojkové soustavě)."

http://www.vbnet.cz/clanek--4-vb_net_od_...

osobne jsem tento a problem se zadanim pismen do TextBox vyresil pouzitim error codu 13 (tusim, ze je to chyba "mishmatch type - preklad byl neschoda typu"

pro podil to pak vypada asi takto:

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        On Error GoTo Chyba
        TextBox3.Text = Podil(TextBox1.Text, TextBox2.Text)
Chyba:
        If Err.Number = 13 Then MsgBox("Nebyla zadána čísla, prosím zadávejte pouze čísla.")
    End Sub

** PS diky autorovi za velice pekny a prehledny tutorial :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak takhle chyby určitě nechytejte, tahle prastará syntaxe se používat nemá. Obecně je vždycky lepší prevence chyb než jejich udělání a následné zachycování - tady se dá zkontrolovat, jestli se text dá převést na číslo.

Správně by to bylo například takto:

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim a As Double, b As Double
        If Double.TryParse(TextBox1.Text, a) And Double.TryParse(TextBox2.Text, b) Then
            TextBox3.Text = Podil(CDbl(TextBox1.Text), CDbl(TextBox2.Text))
        Else 
            MsgBox("Nebyla zadána čísla, prosím zadávejte pouze čísla.")
        End If
    End Sub

Double.TryParse zkusí převést text na číslo a pokud se to povede, vrací True a do proměnné a to číslo nastaví - tím pádem pokud se oba převody povedou, podmínka platí, jinak se zobrazí hláška.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Podmínky a operátory

Bezva stránky, díky moc za ně. Uvažuji i o Donate. :) Ale proč píšu. Hrál jsem si s trojúhelníky a nakonec jsem udělal počítání všech hodnot (s, o, pravoúhlost a existence) na jedno tlačítko a tak, aby to psalo rovnou: "Trojůhelník existuje a je pravoúhlý. Použil jsem příklad chleba s máslem, ale zvolil jsem promnnou "e" a asi 20 minut laboroval, proč to nefunguje a pak jsem si všiml, že je ta proměnná už použita v úplně prvním řádku. :-D

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Samozřejmě "trojúhelník". :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Dobrý den

Jsem v programování uplným nováčkem. Čtu si kapitolu po kapitole. Zatím jsem to nějak zvládl. :) Ale teď jsem narazil ten "InputBox" vložým do nového projektu, a otevřu okno kódu a tam vložím pod: " Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click" tento kód co jste uváděl na začátku článku " Dim vstup1, vstup2 As String

vstup1 = InputBox("Zadejte číslo:")

vstup2 = InputBox("Zadejte číslo:", "Můj program")" a další příkazy, které uvádíš bych potřeboval vědět kam vkládáš. Zdůraznuji, že jsem začátečník. Tak mě prosím neukamenujte, děkuji. :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

jj mel jsem ten samy problem :S toto me docela zklamalo..

jsem taky začatecnik (zadnymu jazyku jsem se poradne nevenoval kvuli spatnym tutorialum.. ale tohle je neco jineho! (az na zacatek tohoto serialu... xD))

ale nakonec jsem se k tomu teda dokopal

všimej si až časti kde najdes tento kód:

Dim otazka As String = "Zadejte číslo:"

Dim titulek As String = "Můj program"

Dim vstup3 As String

vstup3 = InputBox(otazka, titulek)

(nad timto textem jen pise co to ta funkce InputBox je a pise tam i o anglicke napovede ktera ti ma vyskocit.

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim vstup3 As String

vstup3 = InputBox("Zadejte číslo:", "Můj program")

End Sub

End Class

>> Kdyz kliknes na tlacitko ktere si propravis, tak se ti objevi tabulka (kterou ma autor vyfocenou hned na zacatku)

a kdyz budes pokracovat dostanes se k podminkam to uz se myslim da pochopit (alespon podle me)

ale kdyztak ti tu davam dalsi kod jak to ma CELÉ vypadat:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cislo As Integer = CInt(InputBox("Zadejte číslo:"))

If cislo Mod 2 = 0 Then

MsgBox("Číslo je sudé!")

Else

MsgBox("Číslo je liché!")

End If

End Sub

End Class

>> mas tam tabulku s tlacitkem > kliknes na tlacitko > zobrazi se ti tabulka > tam napises libovolne cislo a ono ti to rekne jestli je sude nebo liche (podle deleni beze zbytku - to uz jste se snad ve skole ucili..:D)

omlouvam se za tak obsahly komentar xD

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No všeobecně se dá říci, že tak jako u:

Dim A As Integer
A = 3

kde se do proměnné A přiřadí hodnota 3 (trojka ne čtyřka :-D )

tak v následujícím příkladu:

Dim vstup1, vstup2 As String 
vstup1 = InputBox("Zadejte číslo:") 
vstup2 = InputBox("Zadejte číslo:", "Můj program")

se do vstup1 přiřadí to co zadáte do dialogu inputbox

stejně tak v případě vstup2

Ve skutečnosti vyskočí nejprve jeden dialog, zadáte hodnotu pro vstup1 následně vyskočí druhý dialog, kde zadáte hodnotu pro vstup2

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha :D diky to jsem nevedel.. ted chapu komplet cely tut

nahlásit spamnahlásit spam 0 odpovědětodpovědět

akorat to ze A = 3 a ty napises ze k promenne A se priradi hodnota 4 to je asi blbe ne ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ne to je v pořádku, jen testuji jestli nad tím přemýšlíš :-D

OK chybičku opravím

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Prosím Tě, jaký je rozdíl mezi:

Dim cislo1 As Integer = CInt(InputBox("Zadejte první číslo:"))

Dim a As Double = CDbl(TextBox1.Text)

Myslím, co se týče v zadávání údajů uživatelem. Co je na co.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1/ "cislo1" bude získáno jako datový typ "Integer"

z dialogu Inputbox (dialog s textovým polem - viz. nahoře dialog "Můj program")

2/ "a" bude získáno jako "Double"

z formuláře a jeho textového pole "TextBox1"

... nebudu zmiňovat ošetření chyb při zadání, a neshodě datových typů

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

cawte som zaciatocnik a snažim sa vyrobit kalkulačku

mam tam nasobenie delenie sčitanie odčitanie trojuholnikovú nerovnost obsah sťvorca obsah pravouhleho trojuholníka a jedine co mi robí problém je klasicky obsah stvorca s = (a + b + c) / 2

MsgBox(Math.Sqrt(c * (c - a) * (c - b) * (c - c)))

ja som to spravil takto:

Dim a As Integer = CInt(TextBox1.Text)

Dim b As Integer = CInt(TextBox2.Text)

Dim c As Integer = CInt(TextBox3.Text)

s = (a + b + c) / 2

MsgBox(Math.Sqrt(c * (c - a) * (c - b) * (c - c)))

TextBox5.Text = s

prosim poradte ako mam tento problem vyriešiť

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Obávám se, že jsi špatně popsal co chceš vlastně spočítat.

Obsah čtverce? Obsah čtverce je přece S = a2 (a na druhou) neboli S = a * a

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

to mam dobre ale ja mam problem z obsahom trojuholníka

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Obsah NEPRAVOÚHLÉHO trojúhelníku se vypočítá

S = A * Va / 2

Kde Va je kolmice ze strany A na protější vrchol

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ano ale ja poznam iba 3 strany a b c t.j tri vrcholy A B C

a ja chcem použit tento vzorec:

s = (a + b + c) / 2

MsgBox(Math.Sqrt(s * (s - a) * (s - b) * (s - c)))

ale neviem ho zakonponovat do toho celka ako to mam spravit

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Google :-D tady je postup - Wiki

http://cs.wikipedia.org/wiki/Heronův_vzorec

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

Ahoj, sorry že otravuju s takovou malicherností, ale je tam chyba - máš tam: chcemě a mělo by to být chceme. Možná už to někdo psal. Díks

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Podmínky a operátory

no neviem ale ja som sa ucil ze obsah trojholnika sa pocita vzorcom

S=(a*va)/2 :)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To ano, ale tady tu výšku neznáte.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

hele chlapíku, tohle jsou super stránky, do téhle kapitoly jsem vše chápal, ale tahle kapitola je trochu oříšek.

Potřeboval bych to vyzkoušet, ale nevím, jak. první tabulka mi vyběhne, ale ty další příkazy nevím kam mám psát. když to píši samostatně, vyběhne mi chyba.

Sám jsi v první kapitole napsal, že jeden příklad řekne více než 1000 slov a tady je jen jeden příklad a zbytek teorie.:-(( Škoda.

Jinak 100 bodů za tyto stránky.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Podmínky a operátory

Nainstaloval jsem VB2008 a InputBox nemohu najit. Nejmenuje se nějak jinak?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Podmínky a operátory

Ještě jednou děkuji za minulou pomoc. Teď mám ještě jeden pro mě zajímavý problém.

Mám 2 inputboxy, které řeší rovnici. Do boxu1 zadám X a v boxu2 se objeví výsledek Y. A já chci, aby to šlo i tak, abych zadal Y a v boxu 1 se objevilo X.

V čem je problém.

Když je nasteven TextBox1_TextChanged (tedy nepoužívám žádné spoštěcí tlačítko), tak mi po zapsání výsledku do toho druhého inputboxu proběhne procedura, která je za ním schovaná a přepisuje mi ten první a tak dokola.

To má mimo jiné za následek i to, že nejste schopen ani dopsat žádané X do inputboxu neboť po první číslici se vám tam přepíše číslo na výsledek. Co s tím??? Díky

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Pokud to dobře chápu, tak zapíšete číslo do textboxu1 a okamžitě se vypočítá výsledek do textboxu 2. Jestli máte rovnice např. textbox1 = textbox2+ 2 a textbox2 = textbox1 - 2, tak by neměl být absolutně žádný problém. Pokud jsou však rovnice rozdílné, tím však vyvolá se znovu procedura textbox1_textchanged, a tak pořád dokola... Pokud nechcete používat Button, vyřešil bych to tak, že přepočet se provede např. po stisknutí klávesy enter. Nahoře v kódu máte 2 vysouvací nabídky, v té první si vyberte TextBox1 a v té druhé událost KeyDown. Do nově vzniklé procedury napíište podmínku pro otestování klávesy a vložte kód na výpočet rovnice. Mělo by to vypadat asi takto:

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Dim a, b As Double
        If e.KeyCode = Keys.Enter Then
            a = CDbl(TextBox1.Text)
            b = 2 * a
            TextBox2.Text = b

        End If
    End Sub

Obdobně to proveďte pro textbox2.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Podmínky a operátory

Mam program a kontoluju jestli je zadane cislo vetsi:

If x>0 Then

MsgBox "Neni zadane kladne cislo"

(End)

EndIf

ted muj problem: kdyz napisu end (v zavorce) program se ukonci a to ja nechci, a kdyz ho nenapisu tak program probehne a spocita se. Ja chci aby po ukazani MsgBoxu program zacal odzacatku, tj.vratil se do puvdoniho stavu (aby neprobehl, ani se neukoncil..)

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět
If x > 0 Then
MsgBox "Neni zadane kladne cislo"
Exit Sub ' opustí makro
'nebo
Goto Moje_zalozka ' jde na odkas v sekci programu ...
                  ' označeném Moje_zalozka:
End If

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Diskuse: Podmínky a operátory

Byl jsem zvyklý z VB že pokud proměnnou předem deklaruji jako INTEGER,

tak není třeba dělat transformaci z Inputbox na datový typ Integer >>>

CInt(vysledek)

 Dim cislo As Integer
 cislo  = CInt(InputBox("Zadejte číslo:"))

Nebo to není korektní?

' já jsem to psal jen takto
 Dim cislo As Integer
 cislo  = InputBox("Zadejte číslo:")

(otázka je pak "ošetření chyb" - nekorektní vstup)

nahlásit spamnahlásit spam -4 / 4 odpovědětodpovědět

Diskuse: Podmínky a operátory

absolutně špatná kapitola sice ses asi snažil, ale nenapsal jsi kam se ty zdr. kody maj psat jen jsou tam napsaný a není tam kam se maj psat jestli do buttonu nebo formuláře....je to škoda protože jsem kulový pochopil

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tohle byla spíš teorie, nemusíš to psát nikam, stačí číst ten kód a dívat se, jak se to dělá. Při troše fantazie bys to mohl dát i to procedury Buttonu a pak si jejich hodnoty přes MsgBox vypsat. Chce to trochu přemýšlet, bez toho se programovat nedá.

nahlásit spamnahlásit spam 6 / 6 odpovědětodpovědět

chtěl bych se zeptat, jak má udělat podmínku která by vásledek vypisovala do Labelu? děkuji předem

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Stačí trochu přemýšlet a zkoušet:

If a = 3 Then
   Label1.Text = "a je 3"
End If

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

děkuji moc a jestě jedna otázečka, kdž zchci vytvořit exe soubor.. nevim jak protže když uložím project tak tam ýádný exe není..

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Pokud si otevřete složku projektu, tak je uvnitř ve složce Bin\Debug nebo Bin\Release.

Složku projektu najdete v adresáři Dokumenty\Visual Studio 200X\Projects\název_projektu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud sis pořádně přečetl předešlé kapitoly, neměl bys mít problém na to dojít sám. Jinak nejsem si jistý, ale vše se tu píše do komponenty Button:).

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Diskuse: Podmínky a operátory

Ahoj,nemůžu najít funkci Input Box!Kde se to v Microsoft Visual Basicu 2005 najde?Dik za radu.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Diskuse: Podmínky a operátory

Hledal jsem nějaký programovací jazyk kterým bych začal a narazil na tenhle web. Návody jsou přehledné a lehké na pochopení, moc dík. A tady je můj trojúhelníkový výtvor :o)

http://ukazto.com/img/trojuhelnik-xym1.j...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback