Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:basic:visual_basic:visual_basic_.net_nyelv

< Visual Basic

Visual Basic .Net nyelv

  • Szerző: Sallai András
  • Copyright © Sallai András, 2017
  • Licenc: GNU Free Documentation License 1.3

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.

Linkek

oktatas/programozas/basic/visual_basic/visual_basic_.net_nyelv.txt · Utolsó módosítás: 2019/08/21 17:20 szerkesztette: admin