16.01.2015 Aufrufe

Unterrichtseinheit: Unterprogramme - Klassenwiki

Unterrichtseinheit: Unterprogramme - Klassenwiki

Unterrichtseinheit: Unterprogramme - Klassenwiki

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

PDF­XCHANGE<br />

w w w.docu­track.co m<br />

Click to buy NOW!<br />

PDF­XCHANGE<br />

w w w.docu­track.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).


PDF­XCHANGE<br />

w w w.docu­track.co m<br />

Click to buy NOW!<br />

PDF­XCHANGE<br />

w w w.docu­track.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 Eingabe­Prozedur 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 Select­Case 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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!