| Algoritmizace a programování |
Procvičení vytvoření programu |
Nyní vytvoříme makro, které bude sčítat čísla zadávaná uživatelem až do chvíle, dokud nezadá číslo 0. (Uživatel bude nejprve vyzván, aby zadal číslo. Poté co zadá poslední číslo (nulu), bude mu zobrazena informace o počtu zadaných čísel a jejich součtu.)
Sestrojte si (nakreslete třeba na papír) svůj vlastní návrh vývojového diagramu a poté se podívejte na možný návrh zde.
Již znáte způsob vytváření makra, proto si přečtěte o dalších podprogramech v tomto odstavci a pokuste se vytvořit program. Jsou využity následující podprogramy:
- funkce InputBox(text) – zobrazí (vypíše) proměnnou text a návratovou hodnotou je vstup zadaný uživatelem,
- Do ... Loop While(podmínka) – pokud je podmínka pravdivá, dojde k návratu na Do, jinak se pokračuje v programu ,
- If (podminka) Then ... Else ... End If – pokud platí podmínka, pokračuj až do Else (a větev Else se nevykoná), pokud neplatí, pak vykonej pouze větev Else ,
- Str() – jedná se o přetypování libovolného typu na String. (Pokud je proměnná nějakého typu, nelze do ní libovolně přiřazovat jiný typ. V našem případě funkce vrací String namísto Integer).
Výsledný zdrojový kód bude zobrazen po kliknutí zde.
Sub SoucetCisel2()
'
' SoucetCisel Makro
' Makro scitajici zadavana cisla az do te doby, dokud neni zadano cislo 0, navic zobrazi i pocet sectenych cisel.
'
Dim Vysledek, zadaneCislo, pocetCisel As Integer
Dim Vysledek1 As String
Vysledek = 0
pocetCisel = -1 'zacneme radeji -1, protoze posledni hodnota (tedy) je rovnez zapocitana a jinak bychom museli potom jednicku odecist - viz. *
Do
zadaneCislo = InputBox("Zadejte číslo:")
Vysledek = Vysledek + zadaneCislo
pocetCisel = pocetCisel + 1
Loop While zadaneCislo <> 0
Vysledek1 = Vysledek
If (pocetCisel = 0) Then
MsgBox ("Nezadali jste žádná čísla!")
Else
'*Pokud by se zacinalo prirazenim pocetCisel = 0, pak by zde musel byt prikaz pocetCisel = pocetCisel - 1
MsgBox ("Součet těchto" + Str(pocetCisel) + " čísel je: " + Vysledek1 + ".") 'Funkce Str prevede cislo na string
End If
End Sub
|