Programmeercursus O.O.P. met VISUAL BASIC.NET
description
Transcript of Programmeercursus O.O.P. met VISUAL BASIC.NET
Programmeercursus
O.O.P. met
VISUAL BASIC.NET
Frans Vanrillaer & John Evans
Les 2
.NET Interne opbouw.NET Framework
.Net
Fram
ew
ork
.Net
Fram
ew
ork
Windows 2000 / NT / XPWindows 2000 / NT / XP
VB.NETVB.NET C#C# VC++.NETVC++.NET J#.NETJ#.NET JScriptJScript …….…….
Common Type SystemCommon Type System
Client-SideClient-Side Server-SideServer-Side Mobile-SideMobile-Side
Base Class Library Base Class Library
Common Language Runtime Common Language Runtime
WindowsWindows COM+ Services COM+ Services
.NET FrameworkBase Class Library
System System.Collections System.Data System.Drawing System.IO System.Reflection System.Security System.Text System.Threading System.Timers System.Web System.Windows.Forms System.Xml Microsoft.CSharp Microsoft.VisualBasic
Enkele belangrijke Namespace’s
Console ApplicatieAutomatische Code
Module Module1
End Module
Sub Main( )
End Sub
Naam vd ModuleWordt meestal geweizigd
Noodzakelijk begin
Keyword van een Module
Begin Keyword van een
Subroutine
Sluit Subroutine afSluit Module af
Start naam
Imports System
We maken het ons gemakkelijk en importeren expliciet de namespace
System
Console.WriteLine (" " "Hello VB.NET " " " )
Class van SystemFunctie van deze Class
Klik ‘F5’ of L-muis klik op:
Console ApplicatieMet Command-Line Argumenten
Pas de code als volgt aan :
Module Module1 Sub Main ( ByVal args( ) As String )
Dim s As String For Each s In args
Console.WriteLine ( s ) Next
End Sub End Module
Imports System
Hoe laat men deze code RUNNENHoe laat men deze code RUNNEN
Les Overzicht Datatypes
Controle Structuren
Proceduren
Option Strict
Type Conversie
ByVal/ByRef
Meerdere Modules
VB.NETDataTypes
CharCharBooleanBoolean
AndereAndere
Floating Point
Floating Point
• Single• Double
• Single• Double
• String• Date• Object
• String• Date• Object
SignedSigned
• Short• Integer• Long
• Short• Integer• Long
UnsignedUnsigned
• Byte• Decimal• Decimal
Geheelgetal
Geheelgetal Komma
getalKomma
getal
Value TypeValue Type
Reference Type
Reference Type
VB.NETDataTypes Detail
Char
ByteShortIntegerLong
SingleDoubleDecimal
Boolean
Date
Char
ByteShortIntegerLong
SingleDoubleDecimal
Boolean
Date
0
0
0.0
False
1/1/0001 12:00:00 AM
0
0
0.0
False
1/1/0001 12:00:00 AM
2
1248
48
16
1
8
2
1248
48
16
1
8
Gereserveerde Datatype Initiële waarde Stack plaats
Gereserveerde Datatype Initiële waarde Stack plaats
VB.NETDataTypes Detail
Char
ByteShortIntegerLong
SingleDoubleDecimal
Boolean
Date
Char
ByteShortIntegerLong
SingleDoubleDecimal
Boolean
Date
+255
+255 +-32.767 +-2.147.483.647 +-9.223.372.036.854.775.808
+-3,41E+38 +-1.80E+308+/-79.228.162.514.264.337.593.543.950.335
True
12/31/2999 11:59:59 PM
+255
+255 +-32.767 +-2.147.483.647 +-9.223.372.036.854.775.808
+-3,41E+38 +-1.80E+308+/-79.228.162.514.264.337.593.543.950.335
True
12/31/2999 11:59:59 PM
C
S
D
1
#
C
S
D
1
#
Datatype Max waardeDatatype Max waarde
VB.NETDataTypes Gebruik
Dim i, j As IntegerDim name As StringDim val As BooleanDim choice As Char Dim sal As Single
Dim i, j As IntegerDim name As StringDim val As BooleanDim choice As Char Dim sal As Single
Definiëren
Dim id As Integer = 10Dim name As String = "KICIT"Dim val As Boolean = TrueDim choice As Char = "y"Dim sal As Single = 3500.75
Dim id As Integer = 10Dim name As String = "KICIT"Dim val As Boolean = TrueDim choice As Char = "y"Dim sal As Single = 3500.75
Definiëren & Initializeren
Const m As Integer = 10Const pi As Single = 3.14Const n As String = "Hi" Const ch As Char = "y"
Const m As Integer = 10Const pi As Single = 3.14Const n As String = "Hi" Const ch As Char = "y"
Constanten
Dim i = 10, j = 10 As IntegerDim b As Boolean = TrueDim m, k As Integer = 10Const k As Integer
Dim i = 10, j = 10 As IntegerDim b As Boolean = TrueDim m, k As Integer = 10Const k As Integer
OK?Juis
t
Fout
Fout
Fout
VB.NETDataType: Boolean
Imports System
Module Module1 Sub Main( ) Dim a As Boolean = True Dim b As Boolean = False
Console.WriteLine ( "A = " & a ) Console.WriteLine ( "Result = " & ( 4 < 3 ) )
Console.ReadLineEnd Sub
End Module
Nota: Boolean is True of False. True in NIET 1 en False NIET 0
Nota: Boolean is True of False. True in NIET 1 en False NIET 0
A=True
Result=False
VB.NETDataTypes: Operatoren
Reken operatoren : +, -, *, /, ^, \, Mod Relatie operatoren : =, <>, <, >, <=, >=
Logische operatoren Bitwise And, Or, Xor, Not, AndAlso, OrAlso
Samenvoegen : =, +=, -=, /=, *=, \=
VB.NETOefening: Console I/O
Open een nieuwe console applicatie: console01
Dim n As StringDim a As IntegerDim s As SingleConsole.WriteLine ( “Geef naam, leeftijd en salaris " ) n = Console.ReadLine( ) a = CInt ( Console.ReadLine( ) ) s = CSng ( Console.ReadLine( ) ) Console.WriteLine ( _ "Naam: { 0 } Leeftijd: { 1 } Salaris: { 2 }", n, a, s )
PlaatshouderPlaatshouderPlaatshouder
Converteren
VB.NETConverteren
CCharCByteCShortCIntCLngCSngCDblCDecCBoolCdateCobjCStr
CCharCByteCShortCIntCLngCSngCDblCDecCBoolCdateCobjCStr
CharByteShortIntegerLongSingleDoubleDecimalBooleanDateObjectString
CharByteShortIntegerLongSingleDoubleDecimalBooleanDateObjectString
Eenvoudige placeholders: {n}, waar n 0,1,2, ….., Controle op Lengte: {n,w}, w is de breedte. {0,12} of {0,-8} Positief voor rechts uitlijnen, Negatief voor links uitlijnen. Soort value: {n,S}: S hoe de inhoud getoond moet worden. {0,8:f3}
C,c Currency formaat (instelling) -afronding D,d Decimaal E,e Scientific (exponential) F,f Fixed point (vb. F2) -afronding G,g General (instelling) N,n Getal formaat (vb. N1) -afronding X,x Hexadecimaal
Breedte en Format string: {n,w:S}
Eenvoudige placeholders: {n}, waar n 0,1,2, ….., Controle op Lengte: {n,w}, w is de breedte. {0,12} of {0,-8} Positief voor rechts uitlijnen, Negatief voor links uitlijnen. Soort value: {n,S}: S hoe de inhoud getoond moet worden. {0,8:f3}
C,c Currency formaat (instelling) -afronding D,d Decimaal E,e Scientific (exponential) F,f Fixed point (vb. F2) -afronding G,g General (instelling) N,n Getal formaat (vb. N1) -afronding X,x Hexadecimaal
Breedte en Format string: {n,w:S}
Placeholders
VB.NETDataTypes: Beveiliging
Dim s As Short = 400
Dim s As Short = 32768S
Dim s1 As Short = 40 Dim s2 As Short = 3276 Dim a As Integer
a = s1 * s2
VB.NETData Type: Char
Het primitive data type Char vertegenwoordigt een individueel karakter.
Dim ch1 As char = “a”CDim n As Integer = AscW(ch1)n += 1ch1 = ChrW(n)
Dim ch1 As char = “a”CDim n As Integer = AscW(ch1)n += 1ch1 = ChrW(n)
Speciale ascii codes:Constante die staan in Microsoft.VisualBasic namespace
Naam Waarde VB naamSingle quote &H27 Double quote &H22 Backslash &H5C Null &H0 vbNullChar Alert &H7 Backspace &H8 vbBack Form feed &HC vbFormFeed
Line feed &HA vbLf
Naam Waarde VB naamSingle quote &H27 Double quote &H22 Backslash &H5C Null &H0 vbNullChar Alert &H7 Backspace &H8 vbBack Form feed &HC vbFormFeed
Line feed &HA vbLf
Naam Waarde VB naam
Carriage return &HD vbCr New Line &HD + &HA VbLfCr of VbNewLine Horizontal tab &H9 vbTab Vertical tab &HB vbVerticalTab
Naam Waarde VB naam
Carriage return &HD vbCr New Line &HD + &HA VbLfCr of VbNewLine Horizontal tab &H9 vbTab Vertical tab &HB vbVerticalTab
VB.NETString class
is een OBJECT dat eenmaal het gecreëerd is, NIET meer kan verandert worden.
Elke verandering creëert een NIEUW string-object !!!
String Methods en Properties String Methods en Properties
String.Length String.ToUpperString.ToLowerString.Substring()String.IndexOf()String.Chars()
String.Length String.ToUpperString.ToLowerString.Substring()String.IndexOf()String.Chars()
Individuele karakters uit een string kunnenvia Chars(index) benaderd worden.
Individuele karakters uit een string kunnenvia Chars(index) benaderd worden.
Dim str As String = "goodbye“str = str.ToUpper() str = str.ToLower()Dim l As Integer = str.LengthDim substring As String = str.Substring(4, 3)Dim n1 As Integer = str.IndexOf("bye") Dim n2 As Integer = str.IndexOf("boo")Dim s As Integer = Asc(str.Chars(2))
Dim str As String = "goodbye“str = str.ToUpper() str = str.ToLower()Dim l As Integer = str.LengthDim substring As String = str.Substring(4, 3)Dim n1 As Integer = str.IndexOf("bye") Dim n2 As Integer = str.IndexOf("boo")Dim s As Integer = Asc(str.Chars(2))
VB.NETStringBuilder class
'StringBuilder Dim myBuilder As Text.StringBuilder = New Text.StringBuilder(10000) Dim rng As Random = New Random Dim bgB As Double = Now.Ticks For i As Integer = 1 To 10000 Dim c As Char = Convert.ToChar(rng.Next(65, 90)) myBuilder.Append(c) Next Dim edB As Double = Now.Ticks Disp("Ticks bij stringBuider: " + Convert.ToString(edB - bgB))
'StringBuilder Dim myBuilder As Text.StringBuilder = New Text.StringBuilder(10000) Dim rng As Random = New Random Dim bgB As Double = Now.Ticks For i As Integer = 1 To 10000 Dim c As Char = Convert.ToChar(rng.Next(65, 90)) myBuilder.Append(c) Next Dim edB As Double = Now.Ticks Disp("Ticks bij stringBuider: " + Convert.ToString(edB - bgB))
Imports System.Text.StringBuilderImports System.Text.StringBuilder
VB.NETVB.NETStuctured Data TypesStuctured Data Types
Dim balance(4) As Decimal balance(0) = 100 balance(4) = 250
Dim balance() As Decimal = _ {100, 200, 300, 400, 250}
Dim balance(,) As Decimal = _ {{100, 200, 300, 400, 250} , _ {100, 200, 300, 400, 250} , _ {100, 200, 300, 400, 250} }
Dim balance(4) As Decimal balance(0) = 100 balance(4) = 250
Dim balance() As Decimal = _ {100, 200, 300, 400, 250}
Dim balance(,) As Decimal = _ {{100, 200, 300, 400, 250} , _ {100, 200, 300, 400, 250} , _ {100, 200, 300, 400, 250} }
ArrayArray
Enum Kaarten Aas = 1 Twee = 2 ….. Boer = 11 Dame = 12 Heer = 13End Enum
Enum Kaarten Aas = 1 Twee = 2 ….. Boer = 11 Dame = 12 Heer = 13End Enum
EnumertionEnumertion
Structure Persoon Naam As String Vnaam As String Gdat As DateEnd Structure
Structure Persoon Naam As String Vnaam As String Gdat As DateEnd Structure
StructureStructure
VB.NETVB.NETVoorbeeldVoorbeeldModule Module1
Enum PColor rood groen blauw End Enum Structure PiCoord Public x As Single Public y As Single Public flags() As Byte Public color As PColor End Structure Structure Rectangle Public tLeft As PCoord Public tRight As PCoord Public bLeft As PCoord Public bRight As PCoord Public fillColor As PColor End Structure
Sub Main() Dim r As Rectangle r.tLeft.x = 100 r.tLeft.y = 100 r.tLeft.color = PColor.groen r.tRight.x = 300 r.tRight.y = 100 r.tRight.color = PColor.groen r.bLeft.x = 100 r.bLeft.y = 300 r.bLeft.color = PColor.groen r.bRight.x = 300 r.bRight.y = 300 r.bRight.color = PColor.groen WriteLine(“Waarde r.tLeft.x = {0} ", r.tLeft.x) WriteLine(“Waarde r.tLeft.y = {0} ", r.tLeft.y) WriteLine(“Duw <Enter> =Stop") ReadLine()
End SubEnd Module
For i = 0 To 100 blablablabla
Next
VB.NETControle Structuren
Beslissing Struc.Beslissing Struc. Herhalings Struc.Herhalings Struc.
IFIF SelectSelect ForFor WhileWhile DoDo
Select Case a case 1 blablablabla case Else doedoedoeEnd Case
If a>b Then blablablablaEnd If
While a>b blablablablaEnd While
Do Until a>b blablablablaLoop
Do blablablablaLoop While a<b
IF
VB.NETBeslissings Structuur
If Conditie Then ...
End If
If Conditie Then ...
Else …End If
If Conditie1 Then ...
ElseIf Conditie2 … Else …End If
IIFDim i As Integer Dim res As String i = CInt ( Console.ReadLine( ) ) res = IIf ( i Mod 2 = 0, "Even", “Oneven" )Console.WriteLine ( res )
If age > 18 AndAlso no < 11 Then … End If
If age > 18 OrAlso no < 11 Then … End If
Cond1 Cond2
True
False
Evaluated
Not Eval.
Cond1 Cond2
True
False
Not Eval.
Evaluated
Evaluated
VB.NETBeslissings Structuur Select Case
Select Case dagNr Case 0 dag = “Zondag" Case 1 dag = “Mon" Case 2 dag = “Tue" Case 3 dag = “Wed" End Select
Select Case id Case 1, 5 To 9 grp = "Grp A" Case 10 To 15 grp = "Grp B" Case 16 grp = "Grp C" End Select
Select Case stad Case “Leuven", “Tienen" state = “V-Br" Case “Namur" state = “NM" Case Else state = “Onbekend" End Select
VB.NETHerhalings Structuur
For … Next
For i = 0 To 10 Console.WriteLine ( i )
Next
For i = 10 To 0 Step –1 Console.WriteLine( i ) Next
For I As Integer = 10 To 0 Step –1 Console.WriteLine( i ) Next
While
i = 0 While i <= 10
Console.WriteLine ( i ) i = i + 1
End While
Dim s As String = "y" While s = "y"
… s = Console.ReadLine( )
End While
VB.NETHerhalings Structuur
i = 0 Do While i <= 10 Console.WriteLine ( i )
i += 1 Loop
i = 15 Do Until i = 10 Console.WriteLine ( i )
i = i + 1 Loop
i = 10 Do Console.WriteLine ( i )
i -= 1 Loop While i <= 2
i = 15Do Console.WriteLine ( i )
i = i + 1 Loop Until i = 10
Do … Loop
VB.NETHerhalings StructurenVroegtijdig Verlaten
i = 0Do While i <= 10 C.W ( i ) If i = 5 then Exit Do End If i = i + 1Loop
For i = 0 To 10 C.W ( i ) If i = 5 then
Exit For End If Next
While i <= 10 C.W ( i ) If i = 5 then Exit While End If i = i + 1 End While
DODOForFor
WhileWhile
VB.NETProcedures
Sub Display( ) C.W ( "1.Add" ) C.W ( "2.Del" ) C.W ( "3.Disp" ) C.W ( "4.Exit" ) End Sub
Function fact ( val As Integer ) As IntegerDim f As Integer = 1 Dim i As IntegerFor i = 1 To val
f = f * i NextReturn f
End Function
SubroutineSubroutine FunctionFunction
Geeft NIETSterug Geeft waarde
terug
VB.NETOption Strict
Option Strict OffOption Strict Off Option strict OnOption strict On
default Beter
Voorkomt RunTime fouten!
Option Strict Off
Dim i As Integer = 10 Dim f As SingleDim g As Single = 6.82 f = i Console.WriteLine ( f ) i = g Console.WriteLine ( i )
Wat indien Strict On ?Wat indien Strict On ?
VB.NETCall
ByVal ByRef
default
Module Module1 Sub Main() Dim num As Integer = 1 funcv(num) controle.WriteLine(“num = {0}”, num) funcr(num) controle.WriteLine(“num = {0}”, num) End Sub
Sub funcv(num As Integer) num += 10 Controle.WriteLine( _ “num = {0}”, num)End Sub Sub funcr(ByRef num As Integer) num += 10 Controle.WriteLine( _ “num = {0}”, num)End Sub
VB.NETVB.NETVoorbeeldVoorbeeld
Module Module1 Structure Card Public naam As String Public pcid As Integer End Structure Sub Main() Dim i As Integer = 7, j As Integer = 3 WriteLine(“Waarde i is {0} en j is {1} ", i, j) i = j j = 2 WriteLine(“Nieuw i is {0} en j is {1} ", i, j) Dim c1 As Card, c2 As Card c1.name = "Video card“ c1.pcid = 0 c2.name = "Audio card“ c2.pcid = 6 WriteLine( _ “Waarde c1.naam is {0} en c1.pcid is {1} ", _ c1.naam, c1.pcid) WriteLine( _ “Nieuw c2.naam is {0} an c2.pcid is {1} ", _
c2.naam, c2.pcid)
Module Module1 Structure Card Public naam As String Public pcid As Integer End Structure Sub Main() Dim i As Integer = 7, j As Integer = 3 WriteLine(“Waarde i is {0} en j is {1} ", i, j) i = j j = 2 WriteLine(“Nieuw i is {0} en j is {1} ", i, j) Dim c1 As Card, c2 As Card c1.name = "Video card“ c1.pcid = 0 c2.name = "Audio card“ c2.pcid = 6 WriteLine( _ “Waarde c1.naam is {0} en c1.pcid is {1} ", _ c1.naam, c1.pcid) WriteLine( _ “Nieuw c2.naam is {0} an c2.pcid is {1} ", _
c2.naam, c2.pcid)
c1 = c2 c2.naam = "Joe“ c2.pcid = 123 WriteLine(“Waarde c1.naam is {0} en c1.pcid is {1} ", _ c1.naam, c1.pcid) WriteLine(“Nieuw c2.naam is {0} en c2.pcid is {1} ", _ c2.naam, c2.pcid) Dim a1() As Integer = {1, 2, 3, 4, 5} Dim a2() As Integer = {6, 7, 8, 9, 0} WriteLine(“Waarde a1(3) is {0} en a2(3) is {1} ", _ a1(3), a2(3)) a1 = a2 a1(3) = -1 WriteLine(“Nieuw a1(3) is {0} en a2(3) is {1} ", _ a1(3), a2(3)) WriteLine(“Duw <Enter> = Stop") ReadLine() End SubEnd Module
c1 = c2 c2.naam = "Joe“ c2.pcid = 123 WriteLine(“Waarde c1.naam is {0} en c1.pcid is {1} ", _ c1.naam, c1.pcid) WriteLine(“Nieuw c2.naam is {0} en c2.pcid is {1} ", _ c2.naam, c2.pcid) Dim a1() As Integer = {1, 2, 3, 4, 5} Dim a2() As Integer = {6, 7, 8, 9, 0} WriteLine(“Waarde a1(3) is {0} en a2(3) is {1} ", _ a1(3), a2(3)) a1 = a2 a1(3) = -1 WriteLine(“Nieuw a1(3) is {0} en a2(3) is {1} ", _ a1(3), a2(3)) WriteLine(“Duw <Enter> = Stop") ReadLine() End SubEnd Module
VB.NETMultiple Modules
ScopeModule Module1 Dim i As Integer = 20 Sub Main( ) Dim i As Integer = 10 Console.WriteLine ( i ) Console.WriteLine ( Module1.i ) End SubEnd Module
VB.NETOefenen !
Maak een programma dat voor alle data types, hun min. en max. waarde op het scherm zet.
Nota: gebruik de MinValue- en MaxValue propertie
MinMax.vbMinMax.vb
Een getal wordt als command lijn argument mee gegeven. Schrijf een programma dat dit getal in woorden toont.
Nota: 256 als twee, vijf, zes
WoordGetal.vbWoordGetal.vb
Schrijf een programma dat vier cijfers accepteert en deze dan in oplopende volgorde toont.
Oplopend.vbOplopend.vb
VB.NETOefenen !
Schrijf een console applicatie, die de som maakt van even getallentussen 1 en 99. Gebruik een For/Next loop. Declareer de variabelen sum en count.
Schrijf een console applicatie, die de som maakt van even getallentussen 1 en 99. Gebruik een For/Next loop. Declareer de variabelen sum en count.
SomEvenSomEven
Met welk statement kan men een While loop verlaten? Met welk statement kan men een While loop verlaten?
Maak een console applicatie, die de tafel van 1 to 5 toont. De tafels staan naast elkaar, netjes geformateerd.
Maak een console applicatie, die de tafel van 1 to 5 toont. De tafels staan naast elkaar, netjes geformateerd.
TafelsTafels
VraagjeVraagje
Maak een console applicatie, die de afmetingen(zijde1, zijde2, schuineZ)van alle driehoeken toont, die voldoen aan volgende formule: het kwadraat van de schuine zijde is gelijk aan de som van de kwadraten van de 2 andere zijden, bij komende voorwaarde de lengte van de schuine zijde mag niet groter zijn dan 30.
Maak een console applicatie, die de afmetingen(zijde1, zijde2, schuineZ)van alle driehoeken toont, die voldoen aan volgende formule: het kwadraat van de schuine zijde is gelijk aan de som van de kwadraten van de 2 andere zijden, bij komende voorwaarde de lengte van de schuine zijde mag niet groter zijn dan 30.
Pythagoras DriehoekenPythagoras Driehoeken
VB.NETOefening Enigma
Deze appl. versleutelt een gegeven woord of zin en ontsleutelt ze. In de gecodeerde string zit de sleutel vervat om hem te decoderen: MIDDENBLOK: het gegeven woord of zin VERHOGINGSFACTOR: de ascicode van elk karakter van het middenblok wordt verhoogd met een randgetal tussen 16 en 35 BLOK1: de gecodeerde string wordt vooraf gegaan door een blok van 10 random karakters indien 5de karakter BLOK1 = X dan zit de verhogingsfactor vervat in de eerste 2 karakters van BLOK1 indien 5de karakter BLOK1 = B dan zit de verhogingsfactor vervat in de eerste 2 karakters van BLOK2 BLOK2: de gecodeerde string wordt achteraf gegaan door een blok van 10 random karakters REVERSE: indien laatste karakter van BLOK2 = ascicode(X) + verhogingsfactor dan MIDDENBLOK is gereversed REVERSE: indien laatste karakter van BLOK2 = ascicode(B) + verhogingsfactor dan MIDDENBLOK is niet gereversed
Deze appl. versleutelt een gegeven woord of zin en ontsleutelt ze. In de gecodeerde string zit de sleutel vervat om hem te decoderen: MIDDENBLOK: het gegeven woord of zin VERHOGINGSFACTOR: de ascicode van elk karakter van het middenblok wordt verhoogd met een randgetal tussen 16 en 35 BLOK1: de gecodeerde string wordt vooraf gegaan door een blok van 10 random karakters indien 5de karakter BLOK1 = X dan zit de verhogingsfactor vervat in de eerste 2 karakters van BLOK1 indien 5de karakter BLOK1 = B dan zit de verhogingsfactor vervat in de eerste 2 karakters van BLOK2 BLOK2: de gecodeerde string wordt achteraf gegaan door een blok van 10 random karakters REVERSE: indien laatste karakter van BLOK2 = ascicode(X) + verhogingsfactor dan MIDDENBLOK is gereversed REVERSE: indien laatste karakter van BLOK2 = ascicode(B) + verhogingsfactor dan MIDDENBLOK is niet gereversed
VB.NETVolgende Les