VB - 12. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

VB - 12. lekceVB - 12. lekce

 

VB - 12. lekce

Google       Google       30. 4. 2005       15 817×

12.2 Vykreslování grafů funkcí
12.3 Logické operátory
12.4 Ručičkové hodiny
12.5 Digitální hodiny
12.6 Domácí úkol
12.7 V další lekci...

Reklama
Reklama

12.1 Matematické funkce

Ano, ano, tak s těmi se budeme ještě dlouho setkávat. Já osobně je využívám neustále, protože Visual Basic používám převážně pro simulaci elektronických odvodů. Tak se do nich pustíme. Nejlépe když vám hned ukážu tabulku s jejich výčtem:


Abs   - Absolutní hodnota
Atn   - Arcustangens
Cos   - Cosinus
Exp   - Funkce vracející základ logaritmu
Fix   - Zaokrouhlení (vždy dolů)
Int   - Zaokrouhlení (vždy dolů)
Log   - Logaritmus
Rnd   - Náhodné číslo od 0 do 0,999
Round - Normální zaokrouhlení
Sgn   - Vrací znaménku plus nebo minus jedna
Sin   - Sinus
Sqr   - Odmocnina
Tan   - Tangens

Využití funkce v kódu.


Print Abs(-32)
Print Cos(2.15)
Print Sin(x – abs(f))
Print Sqr(tan(17)+Log(x))

Všechny tyto funkce se zapisují stejným stylem, pouze u Rnd() se v závorkách nic neuvádí, ani závorky se uvádět nemusí.


12.2 Vykreslování grafů funkcí

Zde si ukážeme praktické využití toho, co jsem rychle shrnul výše. Na formulář si budeme vykreslovat grafy jednotlivých funkcí. Každý graf budeme počítat od 0 do dvou pí. Grafy různých funkcí budeme vykreslovat pomocí metody PSet. Začneme tedy metodou PSet ScaleMode. Formulář nastavíme na Pixely. Nesmíme zapomenout ještě na jednu věc: formulář má souřadnice, které čím jsou větší, tím se bod zakresluje více dolů, pokud ale pracujeme v matematice, tak se vyšší hodnoty zakreslují nahoru, proto je potřeba si to obrátit. Ukázka je v následujícím kódu:


Sinus:
Const pi = 3.14

Private Sub Form_Click()
  For i = 0 To 2 * pi Step 0.001
    x = i * 100
    y = 380 - (360 * Sin(i))
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Cosinus:
Const pi = 3.14

Private Sub Form_Click()
  For i = 0 To 2 * pi Step 0.001
    x = i * 100
    y = 380 - (360 * Cos(i))
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Tangens:
Const pi = 3.14

Private Sub Form_Click()
  For i = 0 To 2 * pi Step 0.001
    x = i * 100
    y = 380 - (36 * Tan(i))
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Logaritmus:
Const pi = 3.14

Private Sub Form_Click()
  For i = 1 To 720 Step 1
  x = i
  y = 380 - (10 * Log(i))
  PSet (x, y), &HFF
Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Odmocnina
Const pi = 3.14

Private Sub Form_Click()
  For i = 1 To 720 Step 1
    x = i
    y = 380 - (10 * Sqr(i))
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Neměl bych zapomínat ani na mocninu, ta se dělá pomocí ^ téhle stříšky, když tedy chci napsat pět na třetí, tak napíšu 5^3. Jak jednoduché.


Const pi = 3.14

Private Sub Form_Click()
  For i = 1 To 720 Step 0.01
    x = i * 5
    y = 380 - (i ^ 2)
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

To bylo na druhou a teď na třetí :)


Const pi = 3.14

Private Sub Form_Click()
  For i = 1 To 300 Step 0.01
    x = i * 20
    y = 380 - (i ^ 3)
    PSet (x, y), &HFF
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Ještě jednu drobnost, jak vykreslit kružnici nebo ovál pomocí těchto metod:


Const pi = 3.14

Private Sub Form_Click()
  For i = 0 To 2 * pi Step 0.01
    x = 380 + (160 * Sin(i))
    y = 380 - (160 * Cos(i))
    PSet (x, y), &HFF
    DoEvents
  Next i
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

To byl kruh a tady je slíbený ovál:


Const pi = 3.14

Private Sub Form_Click()
  For i = 0 To 2 * pi Step 0.01
    x = 380 + (260 * Sin(i))
    Y = 380 - (160 * Cos(i))
    PSet (x, Y), &HFF
    DoEvents
  Next i<
End Sub

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Form1.Line (0, 380)-(800, 380)
End Sub

Tím bych zakončil funkce. Pokud jste pochopili funkce a stále vám to nejde, je to jen matematikou musíte vědět, jak s jakou funkcí počítat.


12.3 Logické operátory

Po matice trochu logiky, probereme si logické operátory ve Visual Basicu. Opět začnu tabulkou s jejich výčtem:


And - Logický součin
Or - Logický součet
Xor - Ekvivalence
Not - Negace
Imp - Implikace

Logický součin And: Pokud jsou oba výrazy rovny True, pak je výsledný výraz roven True, jinak je výsledný výraz False ("a" a "b" berme jako vstupní hodnoty a "c" jako výstupní hodnotu, čili výsledek).


a  b  c
0  0  0
0  1  0
1  0  0
1  1  1

Logický součet Or: Pokud je alespoň jeden výraz roven True, pak je výsledný výraz roven True, jinak je False.


a  b  c
0  0  0
0  1  1
1  0  1
1  1  1

Ekvivalence Xor: Pokud jsou dva výrazy rozdílné, výsledný výraz je True, jinak je False.


a  b  c
0  0  0
0  1  1
1  0  1
1  1  0

Negace Not: Pokud je výraz roven True, pak je výsledný výraz False a opačně.


a  c
1  0
0  1

Implikace Imp ???


a  b  c
0  0  1
0  1  1
1  0  0
1  1  1

Tyto funkce využijete například v logických operacích a výpočtech. Ještě vám ukážu, jak se s nimi pracuje a jak se zapisují do kódu:


Dim a As Boolean
Dim b As Boolean
Dim c As Boolean
c = a And b
c = a Or b
c = a Xor b
c = a Imp b
c = Not a

Pokud pracujete s hodnotami True a False, doporučuji deklarovat proměnné, vyhnete se tak nepříjemným problémům. Většímu využití logických funkcí se budeme zabývat v lekcích, které nás čekají za několik týdnů.


12.4 Ručičkové hodiny

Ukázka matematických funkcí aneb jak mohou vypadat ručičkové hodiny. Je potřeba si na formulář vložit tři objekty Line a jeden Timer.


Const pi = 3.14

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Timer1.Interval = 1000

  With Line1
    .X1 = 200
    .X2 = 200
    .Y1 = 200
    .Y2 = 200
    .BorderColor = &HFF
    .BorderWidth = 1
  End With

  With Line2
    .X1 = 200
    .X2 = 200
    .Y1 = 200
    .Y2 = 200
    .BorderColor = &H0
    .BorderWidth = 2
  End With

  With Line3
    .X1 = 200
    .X2 = 200
    .Y1 = 200
    .Y2 = 200
    .BorderColor = &H0
    .BorderWidth = 4
  End With

End Sub

Private Sub Timer1_Timer()
  Hodinovka = Hour(Time)
  Minutovka = Minute(Time)
  Vterinovka = Second(Time)
 
  Hodinovka = (Hodinovka / 12) * 2 * pi
  Minutovka = (Minutovka / 60) * 2 * pi
  Vterinovka = (Vterinovka / 60) * 2 * pi

  With Line3
    .X2 = 200 + (100 * Cos(Hodinovka - 1.57))
    .Y2 = 200 + (100 * Sin(Hodinovka - 1.57))
  End With

  With Line2
    .X2 = 200 + (120 * Cos(Minutovka - 1.57))
    .Y2 = 200 + (120 * Sin(Minutovka - 1.57))
  End With<

  With Line1
    .X2 = 200 + (150 * Cos(Vterinovka - 1.57))
    .Y2 = 200 + (150 * Sin(Vterinovka - 1.57))
  End With
End Sub

Naše hodiny ale mohou pracovat i takto, zde nejsou potřeba tři objekty Line.


Const pi = 3.14

Private Sub Form_Load()
  Form1.ScaleMode = 3
  Form1.AutoRedraw = True
  Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
  Hodinovka = Hour(Time)
  Minutovka = Minute(Time)
  Vterinovka = Second(Time)
  Hodinovka = (Hodinovka / 12) * 2 * pi
  Minutovka = (Minutovka / 60) * 2 * pi
  Vterinovka = (Vterinovka / 60) * 2 * pi
  Cls

  Form1.DrawWidth = 4
  Line (200, 200)-(200 + (100 * Cos(Hodinovka - 1.57)), _ 
200 + (100 * Sin(Hodinovka - 1.57))), &H0
  Form1.DrawWidth = 2
  Line (200, 200)-(200 + (120 * Cos(Minutovka - 1.57)), _ 
200 + (120 * Sin(Minutovka - 1.57))), &H0
  Form1.DrawWidth = 1
  Line (200, 200)-(200 + (150 * Cos(Vterinovka - 1.57)), _ 
200 + (150 * Sin(Vterinovka - 1.57))), &HFF
End Sub

12.5 Digitální hodiny

Buďto si můžeme vytvořit hodiny jako segmentový display pomocí objektů Line, což ale znamená mnoho podmínek a mnoho kódů, nebo pomocí obrázků, což je jednodušší. K segmentovým displejům se vrátíme při tvorbě komponent ActiveX.


12.6 Domácí úkol

Tentokrát to nebude ani moc úkol a ani ho po vás nechci odevzdat, jen si prostě vyzkoušejte, co ony funkce umí a jak s nimi pracovat a jak jich využít při kreslení grafu. Třeba si zkuste převést sinusový průběh na průběh obdélníkový. Pokud si troufnete na trojúhelníkový průběh, je jen na vás, co s tím uděláte.


12.7 V další lekci...

Ukládání a načítání textových souborů, minimalizace a tlačítka na titulku okna, tvorba falešného FullScreenu a možnosti formuláře Focus.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Reklama
Reklama
Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý