also die b1 und b2 stehen für übergabeparameter, so nennt man die, d.h. wenn du die sub mit call Test(1,2) aufrufst, wird erstmal in b1 ne 1 gespeichert, und in b2 ne 2, dann kannste das in der subroutine weiterverwenden, also kannste schreiben "print b1*b2" udn der wird dir 2 ausgeben, weil 1*2 = 2 iss...
ich hoffe das iss soweit klar, die haben das dann noch erweitert, so dass die gesagt haben, die zweite variable iss byval, die erste iss (dadurch, dass das der standard ist) byref
byval heißt, dass nur der wert übernommen wird, aus der übergebenen zahl, und bei byref wird die gesamte referenz übergeben, also der speicherort, wo die variable drinliegt. d.h. in die b1 kann man jetzt auch was reinschreiben, weil der ort der speicherung bekannt ist, und dieser ort nun neu beschrieben werden kann, daher wird beim print a auch 10 ausgegeben werden, die b1 wurde ans a zurückübergeben, da die beiden die selbe speicheradresse teilen.
das mit dem gosub ist etwas älter, und das gibts auch in vielen anderen leichten programmiersprachen, aber da gibts eben nicht den vorteil, dass du sagen kannst: ich möchte jetzt diesen wert mit übergeben, so dass du damit weiterarbeiten kannst.
hastes alles verstanden? iss nen bissl schwer zu erklärn, aber ich versuchs gern nochmal anschaulicher ^^
Martin
Lesezeichen