Ausführen von Aktionen durch den Computer: Schreiben der ersten Prozedur
Aktualisiert: November 2007
In dieser Lektion erfahren Sie, wie eine Prozedur erstellt wird, d. h. ein eigenständiger Codeblock, der in anderen Codeblöcken ausgeführt werden kann. Anschließend erfahren Sie, wie Parameter für Prozeduren erstellt werden.
Eine Prozedur ist einfach ein Block mit Code, der ein Programm eine Aktion durchführen lässt. Obwohl Sie es vielleicht nicht bemerkt haben, haben Sie in den vorigen Lektionen bereits Prozeduren verwendet. Die MsgBox-Funktion besitzt beispielsweise eine integrierte Prozedur, durch die der Vorgang zum Anzeigen eines Dialogfelds ausgeführt wird.
Obwohl Visual Basic zahlreiche Prozeduren zum Ausführen allgemeiner Vorgänge enthält, wird es immer Fälle geben, in denen das Programm Vorgänge ausführen soll, die nicht durch eine integrierte Prozedur behandelt werden können. Zum Beispiel kann die MsgBox-Funktion kein Dialogfeld anzeigen, das ein Bild enthält. Um diese Aufgabe auszuführen, müssen Sie eine eigene Prozedur schreiben.
Was ist eine Prozedur?
Bei einer Prozedur handelt es sich um einen unabhängigen Codeblock, der von anderen Codeblöcken aus ausgeführt werden kann. Im Allgemeinen enthält jede Prozedur den Code, der zum Durchführen einer einzelnen Aufgabe erforderlich ist. Sie können beispielsweise eine Prozedur mit der Bezeichnung PlaySound haben, die den zum Abspielen einer Wavedatei erforderlichen Code enthält. Sie könnten natürlich immer wieder den gleichen Code schreiben, der einen bestimmten Sound wiedergibt, wenn das Programm ein Geräusch ausgeben soll. Es ist jedoch sinnvoller, eine einzige Prozedur zu erstellen, die dann im Programm an beliebigen Stellen aufgerufen werden kann.
Eine Prozedur wird ausgeführt, indem Sie in Code aufgerufen wird. Um beispielsweise die PlaySound-Prozedur auszuführen, fügen Sie dem Programm lediglich eine Zeile Code mit dem Namen der Prozedur hinzu (wie hier gezeigt).
PlaySound()
Das ist auch schon alles! Wenn das Programm diese Zeile erreicht, springt es zur PlaySound-Prozedur und führt den dort enthaltenen Code aus. Anschließend springt das Programm zur nächsten Zeile, die dem Aufruf von PlaySound folgt.
Sie können so viele Prozeduren aufrufen, wie Sie möchten. Prozeduren werden in der Reihenfolge ausgeführt, in der sie aufgerufen werden. Wenn Sie zum Beispiel auch eine Prozedur mit der Bezeichnung DisplayResults haben, die nach der PlaySounds-Prozedur ausgeführt werden soll, rufen Sie die Prozeduren folgendermaßen auf:
PlaySounds()
DisplayResults()
Funktionen und Unterroutinen
Es gibt zwei Arten von Prozeduren: Funktionen und Unterroutinen (die manchmal auch als Subs bezeichnet werden). Eine Funktion gibt einen Wert an die aufrufende Prozedur zurück, während eine Unterroutine nur Code ausführt. Unterroutinen werden aufgerufen, wenn dem Programm eine Codezeile hinzugefügt wird, die den Namen der Unterroutine enthält. Eine Beschreibung dieses Vorgangs finden Sie im nächsten Beispiel.
DisplayResults
Funktionen unterscheiden sich hiervon, da Funktionen nicht nur Code ausführen, sondern auch einen Wert zurückgeben. Stellen Sie sich beispielsweise eine Funktion mit der Bezeichnung GetDayOfWeek vor, die eine Integer zur Angabe des Wochentags zurückgibt. Wie nachfolgend gezeigt, rufen Sie diese Funktion auf, indem Sie zunächst eine Variable zum Speichern des Rückgabewerts deklarieren und den zurückgegebenen Wert dann der Variablen zuweisen, von wo aus er später verwendet werden kann.
Dim Today As Integer
Today = GetDayOfWeek
In diesem Beispiel wird der durch die Funktion zurückgegebene Wert in die Variable mit der Bezeichnung Today kopiert und für eine spätere Verwendung gespeichert.
Schreiben von Prozeduren
Beim Schreiben von Prozeduren schreiben Sie zunächst eine Prozedurdeklaration. Eine Prozedurdeklaration führt mehrere Aufgaben aus. Sie gibt an, ob die Prozedur eine Funktion oder eine Unterroutine ist, welchen Namen die Prozedur hat und welche Parameter die Prozedur möglicherweise besitzt. (Auf Parameter wird weiter unten in dieser Lektion genauer eingegangen.) Es folgt ein Beispiel für eine einfache Prozedurdeklaration.
Sub MyFirstSub()
End Sub
Durch das Sub-Schlüsselwort wird dem Programm mitgeteilt, dass diese Prozedur eine Unterroutine ist und dass kein Wert zurückgegeben wird. Im nächsten Schritt wird der Name der Unterroutine angegeben (MyFirstSub), und die leeren Klammern zeigen an, dass es für diese Prozedur keine Parameter gibt. Schließlich wird durch das End Sub-Schlüsselwort das Ende der Unterroutine angegeben. Der gesamte, durch diese Unterroutine auszuführende Code ist zwischen diesen zwei Zeilen enthalten.
Das Deklarieren von Funktionen folgt einem ähnlichen Muster. In einem zusätzlichen Schritt muss jedoch der Rückgabetyp festgelegt werden (z. B. Integer, String usw.) Eine Funktion, die eine Integer zurückgibt, könnte beispielsweise folgendermaßen aussehen.
Function MyFirstFunction() As Integer
End Function
Die As Integer -Schlüsselwörter geben an, dass diese Funktion einen Integer -Wert zurückgibt. Damit ein Wert durch eine Funktion zurückgegeben wird, verwenden Sie das Return-Schlüsselwort, wie im folgenden Beispiel angegeben.
Function GetTheNumberOne() As Integer
Return 1
End Function
Diese Prozedur gibt die Zahl 1 zurück.
Übung
So erstellen Sie Prozeduren
Klicken Sie im Menü Datei auf Neues Projekt.
Klicken Sie im Dialogfeld Neues Projekt im Bereich Vorlagen auf Windows-Anwendung.
Geben Sie in das Feld Name den Namen MyFirstProcedure ein, und klicken Sie dann auf OK.
Ein neues Windows Forms-Projekt wird geöffnet.
Doppelklicken Sie auf das Formular, um den Code-Editor zu öffnen.
Suchen Sie im Code-Editor die Zeile End Class. Dies ist das Ende des Codeabschnitts, der das Formular bildet. Fügen Sie unmittelbar vor dieser Zeile die folgende Prozedur ein:
Function GetTime() As String Return CStr(Now) End Function
Diese Funktion ruft mithilfe der integrierten Now-Prozedur die aktuelle Uhrzeit ab und wandelt dann mithilfe der CStr-Funktion den von Now zurückgegebenen Wert in eine für den Benutzer lesbare String um. Abschließend wird der String-Wert als das Ergebnis der Funktion zurückgegeben.
Fügen Sie die folgende Sub über der im vorherigen Schritt hinzugefügten Funktion hinzu.
Sub DisplayTime() MsgBox(GetTime) End Sub
Diese Unterroutine ruft die GetTime-Funktion auf und zeigt das durch diese Funktion zurückgegebene Ergebnis in einem Meldungsfeld an.
Fügen Sie zum Schluss dem Form1_Load-Ereignishandler eine Zeile zum Aufrufen der DisplayTime-Unterroutine hinzu, wie nachfolgend gezeigt.
DisplayTime()
Drücken Sie F5, um das Programm auszuführen.
Beim Starten des Programms wird die Form1_Load-Ereignisprozedur ausgeführt. Diese Prozedur ruft die DisplayTime-Unterroutine auf, und das ausgeführte Programm springt zur DisplayTime-Unterprozedur. Diese Unterprozedur ruft wiederum die GetTime-Funktion auf, sodass das ausgeführte Programm zur GetTime-Funktion springt. Diese Funktion gibt einen String zurück, der die Zeitspanne bis zur DisplayTime-Unterprozedur darstellt, durch die wiederum eine Zeichenfolge in einem Meldungsfeld angezeigt wird. Nachdem die Ausführung der Unterroutine beendet ist, wird das Programm normal fortgesetzt, und das Formular wird angezeigt.
Parameter in Funktionen und Unterroutinen
Es kann vorkommen, dass Sie zu Ihren Prozeduren zusätzliche Informationen angeben müssen. Möglicherweise möchten Sie z. B. in der PlaySound-Prozedur einen von mehreren Sounds wiedergeben. Sie können die Information, welcher Sound wiedergegeben werden soll, mithilfe von Parametern angeben.
Parameter sind Variablen sehr ähnlich. Sie besitzen einen Typ und einen Namen, und sie speichern Informationen wie Variablen. Sie können in Prozeduren wie Variablen verwendet werden. Die zwei wichtigsten Unterschiede zwischen Parametern und Variablen lauten wie folgt:
Parameter werden in der Prozedurdeklaration deklariert, nicht in einzelnen Codezeilen.
Parameter können nur in der Prozedur verwendet werden, in der sie deklariert wurden.
Parameter werden in der Prozedurdeklaration in den Klammern deklariert, die dem Prozedurnamen folgen. Der Typ wird mithilfe des As-Schlüsselworts deklariert, und jedem Parameter geht normalerweise das ByVal-Schlüsselwort voran. Wenn Sie dieses Schlüsselwort nicht hinzufügen, wird es automatisch durch Visual Basic hinzugefügt. Die Erläuterung der ausgefeilten Funktionen würde den Rahmen der aktuellen Lektion jedoch überschreiten.
Hier ist ein Beispiel für eine Unterroutine mit Parametern.
Sub PlaySound(ByVal SoundFile As String, ByVal Volume As Integer)
My.Computer.Audio.Play(SoundFile, Volume)
End Sub
Diese Unterroutine rufen Sie dann mit den Werten für die Parameter auf (wie hier gezeigt).
PlaySound("Startup.wav", 1)
Sie können Parameter auch für Funktionen auf die gleiche Weise wie für Unterroutinen deklarieren.
Übung
So erstellen Sie eine Funktion mit Parametern
Klicken Sie im Menü Datei auf Neues Projekt.
Klicken Sie im Dialogfeld Neues Projekt im Bereich Vorlagen auf Windows-Anwendung.
Geben Sie parameters in das Feld Name ein, und klicken Sie dann auf OK.
Ein neues Windows Forms-Projekt wird geöffnet.
Ziehen Sie zwei Textbox-Steuerelemente aus der Toolbox auf das Formular.
Ziehen Sie von der Toolbox ein Button-Steuerelement auf das Formular.
Doppelklicken Sie auf die Schaltfläche, um den Code-Editor zu öffnen.
Fügen Sie direkt nach der End Sub-Zeile des Button1_Click-Ereignishandlers die folgende Prozedur hinzu:
Function AddTwoNumbers(ByVal N1 As Integer, ByVal N2 As Integer) _ As Integer Return N1 + N2 End Function
Fügen Sie der Button1_Click-Prozedur den folgenden Code hinzu:
Dim aNumber As Integer = CInt(Textbox1.Text) Dim bNumber As Integer = CInt(Textbox2.Text) MsgBox(AddTwoNumbers(aNumber, bNumber))
Durch diesen Code werden zwei ganze Zahlen deklariert, und der Text in den zwei Textfeldern wird in ganzzahlige Werte umgewandelt. Anschließend werden diese Werte an die AddTwoNumbers -Funktion übergeben, und der zurückgegebene Wert wird in einem Meldungsfeld angezeigt.
Drücken Sie F5, um das Programm auszuführen.
Geben Sie in jedem Textfeld einen Zahlenwert ein, und klicken Sie auf die Schaltfläche. Die zwei Zahlen werden hinzugefügt, und das Ergebnis wird in einem Meldungsfeld angezeigt.
Nächste Schritte
In dieser Lektion haben Sie den Unterschied zwischen Funktionen und Unterroutinen kennen gelernt, und Sie haben gelernt, wie Sie diese zwei Prozeduren erstellen können. Sie haben auch gelernt, wie Sie diese Prozeduren aufrufen können und wie Sie Prozeduren mit Parametern erstellen können.
In der nächsten Lektion lernen Sie, wie Sie mithilfe der For...Next-Anweisung Aktionen wiederholen können.
Nächste Lektion: Festlegen von wiederholten Aktionen im Programm: Die For...Next-Schleife
Siehe auch
Aufgaben
Vergleiche: Ausdrücke zum Vergleichen von Werten