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í.