Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Probleme mit If Abfrage und Variablen

Hier wird über die Grafiktaschenrechner neuen Classpad Serie diskutiert.

Re: Probleme mit If Abfrage und Variablen

Beitragvon Blutorange » Sa 16. Sep 2006, 19:33

Also, wenn b mit d belegt ist, ist b=d dann d=d, was immer TRUE (wahr) ist. Ist b mit r (oder irgendwas anderem) belegt, ist b=d gleich r=d, was Undefined (Undefiniert) ist. Bei einer If-Abfrage muss aber TRUE oder FAlSE rauskommen, bei Undefined kommt dann eben "Nicht definierbares Ergebnis in Bedingungsbeurteilung".

So ähnlich bei print d = d; hat d jetzt z.B. den Wert 20, so ist d = d dasselbe wie 20=20, was TRUE ist, folglich TRUE ausgegeben. Hingegen ist r = d/2 dasselbe wie r = 20/2 gleich r = 10, was weder TRUE noch FALSE noch UNDEFINED ist, daher nicht als Bedingungsbeurteilung aufgefasst und r = 10 ausgegeben.

Ein funktionierender Code wäre:

[CODE]
local b
local y
local tmp
local tmp2
local tmp3
local tmp4
local tmp5

InputStr b
strcmp b,"d",tmp
strcmp b,"r",tmp2
strcmp b,"u",tmp3
strcmp b,"a",tmp4
strcmp b,"A",tmp5
1îy

If tmp=0
then
clrtext
locate 1,y,"d="
locate 13,y,x
y+12îy
locate 1,y,"r="
locate 13,y,x/2
y+12îy
locate 1,y,"u="
locate 13,y,xîî
y+12îy
locate 1,y,"A="
locate 13,y,îî((x^2)/4)
return

ElseIf tmp2=0
then
clrtext
locate 1,y,"d="
locate 13,y,xî2
y+12îy
locate 1,y,"r="
locate 13,y,x
y+12îy
locate 1,y,"u="
locate 13,y,xî2îî
y+12îy
locate 1,y,"A="
locate 13,y,îîx^2
return

ElseIf tmp3=0
then
clrtext
locate 1,y,"d="
locate 13,y,x/î
y+12îy
locate 1,y,"r="
locate 13,y,x/(2î)
y+12îy
locate 1,y,"u="
locate 13,y,x
y+12îy
locate 1,y,"A="
locate 13,y,x^2/4î
return

ElseIf (tmp4=0) OR (tmp5=0)
then
clrtext
locate 1,y,"d="
locate 13,y,îP(4î(x/î))
y+12îy
locate 1,y,"r="
locate 13,y,îP(x/î)
y+12îy
locate 1,y,"u="
locate 13,y,îP((x/î)î2î)
y+12îy
locate 1,y,"A="
locate 13,y,x
return

IfEnd
[/CODE]

Aus dem Manager kopiert, î ist der Zuweisungspfeil (=>) und die restlichen Symbole dann eben die Wurzel und Pi Zeichen für die Berechungungen.

André
Blutorange
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Static » Sa 16. Sep 2006, 19:45

Vielen dank! Den ersten Teil hab ich verstanden, is logisch, aber ich weiß nicht, inwiefern mir der Code weiterhelfen soll!

Was macht beispielsweise das hier:

[code]
local tmp
strcmp b,"d",tmp
[/code]
???
Weißt du zufällig auch, wie man das hier lösen kann:

Wenn ich d oder r eingebe, rechnet er ganz normal. Aber wenn ich a oder u eingebe, kommt folgender Fehler:

Zitat: Nicht definierbares Ergebnis in Bedingungsbeurteilung


Und kann man das vielleicht auch noch einfacher machen?? :D

Jedenfalls vielen Dank für deine Mühen!
Static
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon neanderix » Sa 16. Sep 2006, 20:12

Zitat:Was macht beispielsweise das hier:

[code]
local tmp
strcmp b,"d",tmp
[/code]


Local legt eine lokale Variable an. Local tmp serstellt also eine lokale Variable mit dem Namen "tmp".

"StrCmp" ist der CP-Basic-Befehl für den Stringvergleich. Das CP-Basic kann offenbar Strings nicht mit dem normalen "IF" vergleichen; ein Test führte gerade zu der von dir genannten Fehlermeldung (weshalb du auch meine Lösung vergessen kannst, die war "untested")

Einfacher geht leider nicht, irgendwie musst du ja die relativ sinnfreien Beschränkungen des CP-Basic umgehen.
(Ja, auch wenn ich dafür Schelte beziehen sollte: ich halte die Einschränkung, dass "IF - Then - Else" nicht mit Zeichenketten umgehen kann, für sinnfrei)

Ansonsten kann ich dir nur empfehlen, dich mal mit dem Handbuch den CP zu befassen, Kapitel 12 "Programmierung".
Und erstmal ein wenig herumzuspielen um die Befehle kennenzulernen.

Volker

neanderix
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Static » Sa 16. Sep 2006, 20:16

Zitat:
Ansonsten kann ich dir nur empfehlen, dich mal mit dem Handbuch den CP zu befassen, Kapitel 12 "Programmierung".
Und erstmal ein wenig herumzuspielen um die Befehle kennenzulernen.


Hab ich schon ein bisschen! Und sehr viele Sachen kenne ich schon aus Visual Basic bzw. Visual Basic.Net!

Aber ich denke, das mir das alles geholfen hat! Tausend dank!
Static
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Blutorange » So 17. Sep 2006, 12:21

Übrigens, in CPLua sieht der Code so aus:
[CODE]
print("Buchstabe?")
b=input()
print("Wert eingeben!")
x=input()

if b=="d"
then
print("d=" .. x)
print("r=" .. x/2)
print("u=" .. x*math.pi)
print("A=" .. math.pi*((x^2)/4))

elseif b=="r"
then
print("d=" .. x*2)
print("r=" .. x)
print("u=" .. x*math.pi*2)
print("A=" .. math.pi*x^2)

elseif b=="u"
then
print("d=" .. x/math.pi)
print("r=" .. x/(math.pi*2))
print("u=" .. x)
print("A=" .. ((x/(2*math.pi))^2)*math.pi)

elseif b=="a" or b=="A"
then
print("d=" .. math.sqrt(4*(x/math.pi)))
print("r=" ..
math.sqrt((x/math.pi)))
print("u=" .. math.sqrt(x/math.pi)*2*math.pi)
print("A=" .. x)

end
[/CODE]
[URL=http://www.casiocalc.org/?showtopic=2364]Download[/URL]
[URL=http://www.casiocalc.org/?showtopic=2314]Diskussion[/URL]
(Englisch)

CPLua ist ein Interpreter für LUA Scripts für den Classpad. Ist zwar noch in Entwicklung (neueste Version 0.9c) und hat noch einige Bugs, aber schau es dir einfach mal an, vielleicht interessiert es dich ja.

Zum Code: "=" ist ein Zuweisungszeichen, "==" ein Vergleichsoperator und ".." zum Zusammenfügen von Strings. Für mathematische Rechenoperationen außer +,-,*,/,^ schreibt man einfach math. und dann die Rechenoperation, die man haben will, so z.B. math.pi oder math.sqrt (sqrt=square root=Quadratwurzel).

André
Blutorange
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon neanderix » So 17. Sep 2006, 14:36

Na, der LUA Code sieht um einiges strukturierter aus, als der CDP-Basic Code.

Volker
neanderix
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Static » So 17. Sep 2006, 14:43

Zitat:
CPLua ist ein Interpreter für LUA Scripts für den Classpad. Ist zwar noch in Entwicklung (neueste Version 0.9c) und hat noch einige Bugs, aber schau es dir einfach mal an, vielleicht interessiert es dich ja.



Danke, der Interpreter sieht schon viel sympathischer aus! :D Muss ich das installieren??
Static
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Blutorange » So 17. Sep 2006, 15:01

Ist ein Add-In, musst du runterladen und mit dem [URL=http://classpad.net/de/members/os_addin/addin.html]Add-In Installer[/URL] auf den Classpad übertragen. Auf dem Classpad kannst du es dann im Menü (oben rechts auf "Alles" stellen um es zu sehen) ganz normal auswählen.

André
Blutorange
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Static » So 17. Sep 2006, 15:16

Aha, kann ich dann nur noch mit der neuen Sprache programmieren oder auch noch mit der alten sprache`?
Static
 

Re: Probleme mit If Abfrage und Variablen

Beitragvon Blutorange » So 17. Sep 2006, 16:59

Das ganze fügt nur einen LUA Interpreter hinzu, du kannst dann noch alles machen, was du vorher konntest.
Für einfache Probleme kannst du das Basic benutzen, bei komplizierteren nimmst du dann einfach LUA. :)

André
Blutorange
 


Zurück zu Das Classpad Forum

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste