Anfängerproblem und mein Lehrer kann es mir nicht erklären ;)

Gareth

Grünschnabel
Code:
Public Function Zyl (Höhe, Durchmesser As Single) As Single
'D^2*pi/4 für kreisfläche
Const pi = 3.14
Zyl = Durchmesser ^ 2 * pi / 4 * Höhe

End Function
'^^So hat der Lehrer das geschrieben 
'---------------------------------------------------------------------------------------------------------------------
Public Function Zyl(Durchmesser As Single, Höhe As Single ) As Single
'D^2*pi/4 für kreisfläche
Const pi = 3.14
Zyl = Durchmesser ^ 2 * pi / 4 * Höhe

'^^ und so ich 

End Function

das Problem ist nun folgendes, nicht nur das ich ein anderes Ergebnis raushabe ( das richtige )

er kann mir nicht erklären warum in der public function ich die variablen in der reihenfolge schreiben muss wie sie abgearbeitet werden. ich bin der meinung das müsste doch egal sein weil ich dort doch nur die variablen deklariere und erst in der Formel
sage was ich rechnen will

wer von uns hat nun einen denkfehler oder haben wir beide einen?

grüsse
der neugierige Gareth
 
Also vorausgesetzt ich übergebe die Parameter jeweils in der richtigen Reihenfolge erhalte ich bei beiden Aufrufen auch das gleiche Ergebnis!

Hast du vielleicht die Parameter bei beiden Aufrufen in der gleichen Reihenfolge gehabt, z.B beidesmal so:

Code:
Zyl(20, 100)

Dann wäre bei deinem Lehrer der Zylinder 100 hoch und hätte einen Durchmesser von 20, bei dir hätte er eine Höhe von 20 und einen Durchmesser von 100.
 
eingegeben haben wir beide :

Code:
Zyl(100;50)

aber warum muss ich hier:

Code:
Public Function Zyl (Höhe, Durchmesser As Single) As Single


die richtige reihenfolge einhalten

Grüsse Gareth
 
Zuletzt bearbeitet:
Das musst du nicht!

Du musst nur beim Funktionsaufruf die Werte in der Reihenfolge angeben wie die Funktion deklariert ist.

Dein Lehrer hat zuerst die Höhe und dann den Durchmesser. Du hast es genau umgekehrt.

Wenn ihr also beide Funktionen so aufruft wie du es jetzt geschrieben hast, da übergibst du an die Funktion deines Lehrers eine Höhe von 100 und einen Durchmesser von 50.

Deine Funktion bekommt für die Höhe dann aber den Wert 50 und dafür für den Durchmesser den Wert 100.
 
Nachtrag zu der Funktion deines Lehrers: Bei seiner Funktion ist nur Durchmesser vom Typ Single, Höhe ist vom Typ Variant (OK, hat nicht wirklich eine Auswirkung auf das Ergebnis, aber wenn schon, dann bitte richtig)
Desweiteren: Wieso Übergabe als Referenz? Es ist jedesmal ein Streitfall, wann übergebe ich als Wert, und wann als Referenz.
Ich hab mir eins zur Angewohnheit gemacht: Als Referenz nur, wenn ich das Ergebnis auch in der Variablen zurück erwarte, oder ich übergebe ein Objekt (wegen dem Overhead).
So ist ein Quellcode immer viel einfacher zu lesen.

Meine Gedanken zu dem Thema.
 
Zurück