Function - sehr sehr Anfänger
Übersicht

Die_ChaosmaschineBetreff: Function - sehr sehr Anfänger |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Tag,
ich arbeite gerade das Buch von René Meyer "Spiele programmieren mit Blitz Basic" und bin auf S. 51 liegen geblieben: Function & globale Variablen. Dabei wollen mir 2 Sachen noch nicht so recht in den Kopf: 1. zu seinem Beispiel: Code: [AUSKLAPPEN] ; GLOBAL1.BB
...womit er den Unterschied von Local und Global erklärt. Die Ausgabe ist wie gewünscht
A = 10 Print A Print TestFuntion(A) WaitKey End ; Function TestFunktion(B) Return A End Function 10 0 Soweit so gut. Wenn ich aber statt dem B das A als Variable verwende: Code: [AUSKLAPPEN] Function TestFunktion(A)
Return A End Function ist die Ausgabe 10 10 Wozu dann also der Aufwand, Global A zu Beginn zu definieren, wenn es auch so geht? 2. Habe ich das richtig verstanden? TestFunktion(A) ; A = Variable, die an die Funktion übergeben werden soll Function TestFunktion(B); B = Variable, die an das Hauptprogramm zurück gegeben werden soll; und wenn dem so ist, warum funktioniert meine Abwandlung, aus B mach' A und dass statt der 0 die 10 ausgegeben wird? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Willkommen.
Funktionen können in BlitzBasic einen Rückgabewert haben. Wenn du in einer Funktion mehrere Werte errechnen/ändern wolltest, musst die in Global zugänglichen Variablen speichern. Das Beispiel im Buch macht nicht so richtig deutlich, warum man das brauchen sollte. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Ich nehme mal den code den du selbst gepostet hast als Beispiel:
Code: [AUSKLAPPEN] A = 10
Dies definiert A als Local, so dass diese nur im Hauptprogramm sichtbar ist. Code: [AUSKLAPPEN] Print A
Hier lässt du die lokale A ausgeben. Code: [AUSKLAPPEN] Print TestFunktion(A)
Hier lässt du den Rückgabewert der TestFunktion ausgeben, mit dem Argument A. Code: [AUSKLAPPEN] Function TestFunktion(B)
Return A End Function Deine Funktion startet sofort ein neues "Scope", in dem die vorherige Local A nicht mehr sichtbar ist, aber der Parameter B ist sichtbar. Mit dem Return A lieferst du also den Wert einer nicht existierenden Variable zurück, welcher standardmäßig 0 ist. Der Grund hier "Global A" anstatt "Local A" ist um mehrere Werte gleichzeitig zurückzugeben oder halt eben eine Globale Variable zu ändern. Dies ist nützlich in Blitz. 2. Ja, und nein. TestFunktion(A) ruft die Funktion auf und übergibt A als Argument, "Function TestFunktion(B)" definiert die Funktion und gibt dem Compiler vor das zum aufrufen mindestens ein Argument vorhanden sein muss. Der Rückgabewert wird durch das Return gesetzt, der Typ mithilfe der Symbole %, #, $ vor der offenen Klammer: "Function TestFunktion#(B)" gibt eine Float zurück. Der Grund weshalb deine Abwandlung funktioniert ist dass du den Parameter B auf A umgeändert hast, wodurch "Return A" nun eine echte Variable hat zum auslesen und zurückgeben. |
||
Warbseite |
Die_Chaosmaschine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das sind doch einmal Antworten, die keine Frage offen lassen. Dankeschön. Hoffentlich kann ich auch irgendwann einmal so fundiert und auf den Punkt gebracht Antworten geben. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group