Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Basic++; Rückgabe mehrer Variablen aus einer Function Kategorie: Programmierung Basic (von Stefan Tappertzhofen, Homepage - 9.03.2005 9:23)
 Als Antwort auf Re: Basic++; Rückgabe mehrer Variablen aus einer Function von Dierk - 8.03.2005 21:11

> Das geht nicht.
> Eine Funktion liefert immer nur einen Variablenwert zurück.
> Bei der C-Control ist dies dann auch noch auf einen Zahlenwert beschränkt.
> Daher schreibt man da die "Rückgabewerte" dann einfach in der Funktion in Variablen, die dann von der aufrufenden Funktion weiter verwendet werden kann.
> Ich weiß, dass manchmal der Speicherplatz für solche Übergabevariablen nich ausreicht, geht aber leider nicht anders.

Doch das geht. Allerdings gibt es auf Grund technischer Probleme keine einheitlichen Methoden.

Auf der C-Control M Unit 2.03 werden Pointer unterstützt und damit kann man mehr als eine Variable zurückgeben:



' **********************************
'
' BASIC++ Beispiele
'
' Mehrere Rückgabewerte in einer
' Funktion
'
' **********************************

DECLARE FUNCTION pq(p AS WORD, q AS WORD, ^x1 AS WORD, ^x2 AS WORD)

DEFINE e1 AS WORD, e2 AS WORD

pq(50, -3, ^e1, ^e2)
PRINT "x1 = " & e1 '& " und x2 = " & x2

FUNCTION pq(p AS WORD, q AS WORD, ^x1 AS WORD, ^x2 AS WORD)

    @x1 = -1 * (p/2) + SQRT((p/2) * (p/2) - q)
    @x2 = -1 * (p/2) - SQRT((p/2) * (p/2) - q)

END FUNCTION


x1 und x2 sind in der Funktion andere Variablen als e1 und e2. Bei diesem Beispiel würde ich persönlich aber das REF Schlüsselwort verwenden um Platz zu sparen.

Man kann natürlich nicht die Rückgabe von hier maximal 3 Werten in einer Anweisung machen.

Eine weitere Methode wäre auf der M Unit 2.x das STACK Objekt.

Auf der M Unit 1.1 (nicht 1.2) bietet sich PUSH und POP für die Stackoperationen an:


FUNCTION foo()
   PUSH 1
   PUSH 2
   PUSH 3
END FUNCTION

Foo()
POP a
POP b
POP c


Gruß,

Stefan

Meine Homepage: http://www.fdos.de/ccbpp

 Antwort schreiben

Bisherige Antworten:

Re: Basic++; Rückgabe mehrer Variablen aus einer Function (von Achim - 9.03.2005 11:13)