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

VB - 12. lekceVB - 12. lekce

 

VB - 12. lekce

Google       Google       30. 4. 2005       19 562×

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...

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 Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý