Visual Basic .NET: Kontrollstrukturen
Bis jetzt liefen unsere Visual-Basic-.NET-Programme immer sehr linear, sprich eine Anweisung nach der anderen wurde streng von oben nach unten abgearbeitet. In diesem Kapitel ändern wir das: Wir werden manche Anweisungen überspringen und andere sogar mehrmals ausführen können. Unser Werkzeug sind sogenannte Kontrollstrukturen, spezielle Anweisungen, mit denen wir den Programmfluss kontrollieren können. Dazu zählen Entscheidungen (auch „bedingte Anweisungen“ genannt) und Schleifen.
Vorher möchte ich jedoch noch einmal auf die ReadLine-Methode eingehen. Wie ich am Anfang erwähnte, kann der Benutzer bei einem Aufruf der ReadLine-Methode einen Wert eingeben. Dabei verwenden wir den InputBox-Befehl wie einen Zahlenwert oder eine Operation und weisen die Eingabe des Benutzers einer Variablen zu.
In dem folgenden Beispiel stellt sich der Computer schwerhörig und fragt nach einer Eingabe, die (in diesem trivialen Fall) gleich wieder ausgegeben wird. (Hier und im Folgenden werden Benutzereingaben in den Ausgabeprotokollen, die natürlich nur beispielhaft sein können, fett dargestellt.)
Console.Write("Was haben Sie gesagt? ") Dim Text As String = Console.ReadLine() Console.WriteLine("Ach so. Sie haben " & Text & " gesagt.")
Was haben Sie gesagt? Hallo Ach so. Sie haben Hallo gesagt.
Mit der Console.Write-Methode wird die Frage gestellt. Da nur Write und nicht WriteLine benutzt wird, bleibt der Cursor in derselben Zeile, der User kann seine Eingabe während des Aufrufes der ReadLine-Methode in ebendieser Zeile machen. (Probieren Sie diesen Effekt aus, indem Sie Write durch WriteLine ersetzen. Es ist allerdings auch ein Stück weit Geschmacksache, ob man vor Eingaben einen Zeilenumbruch einfügt oder nicht.)
Im Beispiel wird eine String-Variable Text mit der Eingabe des Benutzers initialisiert. Bei so einer Zuweisung ist der Typ der Zielvariablen eigentlich egal. Allerdings sollten Sie bei Zahlenvariablen aufpassen, ob der Benutzer auch wirklich passende Zahlen eingibt. Sonst bricht das Programm mit einem Laufzeitfehler ab. Wie man das verhindern kann, dazu später mehr.
Am obigen Beispiel wäre auszusetzen, dass der Computer nicht korrekt zitiert. Er sagt etwa „Ach so. Sie haben Test gesagt.“, obwohl „Ach so. Sie haben "Test" gesagt.“ eigentlich korrekt wäre. Problem: Wie soll man die Gänsefüßchen in Visual Basic .NET notieren? Wenn man in eine Zeichenkette einfach ein Anführungszeichen setzt, denkt Visual Basic, dass die Zeichenkette dort zu Ende ist.
Diese Verständigungsschwierigkeiten lassen sich zum Glück durch eine sogenannte Escape-Zeichenfolge lösen, mit der wir der üblichen Notation „entkommen“ (engl. escape). Dazu schreiben wir statt einem Gänsefüßchen zwei direkt hintereinander. Innerhalb einer Zeichenkette in Visual-Basic-Code werden zwei Gänsefüßchen direkt hintereinander als ein Gänsefüßchen in der Zeichenkette aufgefasst, nicht als Ende der Zeichenkette.
Console.Write("Was haben Sie gesagt? ") Dim Text As String = Console.ReadLine() Console.WriteLine("Ach so. Sie haben """ & Text & """ gesagt.")
Was haben Sie gesagt? Hallo Ach so. Sie haben "Hallo" gesagt. (Falls Sie in die InputBox "Hallo" eingegeben haben.)
Hier haben wir zweimal drei Gänsefüßchen hintereinander. Beim ersten Mal werden die ersten zwei Gänsefüßchen als Escape-Zeichenfolge für ein Gänsefüßchen aufgefasst, das dritte beendet die Zeichenkette. Analog beim zweiten Vorkommen: Das erste Gänsefüßchen startet die Zeichenkette, darauf folgt die Escape-Zeichenfolge.