Hi zusammen, geht's jetzt hier weiter? OK.
Der nette Gast hat dich bereits auf die Einzelschritt-Funktion hingewiesen. Immer wenn dir nicht klar ist, wie eine Variable zu ihrem Wert kommt, solltest du diese Funktion aufrufen und den Inhalt dieser Variablen nach jedem Schritt überprüfen. Auf diese Weise kann man Bugs im Programm erkennen, verstehen und beseitigen. Das hat mir in den letzten 20 Jahren schon viel Kummer erspart.
Natürlich sollte man dazu schon ein wenig Grundschul-Mathematik beherrschen. In deinem Fall etwa vierte Klasse oder so. Möchtest du, dass wir es dir vorrechnen? Ich probiers mal.
Also h hat den Wert 2, j den Wert 4. Beim Aufruf von fC übergibst du h an c und j an a. Jetzt rechnest du a / 2. 4 / 2 ergibt 2. Dieser Wert wird a wieder zugewiesen. c hat momentan ebenfalls den Wert 2 (von h geerbt). Diese wird nun zunächst mit -1 potenziert.
Wir erinnern uns: Die Potenz gibt an, wie oft eine Zahl mit sich selbst multipliziert wird. 22 bedeutet z.B., dass der Faktor 2 insgesamt 2 mal vorhanden ist, also 2 * 2. Diese Berechnung führst du im Normalfall genau einmal aus. Du kannst also auch schreiben 1 * 2 * 2. Warum ich die 1 hier dazu nehme erkläre ich gleich. Gehen wir nun weiter zu 21 dabei steht die 2 nur einmal da. Also einfach nur 2 oder auch 1 * 2. Bei 20 steht überhaupt keine 2 mehr da. Man könnte also meinen, dass jetzt gar keine Rechenoperation gemacht wird. Das ist aber ein Trugschluss, denn man hat ja eine angegeben. Nämlich 20. Genaugenommen wird ab jetzt nicht mehr multipliziert sondern geteilt. 20 ist im Prinzip soviel wie 2 / 2. Du kannst jede beliebige Zahl (außer 0) mit 0 potenzieren bzw. durch sich selbst teilen. Am Ende kommt immer 1 raus. Diese ist Basis für jede weitere Teilung. Bei 2-1 rechnet man nun also 1 / 2. Die Hälfte von 1 ist 0,5. Bei 2-2 hast du nur noch ein Viertel, also 0,25. usw.
Zurück zu deiner Funktion. Du rechnest also c ^ -1 (also 2 ^ -1) = 0,5 und addierst den Wert von a (also 2) hinzu. Ergibt 2,5, welcher c auf der linken Seite des Ausdrucks zugewiesen wird. Zum Schluss weist du der Funktion fC noch den Wert 2 zu welcher von dieser an r übergeben wird. Da c ByRef ist, wird dessen Wert gleichzeitig an h übergeben.
In der fA-Funktion wird nun weitergerechnet. Im dritten Parameter gibst du den Wert von h an c weiter. Dass der dritte Parameter wieder c heißt ist Zufall. Dieser könnte auch beliebig anders heißen. Das ist egal. Um c nun endgültig zu berechnen, benötigst du zuvor eine Neuberechnung von a und b. a hat zu Beginn dieser Funktion den Wert von r, also 2 und b erhält den Wert von g, ebenfalls 2. c hat, wie wir wissen, 2,5. a erhält nun den Wert aus der Berechnung b / a * c bzw. 2 / 2 * 2,5, womit a nun ebenfalls 2,5 ist. b erhält das Ergebnis aus a / b / c bzw. 2,5 / 2 / 2,5. c erhält den Wert aus a * b / c bzw. 2,5 * 0,5 / 2,5. Wir können auch rechnen. 2,5 / 2,5 * 0,5 und die 2,5 rauskürzen. wie wir gelernt haben, ergibt eine Zahl durch sich selbst geteilt immer 1. Und 1 * 0,5 ergibt 0,5.
Da b und c ByRef sind, geben sie ihre Werte, die beide auf verschiedenen Rechenwegen 0,5 ergeben haben, an g und h zurück. Das ist der ganze Zauber. Ich hoffe ich konnte dich ein wenig erhellen.
Gruß Mr. K. |