5. kapitola – Spouštění aplikací Visual Basic.Net, spustitelné soubory V předchozích příkladech jsme již naše nově vytvořené příklady spouštěli. Využili jsme nabídky Debug, vybereme Start Debugging. Totéž se dá udělat klepnutím na tlačítko Start na standardním panelu nebo můžeme stisknout F5. Víme také, že ve složce projektu název_projektu/bin/Debug/nazev_projektu.exe najdeme také spustitelný soubor. Máme i jiné možnosti, jak distribuovat hotový program.
Vytváření spustitelných souborů V různých verzích VB je možné vytvářet spustitelné exe soubory různě. V naší verzi máme dvě možnosti. Build...Build automat V této volbě vytvoříme klasický spustitelný exe soubor a nezbytné podpůrné soubory. Před využitím této volby je třeba nastavit (Project...název projektu properties) cílovou složku, kde se uloží vytvořené soubory (Compile) a další informace (ikona, firma atd.). Program spouštíme exe souborem
17 / 51
Druhá možnost je vytvoření klasického instalátoru programu ve Windows Build...Publish automat
Vytvořili jsme složku Automat s instalátorem programu Setup – můžeme spustit instalaci a program spouštět z nabídky Start...Všechny programy. Odinstalace je možná standardními prostředky Windows (Ovládací panely...) 18 / 51
POZNÁMKA: Pozor, vytvořené exe soubory či instalátory nelze nijak modifikovat. Je proto nutné uchovávat zdrojové soubory programmů pro případnou další modifikaci či opravu programů.
Úkoly: 1. Vytvořte z některého svého programu spustitelný soubor a instalátor pro windows.
19 / 51
6. kapitola – Matematické funkce a metody, cykly (Do...Loop) Ve 4. kapitole jsme pracovali s funkcemi. Nyní se k nim vrátíme troškou teorie. Vestavěné funkce jsou důležitou součástí VB. Již víme, že funkce patří mezi podprogramy a vrací nějakou hodnotu. Funkce od nás převezmou požadované parametry a pak nám sdělí výsledek. Parametry uvádíme do závorky, jsou odděleny čárkou a musí zachovávat předepsané pořadí. V minulé kapitole jsme pracovali s funkcí Rnd. Ta má žádný nebo jediný parametr. Ten určuje, jak se bude číslo generovat. Dim A As Single Randomize A = Rnd (1) Print A 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) 20 / 51
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)
21 / 51
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 22 / 51
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). 'začátek cyklu
Do 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 vedlejší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.
23 / 51
Cyklus Do...Loop Dvě varianty: Do Do [Until / While podminka] . . . . [Exit Do] [Exit Do] . . Loop [Until / While podminka ] Loop 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,)
7. kapitola – Cykly – přehled všech typů, příklad na cykly For...Next V případě, že potřebujeme, aby se nějaký blok příkazů vykonával opakovaně (viz. Příklad v předchozí kapitole), využijeme cykly. Existují dva hlavní typy cyklů. Výše uvedený cyklus s podmínkou a cyklus, který opakuje činnost skupiny příkazů tolikrát, kolikrát určíme.
Cyklus FOR...Next Je to základní, velmi často používaný cyklus. Má následující syntaxi: Dim A As Integer For promenna=od To do [Step krok]
For A = 1 To 100
.
Print A
[Exit For] .
Next
. Next promenna
Proměnná (promenna) se nazývá řídící proměnná cyklu, od a do jsou hranice intervalu, mezi kterým se hodnota řídící proměnné pohybuje. Volitelný je krok (pokud neuvedeme, Visual Basic pracuje s krokem 1) Příkaz Exit For umožňuje kdykoli během vykonávání cyklu opustit cyklus a pokračovat ve vykonávání dalších příkazů
24 / 51