11. díl - Matematické funkce ve VB.NET a knihovna Math

Ostatní jazyky Visual Basic .NET Základní konstrukce Matematické funkce ve VB.NET a knihovna Math

Minule jsme si představili metody Split() a Join(). Náš seriál o VB.NET teď vlastně teprve začíná, nicméně v této sekci s tutoriály o těch nejzákladnějších konstrukcích jazyka jsme již u konce. Jsem rád, že jsme se úspěšně dostali až sem, další sekce se totiž bude věnovat objektově orientovanému programování. Budeme tam vytvářet opravdu zajímavé aplikace a i jednu hru. Sekci zakončeme odlehčujícím článkem s přehledem matematických funkcí, které se nám v našich programech jistě budou v budoucnu hodit.

Základní matematické funkce jsou v .NET obsaženy v třídě Math. Třída nám poskytuje dvě základní konstanty: PI a E. PI je pochopitělně číslo Pí (3.1415...) a E je Eulerovo číslo, tedy základ přirozeného logaritmu (2.7182...). Asi je jasné, jak se s třídou pracuje, ale pro jistotu si na ukázku konstanty vypišme do konzole:

Console.WriteLine("Pí: {0}" & vbCrLf & "e: {1}", Math.PI, Math.E)
Console.ReadKey()

Vidíme, že vše voláme na třídě Math. Na kódu není nic moc zajímavého kromě toho, že jsme v textovém řetězci použili speciální konstantu vbCrLf, která způsobí odřádkování.

Výpis konstant na třídě Math, poskytující matematické funkce v VB.NET

Pojďme si nyní popsat metody, které třída poskytuje:

Metody na třídě Math

Min, Max

Začněme s tím jednodušším :) Obě funkce berou jako parametr dvě čísla libovolného datového typu. Funkce Min() vrátí to menší, funkce Max() to větší z nich.

Round, Ceiling, Floor a Truncate

Všechny tři funkce se týkají zaokrouhlování. Round() bere jako parametr desetinné číslo a vrací zaokrouhlené číslo typu double tak, jak to známe ze školy (od 0.5 nahoru, jinak dolů). Ceiling() zaokrouhlí vždy nahoru a floor() vždy dolů. Truncate nezaokrouhluje, pouze odtrhne desetinnou část.

Round budeme jistě potřebovat často, další funkce jsem prakticky často použil např. při zjišťování počtu stránek při výpisu komentářů v knize návštěv. Když máme 33 příspěvků a na stránce jich je vypsáno 10, budou tedy zabírat 3.3 stránek. Výsledek musíme zaokrouhlit nahoru, protože v reálu stránky budou samozřejmě 4.

Pokud vás napadlo, že Floor() a Truncate() dělají to samé, chovají se jinak u záporných čísel. Tehdy Floor() zaokrouhlí na číslo více do mínusu, Truncate() zaokrouhlí vždy k nule.

Abs a Sign

Obě metody berou jako parametr číslo libovolného typu. Abs() vrátí jeho absolutní hodnotu a Sign() vrátí podle znaménka -1, 0 nebo 1 (pro záporné číslo, nulu a kladné číslo).

Sin, Cos, Tan

Klasické goniometrické funkce, jako parametr berou úhel typu double, který považují v radiánech, nikoli ve stupních. Pro konverzi stupňů na radiány stupně vynásobíme * (Math.PI/180). Výstupem je opět double.

Acos, Asin, Atan

Opět klasické cyklometrické funkce (arkus funkce), které podle hodnoty goniometrické funkce vrátí daný úhel. Parametrem je hodnota v double, výstupem úhel v radiánech (také double). Pokud si přejeme mít úhel ve stupních, vydělíme radiány / (180 / Math.PI).

Pow a Sqrt

Pow() bere dva parametry typu double, první je základ mocniny a druhý exponent. Pokud bychom tedy chtěli spočíst např. 23, kód by byl následující:

Console.WriteLine(Math.Pow(2, 3))

VB.NET má pro mocnění i operátor, to samé můžeme zapsat jako:

Console.WriteLine(2^3)

Sqrt je zkratka ze square root a vrátí tedy druhou odmocninu z daného čísla typu double. Obě funkce vrací výsledek jako double.

Exp, Log, Log10

Exp vrací Eulerovo číslo, umocněné na daný exponent. Log vrací přirozený logaritmus daného čísla. Log10 vrací potom dekadický logaritmus daného čísla.

V seznamu metod nápadně chybí libovolná odmocnina. My ji však dokážeme spočítat i na základě funkcí, které Math poskytuje.

Víme, že platí: 3. odm. z 8 = 8^(1/3). Můžeme tedy napsat:

Console.WriteLine(Math.Pow(8, (1.0/3.0))

Tak to bychom měli. Seriál nyní pokračuje v sekci Základy objektově orientovaného programování ve Visual Basic .NET. Příště si tedy představíme objektový svět a pochopíme mnoho věcí, které nám až doteď byly utajovány :)


 

  Aktivity (2)

Článek pro vás napsal Michal Žůrek (misaz)
Avatar
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 



 

 

Komentáře
Zobrazit starší komentáře (2)

Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:

Nehovorím len o Math :)

Odpovědět 3.7.2013 11:37
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Michal Žůrek (misaz):

Tu jde o to jaká syntaxe se ti víc líbí.

C# používá syntaxi cLike a Visual Basic používá Basicovou.

Odpovědět 3.7.2013 11:42
Nesnáším {}, proto se jim vyhýbám.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Juraj Mlich:

Práveže sa mi moc nepáči {} pri C#(a iných jazykoch) :)

Odpovědět 3.7.2013 11:43
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Juraj Mlich
Kit:

Z LaTeXu by ses asi zbláznil :)

Zkusil jsi už ten Python? Tam se příkazové závorky nepoužívají vůbec.

Odpovědět 3.7.2013 11:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na Kit
Juraj Mlich:

Nie :) čo je to vlastne za jazyk?

Odpovědět 3.7.2013 11:47
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Juraj Mlich
Kit:

Který? LaTeX nebo Python? LaTeX je na profesionální sazbu textů. Python je skriptovací jazyk pro Windows i Linux.

Odpovědět 3.7.2013 11:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na Kit
Juraj Mlich:

Python...Je OOP? Na čo sa využíva (GUI, výpočty,...)?

Odpovědět 3.7.2013 11:52
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
HellCoder
Neregistrovaný
Avatar
HellCoder:

Ano, Pyhton je Objektove Orientovany Interpretovany Multiplatformni programovaci jazyk.

 
Odpovědět 3.7.2013 11:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Juraj Mlich
Kit:

Python je OOP, ale zvládá víc paradigmat. Umí GUI i výpočty. Pohodlně se v něm pracuje např. s komplexními čísly. Je hodně úsporný na zápis, vyžaduje správné odsazování kódu.

Odpovědět 3.7.2013 11:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na Kit
Juraj Mlich:

Vyskúšam ale nie dnes :)

Odpovědět 3.7.2013 12:01
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 12. Zobrazit vše