Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Variable as a reference or value to a function
#1
Today I looked at passing variables/arguments to functions - by reference and by value. QBasic Reference P. 2.31.

Apparently, passing by value doesn't work for functions.  Huh But with a procedure (Sub) it worked.

Value at Sub: The value is not changed
Code: (Select All)
'Beispiel fuer Uebergabe an Funktionen als Referenz und als Wert
'Funktioniert offenbar nicht mit Funktionen (?)
'17. Juli 2022

Option _Explicit

Declare Function AlsReferenz(eingabe as Integer) as Integer
Declare Sub AlsWert(eingabe as Integer) as Integer

Dim zahlref, zahlwert As Integer

Cls
Print
Print "Referenzbeispiel - Eingabe wird veraendert"
Input "Eingabe: ", zahlref

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlref
Print Using "Eingabe nach Funktionsaufruf (Eingabe x 3): ###"; AlsReferenz(zahlref)

Print
Print "Wertbeispiel - Eingabe wird nicht veraendert"
Input "Eingabe: ", zahlwert

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlwert

'Aufruf mit Wert in Klammern um sie zu einem Ausdruck zu machen
'QBasic Referenz S. 2.31
Call AlsWert((zahlwert))
Print Using "Eingabe nach Funktionsaufruf (Als Ausdruck): ###"; zahlwert

Print
Print "Uebergabe nicht als Ausdruck - keine Klammern (Eingabe + 3)."

'Jetzt nicht als Ausdruck: Ohne extra Klammern
'um die Variable wird die Eingabe veraendert, da
'sie jetzt wieder als Referenz (Standard) uebergeben wird.
Call AlsWert(zahlwert)
Print Using "Eingabe nach Funktionsaufruf: ###"; zahlwert

Function AlsReferenz (eingabe As Integer)

  AlsReferenz = eingabe * 3
End Function

Sub AlsWert (eingabe As Integer)

  'Hat nur Auswirkung, wenn Argument nicht als Ausdruck
  'uebergeben wird
  eingabe = eingabe + 3
End Sub

And now with a function: Passing by value doesn't work.
Code: (Select All)
'Beispiel fuer Uebergabe an Funktionen als Referenz und als Wert
'17. Juli 2022

Option _Explicit

Declare Function AlsReferenz(eingabe as Integer) as Integer
Declare Function AlsWert(eingabe as Integer) as Integer

Dim zahlref, zahlwert As Integer

Cls
Print
Print "Referenzbeispiel - Eingabe wird veraendert"
Input "Eingabe: ", zahlref

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlref
Print Using "Eingabe nach Funktionsaufruf: ###"; AlsReferenz(zahlref)

Print
Print "Wertbeispiel - Eingabe wird nicht veraendert"
Input "Eingabe: ", zahlwert

Print Using "Eingabe vor Funktionsaufruf: ###"; zahlwert
Print Using "Eingabe nach Funktionsaufruf: ###"; AlsWert((zahlwert))

End 'Hauptprogramm

Function AlsReferenz (eingabe As Integer)

  AlsReferenz = eingabe * 3
End Function

Function AlsWert (eingabe As Integer)

  AlsWert = eingabe + 3
End Function
Reply


Messages In This Thread
Variable as a reference or value to a function - by Kernelpanic - 07-17-2022, 07:15 PM



Users browsing this thread: 8 Guest(s)