Funkce mohou být součástí složitějších výrazů, argumentem funkce může být opět hodnota funkce. (viz. Př.)
Dim A As Integer
Dim B As Integer
A = 1 + Cos(0.5)
B = Sin (Rnd(1))
Rnd [(výraz)]
Již známe – generátor náhodných čísel. Generuje pseudonáhodné číslo v intervalu <0,1>
Parametr: >0 ...funkce generuje další náhodné číslo, =0...funkce generuje opět předchozí náhodné číslo (tj. Bude generováno stále stejné náhodné číslo), <0...funkce generuje pro každé číslo ve výrazu jedno číslo náhodné, které je mu přiřazeno, bez parametru ...činnost stejná, jako v případě, že výraz je kladný.
Funkce generuje čísla v intervalu <0,1>. Chceme-li generovat číslo celé a v jiném rozsahu, musíme nejdříve náhodné číslo vynásobit rozdílem horní a dolní hranice rozsahu (např. Chceme generovat čísla v intervalu <10,100>, násobíme číslem 90), pak přičteme k výsledku dolní hranici a na závěr využijeme funkci Int(výraz), která náhodné číslo zaokrouhlí na celá čísla. (Již jsme se s tím setkali ve 4. kapitole)
Aby sekvence čísel byla opravdu náhodná, musíme před použitím této funkce použít příkaz Randomize.
Matematické metody třídy Math .NET Framework
Budeme-li některou z metod použít, musíme na úplný začátek textu umístit příkaz
Imports system.Math
Sin(výraz), Cos(výraz), Tan(výraz)
Vracejí hodnoty daných goniometrických funkci. Parametr (výraz) nutno zadat v obloukové míře (radiány) Pokud používáme velikosti úhlu ve stupních, je třeba je nejdříve převést na radiány, tj. vynásobit číslem Pi/180
Abs(výraz)
Vrací absolutní hodnotu čísla, které je výsledkem výrazu
A = Abs(-5)
Sign(výraz)
Vrací signum čísla, které je výsledkem výrazu.
Hodnota: --------> Signum:
>0 --------> 1
=0 --------> 0
<0 --------> -1
Log(výraz)
Vrací přirozený logaritmus čísla, které je výsledkem výrazu (>0)
A = Log(1) 'A=0
Exp(výraz)
Vrací hodnotu, která vznikne umocněním Eulerova čísla e na hodnotu výrazu
A = Exp (0) 'A=1
Sqrt(výraz)
Vrací hodnotu druhé odmocniny z čísla, které je výsledkem výrazu (parametrem výraz větší nebo roven 0)
Cykly – začneme praktickou ukázkou jednoho z typů cyklů (Do...Loop)
V učivu o algoritmech jsme se mohli setkat tímto algoritmem. Je to algorimus na výpočet největšího společného dělitele. Spočívá v tom, že opakovaně odečítáme menší číslo od většího, dokud se čísla nerovnají. Toto shodné číslo je pak jejich největším společným dělitelem.
Opakování zadané činnosti umožňují cykly. V našem případě nevíme přesně, kolikrát budeme čísla odečítat, víme ale, že odečítáme čísla do té doby, než se rovnají, tj. do té doby, než je splněna nějaká podmínka. Použijeme proto cyklus Do...Loop
Vzhled aplikace – jeho vytvoření, úprava formuláře
Známým postupem vytvoříme formulář programu. Nebudu už zde popisovat názvy a vlastnosti jednotlivých objekt -jsou zřejmé ze zdrojového kódu aplikace.
Zdrojový kód aplikace
Tlačítku Největší společný dělitel přiřadíme následující událost Click
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim A As Integer
Dim B As Integer
A = Val(txtA.Text)
B = Val(txtB.Text)
Do While A <> B
If A > B Then
A = A - B
Else
B = B - A
End If
Loop
txtVysledek.Text = A
End Sub
Popis jednotlivých částí kódu:
Dim A As Integer 'deklarujeme proměnné
Dim B As Integer 'deklarujeme proměnné
A = Val(txtA.Text) 'načteme hodnoty proměnných z textboxu
B = Val(txtB.Text)
Dále následuje tzv. Podmíněný cyklus, jeho běh závisí na splnění či nesplnění obecné podmínky. Existují dvě varianty cyklu Do...Loop. Buď cyklus pokračuje, je-li podmínka splněna (While) nebo cyklus pokračuje, není-li podmínka splněna (Until).
Do 'začátek cyklu
While A <> B 'podmínka cyklu
If A > B Then 'podmíněný příkaz
A = A - B
Else
B = B - A
End If
Loop 'konec cyklu
Po proběhnutí cyklu zbývá určit, kde se zobrazí výsledek
txtVysledek.Text = A
Jak je možno dále upravit program, je vidět na dolním obrázku. Nově je tam zařazeno tlačítko Smaž NSD. Stiskem tohoto tlačítka vymažeme textBox, ve kterém se zobrazuje výsledek. Využijeme metodu seznam Clear.
Shrnutí - cyklus Do...Loop
Dvě varianty:
Do a Loop uvozují začátek a konec cyklu. Klíčové slovo před podmínkou rozhoduje o tom jak poběží cyklus. While - cyklus pokračuje, je-li podmínka splněna, Until - cyklus pokračuje, není-li podmínka splněna.
Úkoly:
1.Zkuste modifikovat výše uvedený program (jeho vzhled) a výsledek (exe soubor) pošlete na zavadil.gymst@seznam.cz