38
Kapitel 3 Ein Grundkurs in Programmierung mit Visual Basic .NET Programmieren zu lernen bedeutet, viel Neues in kurzer Zeit zu lernen, im Großen wie im Kleinen. In diesem Kapitel lernen Sie das kleine Einmaleins der Programmierung mit Visual Basic .NET kennen. Dazu gehören allgemeine Regeln, wichtige Be- fehle, Variablen, Operatoren, Kommentare, kurz, die Grundzu- taten, die in jedem Visual Basic .NET-Programm benötigt werden. Außerdem erfahren Sie, wie ein Computerprogramm Entscheidungen trifft. Haben Sie dieses Prinzip verstanden, wis- sen Sie, wie ein Computer »denkt«, und wissen gleichzeitig, dass kein Computer wirklich intelligent ist.

Ein Grundkurs in Programmierung mit Visual Basic

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ein Grundkurs in Programmierung mit Visual Basic

Kapitel 3

Ein Grundkurs in Programmierung mit Visual Basic .NET

Programmieren zu lernen bedeutet, viel Neues in kurzer Zeit zu lernen, im Großen wie im Kleinen. In diesem Kapitel lernen Sie das kleine Einmaleins der Programmierung mit Visual Basic .NET kennen. Dazu gehören allgemeine Regeln, wichtige Be-fehle, Variablen, Operatoren, Kommentare, kurz, die Grundzu-taten, die in jedem Visual Basic .NET-Programm benötigt werden. Außerdem erfahren Sie, wie ein Computerprogramm Entscheidungen trifft. Haben Sie dieses Prinzip verstanden, wis-sen Sie, wie ein Computer »denkt«, und wissen gleichzeitig, dass kein Computer wirklich intelligent ist.

Uli
ISBN 3-8272-6425-1 Visual Basic .NET
Page 2: Ein Grundkurs in Programmierung mit Visual Basic

Ihr Erfolgsbarometer

59

Das können Sie schon:

.NET installieren 21

Der Umgang mit Visual Studio .NET 52

Das lernen Sie neu:

Der allgemeine Aufbau eines Visual Basic .NET-Programms 60

Konsolenprogramme umsetzen 65

Variablen als Kurzzeitgedächtnis des Computers 70

Ausgaben in der Konsole 73

Eingaben über die Konsole 74

Wie ein Programm mit Operatoren rechnet 77

Ein kleiner Mehrwertsteuerrechner 80

Stunde der Entscheidung oder wie ein Computerprogramm Entscheidungen trifft 81

Sprechen Sie Visual Basic .NET? Ein kurzer Überblick über den Befehlssatz 91

Page 3: Ein Grundkurs in Programmierung mit Visual Basic

60

Der allgemeine Aufbau eines Visual Basic .NET-Programms

Bevor es mit den ersten Beispielen losgeht, müssen wir uns kurz mit dem all-gemeinen Aufbau eines Visual Basic .NET-Programms beschäftigen. Sie wer-den am Ende feststellen, dass Sie damit die Funktionsweise eines VisualBasic .NET-Programms besser verstehen und die einzelnen Elemente bereitsvon Anfang an einen gewissen Sinn ergeben.

Auch wenn jedes Programm eine ganz bestimmte Aufgabe erfüllt und mit ei-nem individuellen »Mix« an Befehlen und anderen »Zutaten« arbeitet, gibtes doch einen gemeinsamen Rahmen, den die meisten Programme aufwei-sen. Dies ist so ähnlich wie bei Fernsehserien, die zwar pro Folge (meistens)eine neue Handlung besitzen, aber stets den gleichen Aufbau aufweisen (da-mit sich die Zuschauer schneller zurechtfinden). Sollten Sie als Autor füreine solche Fernsehserie eine neue Episode schreiben, müssten Sie sich andiesen allgemeinen Rahmen halten, damit der Reihencharakter und Wieder-erkennungseffekt nicht verloren geht. Einen solchen Rahmen gibt es auch fürVisual Basic .NET-Programme, zumindest, wenn es sich um jene Konsolen-programme handelt, die Sie in diesem Kapitel kennen lernen.

Damit es nicht zu spannend wird, zeigt das folgende Listing einen solchenRahmen, der gleich zwei Aufgaben erfüllen soll. Zum einen soll der Ihnenjene Programmelemente zeigen, die in jedem Konsolenprogramm vorkom-men. Zum anderen können Sie diesen Rahmen für eigene Programme, etwafür die kleinen Übungen, um die es am Ende des Kapitels geht, benutzen.

Hinweis

Anders als im letzten Kapitel geht es im Folgenden nicht um Windows-Programme, die mit Formularen und Steuerelementen ausgestattet sind.In diesem Kapitel lernen Sie die Grundregeln der Programmierung amBeispiel von Konsolenprogrammen. Auch wenn die Ein- und Ausgabehier nur über die Kommandozeile erfolgt, ist dies kein Nachteil. ImGegenteil, da Konsolenprogramme nicht unbedingt Visual Studio .NETbenötigen, sondern schnell mit Notepad eingetippt, in eine Dateigespeichert und mit dem Visual Basic .NET-Compiler kompiliert wer-den, geht alles ein wenig schneller. Dieses Kapitel können Sie also auchdann durcharbeiten, wenn Sie nur über das .NET Framework SDK verfü-gen.

Page 4: Ein Grundkurs in Programmierung mit Visual Basic

Aufbau eines Visual Basic .NET-Programms

61

' -----------------------------------------------' Ein allgemeiner Rahmen für Konsolenprogramme' Visual Basic .NET Easy, Markt+Technik' -----------------------------------------------Imports System.Console

Class App

Shared Sub Main() ' Hier Befehle einfügen WriteLine("Auftrag ausgeführt!") End Sub

End Class

Ein allgemeiner Programmrahmen für Konsolenprogramme in Visual Basic .NET

Kommentare – überflüssig, aber wichtig

Sind die ersten vier Zeilen des obigen Programmlistings auch Befehlszeilen?(Und gibt es wirklich einen Befehl, der »Visual Basic .NET Easy« heißt?)Nein, ganz so flexibel ist Visual Basic .NET, was das Formulieren von Befeh-len angeht, nun noch nicht. Bei diesen Zeilen handelt es sich lediglich um

Kommentarzeilen

, die ein Listing enthalten kann, aber nicht enthalten muss.

Kommentarzeilen erlauben dem Programmierer, allgemeine Hinweise in einListing einzubauen, wie zum Beispiel eine kurze Beschreibung oder einenCopyright-Hinweis. Eine Kommentarzeile wird durch einen Apostroph ein-geleitet, auf den beliebige Zeichen folgen können. Da es sich nur um Hin-weise und nicht um Befehle handelt, werden Kommentarzeilen vomCompiler einfach ignoriert. Lassen Sie also Ihren dichterischen Fähigkeitenfreien Lauf (am Anfang können Sie aber ruhig auf Kommentare verzichten).

Tipp

Sie finden den Rahmen auf der Begleit-CD im Verzeichnis \Quel-len\Kapitel03 in der Datei Rahmen.vb. Verwenden Sie diesen Rahmenruhig, wenn Sie ein neues Konsolenprogramm anfangen möchten. Siemüssen dadurch diesen Rahmen nicht mehr neu eingeben, sonderntippen die neuen Befehle lediglich in die Prozedur Main ein. Das spartnicht nur etwas Zeit, sondern vermeidet auch unnötige Tippfehler.

Page 5: Ein Grundkurs in Programmierung mit Visual Basic

62

Eine Erfolgsmeldung zum Schluss – überflüssig, aber motivierend

Vielleicht ist Ihnen die kleine Ausgabe des Satzes »Auftrag ausgeführt!« inder Prozedur

Main

aufgefallen? Eine solche »Erfolgsmeldung« ist natürlichkeine Pflicht und soll am Anfang in erster Linie dazu dienen anzuzeigen,dass das Programm erfolgreich zu Ende gebracht wurde. Sollte Sie dieseMeldung stören oder sollten Sie sie schlicht für überflüssig halten, entfernenSie sie wieder aus dem Rahmen oder lassen sie beim Eintippen eines neuenListings einfach weg. Wie Ausgaben in einem Konsolenprogramm über die

WriteLine

-Funktion erfolgen, erfahren Sie weiter unten in diesem Kapitelim Abschnitt »

Ausgaben in der Konsole

«.

Ein Imports-Befehl vereinfacht die Programmierung (ist aber nicht notwendig)

Viele Visual Basic .NET-Programme beginnen in der Regel mit einem odermehreren

Imports

-Befehlen, die offenbar irgendetwas importieren. DiesesEtwas ist ein so genannter

Namespace

, der in

Kapitel 6

ausführlich erklärtwird. Halten Sie sich am Anfang an diesen einfachen Formalismus, derebenfalls nicht zwingend notwendig ist – lassen Sie den

Imports

-Befehlweg, müssen Sie vor einen Klassennamen den kompletten Namespace-Namen schreiben. Der Aufruf der

WriteLine

-Funktion sähe dann wie folgtaus:

System.Console.WriteLine("Auftrag ausgeführt!")

Mit einem vorausgehenden

Imports

-Befehl schreiben Sie einfach:

WriteLine("Auftrag ausgeführt!")

Sie sehen, dass ohne den

Imports

-Befehl die Programmierung etwas mehrTipparbeit erfordert, was sich bei großen Programmen durchaus bemerkbarmacht (denken Sie immer daran, Programmierer sind faul, aber dafür erfin-derisch).

Hinweis

Eine Kommentarzeile wird immer mit einem Apostroph (') eingeleitet.Alle Zeichen bis zum Zeilenende gehören zum Kommentar.

Page 6: Ein Grundkurs in Programmierung mit Visual Basic

Aufbau eines Visual Basic .NET-Programms

63

Die Main-Prozedur legt den Programmstart fest

Ein Befehl kann in einem Visual Basic .NET nicht einfach »irgendwo« ste-hen. Meistens befindet er sich in einer Prozedur. Eine

Prozedur

ist ein Name,der für eine Gruppe von Befehlen steht. Eine Prozedur wird über den

Sub

-Befehl von Visual Basic .NET eingeleitet, auf den der Name der Prozedurfolgt, und über den

End Sub

-Befehl wieder beendet. Wie groß eine Prozedurwird, spielt keine Rolle, sie kann aus einem oder aus mehreren Dutzend Be-fehlen bestehen.

Werfen Sie dazu noch einmal einen Blick in das Listing des oben gezeigtenProgrammrahmens. Auch dort finden Sie eine Prozedur, die wie folgt defi-niert wird:

Shared Sub Main()

End Sub

Prozeduren werden in

Kapitel 5

ausführlicher erklärt. Im Moment müssenSie sich nur merken, dass ein Konsolenprogramm immer eine Prozedur mitdem Namen

Main

besitzen muss. Das Befehlswort

Shared

gibt an, dass dieProzedur aufgerufen werden kann, ohne dass die Klasse instanziert werdenmuss. Mehr dazu ebenfalls in

Kapitel 5

.

Klassen bilden den Rahmen für ein Programm

Wenn Sie bei Klassen zunächst an Schule, Hausaufgaben, Nachsitzen, Text-aufgaben und andere mehr oder weniger erfreuliche Themen denken müssen,sind Sie noch ganz neu bei der Programmierung. Für einen Programmierer isteine Klasse lediglich ein Programmelement, mit dem sich ein so genannter

Typ

definieren lässt. Ein Typ wiederum steht für einen Satz an Eigenschaftenund Methoden sowie weitere Details. Dies sind aber alles Themen, die erst in

Kapitel 5

an der Reihe sind. Im Moment soll es lediglich darum gehen, dassjedes Visual Basic .NET-Programm aus mindestens einer Klasse besteht, diedurch den

Class

-Befehl eingeleitet und den

End Class

-Befehl wieder been-det wird.

Werfen Sie auch dazu noch einmal einen Blick in das Programmrahmenlis-ting. Auch dort finden Sie eine Klasse, die wie folgt definiert wird:

Class App

End Class

Der

Class

-Befehl definiert eine Klasse mit dem Namen

App

. Den Namenkönnen Sie sich frei ausdenken – in diesem Buch heißt die »Hauptklasse« in

Page 7: Ein Grundkurs in Programmierung mit Visual Basic

64

einem Konsolenprogramm immer

App

(für Applikation), wenngleich dies na-türlich nicht zwingend ist.

Das »kleinste« Visual Basic .NET-Programm der Welt

In den letzten Abschnitten war ein paar Mal davon zu lesen, dass ein Pro-grammelement im Grunde gar nicht wirklich benötigt wird. Wenn es nichtbenötigt wird, warum ist es dann dabei? Nun, auf diese mehr philosophischeFrage gibt es natürlich eine Antwort. Die Kurzform lautet, dass beim Pro-grammieren nicht nur Befehle, sondern auch Konventionen eine Rolle spie-len. Eine dieser Konventionen besagt, Programme mit einem Kommentarbeginnen zu lassen, eine andere, den

Imports

-Befehl zu verwenden. Den-noch, es geht auch etwas einfacher.

Als kleines »Kontrastprogramm« zeigt das folgende Listing das kleinste mög-liche Visual Basic .NET-Programm, das lediglich das zum Kompilieren not-wendige Gerüst enthält. Damit auch bei diesem Programm etwas passiert,wird eine Ausgabe in der Konsole durchgeführt. Diese ist natürlich – sie wer-den es sich doch gedacht haben – im Grunde überflüssig.

Class App

Shared Sub Main()

System.Console.WriteLine("Auftrag ausgeführt!")

End Sub

End Class

Das sicher kleinste Visual Basic .NET-Programm der Welt (Minimal.vb

)

Ist dieses Beispiel wirklich das kleinste Visual Basic .NET-Programm derWelt? Nun, nicht ganz. Wenn Sie wirklich möchten, geht es noch ein wenigeinfacher.

Das nächste Listing zeigt einen Rahmen, der mit dem

Module

-Befehl arbei-tet, der ein »Modul« definiert (dieser Begriff ist in erster Linie für Program-mierer gedacht, die bereits ältere Versionen von Visual Basic gut kennen).Da dieser Befehl aber lediglich eine Klasse definiert, in der alle Mitgliedermit

Shared

deklariert werden und somit direkt zugänglich ist, wird der

Mo-dule

-Befehl in diesem Buch nicht weiter verwendet (auch wenn es danachaussehen mag, dass durch ihn die Programmierung etwas vereinfacht wird).

Page 8: Ein Grundkurs in Programmierung mit Visual Basic

Konsolenprogramme umsetzen

65

Module App

Sub Main()

System.Console.WriteLine("Ich bin am kleinsten!")

End Sub

End Module

Kleiner geht es nun wirklich nicht mehr.

Konsolenprogramme umsetzen

Bevor es mit den ersten Beispielen losgeht, müssen Sie noch einmal ausführ-lich erfahren, wie Sie aus einem Listing, etwa jenen, die in diesem Kapitelvorgestellt werden, ein Visual Basic .NET-Programm machen, das Sie jeder-zeit ausführen können. Die Vorgehensweise ist dabei stets gleich:

1

Tippen Sie das Listing aus dem Buch mit

Notepad

oder SharpDevelop (ein Pro-grammeditor, der am Ende dieses Abschnitts kurz vorgestellt wird) ab oder geben Sie ein neues Listing ein (zum Beispiel, wenn Sie eine eigene Programmidee aus-probieren oder eine der Übungsaufgaben am Ende des Kapitels lösen möchten).

2 Speichern Sie das Programmlisting in einer Datei mit der Erweiterung .vb ab.

3 Rufen Sie die Eingabeaufforderung auf und wechseln Sie in das Verzeichnis, in dem Sie die Listingdatei gespeichert haben.

4 Rufen Sie nun den Visual Basic .NET-Compiler wie folgt auf:

vbc <Name der Listingdatei.vb>

Bei <Name der Listingdatei.vb> handelt es sich (natürlich) um den Na-men der Listingdatei, den Sie beim Abspeichern festgelegt haben.

Erwarten Sie vom Visual Basic .NET-Compiler kein großes »Brimborium«.Wenn Sie alles richtig gemacht haben, sehen Sie lediglich eine kurze Copy-right-Meldung des Programms. Das Ergebnis ist eine exe-Datei, die Sie durchEingabe ihres Namens zur Ausführung bringen.

Ansonsten werden alle Fehler aufgelistet, was am Anfang etwas frustrierendsein kann. Doch keine Sorge, Programmierfehler sind dazu da, dass sie ge-macht werden, damit man aus ihnen etwas lernen kann (und der Compilerist nicht nachtragend).

Page 9: Ein Grundkurs in Programmierung mit Visual Basic

66

So voll kann es auf dem Bildschirm werden, wenn der Visual Basic .NET-Compiler Fehler gefunden hat.

Die Arbeitsweise des Compilers beeinflussenNormalerweise gibt es keinen Grund, die Arbeitsweise des Compilers zu be-einflussen. Wie immer gibt es aber auch hier Ausnahmen. Eine solche liegtzum Beispiel dann vor, wenn Sie am Ende auch die Anzahl der Fehler ange-zeigt bekommen möchten. In diesem Fall müssen Sie den Compiler vbc.exezusätzlich mit der Option /verbose aufrufen:

vbc HalloWelt.vb /verbose

Es gibt noch mehr Compileroptionen, die Sie nach und nach kennen lernenwerden. Am Anfang benötigen Sie diese noch nicht. Eine Liste sämtlicherOptionen erhalten Sie immer dann, wenn Sie vbc ohne weitere Angabenoder mit der Option /? aufrufen. Die wichtigsten dieser Optionen sind in derfolgenden Tabelle zusammengefasst.

Compileroption Bedeutung

/bugreport:<Dateiname> Es wird ein Fehlerreport in der angegebenen Datei gespeichert, der ein Problem beschreibt, das beim Kompilieren aufgetreten ist.

/main:<Klasse> Legt den Namen der Klasse fest, die die Prozedur Main enthält, die den Programmstart einer Konsolen-anwendung definiert.

Page 10: Ein Grundkurs in Programmierung mit Visual Basic

Konsolenprogramme umsetzen

67

Weitere Bibliotheken (Assemblies) angebenWie eben beschrieben, setzen Sie grundsätzlich alle Visual Basic .NET-Programme um. Dies gilt auch für Windows-Anwendungen, wenngleich Siediese sehr viel komfortabler mit Visual Studio .NET entwickeln. In einigenFällen (aber nicht in diesem Kapitel) müssen Sie die Namen weiterer Biblio-theken angeben, die Funktionen enthalten, die von dem zu übersetzendenVisual Basic .NET-Programm benötigt werden. Eine häufig benötigte Biblio-thek ist System.dll. Diese Bibliothek wird beim Aufruf von Vbc.exe über dieOption /r: angegeben. Der Aufruf sieht damit wie folgt aus:

vbc beispiel.vb /r:system.dll

Doch woher weiß ich denn, welche Bibliothek(en) benötigt wird/werden?Das erfahren Sie zum Beispiel aus der Dokumentation. In diesem Buch er-halten Sie natürlich einen entsprechenden Hinweis, sodass es in diesem

/nologo Es wird keine Compilermeldung angezeigt. Das ist nützlich, wenn der Compiler über ein Skript oder eine Stapeldatei aufgerufen wird.

/out:<Name> Gibt den Namen der Ausgabedatei an, die das »Kom-pilat« enthält. Spielt nur dann eine Rolle, wenn die Ausgabedatei nicht den Namen der Quelltextdatei besitzen soll.

/r:<Name> Beim Kompilieren wird die über <Name> angegebene Bibliothek eingebunden. Das ist oft bei Assembly-Bibliotheken notwendig, wie zum Beispiel System.dll.

/t:library Erzeugt anstelle einer exe-Datei eine dll-Datei, das heißt eine Programmbibliothek.

/t:winexe Erzeugt eine Windows-Anwendung – hier gibt es keine Konsole, in der Ein- und Ausgaben durchgeführt werden.

/verbose Es werden ausführlichere Meldungen angezeigt.

@Datei Alle Compileranweisungen werden aus der angege-benen Datei eingelesen. Das ist praktisch, wenn der Compiler jedes Mal mit umfangreichen Angaben, etwa langen Bibliotheksnamen, aufgerufen wird, die man nicht immer wieder neu eintippen möchte.

Compileroption Bedeutung

Page 11: Ein Grundkurs in Programmierung mit Visual Basic

68

Punkt keine Missverständnisse geben kann. Sollte beim Umsetzen eines Lis-tings eine Fehlermeldung auftreten, die nicht auftreten sollte, kann es an ei-nem fehlenden Bibliotheksverweis liegen. Beim Arbeiten mit Visual Studio.NET spielen diese Verweise im Allgemeinen keine Rolle, da sie beim Anle-gen eines Projekts automatisch eingefügt werden (über die Projektmappen-Explorer erfahren Sie, welche Verweise ein Projekt enthält und können andieser Stelle auch Verweise hinzufügen oder entfernen).

SharpDevelop als Alternative zu NotepadSie müssen Konsolenprogramme nicht unbedingt mit Notepad eintippen. Siekönnen dazu genauso gut Visual Studio .NET verwenden (das wird in Kapitel5 gezeigt). Sollten Sie nicht über Visual Studio .NET verfügen oder es aus ir-gendeinem Grund nicht benutzen wollen, gibt es andere Alternativen. Einedavon ist der Freeware-Editor SharpDevelop. Er stammt nicht von Microsoft,sondern von einem Programmierer mit dem Namen Mike Krueger. Sharp-Develop ist ein attraktiver und leistungsfähiger Editor für .NET-Programmie-rer. Sie finden ihn auch auf der Begleit-CD im Verzeichnis \SharpDevelop.Aktuelle Versionen sowie viele weitere Informationen finden Sie im Internetunter http://www.icsharpcode.net/OpenSource/SD/default.asp

Die Installation besteht aus dem Aufruf der Setup-Datei (zum Beispiel088bSetup.exe für die Version 0.88) und ist in Sekundenschnelle erledigt.Auch die Bedienung ist sehr einfach. Folgende Möglichkeiten bietetSharpDevelop:

• Sie können Projekte anlegen, auch ein VB Forms-Projekt, wobei hier dieIDE aber nur den erforderlichen Code einfügt. Im Unterschied zu VisualStudio .NET gibt es (natürlich) keinen Formular-Designer und keine Tool-box. Das wäre für einen kleinen Editor deutlich eine Nummer zu groß.

• Der Editor bietet eine einfache Syntaxhervorhebung für alle unterstütz-ten Sprachen. Das bedeutet, dass wenn Sie einen Visual Basic .NET-Befehl eintippen, dieser vom Editor in einer charakteristischen Farbeangezeigt wird.

• Eine Visual Basic .NET-Datei kann aus der IDE heraus kompiliert undgestartet werden.

• Es gibt zwar keine Aufgabenliste, in die Compilerfehler eingetragen wer-den, aber sie werden im Quelltext unterlegt angezeigt.

• Sie können Lesezeichen setzen.

Page 12: Ein Grundkurs in Programmierung mit Visual Basic

Konsolenprogramme umsetzen

69

• Es gibt eine Zwischenablage (Clipboard Ring), in der man Textfragmenteablegen kann, um sie später wiederzuverwenden.

• Die Suchfunktion unterstützt reguläre Ausdrücke.

• Einzelne Tools, wie IL Dasm oder WinCV (der Klassenviewer), lassensich über das EXTRAS-Menü aufrufen.

• Es gibt einen Messagebox-Wizard, mit dem sich Dialogfelder zusam-menstellen lassen.

• Über die Optionen lässt sich eine Landessprache aus einem Dutzendunterschiedlicher Landessprachen einstellen.

• Es gibt eine Online-Hilfe.

SharpDevelop ist für Visual Basic .NET-Programmierer eine sehr attraktive Alternative zu Notepad.

Hinweis

Ein kleiner Nachteil bei SharpDevelop ist, dass bei Dateien, dieUmlaute enthalten, diese offenbar nicht in allen Fällen korrekt gela-den werden.

Page 13: Ein Grundkurs in Programmierung mit Visual Basic

70

Variablen als Kurzzeitgedächtnis des ComputersIn diesem Abschnitt geht es mit dem Grundkurs richtig los. Mit den Variab-len lernen Sie das erste wichtige Element praktisch jeder Programmierspra-che kennen. Variablen sind das »Kurzzeitgedächtnis« eines Programms. Siesind dazu da, dass ein Programm sich Zahlen, Zeichenketten, Datumsanga-ben, kurz alles das merken kann, was während der Programmausführung an-fällt und nicht sofort wieder in Vergessenheit geraten soll. Wann immer sichein Computerprogramm etwas merken soll, verwendet der Programmiererdafür eine Variable.

Der Umgang mit Variablen ist sehr einfach. Sie müssen lediglich wissen,dass Variablen (meistens am Anfang) des Programms »bekannt gemacht«werden müssen. Sie können sich sicher schon denken, dass dies nicht deroffizielle Begriff ist. Programmierer sprechen vielmehr von der Deklarationeiner Variablen.

Für diese Variablendeklaration gibt es bei Visual Basic .NET gleich mehrereBefehle. In diesem Kapitel lernen Sie den Dim-Befehl kennen. Dieser Befehlhat bei Visual Basic eine lange Tradition, sodass sich aus seinem Namennicht direkt auf seine Rolle schließen lässt. Merken Sie sich daher fürs Erstenur, dass Variablen zu Beginn des Programms mit Dim deklariert werdenmüssen.

Der folgende Befehl deklariert eine Variable mit dem Namen Zahl und gibtihr den Anfangswert 123.

Dim Zahl As Short = 123

Was ist das?

Eine Variable ist ein Name, der für einen beliebigen Wert, das heißteine Zahl, einen Text oder ein Datum, steht.

Hinweis

Eine Variable muss vor ihrer Benutzung einmalig deklariert werden.Diese Aufgabe übernimmt meistens der Dim-Befehl. Andere Befehlefür die Variablendeklaration sind Private, Public und Friend.

Page 14: Ein Grundkurs in Programmierung mit Visual Basic

Variablen als Kurzzeitgedächtnis des Computers

71

Doch was hat dieses »As Short« zu bedeuten? Dies ist ein sehr wichtiger As-pekt bei der Deklaration von Variablen, der aber am Anfang vielleicht nichtganz einfach zu verstehen ist. Neben einem Namen benötigt eine Variableimmer einen so genannten Datentyp. Dieser legt fest, welcher Typ von Wertin der Variablen gespeichert werden kann. Short ist ein Name, der für ganz-zahlige Zahlen im Bereich –32.768 bis +32.767 steht. Größere und kleinereZahlen können daher in der Variablen Zahl genauso wenig gespeichert wer-den wie die Zahl 3,14327689, da dies keine ganze Zahl ist. Auch wenn sichdas nach einer unnötigen Einschränkung anhören mag, ist dies natürlichnicht der Fall. Dem Programmierer steht es selbstverständlich frei, einen an-deren, besser passenden Datentyp zu verwenden. Über den Datentyp erfährtder Visual Basic .NET-Compiler, welche Sorte von Daten in der Variablengespeichert werden sollen und kann sich entsprechend darauf einstellen.Mehr zu den Datentypen in Kapitel 7.

Namensregeln für VariablennamenAuch wenn Sie für eine Variable im Prinzip einen beliebigen Namen wählenkönnen, gibt es ein paar Einschränkungen, die Sie kennen müssen:

• Variablen dürfen keine Leerzeichen enthalten. Auch einige Sonderzei-chen, wie %, &, $, @ und #, sind in Variablennamen nicht erlaubt.

• Variablen dürften (oder besser sollten) nicht die Namen von Befehls-und Schlüsselwörtern oder anderen reservierten Namen erhalten. Solltees sich nicht vermeiden lassen, muss der Name in eckige Klammerngesetzt werden (das ist aber eine seltene Ausnahme).

• Für Variablennamen gibt es keine (echte) Längenbegrenzung – Sie solltendaher einen Namen so wählen, dass er »sprechend« ist und sich aus demNamen die Bedeutung seines Inhalts erkennen lässt. Nennen Sie eineVariable daher ruhig Mwst oder Mehrwertsteuer und nicht nur Mw. Beisehr langen Namen ist es üblich, die einzelnen Namensteile durch einenUnterstrich zu trennen (zum Beispiel Koerperschaftsteuer_2002). Aufdiese Weise wird der Name besser lesbar.

• Auch wenn Umlaute in einem Variablennamen erlaubt sind, sollten Siesie wenn möglich vermeiden (dies ist aber keine echte Regel, sonderneher eine persönliche Empfehlung).

Variablen in AktionSobald der formelle Teil erledigt ist, kann die Variable benutzt werden. Derfolgende Befehl gibt der Variablen Zahl einen Wert:

Page 15: Ein Grundkurs in Programmierung mit Visual Basic

72

Zahl = 1234

Das Zuweisen eines Wertes an eine Variable wird Zuweisung genannt (ei-gentlich logisch). Wichtig ist dabei, dass der Name der Variablen links vomGleichheitszeichen steht – das Gleichheitszeichen bedeutet nicht, dass dielinke Seite gleich der rechten Seite ist, sondern muss als »wird zu« gelesenwerden. Überall, wo der Name Zahl im Programm auftaucht (und die Vari-able gültig ist, was nicht uneingeschränkt der Fall sein muss), steht sie fürden aktuellen Wert. Dieser kann jederzeit wieder geändert werden:

Zahl = 5678

Es ist auch möglich, mehrere Variablen auf einmal zu deklarieren:

Dim Alter, Gewicht, IQ As Short

Alle drei Variablen erhalten den Datentyp Short (das ist ein wichtiger Un-terschied zu früheren Versionen von Visual Basic, in denen die VariablenAlter und Gewicht den Datentyp Variant erhalten hätten, den es beiVisual Basic .NET nicht mehr gibt).

Das folgende Beispiel (Variablen.vb) zeigt den generellen Umgang mit Vari-ablen. Es wird eine Variable mit dem Namen Zahl definiert, die einen An-fangswert erhält, der im weiteren Verlauf des Programms zwei Mal geändertwird. Einmal durch eine Zuweisung, ein weiteres Mal, in dem der Wert um1 erhöht wird.

' -----------------------------------------------' Beispiele für den Umgang mit Variablen' Visual Basic .NET Easy, Markt+Technik' -----------------------------------------------Imports System.Console

Class App

Shared Sub Main() Dim Zahl As Short = 123 WriteLine("Der Wert von Zahl ist: " & Zahl) Zahl = 456 WriteLine("Der neue Wert von Zahl ist: " & Zahl) Zahl +=1 WriteLine("Der neue Wert von Zahl ist: " & Zahl) End Sub

End Class

Konstanten als AlternativeNeben Variablen kennt Visual Basic .NET auch Konstanten. Sie sind das Ge-genstück zu Variablen. Wie es der Name bereits andeutet, ist ihr Wert kon-

Page 16: Ein Grundkurs in Programmierung mit Visual Basic

Ausgaben in der Konsole

73

stant, er kann sich während der Programmausführung nicht ändern.Konstanten werden über den Const-Befehl definiert.

Der folgende Const-Befehl definiert eine Konstante mit dem Namen Mwstund dem Datentyp Byte (Wertebereich 0 bis 255 ohne Vorzeichen):

Const Mwst As Byte = 16

Ausgaben in der KonsoleBevor es mit dem Grundkurs der Visual Basic .NET-Programmierung weiter-geht, müssen Sie etwas mehr über die Ausgabe von Texten und anderen Din-gen in der Konsole erfahren. Ein Konsolenprogramm arbeitet (meistens)nicht mit Fenstern, sämtliche Ausgaben werden in der Konsole (dem Fensterder Eingabeaufforderung) durchgeführt. Das sieht am Anfang zwar nicht sehraufregend aus, ist für die meisten Situationen aber vollkommen ausreichend.

Anders als man es zunächst vielleicht vermuten könnte, gibt es bei VisualBasic .NET keinen Ausgabebefehl. Doch wie soll man Ausgaben denn an-sonsten durchführen? Ganz einfach, über eine Klassenfunktion. Klassen-funktionen sind bei .NET »Befehle«, die immer zu einer Klasse gehören.Klassen sind bei .NET wiederum »Behälter«, die Funktionen enthalten. Siewerden über Klassen und Klassenfunktionen noch sehr viel in diesem Buchlesen, da sie für die Programmierung eine wichtige Rolle spielen. Kapitel 6geht ausführlicher auf die Rolle dieser .NET-Basisklassen ein. Im Moment ge-nügt es, wenn Sie sich merken, dass es für die Ausgabe in der Konsole dieWriteLine-Funktion gibt, die zur Klasse Console gehört.

Nun müssen Sie außerdem noch wissen, dass Klassenname und Funktions-name immer durch einen Punkt getrennt werden. Zudem wird das, was aus-gegeben werden soll, in Klammern gesetzt (das ist bei Funktionen so üblich).Möchten Sie daher den Satz »Visual Basic .NET hat Klasse« in der Konsoleausgeben, lautet der komplette Befehl wie folgt:

Console.WriteLine("Visual Basic .NET hat Klasse")

Hinweis

Klassenname und Funktionsname werden bei Visual Basic .NET immerdurch einen Punkt getrennt.

Page 17: Ein Grundkurs in Programmierung mit Visual Basic

74

Ausgaben mit PlatzhalterDie WriteLine-Funktion besitzt eine Besonderheit, die Sie kennen müssen,da sie bereits für die ersten kleinen Beispiele in diesem Kapitel eine Rollespielt. In den Ausgabetext können Platzhalter eingebaut werden, die bei derAusgabe durch Zahlen oder andere Daten ersetzt werden. Ein Platzhalter istdabei eine Zahl zwischen 0 und 9, die in geschweifte Klammern gesetzt wird(zum Beispiel {0}). Doch was soll das bringen? Ganz einfach, auf diese Wei-se muss die Zeichenkette nicht geändert werden, wenn sich der auszugeben-de Wert einer Zahl ändern sollte.

Stellen Sie sich vor, Sie möchten einen Kontostand in der Konsole ausgeben– der Kontostand ist in einer Variablen mit dem Namen Konto enthalten. MitPlatzhalter sieht die Ausgabe wie folgt aus:

Console.WriteLine("Der aktuelle Kontostand: {0}", Konto)

Haben Sie den Platzhalter erkannt? Es ist {0}. Bei der Ausgabe ersetzt VisualBasic .NET diesen Platzhalter durch den Wert der Variablen Konto. Beträgtdieser zum Beispiel 350,28, sieht die Ausgabe wie folgt aus:

Der aktuelle Kontostand: 350,28

Eine besondere Erweiterung bei Platzhaltern ist die Möglichkeit, die Ausga-be in einer speziellen Art und Weise ausgeben zu können. Dies wird Forma-tierung genannt. Bei Währungsbeträgen bietet es sich natürlich an, diese indem speziellen Währungsformat auszugeben, das über die Ländereinstel-lungen des Computers festgelegt wird. Dazu muss auf den Platzhalter ein :Cfolgen:

Console.WriteLine("Der aktuelle Kontostand: {0:C}", _ Konto)

Leider sehen Sie aber bei der Konsolenausgabe kein Eurozeichen, da derZeichensatz es nicht darstellen kann.

Eingaben über die KonsoleNatürlich muss es auch eine Möglichkeit geben, während der Programmaus-führung Eingaben über die Tastatur durchführen zu können. Auf diese Weisewird es zum Beispiel möglich, dass ein Programm Werte verarbeitet, die derAnwender erst während der Programmausführung eingegeben hat. Für Ein-gaben über die Tastatur stellt .NET die Klassenfunktion ReadLine zur Verfü-gung. Wie WriteLine gehört auch ReadLine zur .NET-BasisklasseConsole, was für die Praxis aber keine Bedeutung hat (mehr zur Rolle derBasisklassen bei der Visual Basic .NET-Programmierung in Kapitel 6).

Page 18: Ein Grundkurs in Programmierung mit Visual Basic

Eingaben über die Konsole

75

Trifft das Programm bei der Ausführung auf eine ReadLine-Funktion, hält esan und wartet auf eine Eingabe durch den Anwender. Die Programmausfüh-rung wird erst dann fortgesetzt, wenn der Anwender die (¢)-Taste drückt.Alle eingegebenen Zeichen, die von der ReadLine-Funktion »zurückgege-ben« werden, werden üblicherweise einer Variablen zugewiesen, die vomTyp String sein muss (oder besser sollte, ansonsten kann eine Ausnahmedie Folge sein, die zu einem Programmabbruch führt, wenn sie nicht abge-fangen wird), denn ReadLine gibt immer Zeichenfolgen zurück. Dies giltauch dann, wenn eine Zahl oder ein Datum eingegeben wurde.

Wenn Sie ReadLine benutzen möchten, sieht die Befehlszeile wie folgt aus:

Lieblingsfilm = ReadLine()

Da man dem Anwender in der Regel mitteilen möchte, was er an dieser Stel-le eingeben soll (ansonsten erscheint nur der kleine blinkende Balken, wasnicht sehr aussagekräftig ist), gibt man vorher eine so genannte Eingabeauf-forderung (auch als Prompt bezeichnet) aus. Dies geschieht wieder mit derWriteLine-Funktion, die Sie bereits kennen gelernt haben.

ReadLine als »Programmstopper« bei Visual Studio .NETWenn Sie mit Visual Studio .NET arbeiten, dürfte Ihnen schon aufgefallensein, dass das Fenster des Konsolenprogramms am Ende einfach wieder ver-schwindet und Programmausgaben nicht mehr zu sehen sind. Eine Möglich-keit, dies zu verhindern, besteht darin, am Ende des Programms dieReadLine-Funktion aufzurufen. Sie bewirkt, dass die Programmausführungangehalten und erst mit dem Drücken der (¢)-Taste fortgesetzt wird.

Wer es ganz korrekt machen möchte, stellt der ReadLine-Funktion eineWrite-Funktion voran, sodass der Anwender erfährt, warum das Programmscheinbar hängt:

Write("Weiter mit der Eingabe-Taste")ReadLine()

Die Read-Funktion für die Eingabe eines einzelnen ZeichensMehr der Vollständigkeit halber soll auch die Read-Funktion vorgestellt wer-den. Sie nimmt lediglich ein einzelnes Zeichen entgegen, dessen Zeichen-code zurückgegeben und im Programm abgefragt werden kann. Doch da dieEingabe immer mit der (¢)-Taste abgeschlossen werden muss, ist sie etwasunpraktisch und wird daher relativ selten benötigt.

Page 19: Ein Grundkurs in Programmierung mit Visual Basic

76

Das folgende Beispiel (ReadWriteLine.vb) zeigt, wie Eingaben über dieReadLine-Funktion und Ausgaben über die Write-Funktion durchgeführtwerden (im Unterschied zu WriteLine geschieht am Ende kein Zeilen-sprung, sodass die Eingabe in der gleichen Zeile wie die Ausgabe erfolgt).Wenn Sie das Programm starten, werden Sie aufgefordert, einen Namen ein-zugeben. Anschließend gibt das Programm die Anzahl der Zeichen in die-sem Namen aus (dazu wird die Length-Eigenschaft der String-Klassebenutzt, die Sie in Kapitel 7 kennen lernen werden).

' -----------------------------------------------' Ein- und Ausgaben in der Konsole' Visual Basic .NET Easy, Markt+Technik' -----------------------------------------------Imports System.Console

Class App

Shared Sub Main() Dim Name As String Write("Bitte Ihren Namen eingeben") Name = ReadLine() WriteLine("Hallo, {0} - der Name umfasst {1} Zeichen", Name, Name.Length) End Sub

End Class

Wenn Visual Basic .NET WriteLine & Co. nicht kennen will

Viele Beispiele in diesem Buch verwenden zwar munter WriteLine undReadLine, doch wenn Sie sie so abtippen, wie es im Buch steht, unddann kompilieren, gibt es auf einmal eine Fehlermeldung. Der VisualBasic .NET-Compiler will die Funktionen offenbar nicht kennen – was isthier los? Der Grund dafür ist, dass der Funktionsname alleine nichtgenügt und Sie den Imports-Befehl vergessen haben. Zu jeder Funktionmuss offiziell nicht nur der Klassenname, sondern auch der so genannteNamespace angegeben werden. Den Namen der Klasse kennen Siebereits, sie heißt Console, und der Namespace heißt System, sodass derkomplette Funktionsname System.Console.WriteLine lautet. Da die-ses Voranstellen des Namespace- und des Klassennamens bei zwei oderdrei Funktionen kein Problem ist, bei mehreren Dutzend Funktionen aberin Tipparbeit ausartet, gibt es den Imports-Befehl. Er wurde bereits kurzzu Beginn dieses Kapitels erwähnt und wird in Kapitel 6 ausführlichererklärt. Bis dahin nehmen Sie den Imports-Befehl einfach als praktischeAbkürzung hin, die Sie zu Beginn des Programms nicht vergessen sollten.

Page 20: Ein Grundkurs in Programmierung mit Visual Basic

Mit Operatoren lernt ein Programm rechnen

77

Mit Operatoren lernt ein Programm rechnenNatürlich muss ein Computer auch rechnen können. Das kann man schließ-lich erwarten, zumal sich der Name Computer genau aus diesem Umstandableitet (engl. to compute = rechnen). Die Rechenbefehle von Visual Basic.NET lassen sich in zwei Kategorien einteilen: Operatoren und Klassenfunk-tionen. Die Klassenfunktionen, wie zum Beispiel Sin für die Sinus-Winkel-funktion oder Sqrt für die Berechnung der Quadratwurzel, lernen Sie inKapitel 6 kennen, im Folgenden geht es nur um die Operatoren.

Ein Operator verknüpft zwei Ausdrücke zu einem neuen Wert (der BegriffAusdruck wird im nächsten Abschnitt erklärt). Operatoren müssen deswe-gen nicht ausführlich erklärt werden, weil wir im täglichen Leben praktischpermanent mit ihnen in Berührung kommen. Zwei Zahlen werden über den+-Operator addiert und über den --Operator subtrahiert. Nicht alle Opera-toren entsprechen den Symbolen aus dem Alltag, die Sie auch auf jedem Ta-schenrechner finden. So lautet der Divisionsoperator wahlweise \ oder /, jenachdem, ob ein Rest mit Nachkommaanteil oder nur eine ganze Zahl ohneNachkommaanteil herauskommen soll, und der Potenzoperator, der Zahl1hoch Zahl2 ausrechnet, ist das ^-Zeichen.

Alle Operatoren, die Visual Basic .NET kennt, sind in der folgenden Tabellein der Reihenfolge ihrer Priorität zusammengestellt. Mit dabei sind auch dielogischen Operatoren, wie And und Or, die weiter unten im Abschnitt »Stun-de der Entscheidung« erklärt werden, wenn es um das Thema Bedingungen,und wie sie sich verknüpfen lassen, gehen wird.

Operator Bedeutung

^ Potenzierung (zum Beispiel 2 ^3 = 8)

+, – Vorzeichen

*, /, *=, /= Multiplikation, Division bzw. kombinierte Operation mit einer Zuweisung

\ Integer-Division

Mod Rest einer Division

+, -, +=, -= Addition, Subtraktion bzw. kombinierte Operation mit einer Zuweisung

&, &= Zusammenfügen von Zeichenketten bzw. kombinierte Opera-tion mit einer Zuweisung

Page 21: Ein Grundkurs in Programmierung mit Visual Basic

78

Ausdrücke bestehen aus Operanden und OperatorenEin Ausdruck in einem Visual Basic .NET-Programm hat nichts mit seinerumgangssprachlichen Bedeutung zu tun. Seine Definition ist vielmehr klarund vor allem eng umrissen: Ein Ausdruck ist eine (beliebige) Kombinationaus Zahlen, Variablen, Funktionen und Operatoren, die nach gültigen Syn-taxregeln kombiniert werden und die immer einen einzigen Wert ergeben.Selbst eine einfache Zahl stellt einen Ausdruck dar. Ausdrücke sind in einemVisual Basic .NET-Programm wie Variablen allgegenwärtig, denn sie kom-men praktisch in jedem Befehl vor.

Der folgende Ausdruck besteht aus zwei Operanden 4 und 5, einer Variab-len A und zwei Operatoren:

4 + 5 * A

Ausdrücke können auch etwas umfangreicher sein:

11 + (22 + 33)^2 –(44 –55)^3 –1

Oder lediglich aus einer einzigen Zahl bestehen:

-4

Das Minuszeichen ist auch ein Operator und zwar ein anderer als das Mi-nuszeichen im folgenden Ausdruck:

5-4

Im ersten Fall stellt das Minuszeichen den »unären« Vorzeichenoperatordar, im zweiten Fall den bekannten Subtraktionsoperator. Der folgende Aus-druck ist daher nicht korrekt, weil er nicht vollständig ist:

4 +

=, <>, <, >, <=, >=, Like, Is, TypeOf…Is

Vergleichsoperatoren

Not Logische Umkehrung

And, AndAlso Logische UND-Verknüpfung

Or, OrElse Logische ODER-Verknüpfung

Xor Logische XOR-Verknüpfung (Entweder-Oder-Verknüpfung)

Operator Bedeutung

Page 22: Ein Grundkurs in Programmierung mit Visual Basic

Mit Operatoren lernt ein Programm rechnen

79

Auf den Additionsoperator muss ein zweiter Operand folgen.

Es kommt auf die Reihenfolge anBeim Umgang mit Operatoren müssen Sie zwei grundsätzliche Fakten be-rücksichtigen:

• Ein Operator steht immer zwischen den Operanden – eine Ausnahmesind jene (wenigen) Operatoren, die nur mit einem Operand arbeiten.

• Bei den Operatoren gibt es eine so genannte Rangfolge, die Visual Basic.NET immer dann berücksichtigt, wenn mehrere Operatoren in einemAusdruck verknüpft werden.

Aus der Schule wissen Sie sicherlich, dass Punkt- immer vor Strichrechnunggeht. Diese Regel gilt auch für Visual Basic .NET. Der Ausdruck 4+3*2 ergibtdaher stets 10. Soll die Reihenfolge verändert werden, muss der Teilaus-druck mit einem Operator niedriger Priorität in Klammern gesetzt werden.(4+3)*2 ergibt nun 14.

Kleine Abkürzungen gehören zum ProgrammieralltagBei einfachen arithmetischen Operationen bietet Visual Basic .NET einekleine Abkürzung. Der Befehl

a = a + 3

erhöht den in der Variablen a gespeicherten Wert um 3.

Der folgende Befehl macht das Gleiche, nur etwas kürzer:

a += 3

Das sind die kleinen »Tricks«, die Sie im Laufe der Zeit verinnerlichenwerden.

Hinweis

Bei Zahlen, die in ein Programmlisting eingegeben werden, ist dasDezimaltrennzeichen ein Punkt (und nicht ein Komma). Wird eineZahl dagegen während der Programmausführung eingegeben, hängtdas Dezimaltrennzeichen von den Ländereinstellungen ab – inDeutschland ist es das Komma.

Page 23: Ein Grundkurs in Programmierung mit Visual Basic

80

Ein kleiner MehrwertsteuerrechnerIn diesem Abschnitt wird ein kleines Beispielprogramm vorgestellt, mit des-sen Hilfe Sie nach Eingabe eines Bruttobetrags den Nettobetrag und die indiesem Betrag enthaltene Mehrwertsteuer erhalten. Das Beispiel kombiniertdie Eingabe über ReadLine mit der Ausgabe über Write und WriteLine.Auch das Deklarieren von Variablen und das Durchführen einfacher arith-metischer Operationen kommen noch einmal vor.

' ===============================================' Kleiner Mwst-Rechner' Visual Basic .NET Easy' ===============================================Imports System.Console

Class App Shared Sub Main () Dim Netto, Brutto, Mwst As Single Write("Brutto?") Brutto = ReadLine() Netto = (Brutto / 116) * 10 Mwst = Brutto – Netto WriteLine("Brutto: {0} Netto: {1} Mwst. {2}", _ Brutto, Netto, Mwst) End SubEnd Class

Speichern Sie das Listing in einer Datei beispielsweise mit dem NamenMwst.vb und kompilieren Sie die Datei wie folgt:

vbc mwst.vb

Ging alles gut, kommt eine Programmdatei mit dem Namen Mwst.exe her-aus. Nach dem Start des Programms werden Sie aufgefordert, einen Brutto-betrag einzugeben (denken Sie daran, dass für das Dezimaltrennzeichen einKomma eingegeben werden muss). Anschließend werden Nettobetrag undMehrwertsteuer über die WriteLine-Funktion ausgegeben.

Vorsicht bei der Eingabe von Zahlen über ReadLineNatürlich weiß ein Visual Basic .NET-Programm nichts über die Mehrwert-steuer und andere Dinge, auch wenn man dies zunächst vermuten könnte.Die ReadLine-Funktion nimmt stur alle Zeichen entgegen, die bis zum Drü-cken der (¢)-Taste eingegeben werden. Dagegen ist auch nichts einzuwen-den. Problematisch kann es immer dann werden, wenn die Eingabe direkteiner Variablen zugewiesen wird, die als Datentyp nicht String besitzt. Indiesem Fall muss die Eingabe sich in eine Zahl umwandeln lassen, ansons-ten meldet die CLR einen Fehler, der bei .NET Ausnahme genannt wird.

Page 24: Ein Grundkurs in Programmierung mit Visual Basic

Wie ein Computerprogramm Entscheidungen trifft

81

Bezogen auf den Mehrwertsteuerrechner könnten Sie auf die Idee kommen,bei der Eingabeaufforderung statt 100 »100 Euro« einzugeben. Auch wenndies einen Sinn ergeben mag, das Programm kann mit dem Zusatz »Euro«nichts anfangen. Da sich dieser Ausdruck nicht in eine Zahl umwandelnlässt, kommt es beim Befehl

Brutto = ReadLine()

zu der erwähnten Ausnahme. Wie sich solche Ausnahmen »abfangen« las-sen, wird in Kapitel 8 gezeigt. Im Moment (und für die meisten Beispielpro-gramme, die in diesem Buch vorgestellt werden) sollten Sie versuchen, allesrichtig einzugeben. Sonst erscheint sehr schnell ein Dialogfeld, wie es in dernächsten Abbildung gezeigt wird. Sie werden damit von der CLR gefragt, obSie das Programm »debuggen« möchten. Antworten Sie auf diese Frage im-mer durch Anklicken der NEIN-Schaltfläche (es sei denn, Sie möchten dasProgramm wirklich debuggen, was in diesem Buch aber nicht erklärt wird).

Upps, da ging etwas schief – ein Programm hat eine Ausnahme verursacht. In diesem Fall gilt es, die Ausführung abzubrechen und die Ursache für die Ausnahme zu finden.

Stunde der Entscheidung oder wie ein Computerprogramm Entscheidungen trifftDieser Abschnitt hätte auch mit »Der Computer tut so, als ob er denken wür-de, obwohl er dazu nicht in der Lage ist« überschrieben werden können –

Page 25: Ein Grundkurs in Programmierung mit Visual Basic

82

diese Überschrift wäre etwas ehrlicher, aber leider auch etwas länger. Com-puter können natürlich nicht denken, sie können nicht fühlen und auchnicht beleidigt sein (dass Computer, die häufiger von ihren menschlichenBesitzern angebrüllt werden, auf einmal sehr langsam werden und sehr selt-same Fehler produzieren, ist ein bis heute unbewiesenes Gerücht).

Allerdings können Computer Entscheidungen treffen und Berechnungen miteiner unglaublichen Geschwindigkeit durchführen. Möglich wird dies mitden elementaren Befehlen für Entscheidungen und Programmschleifen, dieVisual Basic .NET, wie praktisch jede andere Programmiersprache auch, zurVerfügung stellt. Im Folgenden lernen Sie das Prinzip kennen, nach dem ineinem Visual Basic .NET-Programm Entscheidungen durchgeführt werden –die Programmschleifen sind in Kapitel 4 an der Reihe. Bevor Sie aber die da-für zuständigen Befehle If, Else & Co. kennen lernen, müssen Sie erst ein-mal verstanden haben, auf welcher Grundlage in einem Computer eineEntscheidung getroffen wird.

Alles ist wahr oder falsch oder so – »denken« ComputerComputer können nicht denken. Das wurde bereits im letzten Abschnitt er-wähnt und dürfte vielleicht jene Leser etwas beruhigt haben, die bislangnoch nicht direkt mit der Programmierung eines Computers konfrontiertwurden und daher diesem vielleicht etwas mehr zutrauten als dieser zu leis-ten imstande ist. Doch können Computer Entscheidungen treffen?

Die Antwortet lautet Ja und Nein. Nein, weil es keine selbstständige, eigenver-antwortliche und von der jeweiligen Stimmungslage (die es, wie Sie inzwi-schen wissen, bei einem Computer gar nicht gibt) abhängige Entscheidung ist.Ja, weil Computer in der Lage sind, Zahlen zu vergleichen und eine Befehls-folge in Abhängigkeit dieses Vergleichs auszuführen.

Computer können also Entscheidungen treffen, allerdings auf der Grundlagesehr einfacher Ja/Nein-Entscheidungen, deren Ergebnis nur »Ja« (Vergleichstimmt) und »Nein« (Vergleich stimmt nicht) sein kann. Ein Programm ver-gleicht zwei Zahlen Zahl1 und Zahl2 und prüft eine Bedingung, die etwa»Ist Zahl1 größer als Zahl2?« lauten kann. Sie werden im Folgenden lernen,dass ein solcher Vergleich immer nur zwei Ergebnisse haben kann: 1. Er istwahr. 2. Er ist nicht wahr.

Was scheinbar nach einer begrenzten Auswahl aussieht (stellen Sie sich eineEisdiele mit nur zwei Sorten Eis vor), ist in Wirklichkeit ein sehr flexiblesKonzept. Praktisch alle Computer der Welt arbeiten nach diesem Prinzip

Page 26: Ein Grundkurs in Programmierung mit Visual Basic

Wie ein Computerprogramm Entscheidungen trifft

83

und steuern damit Raumsonden durch den Weltraum (die hin und wiederverloren gehen – daran sind mit Sicherheit irgendwelche Außerirdischenschuld), berechnen Aktienkurse und sagen das Ergebnis einer Bundestags-wahl auf drei Überhangmandate genau voraus.

Wahr oder falsch? Das ist immer die FrageBevor die ersten Beispiele vorgestellt werden, müssen Sie sich in aller Kürzemit der Logik eines Computerprogramms vertraut machen. Das ist ein wenigso wie in der Fahrschule, wo den ersten Praxisstunden stets eine kurze Ein-führung in die »Logik« eines Kraftfahrzeugs vorausgeht (erst den Gang ein-legen, dann gefühlvoll das Gaspedal treten). Alles ist sehr einfach, höchstensein wenig ungewöhnlich.

Die Computerlogik ist wirklich sehr einfach, denn es gibt nur zwei Zustände:Wahr oder Falsch. Beide Begriffe haben nichts mit der umgangssprachlichenBedeutung dieser Wörter zu tun, sie stehen lediglich für die Zustände Einund Aus, die jeder Schalter annehmen kann (intern besteht ein Computer ausvielen Hundert Millionen solcher Schalter, die alle nur diese beiden Zustän-de annehmen können). Zwischenzustände gibt es nicht. Ein Zustand ist ent-weder ein oder aus, 1 oder 0, wahr oder falsch. Auf dieser einfachen Logikbasiert die gesamte Programmierung. Da es eine Logik mit nur zwei Zustän-den ist, wird sie auch als binäre Logik bezeichnet (bi = zwei).

Bei Programmiersprachen werden die Zustände Wahr und Falsch unter-schiedlich festgelegt. Bei Visual Basic .NET steht der Zustand Falsch für denWert 0, er wird durch die Konstante False repräsentiert. Der Zustand Wahr,hierfür gibt es die Konstante True, steht offiziell für -1, doch inoffiziell ist je-der Ausdruck, der nicht 0 ist, Wahr.

Wenn dann und ansonsten nicht – Der If-BefehlDer wichtigste Befehl für Entscheidungen ist der If-Befehl, der sehr einfachfunktioniert. Auf den If-Befehl folgt ein beliebiger Ausdruck. Ist dieser Aus-druck gleich 0, wird er vom If-Befehl als False betrachtet und die auf If

Hinweis

Speziell für die Werte True und False gibt es bei Visual Basic .NETden Datentyp Boolean. Eine Variable vom Typ Boolean kann nur dieWerte True und False annehmen.

Page 27: Ein Grundkurs in Programmierung mit Visual Basic

84

folgenden Befehle werden nicht ausgeführt. Stattdessen wird der erste Befehlausgeführt, der auf den dazugehörigen End If- oder Else-Befehl folgt.

Der folgende »Volljährigkeitscheck« (Volljaehrigkeitscheck1.vb) soll fest-stellen, ob eine Person volljährig ist oder nicht, indem die Variable Alterüber einen If-Befehl geprüft wird.

' ===============================================' Beispiel für den If-Befehl' Visual Basic .NET Easy, Markt+Technik' ===============================================Imports System.Console

Class App Shared Sub Main() Dim Alter As Byte Write("Bitte Alter eingeben:") Alter = ReadLine() If (Alter < 18) WriteLine("Du bist noch nicht volljährig, sorry!") End If End SubEnd Class

Die WriteLine-Funktion wird nur ausgeführt, wenn die Bedingung Alter< 18 erfüllt ist, das heißt, die Variable einen Wert enthält, der kleiner als 18ist. Dann ist der gesamte Ausdruck wahr. Ist dies nicht der Fall, das heißt,Alter besitzt einen Wert, der gleich oder größer 18 ist, wird der Befehl nichtausgeführt. Visual Basic tut dann so, als gäbe es den Befehl gar nicht.

Jede logische Bedingung lässt sich auch umgekehrt formulieren. Das folgen-de Beispiel prüft, ob die Variable Alter größer oder gleich 18 ist:

If (Alter >= 18) WriteLine("Sie sind volljährig, Glückwunsch!")End If

In welche »Richtung« eine logische Bedingung formuliert wird, spielt in denmeisten Fällen keine Rolle, da es zu jeder logischen Bedingung immer einexaktes Pendant gibt. Achten Sie aber auf Kleinigkeiten: Das Gegenstück zukleiner ist nicht größer, sondern größer oder gleich, wofür es in Visual Basic.NET mit >= auch einen eigenen Operator gibt.

Hinweis

Es ist üblich, aber nicht notwendig, die Bedingung, die auf den If-Befehl folgt, in Klammern zu setzen. Ein Then-Befehl, wie bei früherenVisual Basic-Versionen, ist bei Visual Basic .NET optional.

Page 28: Ein Grundkurs in Programmierung mit Visual Basic

Wie ein Computerprogramm Entscheidungen trifft

85

Trickreiche Syntax beim If-BefehlDie Syntax von Visual Basic .NET umfasst einige Abkürzungen und Spezial-fälle, die es in anderen Programmiersprachen nicht gibt. Sie bieten dem Pro-grammierer mehr Freiheit, führen aber auch dazu, dass Visual Basic .NET inden Bereichen Klarheit und Übersichtlichkeit nicht immer die Bestnoten er-hält. Ein kleines Beispiel hierfür ist der If-Befehl. Folgt auf den If-Befehl nurein einziger Befehl, wird kein End If-Befehl benötigt. Dafür aber ein Then-Befehl, wobei der auszuführende Befehl in der gleichen Befehlszeile folgenmuss.

Der folgende Befehl führt einen weiteren Volljährigkeitscheck aus, diesesMal aber mit einem Then-Befehl und ohne einen abschließenden End If-Befehl.

If (Alter < 18) Then _ WriteLine("Du bist noch nicht volljährig, sorry!")

Ist Ihnen der unscheinbare Unterstrich am Ende der ersten Zeile aufgefallen?Dieser ermöglicht es, dass die Befehlszeile in der nächsten Zeile fortgesetztwerden kann.

Wenn Tante Else zu Besuch kommt – Die Alternative zum If-BefehlTante Else ist natürlich keine richtige Tante, sondern eine harmlose Wort-spielerei, die sich auf den Else-Befehl in Visual Basic .NET bezieht. DieserBefehl leitet jenen Befehlsteil ein, der immer dann ausgeführt wird, wenn dieBedingung, die ein If-Befehl prüft, unwahr ist.

Das folgende Beispiel führt einen Befehl aus, wenn die vom If-Befehl ge-prüfte Bedingung zutrifft. Ist dies nicht der Fall, wird stattdessen der Befehlausgeführt, der auf den Else-Befehl folgt.

Dim StartErlaubnis = BooleanIf (Treibstoff > 1000) StartErlaubnis = True

Hinweis

In Wirklichkeit müsste man bei einem Volljährigkeitscheck natürlichauch den Geburtstag und den Geburtsmonat mit einbeziehen. Sie fin-den auf der Begleit-CD im Verzeichnis \Quellen\Kapitel03 die DateiVolljaehrigkeitscheck3.vb, in der dies umgesetzt wird.

Page 29: Ein Grundkurs in Programmierung mit Visual Basic

86

Else StartErlaubnis = FalseEnd If

Das folgende Beispiel (Volljaehrigkeitscheck2.vb) erweitert den Volljährig-keitscheck aus diesem Kapitel um einen Alternativzweig, der über den Else-Befehl eingeleitet und immer dann ausgeführt wird, wenn die über den If-Befehl geprüfte Bedingung nicht zutrifft.

' ===============================================' Beispiel für den Else-Befehl' ===============================================Imports System.Console

Class App Shared Sub Main() Dim Alter As Byte Write("Bitte Alter eingeben:") Alter = ReadLine() If (Alter < 18) WriteLine("Du bist noch nicht volljährig, sorry!") Else WriteLine("Sie sind volljährig, Glückwunsch!") End If End SubEnd Class

Tipp

Das letzte Beispiel ist noch in einer anderen Hinsicht bemerkenswert.Profiprogrammierer würden so nie programmieren, da es viel zu»umständlich« wäre. Überlegen Sie bitte kurz, wie sich die obigeBefehlsfolge deutlich abkürzen ließe. Die Überlegung basiert auf demUmstand, dass StartErlaubnis vom Typ Boolean ist und einen Werterhält, der nur True oder False sein kann. Doch genau dieser Wertwird von der Bedingung Treibstoff > 1000 immer zurückgegeben.Die ganze Überprüfung kann damit auf einen einzigen Befehl redu-ziert werden:

StartErlaubnis = Treibstoff > 1000

Programmieren zu lernen heißt zum einen, die Befehle, Operatorenund Syntaxregeln zu lernen, die eine Programmiersprache zur Verfü-gung stellt. Es bedeutet aber auch, sich mit der Programmierlogik ver-traut zu machen und dabei auch Abkürzungen zu benutzen.

Page 30: Ein Grundkurs in Programmierung mit Visual Basic

Wie ein Computerprogramm Entscheidungen trifft

87

Mehrfachentscheidungen – Der ElseIf-BefehlSobald mehrere If- und Else-Befehle unmittelbar aufeinander folgen, gibtes mit dem ElseIf-Befehl eine praktische und harmlose Abkürzung.

Das folgende Beispiel (ElseIf.vb) erweitert die Volljährigkeitsprüfung umweitere (allerdings nicht ganz ernst gemeinte) Altersabfragen.

' ===============================================' Beispiel für den ElseIf-Befehl' ===============================================Imports System.Console

Class App Shared Sub Main() Dim Alter As Byte Write("Bitte Alter eingeben:") Alter = ReadLine() If (Alter < 16)

Die Windows-Version der Volljährigkeitsprüfung

Auch wenn in diesem Kapitel nur Konsolenprogramme vorgestelltwerden, hat eine Windows-Anwendung natürlich etwas mehr »Pepp«.In der Projektdatei Volljaehrigkeit.sln im Verzeichnis \Quellen\Kapitel04\Volljaehrigkeit auf der Begleit-CD finden Sie die Windows-Version der Volljährigkeitsprüfung. Führen Sie sie aus, indem Sie ent-weder die Datei Volljaehrig.exe in diesem Verzeichnis starten oder dieProjektdatei in Visual Studio .NET über den Menübefehl DATEI/ÖFF-

NEN/PROJEKT laden. Die Eingabe der Jahreszahl erfolgt über ein Text-feld, die Ausgabe über ein Label. An der Logik ändert sich nichts. InKapitel 4 erfahren Sie, wie eine solche Windows-Anwendung pro-grammiert wird.

Die Windows-Version der Volljährigkeitsprüfung

Page 31: Ein Grundkurs in Programmierung mit Visual Basic

88

WriteLine("Höchstens Fahrrad") ElseIf (Alter < 18) WriteLine("Motorrad kleiner 50ccm") ElseIf (Alter <= 24) WriteLine("Pkw ok") ElseIf (Alter < 88) WriteLine("Bus und alles andere") Else WriteLIne("Motorisierter Rollstuhl") End If End SubEnd Class

Dies ist bereits ein etwas anspruchsvolleres Beispiel für die Computerlogik.Achten Sie dabei auf zwei Dinge:

1 Die einzelnen Abfragen müssen (oder besser sollten) in die gleiche »Richtung« gehen. Das bedeutet: Jede einzelne Abfrage darf nur den unteren Bereich des Alters-bereichs abfragen, denn ist eine Abfrage erfüllt, werden die weiteren Abfragen nicht mehr geprüft. Würde also die erste Bedingung Alter < 88 lauten, kann eine Abfrage Alter < 24 nicht mehr folgen, da sie nie an die Reihe kommen würde.

2 Am Ende steht statt ElseIf wieder ein Else-Befehl (Tante Else ist wieder da). Das bedeutet, dass dieser Zweig für alle Altersangaben zuständig ist, die durch keine der vorherigen Abfragen geprüft wurden.

Logische Operatoren verknüpfen EntscheidungenIm täglichen Leben hängen Entscheidungen nur selten von einer einzigenBedingung ab. Der Geldautomat spuckt nur Scheine aus, wenn die Geheim-zahl stimmt und das Konto gedeckt ist. Die Schranke im Parkhaus öffnet sichnur, wenn das Ticket gültig ist und der Drucksensor einen schweren Gegen-stand meldet. Eine Alarmanlage geht los, wenn Sensor1 oder Sensor2 einenAlarm melden, und der Start eines Flugzeugs oder Raumtransporters kannvon Hunderten von Bedingungen abhängen, die alle erfüllt oder nicht erfülltsein müssen, damit am Ende das »Go« erteilt wird. Die Möglichkeit, Bedin-gungen zu verknüpfen, gibt es daher auch beim If-Befehl bzw. allgemeinbei allen Befehlen, die mit logischen Verknüpfungen arbeiten.

Verknüpfen von Bedingungen mit dem And-OperatorSollen beide Bedingungen erfüllt sein, damit die Gesamtbedingung erfülltist, müssen beide mit dem And-Operator verknüpft werden.

Die folgende Abfrage ist nur dann erfüllt, wenn die Variable Alter einenWert besitzt, der größer als 18, aber kleiner als 88 ist. Dies ist der typischeWeg, um Bereiche abzufragen, da sich das To-Befehlswort nur beim Select

Page 32: Ein Grundkurs in Programmierung mit Visual Basic

Wie ein Computerprogramm Entscheidungen trifft

89

Case-Befehl benutzen lässt (Visual Basic .NET ist als Programmiersprachemanchmal etwas eigen).

If (Alter > 18) And (Alter < 88) WriteLine("Alter im grünen Bereich")End If

Verknüpfen von Bedingungen mit dem Or-OperatorGenügt es, dass von zwei Bedingungen nur eine Bedingung erfüllt sein muss,damit die Gesamtbedingung erfüllt ist, müssen beide Bedingungen mit demOr-Operator verknüpft werden.

Die folgende Abfrage ist erfüllt, wenn die Variable Alter einen Wert besitzt,der größer als 18 ist, oder wenn die Variable SonderErlaubnis den WertTrue besitzt.

If (Alter >= 18) Or (SonderErlaubnis = True) WriteLine("Alles klar, darf passieren")End If

Es kann an dieser Stelle nur darauf hingewiesen werden, dass eine Bedin-gung aus beliebig vielen Teilbedingungen bestehen kann und dass es keinProblem ist, And, Or sowie die übrigen logischen Operatoren beliebig zuverknüpfen – dabei müssen Sie aber auf die Operatorpriorität achten, dasslogische Operatoren eine niedrigere Priorität besitzen als Vergleichsopera-toren (siehe den Abschnitt »Es kommt auf die Reihenfolge an« weiter obenin diesem Kapitel). Im Zweifelsfall sollten Sie daher Klammern benutzen.

Die zweite Bedingung nur prüfen, wenn die erste Bedingung erfüllt istNeben dem And-Operator bietet Visual Basic .NET noch einen AndAlso-Operator. Dieser spielt nur bei verknüpften Bedingungen eine Rolle undwird ab der zweiten Bedingung eingesetzt. Er bewirkt, dass eine folgendeBedingung nur dann geprüft wird, wenn die vorhergehende Bedingung er-füllt war.

Wozu soll das gut sein? Ganz einfach. Stellen Sie sich vor, Sie möchten eineGeheimzahl über die ReadLine-Funktion entgegennehmen und prüfen, obder Anwender die richtige Zahl eingegeben hat. Der Vergleich auf die rich-tige Zahl ist aber nur möglich, wenn überhaupt eine Zahl eingegeben wurde– ansonsten ist wieder eine Ausnahme die Folge. Um diese zwei Bedingun-gen nicht auf zwei Zeilen verteilen zu müssen, gibt es (seit Visual Basic.NET) den AndAlso-Operator.

Das folgende Beispiel nimmt eine Eingabe von der Tastatur entgegen undprüft, ob vier Zeichen eingegeben wurden.

Page 33: Ein Grundkurs in Programmierung mit Visual Basic

90

Dim GeheimZahl As StringGeheimZahl = ReadLine()If Not GeheimZahl Is Nothing _ AndAlso GeheimZahl.Length = 4 WriteLine("Eingabe ist ok!")Else WriteLine("Eingabe ist NICHT ok!")End If

Probieren Sie das Beispiel unbedingt einmal aus, indem Sie für den AndAl-so-Operator den And-Operator einsetzen und bei der Eingabeaufforderunglediglich die (¢)-Taste drücken.

Es ist wichtig, die Notwendigkeit für den AndAlso-Operator zu verstehen.Die zweite Bedingung birgt eine gewisse »Sprengkraft« in sich, indem dieAbfrage nur dann funktioniert, wenn für die Variable GeheimZahl etwas ein-gegeben wurde. Ist dies nicht der Fall, ist eine Ausnahme die Folge und dasProgramm bricht entweder ab oder ruft eine spezielle Befehlsfolge auf – injedem Fall wird der If-Befehl nicht mehr ausgeführt.

Wir können mit der ReadLine-Funktion nicht vorgeben, was der Anwendereinzugeben hat. Wir müssen uns daher auf alle Fälle einstellen und davonausgehen, dass entweder ein Text oder auch gar nichts eingegeben wurde.Gar nichts bedeutet, dass der Anwender einfach die (¢)-Taste drückt, wasman niemanden verbieten kann. Die ReadLine-Funktion gibt in diesem Fallnichts zurück und nichts bedeutet bei Visual Basic .NET den SpezialwertNothing. Bei einer Variablen, die Nothing ist, lässt sich aber keine Längeabfragen. Versucht man es trotzdem, ist die Ausnahme die Folge.

Nun kommt der AndAlso-Operator zum Einsatz. Dieser führt die folgendeAbfrage nur dann aus, wenn die erste Abfrage den Wert True ergeben hat.Indem wir also zuerst fragen, ob überhaupt etwas eingegeben wurde, verhin-dern wird, dass, wenn dies nicht der Fall ist, die zweite Abfrage noch ausge-führt wird.

Ein entsprechendes Pendant gibt es auch für den Or-Operator. Es ist derOrElse-Operator, der bewirkt, dass die folgende Bedingung nur ausgewertetwird, wenn die vorausgegangene Bedingung erfüllt war.

Page 34: Ein Grundkurs in Programmierung mit Visual Basic

Ein kurzer Überblick über den Befehlssatz

91

Sprechen Sie Visual Basic .NET?Ein kurzer Überblick über den BefehlssatzTrotz der praktisch unendlichen Möglichkeiten, die Programmierer besitzen,um aus ihren Ideen Programme zu machen, ist der Befehlssatz einer Pro-grammiersprache relativ überschaubar. Das Vokabular einer solchen Spra-che umfasst selten mehr als mehrere Dutzend Vokabeln, sprich Befehle. BeiVisual Basic .NET sind es über 90, von denen viele aber so speziell sind, dasssich der Kern der Programmiersprache auf etwa 30 Befehle reduziert. Auchvon diesem harten Kern werden Sie selten alle benötigen, sodass Sie in denmeisten Programmen, insbesondere natürlich bei den kleinen Beispielen,um die es in diesem Buch geht, mit einem Dutzend Befehlen arbeiten.

Auch wenn das Erlernen einer Programmiersprache (anders als früher im La-teinunterricht) nicht bedeutet, Vokabeln sprich Befehle auswendig zu ler-nen, kann es nicht schaden, dass Sie versuchen, zumindest den harten Kerndes Befehlssatzes zu »memorisieren«. Ein Vorschlag von vielen ist es, die Be-fehlsnamen auf die Vorderseite kleiner Karteikarten zu schreiben und auf derRückseite die Bedeutung der einzelnen Befehle in ein bis zwei Sätzen zuschreiben. Kennen Sie diese Befehlsnamen auswendig, sollte es Ihnen sehrviel leichter fallen, eines der vielen kleinen Beispielprogramme in diesemBuch zu verstehen, da Sie zumindest die Bedeutung der Befehlsnamen ken-nen und aus dieser in der Regel die Funktionsweise des Programms ableitenkönnen.

Die folgende Tabelle stellt die wichtigsten Befehle in einer Übersicht zusam-men, wobei die Beschreibung absichtlich sehr kurz gehalten wurde, da allesin der Hilfe sehr viel ausführlicher (und in den meisten Fällen auch gut ver-ständlich) beschrieben ist.

Befehl Bedeutung

Catch Leitet in einem Try-/End Try-Befehl den Teil der Ausnahme-behandlung ein, der aufgerufen wird, wenn eine Ausnahme auftritt.

Class Leitet die Definition einer Klasse ein, die durch den End Class-Befehl beendet wird.

Const Definiert eine Konstante.

Dim Definiert eine oder mehrere Variablen.

Do Loop Definiert eine Programmschleife.

Page 35: Ein Grundkurs in Programmierung mit Visual Basic

92

Exit Verlässt eine Befehlskonstruktion, wie eine Prozedur oder Do-Schleife, vorzeitig.

Finally Definiert den Teil der strukturierten Ausnahmebehandlung über den Try/End Try-Befehl, der in jedem Fall ausgeführt wird.

For Next Definiert eine Programmschleife.

Function Leitet eine Funktionsdefinition ein, die durch den End Function-Befehl wieder beendet wird.

If Leitet eine Entscheidung ein.

Imports Macht einen so genannten Namespace im Programm bekannt. Jede Klasse gehört zu einem Namespace und indem dieser am Anfang einmal bekannt gemacht wird, muss er nicht jedem Klassennamen vorangestellt werden.

Inherits Gibt den Namen einer Klasse an, die in der aktuellen Klasse abgeleitet werden soll.

Private Deklariert eine Variable, wobei der Gültigkeitsbereich »pri-vat« (Variable kann nur innerhalb der Klasse angesprochen werden) explizit angegeben wird.

Property Leitet die Definition einer Eigenschaft ein. Eine Property-Prozedur erhält optional einen Get- und/oder einen Set-Teil, wobei zusätzlich die Schlüsselwörter ReadOnly und Write-Only zur Verfügung stehen.

Public Deklariert eine Variable, wobei der Gültigkeitsbereich »öffent-lich« (Variable kann außerhalb der Klasse angesprochen wer-den) explizit angegeben wird.

Select Leitet einen Select Case-Befehl ein.

Sub Leitet die Definition einer Prozedur ein.

Try Leitet eine strukturierte Ausnahmebehandlung ein, die durch den End Try-Befehl wieder beendet wird.

With Leitet einen With/End With-Block ein.

Befehl Bedeutung

Page 36: Ein Grundkurs in Programmierung mit Visual Basic

Zusammenfassung

93

ZusammenfassungEine Programmiersprache besteht aus Befehlen, Operatoren und allgemei-nen Regeln, die als Syntaxregeln bezeichnet werden. Eine Syntaxregel legtzum Beispiel fest, dass auf den If-Befehl immer ein Ausdruck folgen muss.Vergisst der Programmierer diese Regel, ist ein Syntaxfehler die Folge. Zuden wichtigsten Elementen, die praktisch in jedem Programm enthaltensind, gehören die Variablen. Eine Variable ist ein Name, der für einen belie-bigen Wert steht, der während der Programmausführung beliebig geändertwerden kann und verloren ist, wenn das Programm beendet wird (in Kapitel8 lernen Sie, wie Sie Werte von Variablen in Dateien speichern können, da-mit sie dauerhaft erhalten bleiben).

In diesem Kapitel wurde eine der wichtigsten Fragen beantwortet, die vieleMenschen bewegen dürfte, die sich zum ersten Mal mit der Programmierungeines Computers beschäftigen. Sie lautet: Können Computer denken? DieAntwort lautet: Nein, zum Glück ist das (noch) nicht möglich. Auch wenn esmanchmal den Anschein haben mag, basieren alle Entscheidungen, die einComputerprogramm treffen kann, auf simplen Vergleichen, wobei jeder Ver-gleich immer nur zu einem von zwei Ergebnissen führen kann: wahr oderfalsch. Der Wahr-Wert wird bei Visual Basic .NET durch die Konstante True(sie steht für den Wert -1), der Falsch-Wert durch die Konstante False reprä-sentiert (sie steht für den Wert 0). Visual Basic .NET kennt auch einen Da-tentyp mit dem Namen Boolean. Variablen, die diesen Datentyp besitzen,können folglich nur die Werte True und False annehmen.

Die kleine ErfolgskontrolleZum Abschluss dieses Kapitels beantworten Sie bitte die nachfolgendenFragen:

1. Wie muss ein Ausgabebefehl lauten, der über die WriteLine-Funktionzu einer Zahl, die in der Variablen Zahl enthalten ist, die Quadratzahlausgibt, sodass folgende Ausgabe resultiert:

Die Quadratzahl von 3 ist 9.

2. Welche Bedingung muss erfüllt sein, damit die WriteLine-Funktion auf-gerufen wird? (Bei mod handelt es sich um den Operator, der den ganz-zahligen Rest einer Division zurückgibt.)

If (n mod 2 = 0) WriteLine("Aha")End If

Page 37: Ein Grundkurs in Programmierung mit Visual Basic

94

3. Hat der Programmierer im folgenden Befehl nicht etwas vergessen?

If (1) WriteLine("Aha")End If

4. Wie lässt sich über einen If-Befehl feststellen, ob über die ReadLine-Funktion der Buchstabe »J« eingegeben wurde? (Tipp: Vergessen Sie zuBeginn des Programms den Befehl Imports System.Console nicht,um die ReadLine-Funktion ohne Voranstellen des Namespaces aufrufenzu können.)

Wie lässt es sich ohne eine weitere Abfrage erreichen, dass die Groß-/Kleinschreibung bei der Eingabe keine Rolle spielt, also sowohl »j« alsauch »J« als Eingabe für »Ja« akzeptiert werden? (Tipp: Schauen Sie sichdie Bedeutung der ToUpper-Funktion in der Hilfe zu Visual Studio .NET(oder in der Dokumentation zum .NET Framework SDK) an.)

Wie lässt sich erreichen, dass bei der Eingabe nur der erste Buchstabegeprüft wird, also auch die Eingabe von »Jawohl, ich will« als »Ja«akzeptiert wird. (Tipp: Schauen Sie sich die Bedeutung der SubString-Funktion in der Hilfe zu Visual Studio .NET (oder in der Dokumentationzum .NET Framework SDK) an.)

Berücksichtigen Sie auch den Umstand, dass, wenn der Anwender ledig-lich die (¢)-Taste drückt, die Variable von ReadLine den WertNothing erhält und eine Abfrage auf »J« mit SubString in diesem Fallnicht möglich ist, da es kein erstes Zeichen gibt und eine Ausnahme dieFolge ist.

5. In dieser Aufgabe sollen Sie Ihr erstes Visual Basic .NET-Programmselbstständig umsetzen.

Ihre Mission lautet wie folgt: »Programmieren Sie einen kleinen Benzin-kostenrechner als Konsolenprogramm, bei dem Sie drei Daten eingebenmüssen: 1. Die Anzahl der gefahrenen Kilometer. 2. Den Durchschnitts-verbrauch pro 100 Kilometer. 3. Den Benzinpreis pro Liter in Euro. NachEingabe dieser drei Zahlen sollen zwei Zahlen ausgegeben werden: DerGesamtpreis und der Preis pro Kilometer«.

6. Erweitern Sie den Benzinkostenrechner aus Frage 5 so, dass auf Wunschauch eine »Ökosteuer« von 3,5% pro Liter Benzin aufgeschlagen wird.

Das Ganze ist vollkommen unpolitisch und soll lediglich ein »aus demLeben gegriffenes« Beispiel für eine Entscheidung mit dem If-Befehlsein, der am Anfang dazu benutzt wird, über die ReadLine-Funktionabzufragen, ob die Ökosteuer berücksichtigt werden soll.

Page 38: Ein Grundkurs in Programmierung mit Visual Basic

Die kleine Erfolgskontrolle

95

Eine kleine »Schwierigkeitssteigerung« ergibt sich durch den Umstand,dass für den Fall, dass die Ökooption gewählt wurde, am Ende die durchdie Ökosteuer bedingte Differenz ausgegeben werden soll.

Dies ist bereits eine etwas anspruchsvollere Aufgabe, bei der Sie Ihr gan-zes Können als Programmierer aufbringen und vielleicht noch einmalden einen oder anderen Absatz in diesem Kapitel aufmerksam durchar-beiten müssen. Bleiben Sie aber dran, denn es lohnt sich. Wenn Sie dieAufgabe erfolgreich umgesetzt haben, können Sie behaupten, die Com-puterlogik erfolgreich gemeistert zu haben (und sollten Sie irgendwo»hängen bleiben« und partout nicht weiterkommen, werfen Sie einenBlick in die Lösung in Anhang C bzw. in die Datei auf der Begleit-CD –aber machen Sie es sich bitte nicht zu einfach).

Die Lösungen zu diesen Fragen und Aufgaben finden Sie in Anhang C amEnde des Buches.