Bedingungen
Module Program
Function Vorzeichen(n As Integer) As String
If n > 0 Then
Return "positiv"
ElseIf n < 0 Then
Return "negativ"
Else
Return "null"
End If
End Function
Sub Main()
Console.WriteLine(Vorzeichen(5) & " " & Vorzeichen(-2) & " " & Vorzeichen(0))
Dim n As Integer = 15
If n Mod 15 = 0 Then
Console.WriteLine("FizzBuzz")
ElseIf n Mod 3 = 0 Then
Console.WriteLine("Fizz")
Else
Console.WriteLine(n)
End If
Dim note As Integer = 2
Select Case note
Case 1
Console.WriteLine("sehr gut")
Case 2, 3
Console.WriteLine("gut bis befriedigend")
Case 4 To 5
Console.WriteLine("ausreichend bis mangelhaft")
Case Is > 5
Console.WriteLine("ungültig")
Case Else
Console.WriteLine("unbekannt")
End Select
Dim status As String = If(n > 10, "groß", "klein")
Console.WriteLine(status)
Console.WriteLine(If(Nothing, "Standardwert"))
Console.WriteLine(n > 3 AndAlso n < 20)
Console.WriteLine(n < 3 OrElse n = 15)
Console.WriteLine(Not (n = 15))
End Sub
End Modulepositiv negativ null FizzBuzz gut bis befriedigend groß Standardwert True True False
AndAlso und OrElse sind die Kurzschluss-Operatoren; And und Or werten beide Seiten aus.
Schleifen
Module Program
Sub Main()
For i As Integer = 1 To 5
Console.Write(i & " ")
Next
Console.WriteLine()
For i As Integer = 10 To 1 Step -3
Console.Write(i & " ")
Next
Console.WriteLine()
For Each farbe As String In {"rot", "gruen", "blau"}
Console.Write(farbe & " ")
Next
Console.WriteLine()
Dim k As Integer = 0
While k < 3
Console.Write("w" & k & " ")
k += 1
End While
Console.WriteLine()
Dim j As Integer = 10
Do
Console.Write(j & " ")
j += 1
Loop Until j >= 13
Console.WriteLine()
For i As Integer = 1 To 10
If i Mod 2 = 0 Then Continue For
If i > 7 Then Exit For
Console.Write(i & " ")
Next
Console.WriteLine()
For z As Integer = 1 To 3
For s As Integer = 1 To 3
Console.Write((z * s).ToString().PadLeft(3))
Next
Console.WriteLine()
Next
End Sub
End Module1 2 3 4 5 10 7 4 1 rot gruen blau w0 w1 w2 10 11 12 1 3 5 7 1 2 3 2 4 6 3 6 9
Sub und Function
Sub hat keinen Rückgabewert, Function liefert einen. Parameter sind standardmäßig ByVal (Kopie), mit ByRef ändert man das Original:
Module Program
Function Quadrat(x As Integer) As Integer
Return x * x
End Function
Function Fakultaet(n As Integer) As Long
If n <= 1 Then Return 1
Return n * Fakultaet(n - 1)
End Function
Sub Begruesse(name As String, Optional gruss As String = "Hallo")
Console.WriteLine(gruss & ", " & name & "!")
End Sub
Sub Tausche(ByRef a As Integer, ByRef b As Integer)
Dim tmp As Integer = a
a = b
b = tmp
End Sub
Function Summe(ParamArray zahlen() As Integer) As Integer
Dim s As Integer = 0
For Each z In zahlen
s += z
Next
Return s
End Function
Function MinMax(werte As Integer()) As (Min As Integer, Max As Integer)
Return (werte.Min(), werte.Max())
End Function
Function Ueberladen(x As Integer) As String
Return "Integer " & x
End Function
Function Ueberladen(x As String) As String
Return "String " & x
End Function
Sub Main()
Console.WriteLine(Quadrat(7) & " " & Fakultaet(15))
Begruesse("Mia")
Begruesse("Tom", "Servus")
Begruesse(gruss:="Moin", name:="Zoe")
Dim p As Integer = 1, q As Integer = 2
Tausche(p, q)
Console.WriteLine(p & " " & q)
Console.WriteLine(Summe(1, 2, 3, 4))
Dim mm = MinMax({5, 3, 9, 1})
Console.WriteLine(mm.Min & " " & mm.Max)
Console.WriteLine(Ueberladen(5) & " / " & Ueberladen("x"))
Dim verdopple As Func(Of Integer, Integer) = Function(x) x * 2
Console.WriteLine(verdopple(21))
End Sub
End Module49 1307674368000 Hallo, Mia! Servus, Tom! Moin, Zoe! 2 1 10 1 9 Integer 5 / String x 42
Merke
If/ElseIf/Else/End If,Select Case,If(bedingung, a, b)für Verzweigungen- Schleifen:
For ... Next,For Each,While,Do ... Loop Sub(ohne Wert) undFunction(mitReturn);ByVal,ByRef,Optional,ParamArray- Lambdas:
Function(x) x * 2
Aufgabe
Schreibe eine Funktion IstPrim und gib alle Primzahlen bis 50 aus.