cool web a perfektni rs- Doporucuji

Monday, April 02, 2007

Vytvoření vlastní metody pro vylosování čísla

Chcete-li napsat proceduru, která vylosuje náhodné celé číslo ze zvoleného intervalu, najdete patřičný výraz
v nápovědě k funkci Rnd. Vyjdete-li z něho a z informací uvedených v předchozím oddílu, můžete přidat
do kódu formuláře tuto funkční proceduru:
Public Function VygenerovatPrirozeneCislo _
(ByVal DolniMez As Integer, ByVal HorniMez As Integer) As String
VygenerovatPrirozeneCislo = _
CStr(Int((HorniMez - DolniMez + 1) * Rnd + DolniMez))
End Function
Funkční procedury jsou druhým základním typem procedur ve Visual Basicu. Od procedur typu Sub se liší
klíčovým slovem v úvodním a uzavírajícím definičním příkazu, hlavně ale tím, že vracejí hodnotu. Datový
typ návratové hodnoty se udává za seznamem parametrů, návratová hodnota se získá tím, že se v těle funkce
uvede přiřazovací příkaz, kde na levé straně funkce je její název, vpravo výraz určující návratovou hodnotu.
VB6. Připomínám, že nyní se parametry standardně předávají hodnotou (ByVal), nikoli odkazem
(ByRef) a že se standardně také vyžadují definice typů parametrů a návratové hodnoty
(klíčová slova As).
Příkaz pro přiřazení vylosovaného čísla bychom proto mohli napsat takto:
lblCislo1.Text = VygenerovatPrirozeneCislo(0, 9)
Modifikace algoritmu losování
Generování v podobě procedury může mít i jiné výhody. Když tuto proceduru „vhodně“ doplníte, můžete
si automat vylepšit ve svůj prospěch, například snížíte trochu pravděpodobnost, že se vylosují taková čísla,
která jsou výherní (uživatelům o tom samozřejmě neřeknete).
Například, je-li výherní kritérium stanoveno jako „alespoň jedna jednička“ a vy nechcete, aby uživatelé
příliš vyhrávali, můžete například proceduru modifikovat tak, že pokud se vylosuje něco jiného než jednička,
tak to necháte, když se vylosuje jednička, tak v polovině případů budete losovat ještě jednou. Upravená procedura
by mohl mít například tento tvar:
Public Function VygenerovatPrirozeneCislo _
(ByVal DolniMez As Integer, ByVal HorniMez As Integer) As String
Dim strCislo As String
strCislo = CStr(Int((HorniMez - DolniMez + 1) * Rnd + DolniMez))
If (strCislo = "1") And (Int(2 * Rnd) Mod 2 = 0) Then
VygenerovatPrirozeneCislo = _
CStr(Int((HorniMez - DolniMez + 1) * Rnd + DolniMez))
Else
VygenerovatPrirozeneCislo = strCislo
End If
End Function
Základní rozhodovací konstrukcí je ve Visual Basicu If podmínka Then něco udělej End If.
Vyhodnotí-li se podmínka na True, provedou se příkazy těla konstrukce, jinak se neprovede nic
(v železničářské terminologii „výhybka“). Zde je uvedena varianta s frází Else. Jestliže podmínka platí, udělej
to, jinak udělej něco jiného (v železničářské terminologii „rozdvojení na dvě koleje“).

Labels: