A Visual Basic .Net a Basic nyelvek egyik dialektusa, amelyet a Microsoft fejlesztett a Visual Studio IDE-vel együtt. A Visual Basic 6.0 után az Microsoft áttért .Net keretrendszerre, ezzel együtt az Objektum Orientált lehetőségekre.
A .Net keretrendszernek sokáig nem volt nyílt forráskódú, több platformos megvalósítása, ez keltette éltere a Mono nevű projektet, amely .Net keretrendszer klónjának is tekinthető.
A .Net keretrendszernek azóta megjelent egy Linuxra is telepíthető változata, amely .Net Core néven ismert, gyártója a Microsoft. Ez egyelőre csak C# és F# nyelven használható (2017), de ígérve van a Visua Basic támogatás is.
Az alábbi leírás Mono és/vagy .Net keretrendszeren is használható Visual Basic .Net nyelvet mutatja be.
Module Module1 Sub Main() Console.WriteLine("Helló Világ") End Sub End Module
Fordítás:
vbnc hello.vb
Futtatás:
mono hello.exe
vagy:
chmod +x hello.exe ./hello.exe
A Visual Basic .Net modulokkal dolgozik. A modulokat, a „Module” szóval kezdjük és az „End Module” szóval fejezzük be. A modulokon belül eljárásokat hozhatunk létre, amit „Sub” szóval kezdünk és „End Sub” szóval fejezünk be. A Module és Sub szavak után is meg kell adnunk a modul nevét. Minden programnak kötelezően tartalmazni kell egy Main nevű eljárást. A futtató ebből tudja, hogy melyik eljárást kell elsőként végrehajtani.
Visual Basic megjegyzéseket (') karakterrel kell bevezetni.
' Visual Basic megjegyzés
Akár utasítások után is állhat:
a = 35 ' értékadás
Console.WriteLine("egy") Console.WriteLine("kettő")
Console.Write("egy") Console.Write("kettő")
Változók kiíratása:
Dim a As Double = 35.27 Console.WriteLine(a)
Ha egy aritmetikai kifejezést írunk a zárójelbe, a kifejezés kiértékelődik, és annak eredménye jelenik meg.
Console.WriteLine(3 + 5)
Console.WriteLine("egy" & vbCrLf & "kettő")
Console.WriteLine("egy" & vbTab & "kettő")
Karakter megjelenítése kód alapján:
ChrW(8226)
név | méret | értéktartomány |
---|---|---|
Byte | 1 bájt | 0 – 255 (előjel nélkül) |
SByte | 1 bájt | -128 – 127 (előjeles) |
Short | 2 bájt | -32 768 – 32 767 (előjeles) |
UShort | 2 bájt | 0 – 65 535 (előjeles) |
Integer | 4 bájt | -2 147 483 648 – 2 147 483 647 (előjeles) |
UInteger | 4 bájt | 0 – 4 294 967 295 (előjel nélkül) |
Long | 8 bájt | -9 223 372 036 854 775 808 – 9 223 372 036 854 775 807 (előjeles) |
ULong | 8 bájt | 0 – 18 446 744 073 709 551 615 (1.8…E+19 †) (előjel nélkül) |
Single | 4 bájt | negatív értékek: -3.4028235E+38 – -1.401298E-45 pozitív értékek: 1.401298E-45 – 3.4028235E+38 |
Double | 8 bájt | negatív értékek számára: -1.79769313486231570E+308 – -4.94065645841246544E-324 pozitív értékek számára: 4.94065645841246544E-324 – 1.79769313486231570E+308 |
Decimal | 16 bájt | tizedesvessző nélkül: 0 – +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9…E+28) tizedesvesszővel: 0 – +/-7.9228162514264337593543950335 a tizedesvesszőtől jobbra 28 hely a legkisebb nem nulla szám: +/-0.0000000000000000000000000001 (+/-1E-28) |
Char | 2 bájt | 0 – 65535 (előjel nélkül) |
Boolean | attól függ hogyan implementálták az adott platformon | True vagy False |
String | megvalósítástól függ | 0 és 2 milliárd között Unicode karakter |
Date | 8 bájt | január 1, 0:00:00 (éjfél), 0001 -től – december 31-ig délután 11:59:59, 9999 |
Object | 32 bites platformon 4 bájt 64 bites platformon 8 bájt | bármilyen típusú osztály tárolható benne |
Változót mindig a Dim utasítással hozunk létre. A változók kétféleképpen hozhatók létre:
Dim a Dim b As Integer
A változónak rögtön értéket is adhatok:
Dim x As Integer = 100 Dim y As Integer = 6
Vagy vegyesen:
Dim x As Integer = 100 Dim y As Integer = 6 Dim z As Integer
Nevesített állandót a Const módosítóval hozhatok létre, például:
Const Pi As Double = 3.1415
operátor | leírás |
---|---|
+ | összeadás |
- | kivonás |
* | szorzás |
/ | osztás |
\ | egész osztás |
^ | hatványozás |
Dim x As Integer x = 5 + 2 x = 4 - 2
Dim x As Integer = 49 Dim y As Integer y = -x
Szorzás osztás:
Dim y As Double y = 27 * 17.48 y = 12 / 5
Hatványozás:
Dim z As Double z = 2 ^ 3
Egész osztás:
Dim k As Integer k = 23 \ 5 ' k értéke 4
Modulus képzés:
Dim x As Integer = 100 Dim y As Integer = 6 Dim z As Integer z = x Mod y ' z tartalma 4
Dim a As Double = 100.3 Dim b As Double = 4.13 Dim c As Double c = a Mod b ' c értéke: 1.18
Számok összehasonlítása | |
---|---|
operátor | példa |
= | 3 = 3 eredménye true |
> | 3 > 3 eredménye false |
< | 3 < 2 eredménye false |
>= | 3 >= 2 eredménye true |
<= | 3 <= 2 eredménye false |
operátor | precedencia sorrend |
---|---|
( ) | mindig elsőként értelmezve |
^ | hatványozás |
– | negáció negatív számmá alakít |
* / | szorzás és osztás |
\ | egész osztás |
Mod | modulusképzés |
+ - | összeadás és kivonás |
Százalék:
Dim a As Double = 35.27 Console.WriteLine(FormatPercent(a)) ' 3 527,00%
Console.WriteLine("{0} %", 10) ' 10 %
Forint:
Dim a As Double = 35.27 Console.WriteLine("{0:c}", a) ' 35 Ft
Fixpontos alak:
Console.WriteLine("{0:f}", 10) ' 10,00
Lebegőpontos alak:
Console.WriteLine("{0:e}", 10) ' A kimenet: 1,000000e+001
Vezető nullák:
Console.WriteLine("{0:00000}", 10) 'A kimenet: 00010
Hány helyen legyen ábrázolva:
Console.WriteLine("{0,10}", 10) 'A kimenet: 10
Kombinálva:
Console.WriteLine("Érték: {0,10:00000}", 85) ' A kimenet: ' Érték: 00085 Console.WriteLine("Érték: {0,-10:00000}", 85) ' A kimenet ' |Érték: 00085 |
Negatív számok és a nulla:
Console.WriteLine("{0:#;minusz #}", 85) Console.WriteLine("{0:#;minusz #}", -85) Console.WriteLine("{0:#;minusz #;nulla}", 0) ' 85 ' minusz 85 ' nulla
Ezredes tagolás:
Console.WriteLine("{0:+### ### ### ###}", 123456789123) '+123 456 789 123
Telefonszám egy lehetséges formátuma:
Console.WriteLine("{0:##-####-#####}", 1234567891) ' 1-2345-67891
Tizedesjegyek száma:
Console.WriteLine("{0:#.##}", 55.3242) ' 55,32
Dim a As Double = 35.27 Console.Write(Format(a, "###0.0000")) ' 35,2700
Console.WriteLine(Math.Abs(-9))
Console.WriteLine(Math.Sqrt(9))
Console.WriteLine(Math.Sin(1 * Math.PI / 180))
Console.WriteLine(Math.Pow(2, 4))
Console.WriteLine(Now)
' 2017.04.11. 23:47:23
Console.WriteLine(Format(Now, "yyyy-MM-dd")) ' 2017-04-11
Console.WriteLine(Format(Now, "HH:mm")) ' 23:46
Console.WriteLine(Format(Now, "yyyy. MMMM. dd.")) ' 2017. április. 11.
Console.WriteLine(Format(Now, "yyyy. MMM dd.")) ' 2017. ápr. 11.
Dobókocka dobás szimulációja:
Module Modul1 Sub Main() Dim generator As New Random Dim kockaDobas As Integer kockaDobas = Int(generator.Next(1, 7)) Console.WriteLine(kockaDobas) End Sub End Module
If a = 0 Then Console.WriteLine("Az a nulla") Else Console.WriteLine("Az a nem nulla") End If
For i As Integer = 0 To 10 Console.WriteLine(i) Next
Dim index As Integer = 0 While index <= 10 Console.WriteLine(index.ToString & " ") index += 1 End While
Dim szam As Integer = 0 Do Debug.Write(szam.ToString & " ") szam += 1 Loop Until szam > 10
Kollekció bejárása:
For Each egyElem As Object In kollekció 'Amit szeretnénk csinálni az egyes elemekkel Next egyElem
Dim mondat As String = "egy" Console.WriteLine(mondat & " kettő")
Dim s1 As String = "egy" Dim s2 As String = "kettő" Dim s3 As String s3 = s1 + s2 Console.WriteLine(s3)
Karaktersorozat hosszának mérése:
Module Module1 Sub Main() Dim szoveg As String Dim meret As Integer szoveg = "alma:körte:barack" meret = Len(szoveg) Console.WriteLine(meret) End Sub End Module
'Nagybetűsség alakítás Dim mondat As String = "Egy alma 1234" 'Eredmény: "EGY ALMA 1234". Dim negybetus As String = UCase(mondat)
A sztring egy részét a Mid$ vagy Mid függvénnyel vehetjük:
Module Module1 Sub Main() Dim mondat As String = "Egy alma" Dim resz As String = Mid(mondat, 1, 3) Console.WriteLine(resz) End Sub End Module
A „Egy” szó íródik a képernyőre.
Dim s As String = " alma " Console.WriteLine(Trim(s))
Dim a As Integer '65 kerül bele: a = Asc("A") 'a értéke 97: a = Asc("a") 'a értéke 65 a = Asc("Ananász")
Dim ch As Char ch = Chr(65) ' értéke "A" ch = Chr(97) ' értéke "a"
Module Module1 Sub Main() Dim szoveg As String Dim tomb(4) As String szoveg = "alma:körte:barack" tomb = Split(szoveg, ":") Console.WriteLine(tomb(1)) End Sub End Module
Dim tomb(4) As Integer tomb(0) = 35 tomb(1) = 27 tomb(2) = 37 tomb(3) = 63 tomb(4) = 92 Console.WriteLine(tomb(0))
Dim nevek(4) As String nevek(0) = "Mari" nevek(1) = "Kati" nevek(2) = "Teri" nevek(3) = "Lali" nevek(4) = "Dani" Console.WriteLine(nevek(0))
Kezdőértékkel:
Dim nevek As String() = {"Tomi", "Kati", "Mari", "Teri"} Console.WriteLine(nevek(0))
Tömb bejárása:
Dim nevek As String() = {"Tomi", "Kati", "Mari", "Teri"} For Each nev As String In nevek Console.WriteLine(nev) Next nev
Module Modul1 Sub Main() Dim lista As New System.Collections.Generic.List(Of String)() lista.Add("egy") lista.Add("kettő") lista.Add("három") Console.WriteLine(lista(0)) End Sub End Module
Module Modul1 Sub Main() Dim lista As New System.Collections.ArrayList lista.Add("egy") lista.Add("kettő") lista.Add("három") Console.WriteLine(lista(0)) End Sub End Module
Importálás fordításkor:
Module Modul1 Sub Main() Dim lista As New ArrayList lista.Add("egy") lista.Add("kettő") lista.Add("három") Console.WriteLine(lista(0)) End Sub End Module
Fordítás:
vbnc lista.vb -imports:System.Collections
Osztállyal:
Public Class Program01 Public Shared Sub Main() Dim lista As New ArrayList lista.Add("egy") lista.Add("kettő") lista.Add("három") Console.WriteLine(lista(0)) End Sub End Class
Fordítás:
vbnc Program01.vb -imports:System.Collections
Importálás forrásból:
Imports System.Collections Public Class Application Public Shared Sub Main() Dim lista As New ArrayList lista.Add("egy") lista.Add("kettő") Console.WriteLine(lista(0)) End Sub End Class
Metódusok:
Mezők:
Lista bejárása:
Imports System.Collections Public Class Application Public Shared Sub Main() Dim lista As New ArrayList lista.Add("egy") lista.Add("kettő") lista.Add("három") lista.Add("négy") For Each nev As String In lista Console.WriteLine(nev) Next nev End Sub End Class
Kollekció:
Public Class Application Public Shared Sub Main() Dim lista As New Collection lista.Add("egy") lista.Add("kettő") lista.Add("három") System.Console.WriteLine(lista(1)) End Sub End Class
A kollekcióknál az indexelés 1-től kezdődik, ellentétben a ArrayListtel és a Listtel.