První díl - účel a nahrání makra Druhý díl - vlastní panel nástrojů Třetí díl - vytváření funkcí a podmínka Čtvrtý a pátý díl - podmínky, cykly, vkládání dat a výstupy
Použití základních programovacích struktur je nemožné bez dostatečného procvičení, resp. rovná se pouhému přepisování programů z příruček či jiných zdrojů. Následuje několik základních příkladů, které nejsou složité, všechny už někdo (a bylo jich hodně) řešil a vyřešil, ale představují právě onen základ nutný k pochopení, zaučení a procvičení.
U každého problému by měl následovat prakticky stejný postup:
Zadání: počítač "zapomněl" násobit čísla, s pomocí sčítání a cyklu ho to naučte.
Specifikace: nebudeme řešit omezení množiny čísel, která lze násobit, při zkoušce se omezíme na čísla z malého rozsahu (-50 až 50)
Algoritmus: Po zadání čísel a, b si je uspořádáme tak, aby a bylo číslo menší. Pak budeme v cyklu s pevným opakováním b krát přičítat číslo a k celkovému součinu čísel a a b. Ten musí být před započetím cyklu nulový.
Sub SoucinCisel()
a = InputBox ("Zadej první číslo")
b = InputBox ("Zadej druhé číslo")
If a > b Then
c = a
a = b
b = c
End If
soucin = 0
For i = 1 to a
soucin = soucin + b
Next i
Vystup = "Součin zadaných čísel je " & soucin
MsgBox Vystup
End Sub
Zadání: počítač "zapomněl" přirozenou mocninu čísla, s pomocí násobení a cyklu ho to naučte.
Specifikace: nebudeme řešit omezení množiny čísel, která lze umocňovat, při zkoušce se omezíme na základ přirozený (0..30) a mocninu malou (0..10)
Algoritmus: Po zadání základu mocniny a mocnitele (exponentu) budeme v cyklu s pevným opakováním určeným mocnitelem násobit mocninu základem mocniny, přičemž mocnina musí být před započetím cyklu rovna 1.
Sub MocninaCisla()
a = InputBox ("Zadej základ")
b = InputBox ("Zadej exponent")
mocnina = 1
For i = 1 to b
mocnina = mocnina * a
Next i
Vystup = "Mocnina zadaného čísla je " & mocnina
MsgBox Vystup
End Sub
Zadání: V množině předem daného počtu čísel najděte číslo největší, resp. nejmenší.
Specifikace: nebudeme řešit omezení množiny čísel, mezi kterými budeme hledat, tato čísla není nutné si pamatovat déle, než je nezbytně nutné z hlediska zadání.
Algoritmus: Po zadání počtu čísel budeme v cyklu s pevným opakováním daným počtem čísel porovnávat pořadové číslo (tedy číslo, které je v tu chvíli na řadě) s dosavadním maximem či minimem. Vyplatí se před započetím cyklu si do maxima a minima vložit první zadávané číslo, v tom případě se počet opakování cyklu zmenší o 1.
Sub VyjimecnaHodnota()
N = InputBox ("Zadej počet čísel")
a = InputBox ("Zadej číslo")
Maximum = a
Minimum = a
For i = 1 to N-1
if a > Maximum then Maximum = a
if a < Minimum then Minimum = a
Next i
Vystup = "Mezi zadanými čísly je největší číslo " & Maximum
MsgBox Vystup
Vystup = "Mezi zadanými čísly je nejmenší číslo " & Minimum
MsgBox Vystup
End Sub
Zadání: počítač nezná způsob, jak určit pro dvě přirozená čísla jejich celočíselný podíl a zbytek po tomto dělení.
Specifikace: nebudeme řešit omezení množiny čísel, se kterými lze pracovat, při zkoušce se omezíme na čísla z malého rozsahu (0..100).
Algoritmus: Po zadání dělence (čísla, které dělíme) a dělitele (čísla, kterým budeme dělit) budeme v cyklu s podmínkou na začátku (podmínkou je, že dělenec je větší než dělitel) odečítat od dělence dělitele a do proměnné podíl si zapisovat počet těchto odčítání. Proměnná podíl musí být před započetím cyklu nulová. Po skončení cyklu je v proměnné dělenec zbytek, tj. číslo, které už se dělitelem nedá celočíselně dělit.
Poznámka: V průběhu řešení se ukazuje, že tady je nutné definovat v programu dělence a dělitele jako proměnné typu Integer.
Sub CelociselnyPodil()
a = InputBox ("Zadej číslo, které se bude dělit")
b = InputBox ("Zadej číslo, kterým se bude dělit")
podil = 0
While a > b
a = a - b
podil = podil + 1
Wend
Vystup = "Podíl zadaných čísel je " & podil
MsgBox Vystup
Vystup = "Zbytek po celočíselném dělení zadaných čísel je " & a
MsgBox Vystup
End Sub
Zadání: S pomocí Eukleidova algoritmu najděte největší společný dělitel dvou zadaných čísel.
Specifikace: Eukleidův algoritmus byl vysvětlen, nebudeme řešit omezení množiny čísel, která lze násobit, při zkoušce se omezíme na čísla z malého rozsahu (0..200)
Eukleidův algoritmus: Dvě zadaná různá čísla mají stejného největšího společného dělitele jako čísla, kde je větší z obou čísel nahrazeno jejich rozdílem.
Po zadání čísel a, b budeme v cyklu s podmínkou na začátku (podmínkou je, že čísla jsou různá) nahrazovat větší číslo rozdílem obou čísel.
Poznámka: V průběhu řešení se ukazuje, že tady je nutné definovat v programu zadaná čísla jako proměnné typu Integer.
Sub Eukleides()
a = InputBox ("Zadej první číslo")
b = InputBox ("Zadej druhé číslo")
While a < > b
If a > b Then
a = a - b
Else
b = b - a
End If
Wend
Vystup = "Největší společný dělitel zadaných čísel je " & a
MsgBox Vystup
End Sub