Leseprobe - HERDT

Visual Basic 2015
Ricardo Hernández Garcia
Grundlagen Programmierung
1. Ausgabe, Dezember 2015
VBNET2015
ISBN 978-3-86249-517-7
7
Visual Basic 2015 – Grundlagen Programmierung
7
Kontrollstrukturen
In diesem Kapitel erfahren Sie
D wie Sie die Ausführung von Anweisungen von Bedingungen abhängig machen
D wie Sie mit Verzweigungen mehrere Fälle unterscheiden
D wie Sie Anweisungen über Schleifen mehrfach ausführen können
Voraussetzungen
D Vergleichsoperatoren und logische Operatoren
7.1
Kontrollstrukturen einsetzen
Kontrollstrukturen im Überblick
Die Programme, die Sie bisher kennengelernt haben, bestanden aus einer Folge von Anweisungen, die genau
einmal sequenziell (der Reihe nach) abgearbeitet wurden. Oft ist es jedoch erforderlich, dass Programmteile
mehrmals oder gar nicht ausgeführt werden. Die Visual-Basic-Sprachelemente, mit denen der Programmablauf
gesteuert werden kann, werden Kontrollstrukturen genannt. Die Entscheidung, nach welchen Kriterien der
Ablauf gesteuert wird, wird in Bedingungen formuliert.
Es werden zwei Gruppen von Kontrollstrukturen unterschieden:
D Verzweigungen:
Es werden alternative Programmteile angeboten, in die – abhängig von einer Bedingung – beim Programmablauf verzweigt wird.
D Schleifen (engl. loops):
Ein Programmteil kann – abhängig von einer Bedingung – mehrmals durchlaufen werden.
Verzweigungen
Zwei Grundformen der Verzweigungen sind in Visual Basic enthalten:
D
Bedingte Auswahl:
Je nachdem, ob eine Bedingung erfüllt ist oder nicht, wird ein Programmteil ausgeführt oder übersprungen bzw. ein alternativer Programmteil ausgeführt.
D
Fallauswahl:
Es wird ein Ausdruck ausgewertet. Je nachdem, welchem Wert der Ausdruck entspricht, verzweigt das
Programm fallweise (case) in einen entsprechenden Programmteil. Eine Fallauswahl wird auch mehrseitige Auswahl genannt, da sie mehrere Alternativen bereitstellen kann.
Schleifen (Wiederholungen)
Über eine Schleife, auch Wiederholung oder Iteration genannt, können Anweisungen und Anweisungsblöcke
mehrfach ausgeführt werden.
Zwei Grundformen von Schleifen-Strukturen sind in Visual Basic enthalten:
64
© HERDT-Verlag
7
Kontrollstrukturen
D Bedingte Wiederholung:
Die Wiederholung des in der Schleife eingeschlossenen Programmteils ist an eine Bedingung geknüpft.
Hierbei wird wiederum unterschieden, ob die Bedingung vor oder nach der Ausführung des eingeschlossenen Programmteils erfolgt:
Bei der kopfgesteuerten Wiederholung erfolgt die Überprüfung der Bedingung vor der Ausführung des
eingeschlossenen Programmteils. Solange eine Bedingung erfüllt ist bzw. bis eine Bedingung erfüllt ist, wird
der in der Struktur eingeschlossene Programmteil ausgeführt. Anschließend wird das Programm hinter der
Schleifenstruktur fortgesetzt.
Bei der fußgesteuerten Wiederholung wird zunächst der eingeschlossene Programmteil ausgeführt.
Anschließend wird die Bedingung geprüft. Ist die Bedingung erfüllt bzw. noch nicht erfüllt, wird der
Programmteil erneut ausgeführt. Anderenfalls wird das Programm hinter der Schleifenstruktur fortgesetzt.
D Zählergesteuerte Wiederholung:
Ein Zähler bestimmt die Anzahl der Wiederholungen. Die Überprüfung, ob der Zähler den gewünschten
Endwert erreicht hat, erfolgt vor der Ausführung des eingeschlossenen Programmteils.
Übersicht über die Kontrollstrukturen in Visual Basic
Kontrollstrukturen
Verzweigungen
Bedingte
Auswahl
Einseitige
Auswahl
Schleifen
Mehrseitige (Fall-)
Auswahl
Zweiseitige
Auswahl
Bedingte
Wiederholung
Kopfgesteuerte
Wiederholung
Zählergesteuerte
Wiederholung
Fußgesteuerte
Wiederholung
Mehrstufige
Auswahl
7.2
Einseitige Auswahl
Bei vielen Problemstellungen ist die Verarbeitung von Anweisungen von Bedingungen abhängig. Nur wenn die
Bedingung erfüllt ist, wird die betreffende Anweisung (bzw. der Anweisungsblock) ausgeführt. Anderenfalls wird
die Anweisung übersprungen. Für die Steuerung eines solchen Programmablaufs stellt Visual Basic die einseitige
Auswahl (If-Anweisung) zur Verfügung.
Beispiel für die Verwendung einer einseitigen Auswahl
D Wenn (If) ein Kunde einen Auftrag über 1000,- EUR erteilt, dann
(Then) erhält er 4 % Rabatt. Bei Aufträgen bis 1000,- EUR wird
kein Rabatt gewährt, d. h., die Berechnung des Rabatts wird nicht
ausgeführt.
D Die Überprüfung der Bedingung kann nur die beiden Ergebnisse
"ja" oder "nein" ergeben, in Visual Basic entsprechend True
(wahr) oder False (falsch).
© HERDT-Verlag
Auftrag>1000
?
nein
ja
Rabatt in Höhe von 4 %
berechnen
65
7
Visual Basic 2015 – Grundlagen Programmierung
Syntax der einseitigen Auswahl (If-Anweisung)
D Die einseitige Auswahl beginnt mit dem Schlüsselwort If.
D Dahinter wird eine Bedingung (Condition) formuliert. Die Bedingung ist ein
Ausdruck (Expression) und liefert als Ergebnis einen Wert vom Typ
Boolean zurück.
If Condition Then
Statement 
End If 
D Nach der Bedingung folgt das Schlüsselwort Then.
D Anschließend folgt die Anweisung , die ausgeführt wird, wenn die Auswertung der Bedingung den Wert
True ergibt. Liefert die Bedingung den Wert False, wird diese Anweisung übersprungen. Die Anweisung
 kann aus einer einzelnen Anweisung oder einem Anweisungsblock bestehen.
D Das Ende der einseitigen Auswahl wird durch End If  gekennzeichnet.
Sehr kurze If-Anweisungen können in eine einzige Zeile geschrieben
werden. In diesem Fall entfällt End If.
If Condition Then Statement
Beispiel: Discount.sln
Für einen Rechnungsbetrag (InvoiceAmount) soll abhängig von seiner Höhe ein Rabatt berechnet werden.
Anhand des Wertes der Variablen InvoiceAmount wird entschieden, ob ein Rabatt gewährt wird. Dieser wird
gegebenenfalls berechnet und vom Rechnungsbetrag subtrahiert. Der neue Rechnungsbetrag wird (abzüglich des
Rabatts) ausgegeben. Währungsangaben werden hier nicht berücksichtigt.
 Module MdlDiscount
Sub Main()
Dim InvoiceAmount As Double = 0.0 ' Rechnungsbetrag
Dim Txt As String
Console.Write ("Bitte geben Sie den Rechnungsbetrag ein: ")

Txt = Console.ReadLine()

InvoiceAmount = CDbl(Txt)

If InvoiceAmount > 1000 Then

invoiceAmount -= InvoiceAmount * 0.04
Console.WriteLine("Es wird ein Rabatt gewaehrt.")
End If

Console.WriteLine("Gesamtbetrag: " & InvoiceAmount)
Console.ReadKey()
End Sub
End Module
 Die eingegebene Zeichenkette wird eingelesen.
 Der String wird in eine Double-Zahl konvertiert und einer Variablen zugewiesen.
 Der Wert dieser Variablen wird dann mit dem Wert 1000 verglichen.
 Ist der Rechnungsbetrag InvoiceAmount größer als 1000, liefert die Bedingung den Wert True; der
Rabatt wird berechnet und ein Text als Information ausgegeben.
 Der Rechnungsbetrag wird ausgegeben. Wenn kein Rabatt gewährt wird, wird der Anweisungsblock 
übersprungen und der Rechnungsbetrag unverändert ausgegeben .
66
© HERDT-Verlag
7
Visual Basic 2015 – Grundlagen Programmierung
Beschreibung
Shortcut + T
Schleife: Do While...Loop
DoWhile
Schleife: While ... End While
While
Schleife: Do Until...Loop
DoUntil
Schleife: Do...Loop While
DoLoopWh
Schleife: Do...Loop Until
DoLoopUn
Schleife: For...Next
For
7.12 Übungen
Mit Verzweigungen und Wiederholungen arbeiten
Übungsdatei: -1.
Ergebnisdateien: TestResultat.sln, TestResultat2.sln, TestResultat3.sln
Schreiben Sie eine Konsolenanwendung mit dem Namen TestResultat, die die Bewertung eines Tests als
Text ausgibt. In dem Test können maximal 10 Punkte erreicht werden. Sofern mindestens 7 Punkte erreicht
wurden, gilt der Test als bestanden. Die Punktzahl soll im Programm eingelesen werden (Readline). Die
Textausgaben sollen folgendermaßen lauten:
Mindestens 7 Punkte:
Der Test ist bestanden!
anderenfalls:
Der Test ist leider nicht bestanden!
2.
Werten Sie so lange neue Punktzahlen aus, bis als Punktzahl der Wert -1 eingegeben wird, und prüfen Sie
zusätzlich, ob die Punktzahl im zulässigen Bereich liegt. Anderenfalls soll der Text ungueltige Punktzahl!
ausgegeben werden.
3.
Erweitern Sie die Auswertung der Punktzahl aus  wie folgt:
10 Punkte:
Ergebnis: Sehr gut
9 Punkte:
Ergebnis: Gut
8 Punkte:
Ergebnis: Befriedigend
7 Punkte:
Ergebnis: Ausreichend
weniger als 7 Punkte:
Ergebnis: Leider nicht genuegend Punkte erreicht
Mit dem If-Operator auswerten
Übungsdatei: --
78
Ergebnisdatei: Discount2A.sln
1.
Schreiben Sie eine Konsolenanwendung mit dem Namen Discount2A, die den Rabatt für einen
Rechnungsbetrag berechnet (siehe Beispiel Discount2.sln in Abschnitt 8.3).
2.
Verwenden Sie für die Rabattberechnung den If-Operator.
© HERDT-Verlag
7
Kontrollstrukturen
Mit Wiederholungen arbeiten
Übungsdatei: -1.
Ergebnisdatei: Passwortabfrage.sln
Erstellen Sie eine Windows-Anwendung zur Passwort-Abfrage.
Verwenden Sie einen Button- und zwei TextBox-Komponenten.
2.

Aktivieren Sie bei der Ausgabe-Textbox über das SmartTask-Menü  der
Textbox die Eigenschaft Multiline.
Setzen Sie die Eigenschaft Enabled der Ausgabe-Textbox auf False.

Tragen Sie bei der Eigenschaft PasswordChar der Textbox für die Eingabe
das Zeichen
ein, damit die Passwörter bei der Eingabe verdeckt erscheinen.
3.
Legen Sie zwei Passwörter (z. B. für Administrator und für User) fest.
Nachdem der Benutzer die Schaltfläche OK betätigt hat, soll die eingegebene
Zeichenkette geprüft werden: Je nachdem, welches der Passwörter der
Anwender eingibt, soll in der Textbox  folgender Text ausgegeben werden: Sie
sind als Administrator angemeldet. Oder: Sie sind als User angemeldet. Bei
jedem anderen eingegebenen Passwort soll Sie sind nur als Gast angemeldet.
angezeigt werden.
Zählergesteuerte Wiederholung anwenden
Übungsdatei: --
Ergebnisdatei: Fortschrittsanzeige.sln
1.
Erzeugen Sie eine Windows-Anwendung zur grafischen Anzeige eines Bearbeitungsfortschritts. Verwenden
Sie eine ProgressBar-, eine Label- und drei Button-Komponenten.
2.
Erstellen Sie eine Schleifenkonstruktion, um die Fortschrittsanzeige vom Minimum zum Maximum zu bewegen. Setzen Sie dazu die Eigenschaft Minimum der ProgressBar-Komponente auf den Wert 0 und die
Eigenschaft Maximum auf den Wert 100. Erhöhen Sie in einer Schleife den Wert der ProgressBarKomponente (Eigenschaft Value) bis zum Maximalwert (100).
3.
Zeigen Sie den Fortschritt außerdem mithilfe der Label-Komponente
an .
4.
Um den Fortschritt zu sehen, müssen Sie die Abarbeitung der Schleife
bremsen. Mithilfe der folgenden Anweisung wartet die Anwendung
bei jedem Schleifendurchlauf 100 Millisekunden:
System.Threading.Thread.Sleep(100).
5.
Mit der Anweisung Application.DoEvents() können Sie
erreichen, dass bei jedem Schleifendurchlauf geprüft wird, ob beim
Betriebssystem angemeldete Aktionen durchgeführt werden müssen.
Dadurch wird es möglich, z. B. die Anwendung schon vor dem
vollständigen Abarbeiten der Schleife durch Betätigen der Schaltfläche
Schließen zu beenden.
6.
Stellen Sie sicher, dass die Schaltflächen Start und Zurücksetzen nicht
betätigt werden können, solange die Schleife abgearbeitet wird
(Eigenschaft Enabled).
© HERDT-Verlag

79
Impressum
Matchcode: VBNET2015
Autor: Ricardo Hernández Garcia
Redaktion: Andrea Weikert
Produziert im HERDT-Digitaldruck
1. Ausgabe, Dezember 2015
HERDT-Verlag für Bildungsmedien GmbH
Am Kümmerling 21-25
55294 Bodenheim
Internet: www.herdt.com
E-Mail: [email protected]
© HERDT-Verlag für Bildungsmedien GmbH, Bodenheim
Alle Rechte vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem
anderen Verfahren) ohne schriftliche Genehmigung des Verlags reproduziert oder unter Verwendung elektronischer
Systeme verarbeitet, vervielfältigt oder verbreitet werden.
Dieses Buch wurde mit großer Sorgfalt erstellt und geprüft. Trotzdem können Fehler nicht vollkommen ausgeschlossen
werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische
Verantwortung noch irgendeine Haftung übernehmen.
Wenn nicht explizit an anderer Stelle des Werkes aufgeführt, liegen die Copyrights an allen Screenshots beim HERDTVerlag. Sollte es trotz intensiver Recherche nicht gelungen sein, alle weiteren Rechteinhaber der verwendeten
Quellen und Abbildungen zu finden, bitten wir um kurze Nachricht an die Redaktion.
Die in diesem Buch und in den abgebildeten bzw. zum Download angebotenen Dateien genannten Personen und
Organisationen, Adress- und Telekommunikationsangaben, Bankverbindungen etc. sind frei erfunden. Eventuelle
Übereinstimmungen oder Ähnlichkeiten sind unbeabsichtigt und rein zufällig.
Die Bildungsmedien des HERDT-Verlags enthalten Verweise auf Webseiten Dritter. Diese Webseiten unterliegen der
Haftung der jeweiligen Betreiber, wir haben keinerlei Einfluss auf die Gestaltung und die Inhalte dieser Webseiten.
Bei der Bucherstellung haben wir die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen.
Zu diesem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Wir werden bei Kenntnis von Rechtsverstößen jedoch
umgehend die entsprechenden Internetadressen aus dem Buch entfernen.
Die in den Bildungsmedien des HERDT-Verlags vorhandenen Internetadressen, Screenshots, Bezeichnungen bzw.
Beschreibungen und Funktionen waren zum Zeitpunkt der Erstellung der jeweiligen Produkte aktuell und gültig. Sollten
Sie die Webseiten nicht mehr unter den angegebenen Adressen finden, sind diese eventuell inzwischen komplett aus dem
Internet genommen worden oder unter einer neuen Adresse zu finden. Sollten im vorliegenden Produkt vorhandene
Screenshots, Bezeichnungen bzw. Beschreibungen und Funktionen nicht mehr der beschriebenen Software entsprechen,
hat der Hersteller der jeweiligen Software nach Drucklegung Änderungen vorgenommen oder vorhandene Funktionen
geändert oder entfernt.