Seite 1 von 1
Taschernrechner Programmieren
Verfasst: Mittwoch 9. März 2011, 22:06
von Py-Prog
Von der Schule aus mussten wir jetzt einen (Grafik-)Taschenrechner bestellen, die meisten haben den fx-9860GII genommen (SW Punkt-Matrix-Display, 1,5 MB) ich hab den fx-cg20 Gennomen (384x192 Farbdisplay, 16 MB).
Jetzt gibt es da ein Problem: die Teile lassen sich beide Programmieren (auch ohne PC) aber die "Sprache" ist nicht gerade die Beste, hat da wer Erfahrung wie man sowas anders Programmieren kann?
Die Spiele werde ich wohl eh vergessen können, die laufen nur auf den SW-Display Rechnern, und neue gibt's auch nicht weil der Zu neu ist.
Mal ein Kleiner einblick wie so ein Programm aussieht:
Code: Alles auswählen
"Weiter mit F1"
Do
While 1
Getkey ->Z
If Z=79
Then
Break
EndIf
WhileEnd
locate 1,7,"Du hast F1 gedrückt"
Stop
Ausgabe:
Wenn man damit ein Programm für Physik schreiben soll ist das sehr umständlich.
Re: Taschernrechner Programmieren
Verfasst: Mittwoch 9. März 2011, 22:26
von numerix
Py-Prog hat geschrieben: Jetzt gibt es da ein Problem: die Teile lassen sich beide Programmieren (auch ohne PC) aber die "Sprache" ist nicht gerade die Beste, hat da wer Erfahrung wie man sowas anders Programmieren kann?
Was heißt "sowas anders Programmieren kann"? Die Casio-Rechner haben halt diese spezielle Casio-Sprache, und das ist selbst im allerneuesten fx CX-20 noch dieselbe wie z.B. im 12 Jahre alten FX 2.0. Wenn du damit programmieren willst, musst du es eben lernen. Die zum Rechner gehörige CD-ROM enthält ein fettes PDF-Handbuch, wo auch die Programmierung umfassend mit allen Befehlen behandelt wird. Immerhin gibt es ja für den CX-20 eine Software, die es erlaubt, die Programme am PC zu schreiben und dann zu übertragen, das macht es wenigstens ein bisschen besser.
Alle weiteren Fragen würde ich hier stellen:
http://www.casiofans.de/
Re: Taschernrechner Programmieren
Verfasst: Donnerstag 10. März 2011, 10:07
von BlackJack
@numerix: Die eingebaute Sprache muss ja nicht das einzige sein, was man benutzen kann. Insbesondere wenn man die Programme auch am PC verfasst, kann es Compiler für andere Sprachen geben, die das Taschenrechner-System als Ziel haben, oder zumindest in die darauf verwendete Hochsprache übersetzen können. Für Hewlett Packard's HP48 gibt es zum Beispiel den
hp48cc-Compiler. Der übersetzt eine C-ähnliche Sprache in HPs RPN-Sprache.
@Py-Prog: So schlecht erscheint mir die Sprache gar nicht für einen Taschenrechner. Ansonsten kannst Du ja einen Compiler schreiben, der etwas Python-ähnliches in diesen BASIC-Dialekt übersetzt.

Re: Taschernrechner Programmieren
Verfasst: Donnerstag 10. März 2011, 11:55
von Py-Prog
@BlackJack die Sprache ist schon schlecht, du hast nicht mein Prog für Druckrechnungen nicht gesehen, das ist wirklich schlimm. Aber das mit dem "Compiler" wollte ich sowieso mal probieren.
(Abgesehen von der Casio-Sprache ist der Taschenrechner sein Geldwert)
Re: Taschernrechner Programmieren
Verfasst: Donnerstag 10. März 2011, 13:09
von BlackJack
@Py-Prog: Das Dein Programm für Druckrechnungen nicht schön ist, sagt ja noch nichts über die Sprache aus. Du schaffst es ja auch in Python nicht so schönen Code zu schreiben.

Und Python ist definitiv eine gute Sprache.

Re: Taschernrechner Programmieren
Verfasst: Donnerstag 10. März 2011, 19:48
von Py-Prog
@BlackJack mach's besser! Wenn man da mal gute befehle hätte wäre das ja kein Problem aber wenn man verschiedenen Tasten eine "Funktion" zuweisen will, muss man das so machen:
Code: Alles auswählen
Do
While 1
Getkey->Z
If Z=79
Then
"F1 wurde Gedruckt"
EndIf
If Z=69
Then
"F2 wurde Gedruckt"
EndIf
If Z=59
Then
ClsText
EndIf
EndWhile
Stop (Sonst bekommt man einen Syntax-Error)
Dann hat man nur 26 variablen die "System weit" verfügbar sind, es gibt keine dictionarys, keine Funktionen, ... .
Am liebsten würde ich jetzt ein Paar deiner Ersten Programme heraus kramen ...

Re: Taschernrechner Programmieren
Verfasst: Donnerstag 10. März 2011, 20:24
von derdon
Was regst du dich so auf? Sieh es als Chance an, deine Herangehensweise zur Problemlösung zu verändern, da sich diese Sprache stark von Python (oder auch anderen dir bekannten Sprachen) unterscheidet. Ich habe jedenfalls viel Spaß mit TI-BASIC auf meinem TI-84 Plus.
Re: Taschernrechner Programmieren
Verfasst: Freitag 11. März 2011, 02:15
von BlackJack
@Py-Prog: Was soll ich besser machen? Besseren Python-Code schreiben!? Kein Problem.
Also bei der gezeigten Tastenabfrage sehe ich jetzt an der Sprache nichts allzu schlimmes. Mal abgesehen davon, dass das kein gültiges Programm ist -- zu dem ``Do`` fehlt irgendwie etwas und ``ClsText`` sollte wohl ``ClrText`` heissen. Den Syntax-Fehler bekommst Du wahrscheinlich wegen dem ``Do`` und das ``Stop`` ist da ein Hack und keine Lösung. Also könnte ich an der Stelle sogar besseren Casio-BASIC-Code schreiben.
Die Einschränkung auf die 26 einbuchstabigen, globalen Variablen ist da schon härter. Funktionen kann man ja durch benannte Programme ersetzen. Insgesamt ist das aber schon erschreckend einschränkend für einen Rechner mit so viel Speicher. Ich hätte gedacht dass das Casio-BASIC auf dem Niveau von TI-BASIC wäre. Das war nämlich das letzte Taschenrechner-BASIC, mit dem ich auf einem TI-89 zu tun hatte. Den hatte ich mir damals mal ausgeliehen als er noch relativ neu war und ihn ausgiebig getestet. Hatte mich dann aber doch für einen HP48GX von Hewlett Packard entschieden. Wenn ich jetzt das Casio-BASIC mit dessen RPL-Programmiersprache vergleiche, dann ist die zwar ungewöhnlicher, aber IMHO deutlich besser.
Mit dem fx-9860 wäre man als Programmierer bei Casio-Taschenrechnern wohl besser bedient gewesen -- den kann man immerhin auch in C programmieren.
Ein paar meiner ersten Programme sind auch in BASIC geschrieben. CBM BASIC V2 auf einem C64. Der kann zwar mehr als 26 Variablen, hat dafür aber nicht einmal alle Kontrollstrukturen die das Casio-BASIC kennt. Es gibt nicht einmal ein ``ELSE`` zum ``IF``. Dein Programm würde da ungefähr so aussehen:
Code: Alles auswählen
10 GET A$:IF A$="" THEN 10
20 IF A$=CHR$(133) THEN PRINT "F1 WURDE GEDRUECKT"
30 IF A$=CHR$(137) THEN PRINT "F2 WURDE GEDRUECKT"
40 IF A$=CHR$(134) THEN PRINT CHR$(147)
50 GOTO 10
Re: Taschernrechner Programmieren
Verfasst: Freitag 11. März 2011, 10:09
von Py-Prog
Das Do (und somit auch Stop) nicht rein gehört, so weit bin ich jetzt auch schon.
In dem Taschenrechner Forum hab ich was gefunden was schon besser aussieht, hatte aber noch keine Zeit es auszuprobieren.
Casio könnte mal so ganz neben bei ne neue Firmware entwickeln.
Re: Taschernrechner Programmieren
Verfasst: Freitag 11. März 2011, 14:31
von BlackJack
So ein ähnliches "Tasten → Ausgabe"-Programm in RPL für den HP48:
Code: Alles auswählen
« DO
0 WAIT
CASE
DUP 11.1 == THEN "A gedrückt" MSGBOX END
DUP 12.1 == THEN "B gedrückt" MSGBOX END
DUP 13.1 == THEN "C gedrückt" MSGBOX END
END
UNTIL 91.1 == END
DROP
»
Die Zahlencodes für die Tasten finde ich sehr praktisch: die erste Ziffer ist die Zeile auf der Tastatur, die Zweite die Spalte, und die nach dem Dezimalpunkt ist die "Shift-Ebene", also quasi welche Schift- oder Mod-Taste dazu aktiv war. Bei anderen Systemen muss man Tastaturcodes ja oft nachlesen oder auswendig lernen -- beim HP48 reicht einfach ein Blick auf die Tastatur.
Re: Taschernrechner Programmieren
Verfasst: Freitag 11. März 2011, 20:50
von Py-Prog
@BlackJack da muss ich dir zu stimmen, bei Casio ist das Total unlogisch es gibt keine Taste 1,
F1=79, F2=69,...
Aber dafür hab ich KEYVIEW geschrieben.
Re: Taschernrechner Programmieren
Verfasst: Samstag 12. März 2011, 19:25
von Py-Prog
Wer mal den Code für mein Druck-Programm sehen will:
Code: Alles auswählen
'ProgramMode:RUN
Lbl A
ClrText
"_#E59E_Py-Prog"
"Version 0.4"
""
"F1 Druck"
"F2 Kraft"
"F3 Flaeche"
"EXIT Beenden"
While 1
Getkey->Z
If Z=79
Then
ClrText
"Kraft eingeben:"
?->Y
"Flaeche eingeben:"
?->Z
ClrText
"Es wirkt ein Druck"
"von"
Locate 1,3,Y/Z
Locate 1,4,"Pascal"
Locate 1,7,"MENU zuruck"
IfEnd
If Z=69
Then
ClrText
"Druck eingeben"
?->Y
"Flaeche eingeben"
?->Z
ClrText
"Es wirkt eine Kraft"
"von"
Locate 1,3,Y*Z
Locate 1,4,"N"
Locate 1,7,"MENU zuruck"
IfEnd
If Z=59
Then
ClrText
"Druck eingeben"
?->Y
"Kraft eingeben"
?->Z
ClrText
"Die Flaeche ist"
Locate 1,2,Z/Y
Locate 1,3,"m_#E5C2_"
Locate 1,7,"MENU zuruck"
IfEnd
If Z=48
Then
Goto A
IfEnd
If Z=47
Then
ClrText
"Bye Bye"
Break
IfEnd
WhileEnd