Unterrichtseinheit: Unterprogramme - Klassenwiki
Unterrichtseinheit: Unterprogramme - Klassenwiki
Unterrichtseinheit: Unterprogramme - Klassenwiki
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
PDFXCHANGE<br />
w w w.docutrack.co m<br />
Click to buy NOW!<br />
PDFXCHANGE<br />
w w w.docutrack.co m<br />
Click to buy NOW!<br />
Arbeits/Infoblatt<br />
Datum:<br />
<strong>Unterrichtseinheit</strong>: <strong>Unterprogramme</strong><br />
(mit Parameterübergabe, mit Rückgabewert)<br />
Hier sind zwei Werte<br />
für dich Funktion<br />
Mittelwet!<br />
Und hier gebe ich dir was<br />
zurück Sub Berechnung!<br />
Manchmal ist es sogar so, dass eine Prozedur, der Werte übergeben wurden, etwas<br />
Neues berechnet und dann an die aufrufende Prozedur zurückgibt. Solche Prozeduren,<br />
die einen Rückgabewert besitzen, nennt man in VBA Funktionen "Function"!<br />
Hier ein Beispiel:<br />
Private Sub cmd_Berechnung_Click()<br />
Dim a As Integer<br />
Dim b As Integer<br />
Dim c As Double<br />
a = txt_Zahl1.Text<br />
b = txt_Zahl2.Text<br />
c = Mittelwert(a,b)<br />
WICHTIG: Wenn das Ergebnis einer Funktion<br />
an das aufrufende Programm zurückgegeben<br />
werden soll, so muss dieses Ergebnis in<br />
einer Variablen gespeichert werden, welche<br />
den Namen der Prozedur trägt!<br />
End Sub<br />
Call Ausgabe(c)<br />
Private Function Mittelwert(x as Integer,y<br />
as Integer)as Double<br />
Mittelwert = (x + y) / 2<br />
End Function<br />
Private Sub Ausgabe(z as Double)<br />
lbl_Mittelwert.Caption = z<br />
End Sub<br />
Formal hört sich das so an:<br />
Prozeduren können auch einen Rückgabewert besitzen, d.h. der Prozeduraufruf hat wie ein<br />
Ausdruck ein Ergebnis, das in der Regel in der Anweisung wieter verarbeitet wird (z.B. durch<br />
Zuweisung auf eine Variable). Solche Teilprogramme bezeichnet man im Allgemeinen auch<br />
als "Funktionen", da sie wie mathematische Funktionen ein Ergebnis leifern (z.B. sin(0) hat<br />
als Ergebnis 0).
PDFXCHANGE<br />
w w w.docutrack.co m<br />
Click to buy NOW!<br />
PDFXCHANGE<br />
w w w.docutrack.co m<br />
Click to buy NOW!<br />
Arbeits/Infoblatt<br />
Datum:<br />
<strong>Unterrichtseinheit</strong>: <strong>Unterprogramme</strong><br />
(mit Parameterübergabe, mit Rückgabewert)<br />
Übung 3<br />
Taxiunternehmer Schaefer lässt die Abrechnung der Fahrten elektronisch<br />
verarbeiten. Der Anfangs und Endkilometerstand einer Tour soll aus dem<br />
Tacho ausgelesen werden und der Fahrpreis automatisch ermittelt werden (in<br />
der Entwicklungsphase müssen Sie diese Werte selbstverständlich von Hand<br />
eingeben). Einen ersten Entwurf finden Sie im Quellcode zum Formular<br />
frm_Uebung3.<br />
Scheiben Sie den Entwurf derart um, dass das Hauptprogramm lediglich die Prozeduren Eingabe,<br />
Verarbeitung und Ausgabe aufruft.<br />
Übergeben Sie die Variablen so oft wie möglich (Tipp: In VBA ist es nur mit einem Kniff<br />
möglich mehrere Werte aus einer Prozedur zurückzugeben. Überlegen Sie daher welche Information<br />
aus ihrer EingabeProzedur im weiteren Programm benötigt wird).<br />
Es sollen keine globalen Variablen verwendet werden.<br />
Rahmendaten: Pauschale je Fahrt: 1,50 €; Pauschale je Kilometer: 0,5 €.<br />
Übung 4<br />
Erinnern Sie sich an die Übung mit der SelectCase Kontrollstruktur<br />
Eine mögliche Lösung könnte wie folgt aussehen:<br />
Private Sub cmd_Praemie_Click()<br />
Dim jahre As Integer<br />
jahre = txt_jahre.Text<br />
Select Case jahre<br />
Case 0 To 1<br />
lbl_Nachlass_Aus.Caption = basis basis * (1 0 / 100)<br />
lbl_Praemie_Aus.Caption = basis * (1 0 / 100)<br />
Case 2 To 4<br />
lbl_Nachlass_Aus.Caption = basis basis * ((1 5 / 100))<br />
lbl_Praemie_Aus.Caption = basis * ((1 5 / 100))<br />
Case 5 To 6<br />
lbl_Nachlass_Aus.Caption = basis basis * (1 7 / 100)<br />
lbl_Praemie_Aus.Caption = basis * (1 7 / 100)<br />
Case 7 To 10<br />
lbl_Nachlass_Aus.Caption = basis basis * (1 9 / 100)<br />
lbl_Praemie_Aus.Caption = basis * (1 9 / 100)<br />
Case Else<br />
lbl_Nachlass_Aus.Caption = basis basis * (1 11 / 100)<br />
lbl_Praemie_Aus.Caption = basis * (1 11 / 100)<br />
End Select<br />
txt_jahre.Text = ""<br />
txt_jahre.SetFocus<br />
End Sub<br />
Selbstverständlich kann diese Lösung unseren heutigen Anforderungen nicht mehr<br />
genügen!<br />
Arbeitsauftrag<br />
Schreiben Sie unter Verwendung von Prozeduren den Quellcode um. Es soll möglichst<br />
oft mit Parameterübergabe und –Rückgabe gearbeitet werden.