VISUAL BASIC.NET
·
malá a velká anglická abeceda
·
čísla 0 – 9
·
operátory +, -, *, /, >,< ,=, =>, =<,<>
·
pomocné znaky ( ) { } [ ] , ; “” : . ;
Proměnná je speciální kontejner pro dočasné uložení dat v programu.
Programátor je vytváří příkazem.
· Celočíselné
primitivní typy :
Byte (8-bit) 0 to 255
Short (16-bit) - 32 768 to 32 2767
Integer (32-bit) -2 147 483 648 to +2 147 483 647.
Long
(64-bit) -
9 223 372 036 854 775
808 to
+9 223 372 036 854 775 807
· Primitivní typy
s pohyblivou čárkou :
Single
(64-bit) –(3.4028235E+38 through -1.401298E-45) to
+(1.401298E-45
through 3.4028235E+38)
Duble
(128-bit)
-(1.79769313486231570E+308 through
-4.94065645841246544E-324)
+(4.94065645841246544E-324 through
1.79769313486231570E+308)
TABULKA TYPŮ
Visual Basic type |
Common language runtime
type structure |
Nominal storage
allocation |
Boolean |
System.Boolean |
2
bytes |
Byte |
System.Byte |
1
byte |
Char |
System.Char |
2
bytes |
Date |
System.DateTime |
8
bytes |
Decimal |
System.Decimal |
16
bytes |
Double |
System.Double |
8
bytes |
Integer |
System.Int32 |
4
bytes |
Long
|
System.Int64 |
8
bytes |
Object |
System.Object (class) |
4
bytes |
Short |
System.Int16 |
2
bytes |
Single |
System.Single |
4
bytes |
String
|
System.String (class) |
Depends
on implementing platform |
User-Defined
Type |
(inherits
from System.ValueType) |
Depends
on implementing platform |
Structure zak
<VBFixedString(20)> Dim Jmeno As String
<VBFixedString(30)> Dim Prijmeni As String
Dim Datum_narozeni As
Date
Dim Prospech As Single
End Structure
· Sčítání +
· Odčítání -
· Násobení *
· Dělení /
· Celočíselné dělení \
· Zbytek Mod
· Rovná se =
· Umocnění na ^
=, ^=, *=, /=, \=, +=, &=
=, <, >, <=,>=,><,Like, Is
+, &
And, Or, Not, Xor,
AndAlso
expression1 |
expression2 |
Value of result is |
True |
True |
True |
True |
False |
False |
False |
(not
evaluated) |
False |
OrElse
expression1 |
expression2 |
Then result is |
True |
(not
evaluated) |
True |
False |
True |
True |
False |
False |
False |
AddressOf, GetType
Výraz je kombinace litrálů, operátorů a
čísel Např.:
Objem = a^2*b, nebo d^(1/2) + 7
Private Sub < Název > (
[Parametr 1,….,Parametr n
] )
Příkaz1
Příkaz n
End Sub
Private Function < Název > ( [Par 1,.,Par n ] ) as
<Typ>
Příkaz1
Příkaz n
End Function
1. První
příkazy
a. Instalace knihovny
Klíčové slovo: Imports
Příklady: Imports System.Console
Imports System.Windows.Forms
Imports System.Drawing.Graphics
Imports
System.Drawing.Drawing2D
b.
Práce s
programovými moduly
Klíčové slovo: Module, End Module
Příklady: Module
Module1
End Module
c.
Vstupní bod
programu
Název procedury : Main
Příklady: Sub Main()
Dim
Pomoc As String
Dim D As Single
vstup()
zadání()
výpočet()
Pomoc = Console.ReadLine
End Sub
Sub Main(ByVal CmdArgs() As String)
End Sub
d.
Deklarace
proměnných
Klíčové
slovo: Dim,Static,Public
Příklady: Dim A, B,
C As String
Static Vstup As String = 9
Public Okno As Object =
Form1
e.
Příkazy pro
práci s Konsolou
Příkaz : Console.Write
Příklady: Console.Write("Zadejte
parametr a :")
Console.Write(a)
Console.Write(Val(a)&" "&
Val(b)&Chr(10))
Funkce
: Val(<String>) As Duble
Str(<Nuber>) As String
Příkaz: Console.WriteLine(<string>)
Příklad: Console.WriteLine("Zadejte a :")
Příkaz: Console.Read() As Integer
Příklad: A = Console.Read
Příkaz: Console.ReadLine() As String
Příklad: B = Console.ReadLine()
Příkazy:
větvení programu
·
If <PODMÍNKA> Then <PŘÍKAZ>
·
If <PODMÍNKA> Then <PŘÍKAZ 1> Else <PŘÍKAZ
2>
·
If <PODMÍNKA> Then
PŘÍKAZ
1
PŘÍKAZ
N
End If
·
If <PODMÍNKA> Then
PŘÍKAZ
1
PŘÍKAZ
N
Else
PŘÍKAZ N+1
PŘÍKAZ
N+M
End If
·
If <PODMÍNKA1> Then
PŘÍKAZ
1
PŘÍKAZ
N
ElseIf <PODMÍNKA2> Then
PŘÍKAZ N+1
PŘÍKAZ
N+M
Else
[ If <PODMÍNKA1> Then
Exit If ]
PŘÍKAZ N+M+1
PŘÍKAZ
K
End If
Příkaz:
·
Select Case <Proměnná>
Case <Hodnota1>
PŘÍKAZ 1
PŘÍKAZ
N
Case <Hodnota2>
PŘÍKAZ N+1
PŘÍKAZ
N+M
Else
PŘÍKAZ N+M+1
[ If <PODMÍNKA1> Then
Exit Select]
PŘÍKAZ
K
End Select
Příkazy:
cyklu
·
Do While <PODMÍNKA>
PŘÍKAZ 1
[If <PODMÍNKA1> Then
Exit Do ]
PŘÍKAZ
N
Loop
·
Do
PŘÍKAZ 1
[If <PODMÍNKA1> Then
Exit Do ]
PŘÍKAZ
N
Loop While <PODMÍNKA>
·
For i = 0
To 25 [Step 5]
PŘÍKAZ 1
[If <PODMÍNKA1> Then
Exit For ]
PŘÍKAZ
N
Next i
Příkazy: pro
práci se soubory
Public Sub FileOpen( _
ByVal FileNumber As Integer, _
ByVal FileName As String, _
ByVal Mode As OpenMode, _
Optional ByVal Access As OpenAccess = _
OpenAccess.Default, _
Optional ByVal Share As OpenShare = _
OpenShare.Default, _ Optional ByVal RecordLength As Integer = -1)
·
FileNumber As Integer
· Císla 1,2,.. nebo FreeFile
·
FileName As String
·
"F:\Documents and
Settings\jirka\Plocha\pokus\aa.vbc"
·
Mode As OpenMode
Append, Binary, Input, Output, or Random
·
Access As OpenAccess
Read, Write, or ReadWrite. Defaults
to ReadWrite.
· Share
Shared, Lock Read, Lock Write, and Lock Read Write. Defaults to Shared
· RecordLength As Integer
Příklady:
a)
FileOpen(
1, "TESTFILE", OpenMode.Input)
b)
FileOpen(
1, "TESTFILE", OpenMode.Append)
c)FileOpen(
1, "TESTFILE", OpenMode.Output)
d) FileOpen(1, "F:\Documents
and _ Settings\jirka\Plocha\pokus\aa.vbc",_ OpenMode.Random,
OpenAccess.ReadWrite, , 60)
· FileClose(FileNumber)
· PrintLine
Příklady: tisk do textového souboru
FileOpen(
1, "TESTFILE.txt", OpenMode.Append)
' Tiskne test do
souboru.
Print(1, "To je test.")
' Tiskne prázdný
řádek.
PrintLine(1)
'Tiskne dva
sloupce.
PrintLine(1, "Sloupec 1", TAB(), "Slouprc 2")
' Vytiskne dva
řetězce a mez nimi mezeru.
PrintLine(1, "Nazdar", "
", "studenti")
' Vytiskne 5 mezer a
potom text.
PrintLine(1, SPC(5), "5 mezer ")
'Tiskne od desátého
písmene
PrintLine(1, TAB(10), "Hello")
' Tisk Booleanské
proměnné a tisk času.
Dim aBool As Boolean
Dim aDate As DateTime
aBool = False
aDate =
DateTime.Parse("February 12, 1969")
PrintLine(1, aBool, " is a
Boolean value")
PrintLine(1, aDate, " is a
date")
FileClose(1)
Příklady: tisk do souboru s náhodným přístupem
Structure zak
<VBFixedString(20)> Dim Jmeno As String
<VBFixedString(30)> Dim Prijmeni As String
Dim
Datum_narozeni As Date
Dim
Prospech As Single
End Structure
Dim k,
s as zak
FileOpen(2, "F:\Documents and _
Settings\jirka\Plocha\pokus\aaa.vbc",_ OpenMode.Random,
OpenAccess.ReadWrite)
k.Jmeno = "Jiří"
k.Prijmeni = "Novák"
k.Datum_narozeni = 29.08.95
k.Prospech = 1.2
FilePut(2, k, 1)
FileGet(2, s, 1)
Console.Write(s.Jmeno & " " & s.Prijmeni)
FileClose(2)
Objektově
orientované programování pro Windows
Object
obsahuje vnitřní paměť
obsahuje metody objektu
Vlastnosti objektu
má schopnost přijímat a zpracovávat zprávy zvnějšku
může obsahovat jiné objekty
Zapouzdření - encapsulating
A,B,C,
D jsou metody
Objekt AAAA
volá metodou B objekt BBBB.K
Objekt BBBB odpovídá metodou J AAAA.D
Syntax je < název objektu > . <metoda>
Nechť
objekt OBJ1 má takovou paměť ‘následuje
deklarace vnitřní paměti
Nechť
objekt OBJ1 má takovéto metody
‘následuje deklarace metod
Nechť objekt OBJ1 má následující protokol
zpráv
Zavedení pojmu třída
Snažíme se zbavit opakování
deklarace objektů při tvorbě novch objrktů.
Zavedeme nový object Třída tento
object bude mít ve svém protokolu zpráv zvláštní zpravu vytvoř nový object
podle vlastností, metod a událostí ,které obsahuješ.
V konkrétním programovacím
jazyce zavádíme třídu jako jeden z typů
Zavedení
pojmu dědičnosti v OOP
·
V našem pojetí není dědičnost „základním
pojmem“ ale odvozeným.
Z toho plyne pokud je nějaký pojem odvozený je vysvětlitelný.
Pro vysvětlení použijeme nový objekt v našem pomyslném
systému Klient banky
Klient banky je Osoba, ale má taky další vlastnosti např. Bonitu atd.
·
Jednou z možností je rozšířit vlastnosti
osoby a vytvořit třídu Klient banky
Jaký je vztah mezi třídou Osoba a Klient nejsou totožné ale „jsou si podobné“ v tom smyslu, že každá vlastnost Osoby je také vlastností Klienta. Tedy můžeme řící , že
vlastnosti Osob jsou podmnožinou vlastností Klienta.
Řešení
průniku pomocí skládání objektů
1. zavedeme třídu Osoba
2.
zavedeme
třídu Klient a do této třídy vložíme
třídu Osoba
3.
zavedeme
třídu Zaměstnanec a do této třídy
vložíme třídu Osoba
Vztah generalizace a specializace v OOP
Důležité je, že bez
ohledu jak je tento vztah vyjádřen kódem a jak je pojmenován je třeba ho
formulovat při analýze projektu.
Ať budeme programovat v C++, nebo V. Basic , nebo v jiném objektovém
jazyce je postup generalizace – specializace nezávislý na konečném vyjádření
v kódu.
Zavedení
pojmu dědičnosti
Ve
Visual Basicu ho řešíme výše uvedeným způsobem – vkládáním
Abychom
se vyhnuli pracnému vyvádění zpráv Osoby ven a dovnitř objektu Klient
nebo Zaměstnanec zavedeme pojem dědičnost. Na př v C++ nebo
v Delphi jde o syntaktickou dohodu, týkající se nového možného vztahu mezi
třídami :
Dědičnost je
vztah, který zautomatizuje vložení pomocné instance, tak jako jsme to na
příkladu učinili zapsáním kódu , přičemž
dané vývojové prostředí, které tuto syntaktickou dohodu plní to provede za nás.
Pozor:
dědění je vztahem mezi třídami nikoliv mezi objekty, ktré z těchto tříd
vznikly tyto objekty mají v konečném důsledku průnik vlastností právě díky
vztahu jejich tříd.
VB.Net
nebo C++ atd. – umím něco protože moje třída je dědicem jiné třídy
2. Formuláře – WindowsForm
Vnoření knihoven:
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Form
System.ComponentModel.Design.CollectionEditor.CollectionForm
System.Web.UI.Design.WebControls.CalendarAutoFormatDialog
System.Windows.Forms.Design.ComponentEditorForm
System.Windows.Forms.PrintPreviewDialog
Formulář
– Form (dále jen Form) je representantem každého okna které zobrazíte ve vaší
aplikaci. Vytváří se z třídy (dále jen class) Form, která vytváří
standardní systémové windousovské pohyblivé okno. Je ale možné také vytvořit
z této třídy modální okno a dialogové okno, nebo při aplikaci s více
okny tak zvanou „MDI Form“ a její děti „MIDI child“
Jak plyne z teorie objektově
orientovaného programování obsahuje object Form vnitřní paměť, ve které jsou
uloženy nastavení všech vlastností okna jako je velikost, barva, text a
další.Tyto vlastnosti – properties (dále jen properties) je možno nastavovat staticky v režimu design, a
dynamicky při běhu programu pomocí zpráv.
Teorie objektově programovaného
programování umožňuje vytvářet programy řízené událostmi. Třídy objektů
obsažené v knihově Systém obsahují celou řadu metod pro řízení událostí
které mohou v okně vzniknout. Událost – events je v okně kódů představována prázdnou procedurou která
se vyvolá v okamžiku vniku dálosti pokud událost obsahuje parametry ta
tyto parametry zasílá systém do procedury.
Příklad:
Private Sub Kalkulator_KeyUp(ByVal sender As Object,
ByVal e As
System.Windows.Forms.KeyEventArgs) _
Handles MyBase.KeyUp
End Sub
Tuto událost vyvolá stisknutí klávesy. Pokud
si přejeme aby na tuto událost program reagoval musíme
napsat podprogram, který vyřeší jak. Např.
Příklad:
Private Sub Kalkulator_KeyUp(ByVal sender As Object,
ByVal e As
System.Windows.Forms.KeyEventArgs) _
Handles MyBase.KeyUp
Kalkulator.ActiveForm.BackColor = _
System.Drawing.Color.Azure
End Sub
Formulář
se vytváří pomocí „Form Constructoru“ New
Příklad:
Public Sub New()
'Následující příkaz je důležitý pro vytvoření okna systémem.
MyBase.New()
'Následující příkaz vyvolá inicializaci komponent
InitializeComponent()
End Sub
Pokud pracujete
s vývojovým prostředím, pak tuto proceduru vytvoří vývojové prostředí
stejně jako „Form Destruktor“ Dispose
který odstraní Form z paměti
Příklad:
Protected Overloads Overrides Sub
Dispose(ByVal _ disposing As Boolean)
If
disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End
If
End If
MyBase.Dispose(disposing)
End Sub
Formulář se vytvoří příkazem
Dim Form1 As New Form()
Formulář se odstraní z paměti
příkazem
Me.Dispose()
Ukládání dat
Souborová koncepce ve VB.net
Dvouvrstvá
architektura
Třívrstvá
architektura
Využití
dědičnosti pro vytváření objektů střední třídy
Návrh
struktury dědičnosti příklad:
String Class | System Namespace
String
Constructor |
Inicializuje volání třídy |
Empty |
Representuje prázdný řetězec |
Chars Dim a As String a = "Praha" TextBox1.Text = a.Chars(3) |
Vrátí pismeno na zadané posici v daném případě „h“ |
Length Dim a As String a = "Praha" TextBox1.Text = a.Length |
Vrátí počet písmen v řetězci. V daém případě vrátí číslo „5“ |
Compare Overloads Public Shared Function Compare( _ ByVal strA As String, _ ByVal indexA As Integer, _ ByVal strB As String, _ ByVal indexB As Integer, _ ByVal length As Integer, _ ByVal ignoreCase As Boolean, _ ByVal culture As CultureInfo ) As Integer Dim a, b As String a = "Prah" b = "Praha" TextBox1.Text =
a.Compare(b, Dim a, b As String a = "Prkh" b = "Praha" TextBox1.Text =
a.Compare(b, Dim a, b As String a = "Prab" b = "Praha" TextBox1.Text = a.Compare(b, |
Overloaded. Porovnává řetězce
obsah a délku. Vrácí 0 neboť „ah“ = „ah“ Vrácí -1
neboť „kh“ > „ah“ Vrácí 1 neboť „ab“ < „ah“ |
Copy Dim a, b As String a = "Praha" b = " a = a.Copy(b) TextBox1.Text = a |
Obsahem proměnné „a“ bude “ |
CopyTo Dim a As String Dim
b(10) As Char a = "Praha" b = "aaaaaaa" a.CopyTo(1, b, 2, 2) TextBox1.Text = b |
Kopíruje určitý počet písmen ze specifické posice instance do specifické posice pole písmen Unicodu Výsledek „aaraaaa“ |
EndsWith Dim a, b As String a = "Praha" b = "ha" TextBox1.Text =
a.EndsWith(b) |
Zjišťuje zadali řetězec končí
zadaným podřetězcem V daném případě je výsledek
„True“ |
Equals Dim a, b As String a = "Praha" b = "ha" TextBox1.Text =
a.Equals(b) |
Overloaded. Overridden. Zjíšťuje
zda se řetězce rovnají. Vdaném příkladu je výsledek „False“ |
Format Dim a, b, c, d As String a = "Praha" TextBox1.Text = a.Format("Město {0,-20}je _ velkoměsto", a) |
Overloaded. Vymění každý formát v specifikovaném řetězci za specifikovaný řetězec korespondující s původní hodnotou |
GetType (inherited from Object) Dim a As String Dim c
As Integer a = "Praha" TextBox1.Text = a.GetType.ToString TextBox2.Text =
c.GetType.ToString |
Vrátí jako hodnotu typ instance Vrátí: System.String System.Int32 |
GetTypeCode Dim a As String Dim c
As Integer a = "Praha" TextBox1.Text = a.GetTypeCode TextBox2.Text = c.GetTypeCode End
Sub |
Vrátí číslo typu kódu v daném
případě : 9 18 |
Insert Dim a, b As String a = "Praha" b = "Město " TextBox1.Text =
a.Insert(0, b) |
Vloží určitou instanci řetězce
na indexem specifikovanou pozici do daného řetězce. Výsledek je „Město Praha“ |
Join Dim a As String Dim
b() As String
= {" jablko", " _ pomeranč", " švestka", "
meruňka"} a = a.Join(",", b) TextBox1.Text = a &
" jsou druhy ovce" |
Spojí zadané prvky pomocí zadaného
separátoru „jablko, pomeranč, švestka, meruňka jsou druhy ovce“ |
LastIndexOf Dim a, b, c, d As String a = "Praha aha" d = "Praha" b
= "ah" c = "z" TextBox1.Text = a.LastIndexOf(b) TextBox2.Text = a.LastIndexOf(c) TextBox3.Text =
a.LastIndexOf(d) |
Vrací index posledního výskytu retězce v dané instanci Vysledek: 6 -1 0 |
PadLeft Dim a, b As String Dim
str As String a = "Praha aha" b = a.PadLeft(25) TextBox1.Text = b b = a.PadLeft( TextBox2.Text = b |
Overloaded. Pravý konec řetězce je
zarovnán udaný počet znaku od leva „
Praha aha“ nebo před řetězec jsou vytisknuty
zadaná písmena „…………Praha
aha“ |
PadRight b = a.PadRight(25,
"/") TextBox2.Text = b |
Stejně jako v předchozím
případě ale zprava zarovnávano zleva „Praha
aha////////////////“ |
Remove Dim a, b As String a = "Praha aha" b = a.Remove(6, 3) TextBox1.Text = b |
Vymaže určený počet znaků od určitého znaku . Výsledek: „Praha“ |
Replace Dim a, b As String a = "Praha bra" b = a.Replace("bra", "
hlavní město") TextBox1.Text = b |
Vymění určitou část řetězce jiným
řetězcem „Praha hlavní město“ |
Dim a, b(), c As String Dim i
As Byte a = "jablko, pomeranč, švestka,
meruňka" b = a.Split(",") For i
= 0 To 3 c = c & b(i) & vbCrLf Next TextBox1.Text = c |
Opak Join rozdělí řetězec podle daného separátoru do zadaného pole. Výsledek: „jablko“ -
b(0) „
pomeranč“ - b(1) „
švestka“ - b(2) „ meruňka“ - b(3) |
StartsWith Dim a, c As String Dim b
As Boolean a = "jablko, pomeranč, švestka,
meruňka" b = a.StartsWith("pmeranč") TextBox1.Text = b b = a.StartsWith("jablko") TextBox2.Text = b |
Zjišťuje jest-li řetězec začíná
uvedeným řetězcem Výsledek: False True |
Substring Dim a, b As String a = "jablko, pomeranč, švestka,
meruňka" b = a.Substring(8) TextBox1.Text = b b = a.Substring(8, 8) TextBox2.Text = b |
Overloaded. Vytvoří zadaný
podřetězec. Výsledek: „pomeranč,
švestka, meruňka“ „pomeranč“ |
ToCharArray Dim a As String Dim
b() As Char a = "jablko, pomeranč, švestka,
meruňka" b = a.ToCharArray(8, 8) TextBox1.Text = b |
Overloaded. Kopíruje zadaný počet písmen od zadaného indexu do pole písmen. Výsledek: „pomeranč“ |
ToLower Dim a, b As String a = "STRACH" b = a.ToLower TextBox1.Text = b |
Overloaded. Změní všechna velká písmena na malá. Výsledek: „strach“ |
ToUpper Dim a, b As String a = "strach" b = a.ToUpper TextBox1.Text = b |
Změní všechna malá písmena na
velká Výsledek: „STRACH“ |
Trim |
Overloaded. Odstraní všechny
mezery z řetězce |
TrimEnd |
Odstraní všechny mezery z konce řetězce |
Left Public Shared Function Left( ByVal Str As String,ByVal Length As Integer ) As String Dim a, b As String a = "Praha je město " b = Microsoft.VisualBasic.Left(a, 6) TextBox1.Text = b |
Vrátí
zadaný počet písmen zleva. Výsledek:
„Praha“
|
Right Public Shared Function Right( ByVal Str As _ String,ByVal Length As Integer )As String Dim a, b As String a = "Praha je město " b = Microsoft.VisualBasic.Right(a, 6) TextBox1.Text = b |
Vrátí zadaný
počet písmen zprava. Výsledek:
„město“
|
Mid Public Shared Function Mid(ByVal Str As String,_ ByVal Start As Integer,Optional ByVal Length _ As_ Integer) As String Dim a, b As String a = "Praha je město " b = Microsoft.VisualBasic.Mid(a, 7,
2) TextBox1.Text = b End Sub |
Vrátí
zadaný počet písmen od určitého indexu.
Výsledek:
„je“
|