Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
|
Re: Variablenübergabe - erklärt mir das einer?
24. Nov 2003, 21:46
Hallo!
Ich gehe jetzt einfach mal die Fragen durch.
(1) Weshalb mit im Unterprogramm nicht gleich mit "a" rechnet wird schon in Deinem eigenen Programm klar. Dann müsstest Du für "b", welches Du ja auch noch einmal mit dem gleichen Unterprogramm einliest, das ganze noch einmal schreiben. Und so, wie es jetzt ist, kannst Du jeden beliebigen Vektor einelesen!
Deklarieren musst Du den Vektor v nicht, denn dadurch, dass Du ihn als Parameter angegeben hast, ist er im Unterprogramm schon deklariert.
(2) An die Prozedur "Vektoraddition" werden drei Parameter übergeben. Die ersten beiden sind die Vektoren, die addiert werden sollen und der dritte ist der Ergebnisvektor. Dabei ist zu beachten, dass vor dem Ergebnisvektor das Wörtchen "VAR" steht. Das bedeutet, dass wenn Du - wie es in Deinem Beispiel geschieht - eine Variable c (die im Hauptprogramm deklariert ist) an diese Prozedur als Ergebnisvektor übergibst, jede Änderung, die im Unterprogramm an dieser Variable gemacht wird, auch im Hauptprogramm erscheint. Man sagt, die Variable wird "als Referenz" übergeben. Die beiden ersten Variablen werden "als Wert" übergeben. (Fachbegriffe "call by reference" und "call by value").
Um es deutlicher zu machen: da Du c "als Referenz" übergeben hast, werden die Zuweisungen, die im Unterprogramm "Vektoraddition" gemacht werden, für c auch im Hauptprogramm gelten.
Effektiv wird in der Vektoraddition also nur jeden Komponente von a mit der entsprechenden Komponente in b addiert wird und das Ergebnis in der entsprechenden Komponente in c gespeichert wird ... und dies auch im Hauptprogramm in c zu sehen ist.
(3) siehe (1)
So, ich hoffe ein wenig Klarheit geschafft zu haben. Wenn nicht, denk dran: es ist schon spät!
mfG
Peter
//edit: Ach ja: Willkommen im Forum!
Christian S. Admin in der Entwickler-Ecke
|