12. diel - Matematické funkcie vo VB.NET a knižnica Math
V minulej lekcii, Podmienky vo VB.NET druhýkrát - ternárne výraz a Select Case , sme sa venovali ďalšie syntax podmienok.
V minulej lekcii, Podmienky vo VB.NET druhýkrát - ternárne výraz a Select Case , sme si predstavili metódy
Split() a Join(). Naša výučba VB.NET teraz vlastne
ešte len začína, však v tomto kurze najzákladnejších konštrukciách
jazyka sme už u konca. Som rád, že sme sa úspešne dostali až sem, ďalšie
sekcie sa totiž bude venovať objektovo orientovanému programovania. Budeme
tam vytvárať naozaj zaujímavé aplikácie a aj jednu hru. Kurz zakončíme
odľahčujúcim Visual Basic .NET tutorialom s prehľadom matematických
funkcií, ktoré sa nám v našich programoch iste budú v budúcnosti
hodiť.
Základné matematické funkcie sú v .NET obsiahnuté v triede
Math. Trieda nám poskytuje dve základné konštanty:
PI a E. PI je pochopiteľne číslo Pí
(3.1415...) a E je Eulerovo Číslo, teda základ
prirodzeného logaritmu (2.7182...). Asi je jasné, ako sa s
triedou pracuje, ale pre istotu si na ukážku konštanty Vypíšme do
konzoly:
{VBNET_CONSOLE}
Console.WriteLine("Pí: {0}", Math.PI)
Console.WriteLine("e: {0}", Math.E)
Console.ReadKey()
{/VBNET_CONSOLE}
Vidíme, že všetko voláme na triede Math. Na kódu nie je
nič moc zaujímavého okrem toho, že sme v textovom reťazci použili
špeciálny konštantu vbCrLf, ktorá spôsobí odriadkovanie.
Konzolová aplikácia
Pí: 3.14159265358979
e: 2.71828182845905
Poďme si teraz popísať metódy, ktoré trieda poskytuje:
Metódy na triede Math
Min (), Max ()
Začnime s tým jednoduchším
. Obe funkcie berú ako parameter dve čísla ľubovoľného
dátového typu. Funkcia Min() vráti to menšie, funkcia
Max() to väčší z nich.
Round (), Ceiling (), Floor () a Truncate ()
Všetky tri funkcie sa týkajú zaokrúhľovania. Round() berie
ako parameter desatinné číslo a vracia zaokrúhlené číslo typu
Double tak, ako to poznáme zo školy (od 0.5
nahor, inak dole). Ceiling() zaokrúhli vždy hore a
Floor() vždy dolu. Truncate() nezaokrúhľujú, iba
odtrhne desatinnú časť.
Round() budeme určite potrebovať často, ďalšie funkcie som
prakticky často použil napr. Pri zisťovaní počtu stránok pri výpise
komentárov v knihe návštev. Keď máme 33 príspevkov a na stránke ich je
vypísané 10, budú teda zaberať 3.3 stránok. Výsledok musíme zaokrúhliť
nahor, pretože v reále stránky budú samozrejme 4.
Ak vás napadlo, že Floor() a Truncate() robia to
isté, správajú sa inak u záporných čísel. Vtedy Floor()
zaokrúhli na číslo viac do mínusu, Truncate() zaokrúhli vždy
k nule.
Abs () a Sign ()
Obe metódy berú ako parameter číslo ľubovoľného typu.
Abs() vráti jeho absolútnu hodnotu a Sign() vráti
podľa znamienka -1, 0 alebo 1 (pre
záporné číslo, nulu a kladné číslo).
Sin (), Cos (), Tan ()
Klasické goniometrické funkcie, ako parameter berú uhol typu
Double, ktorý považujú v radiánoch, nie v stupňoch. Pre
konverziu stupňov na radiány stupňa vynásobíme
* (Math.PI / 180). Výstupom je opäť Double.
ACOS (), Asin (), Atan ()
Opäť klasické cyklometrické funkcie (arkus funkcie), ktoré podľa
hodnoty goniometrické funkcie vráti daný uhol. Parametrom je hodnota v
Double, výstupom uhol v radiánoch (tiež Double).
Pokiaľ si prajeme mať uhol v stupňoch, vydelíme radiány
/ (180 / Math.PI).
Pow () a sqrt ()
Pow() berie dva parametre typu Double, prvý je
základ mocniny a druhý exponent. Ak by sme teda chceli spočítať napr.
2^3, kód by bol nasledujúci:
{VBNET_CONSOLE}
Console.WriteLine(Math.Pow(2, 3))
{/VBNET_CONSOLE}
VB.NET má pre mocnění aj operátor, to isté môžeme zapísať ako:
{VBNET_CONSOLE}
Console.WriteLine(2^3)
{/VBNET_CONSOLE}
Sqrt() je skratka zo square root a vráti teda druhú odmocninu
z daného čísla typu Double. Obe funkcie vracia výsledok ako
Double.
Exp (), Log (), log10 ()
Exp() vracia Eulerovo Číslo, umocnené na daný exponent.
Log() vracia prirodzený logaritmus daného čísla.
Log10() vracia potom dekadický logaritmus daného čísla.
V zozname metód nápadne chýba ľubovoľná odmocnina. My ju však
dokážeme spočítať aj na základe funkcií, ktoré Math
poskytuje.
Vieme, že platí: 3. odm. z 8 = 8^(1/3). Môžeme teda
napísať:
{VBNET_CONSOLE}
Console.WriteLine(Math.Pow(8, (1.0/3.0)))
{/VBNET_CONSOLE}
Tak to by sme mali. Výučba teraz pokračuje nadväzujúcim kurzom Základy objektovo orientovaného programovania vo Visual Basic
.NET. Nabudúce si teda predstavíme objektový svet a pochopíme veľa
vecí, ktoré nám až doteraz boli utajované 
V nasledujúcom cvičení, Riešené úlohy k 11.-12. lekciu VB.NET, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.
