Tartalomjegyzék
Visual Basic .Net nyelv
- Szerző: Sallai András
- Copyright © Sallai András, 2017
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Bevezetés
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.
Helló Világ
- hello.vb
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.
Megjegyzések
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
Kivitel
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)
Escape szekvenciák
Console.WriteLine("egy" & vbCrLf & "kettő")
Console.WriteLine("egy" & vbTab & "kettő")
Karakter megjelenítése kód alapján:
ChrW(8226)
Visual Basic adattípusok
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 |
Visual Basic változók
Változót mindig a Dim utasítással hozunk létre. A változók kétféleképpen hozhatók létre:
- explicit – megadom a változó nevét majd a típusát
- implicit – csak a változó nevét adom meg
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 konstansok
Nevesített állandót a Const módosítóval hozhatok létre, például:
Const Pi As Double = 3.1415
Operátorok
- aritmetikai
- összehasonlító
- összefűző
- logikai bitszintű
Aritmetikai
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
Összehasonlító
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 |
Precedencia
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 |
Formázott kivitel
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
Matematikai osztály
Console.WriteLine(Math.Abs(-9))
Console.WriteLine(Math.Sqrt(9))
Console.WriteLine(Math.Sin(1 * Math.PI / 180))
Console.WriteLine(Math.Pow(2, 4))
Dátum lekérdezése
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.
Véletlen szám generálás
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
Konvertálás
Bevitel
Szelekció
If a = 0 Then Console.WriteLine("Az a nulla") Else Console.WriteLine("Az a nem nulla") End If
Iteráció
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
Karaktersorozatok
Konkatenálás
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)
Hossz
Karaktersorozat hosszának mérése:
- hossz.bas
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é
'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 string egy része
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.
Trim
Dim s As String = " alma " Console.WriteLine(Trim(s))
ASCII kód
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"
Szöveg darabolása
- tomb.bas
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
Tömb
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
Dinamikus tömbök
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:
- lista.vb
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:
- Program01.vb
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:
- Program01.vb
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:
- arrayList.Clear() – össze elem törlése
- arrayList.Add(objektum) – egy elem hozzáadása
- arrayList.RemoveAt(index) – adott indexű elem törlése
- arrayList.Remove(objektum) – megadott elem törlése
- arrayList.Contains(objektum):bool – tartalmazás
- arrayList.Insert(index, objektum) – adott indexre beszúrás
- arrayList.IndexOf(object) : int – Keresés
- arrayList.LastIndexOf(object) : int – utolsó keresése
- arrayList.RemoveRange(int, int) – tartomány törlése
- arrayList.Sort() – rendezés
- arrayList.Reverse() – rendezés csökkenő sorrenbe
- ToArray() : object[] – tömbbé
Mezők:
- Count – az elemek száma
Lista bejárása:
- Program01.vb
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ó:
- Program01.vb
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.