Ein Kumpel von mir und ich sind gerade dabei uns BASIC-Projekt für die Schule fertig zu machen! War bisher alles kein Prob, Passwortabfrage funzt, Animationen funzen, etc.! Doch ein Problem haben wir schon noch! Die Funktion zur Parameterübergabe macht irgendwie nicht das, was wir wollen...
Ich poste hier mal ein total simples Beispiel dafür, vielleicht könnt ihr mir das sagen worans gelegen hat! Bei diesem Beispiel kommt z.B. als Ergebnis IMMER "0.00" raus, wenn N NICHT = 0 ist...
CODE ANFANG
CLS
SUB Eingabe (Zaehler, Nenner)
INPUT"Zähler eingeben: ", Zaehler
INPUT"Nenner eingeben: ", Nenner
END SUB
SUB Divi (Zaehler, Nenner, FLAG, Ergebnis)
IF N=0 THEN
F=1
ELSE
E=Z/N
F=2
END IF
END SUB
SUB Aus (Fl, Erg)
IF FL=1 THEN
PRINT"Nicht lösbar!"
ELSE
PRINT USING"######.##"; Erg
END IF
END SUB
CALL Eingabe (Zaehler, Nenner)
CALL Divi (Zaehler, Nenner, FLAG, Ergebnis)
CALL Aus (FLAG, Ergebnis)
CODE ENDE
So! Bei diesem Code meckert PowerBasic nich, rechnet korrekt, wenn N=0 ist, ansonsten gibt es aber IMMER als Ergebnis "0.00" aus!
Und das 1/2 nich 0.00 sondern 0.5 is, dürfte ja klar sein...
Könnt ihr uns helfen? Wäre schön, da wir das Proggie bald fertig haben müssen!
cya
-.- DeAtHmEaT 2k -.-
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Da stimmt irgend etwas mit den Variablen nicht.
SUB Divi (Z, N, F, E)
>>>>Die Subroutine kennt keinen Nenner, Zaehler, Flag., Ergebnis>>
IF N=0 THEN
F=1
ELSE
E=Z/N
F=2
END IF
END SUB
Hm... Selbst wenn ich ALLE Variabeln ausschreibe (überall) kommt immer noch "0.00" raus! Das ist natürlich schade... ;)
Wie müsste ich denn programmieren, wenn die Subroutine die ganzen Variablen kennen soll? Das was du gepostet hast, habe ich ja auch schon programmiert gehabt (wie ich das so sehe)... ;)
cya
-.- DeAtHmEaT 2k -.-
SUB Divi (Zaehler, Nenner, FLAG, Ergebnis)
IF N=0 THEN
F=1
ELSE
E=Z/N
F=2
END IF
END SUB
In Eurer Deklaration des Subs "Divi" verwendet Ihr andere Variablennamen als im Sub selbst.
Zaehler Z; Nenner N; ...
Deshalb kann der Varianle Ergebnis auch kein Wert zugewiesen werden.
CU Borlander
Ich programmiere nicht in Basic, aber von der Logik her müßte es folgendermaßen sein:
Du übergibst die Werte Zaehler und Nenner an die Subroutine. Diese übernimmt die Werte in ihre eigenen Variablen zum Berechnen.
Das Problem ist, es gibt Variablen, die sind nur der SUB bekannt und andere sind im ganzen Programm (global) bekannt.
CALL Divi (Zaehler, Nenner)
SUB Divi (Z, N)
IF N=0 THEN
FLAG=1
ELSE
Ergebnis=Z/N
FLAG=2
END IF
Nomalerweise müßte jetzt hier noch irgendwas sein, das heißt:
>>>>>>>>>>Return FLAG, Ergebnis : Du mußt die Berechnung ja wieder zur Verfügung haben.
END SUB
Also 100% ist meine Erklärung nicht, denn ich kenne nicht die Syntay von Basic.
Ich habe früher mal viel in Basic (GWBasic/QBasic) programmiert, ist aber schon ne weile her.
Soweit ich mich erinnere gibt es in Basic keine lokalen und globalen Variablen.
Wenn man einen Rückgabewert bekommen will, kann man (so zumindest in QBasic) eine FUNCTION Deklaration verwenden. Wie das in PowerBasic aussieht weiß ich nicht.
Noch eine andere Idee:
Auch im SUB "Divi" die Langen Variablennamen verwenden, so dass die Variablen im gesammten Programm die selbe Bezeichnung haben. Und noch mal die Schreibweise überprüfen.
CU Borlander