fx-9860GII への移植 - 厄介な 旧来の命令

2015/01/12 追記

fx-5800P から fx-9860GII への移植

5800と9860、外観 
fx-9860GIIfx-5800P


これまで、fx-5800P のCasio Basicで作ったプログラムを fx-9860GII へ移植してきて、留意点がだいたい分かってきました。以下の項目以外は、ほぼコンパチと思ってよさそうです。


1) Getkey
キーコードはハードウェア依存するのでキーコードさえ変更すれば、Getkey コマンド自体の動作は同じなので移植に問題なし。
 ⇒ Casio Basic コマンドリファレンス - Getkey

2) Locate
Locate コマンドの動作は同じで fx-5800P からそのまま移植可能。fx-9860GII が持つ広い画面に合わせて最適化する場合は、引数を変更すれば良い。
 ⇒ Casio Basic コマンドリファレンス - Locate

3) Cls
fx-5800P 搭載 Casio Basic の Cls は、fx-9860GII では ClrText に相当する。機能は全く同じ。内部カーソル行のリセット機能まで同じ。
 ⇒ Casio Basic コマンドリファレンス - Cls


4) 配列変数
fx-5800P 搭載 Casio Basic の配列変数は、fx-9860GII の Caso Basicには含まれていないため、代わりに行列を使えば良い。


5) ◢ (出力)命令
出力動作後、一時停止状態の際、- DISP - と表示される。その表示行は完全に占拠されるためプログラムで使えなくなる。今のところ - DISP - の表示を止める方法が見つかっていない。fx-5800P で 命令を使った画面構成は、fx-9860GIIでは崩れてしまう。画面構成を壊したくないなら、 命令を使わずに Locate を使い、さらに以下のような [EXE] キー待ちのコード(2行)加えると、 命令と同様に一時停止し  [EXE] キーでプログラムを先に進めるようにできる。

Locate X,Y,"HogeHoge"
Do
LpWhile Getkey≠31



6) " " (出力)命令
fx-9860GII 搭載 Casio Basic の " " (出力)命令は、fx-5800P とは別物といって良く、私はプログラムでは使えないと思う。
以下の2行のコードを、fx-5800P と fx-9860GII の両方で走らすと、その違いが分かるだろう。

Locate 10,1,"RIGHT"
"LEFT"


fx-5800P での出力は、
LEFT     RIGHT

fx-9860GIIでの出力は
LEFT

上の2行のコードの1行目と2行目を入れ替えれば、fx-5800P と fx-9860GII は同じ表示結果になる。

fx-9860II 搭載の Casio Basic の " " (出力)命令は、チョット我が強く、1行丸々自分のために占拠する。◢ (出力)命令も1行丸々占拠するので、このあたりは同じ。fx-9860GII の Casio Basic はマイナーバージョンアップしており、その際に旧来の命令の仕様が変わったと思われる。

[追記]: CFX-9850GC (PLUS は付かない)、PRIZM fx-CG10 (fx-CG20と同じのUS版) でも fx-9860GII と同じ動作とのこと。従って、fx-5800P だけが独自のチューニングを行っていると思われる。


7) ?→ (入力)命令
我の強い " "(出力)命令の性格を引きづり、fx-9860GII では使いにくいものになっている。
上記の" "(入力)命令の違いを示すコードと同様にして、以下を fx-5800P と fx-9860GII で動作させると、違いが分かる。

Locate 10,1,"RIGHT"
"INPUT"?→A


fx-5800Pでの出力は、
INPUT?   RIGHT
[入力桁]

fx-9860GIIでの出力は、
INPUT?
「入力桁]

RIGHT が出力される前提で書いた fx-5800P のコードは、そのまま fx-9860GII では使えない。
RIGHT 表示を右側に残して INPUT? と表示させ、1行下が入力行となるのがfx-5800P の動作だが、fx-9860GII では頑固な " " 出力に占拠された1行目に RIGHT を表示させた状態で入力させることは不可能(と思います)。


8) ?(入力)命令
fx-5800P では、?記号単独で入力命令として使えるが、fx-9860GII ではこれが使えない。

fx-5800P では、以下のコードが書ける。

"INPUT"?A

すると、予め A に代入されている値が表示される。これの良いところは、プログラムを使っていて A の値を変更する必要が無い場合は、数値入力せずに [EXE] キーを押すだけで入力が確定するので、入力の手間が省ける。

fx-9860GII では?に続いて → (代入命令) が必要であり、必ず数値入力をしないと [EXE] で確定できない。

'INPUT"?→A

なお fx-5800P でも上記 8) で示したように、この記法は可能であり、?(入力)命令に柔軟性がある。fx-FD10 Pro でもこの記法が可能なようである。


9) 関数
関数の ( ) の扱いが変更されている。fx-5800P では関数の後に ( が必要なので入力時に ( が自動的に付加される。fx-9860GII では入力時に ( が付かず代わりにスペースが入るように変更されている。但し ( ) を付けても問題なく動作するので fx-5800P からの移植性には影響しない。

しかし、fx-9860GII では関数入力時に ( が自動的に付かないので、計算の優先度については、より注意が必要。例えば、

fx-5800P での

Int(log(X)+1)→G ・・・(1)

は、fx-9860GII でそのまま使える。

fx-5800P で Int を入力すると Int( と表示されますが、fx-9860GII では Int + [スペース] と表示され、以下のように ( ) なしでの記述が可能で、正しく動作する。

log X

sin X

Int log X +1→G ・・・(2)
 
(1)と(2)では G に代入される値が異なるので、計算の順序を考えて ( ) を付ける必要がある。入力時に ( を付けなくて良い仕様に変更されたので、計算の優先順序をうっかり間違えないように注意が必要だ。

(1)と同じにするには、

Int (log X +1)→G

とする。



これで、fx-9860GII 搭載Caso Basic の " " (出力)命令が意外に手強いことがお分かりでしょう。苦労するくらいなら、" " (出力)命令を使わず、入力ボックス 2.0 がお勧めです。入力ボックス 2.0 は、fx-9860GII に移植が簡単です。

fx-5800P 搭載 Casio Basic は旧来の入出力命令とBasic準拠命令の折り合いがまだ良いのですが、fx-9860GII 搭載のマイナーバージョンアップした Casio Basic は旧来の入出力命令が使いにくくなっています。

旧来の入出力命令は fx-5800P でも柔軟だとは言えないのですが、fx-9860GII でさらに柔軟性が損なわれています。Casio Basic プログラムを書く時は、旧来の入出力命令を使わない方が良いのではないかと、私は思います。

Caso Basic進化に伴って旧来の命令を軽視する方向性が心配されますが、一方で 最新機種 fx-FD10 Pro では、単独の?(入力)命令が復活しています(マニュアルを読む限り)。旧来から慣れ親しんだ命令を多用するユーザーが多いのかも知れず、そのユーザーの利便性に配慮した復活かも知れません。

Basic準拠のコマンドについては、If 文、Do / While / For 文、その他制御命令や、電卓の表示方法を指定する ENG / Norm / FIX コマンドなど互換性はあるようです。




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ

 

keywords: fx-5800P、fx-9860GIICasioBasicプログラム関数電卓

リンク集 | ブログ内マップ


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

No title

管理人様、こんにちは!

fx-5800Pとfx-9860GII、同じCasioBasicでもこうして比べると?(入力)命令と" " (出力)命令、入出力の肝心なところで違いは結構大きいですね(^^;

このあたりは、前世代のCFX-9850GCでも同じ仕様みたいですから、fx-9860GシリーズでのOSのバージョンアップでのCasioBasicの変更点は新しいコマンドが増え続けたことくらいしかなさそうです。

表示関係はfx-5800Pは4行表示に上手く最適化されてるといえるところかと思いますが、fx-9860GIIは8行あっても使い勝手の面で細部の詰めの甘さがちょっと問題ですね。

細かに言語仕様を比べると、fx-5800Pはグラフ電卓のCasioBasicを基本に上手くカスタマイズされた言語仕様といえますね。

fx-FD10Proは液晶の出力例を見ると- DISP -が表示されてて出力仕様がfx-9860GIIと同じみたいなので、入力ボックス2.0が有効に使える機種になりそうですね(^^)

fx-5800Pはスペシャル?

sentaro様

貴重な情報をありがとうございます。

> fx-5800Pとfx-9860GII、同じCasioBasicでもこうして比べると?(入力)命令と" " (出力)命令、入出力の肝心なところで違いは結構大きいですね(^^;
>
> このあたりは、前世代のCFX-9850GCでも同じ仕様みたいですから、fx-9860GシリーズでのOSのバージョンアップでのCasioBasicの変更点は新しいコマンドが増え続けたことくらいしかなさそうです。

と言うことは、fx-5800P では独自のチューンが施されていると言うことができそうです。


> 表示関係はfx-5800Pは4行表示に上手く最適化されてるといえるところかと思いますが、fx-9860GIIは8行あっても使い勝手の面で細部の詰めの甘さがちょっと問題ですね。

そうなんです。fx-9860GII で - DISP - と8文字使い、1行を丸々占拠する代わりに、fx-5800P では右上に小さな [DISP] マークが表示されます。素晴らしい配慮です。



> 細かに言語仕様を比べると、fx-5800Pはグラフ電卓のCasioBasicを基本に上手くカスタマイズされた言語仕様といえますね。

はい、fx-5800P は単にCFX-0850GC PLUS の Casio Basicを移植しただけではないようですね。


> fx-FD10Proは液晶の出力例を見ると- DISP -が表示されてて出力仕様がfx-9860GIIと同じみたいなので、入力ボックス2.0が有効に使える機種になりそうですね(^^)

これは、もったいない。Casio Basicで利用できるのは、8行でなくて7行なのですが、7行もあるから1行くらい - DISP - 表示で使ってもええやんか、と言うのでしょうかね?

あまり考えずにコーディングした Hit & Blow (ゲーム)を fx-9860GII に移植してみたのですが、何も考えずに変数をバンバン使っています。ロジックも見直したいところですが、まゲームが動けば良いと言う感じです(恥ずかしながらコードは公開してしまっていますが...)

で、ここで苦労したのが、?→ 入力命令なんです。

Locate 12,1,":"
Locate 13,1,C
"4 DIGIT"?→N


というコードで、変数 C がトライ回数を示すのですが、

4 DIGITS? :3
[入力行]


という表示と入力構成を作っているのですが、右の :3 は、今3回目のトライですよ、と示しています。入力時に :3 (現在のトライ数)を表示させたいのですが、fx-9860GII ではそれがどうしてもできません。

fx-9860GII では、しかたなく :3 の表示を1行下げるしか対処方が見つかりませんでした。

で、入力ボックス 2.0 を使おうとしたのですが、節操なく沢山の変数を使っていて、変数のバッティングのため使えない(と言うか、大幅にコードを書き換えないとダメ)と言う事態になりました。なので1行下げたのですが...

その意味では、入力ボックス 2.0 はプログラムを作る最初に、それを使うかどうか決めないと、あとが面倒になります。

そして、改めて ?命令、或いは ?→命令の使い勝手を再認識したわけです。そして fx-5800P のチューニングの良さに初めて気がついたわけです。

いやぁ、奥が深いと言うか、fx-5800P を作ったカシオに敬服します。

No title

管理人様、こんにちは!

ついさっきニュース探索していたらこういう記事を見つけました。
http://headlines.yahoo.co.jp/hl?a=20150111-00000003-fsi-bus_all
写真の機種がfx-9860GIIのような…

高精細な新型電卓は英語圏以外の教育市場開拓向けというのが一番大きいみたいですね。

ということを考えると、
fx-9860GIIや高機能電卓は電卓としての実用性を極めるというよりは教育市場向けに徹した電卓といえるのでしょうね。
fx-5800Pの便利な使い勝手をアップデートで一切取り入れようとしないところでそういうところを実感せざるを得ないです。


>そうなんです。fx-9860GII で - DISP - と8文字使い、1行を丸々占拠する代わりに、fx-5800P では右上に小さな [DISP] マークが表示されます。素晴らしい配慮です。

そこです。そこがfx-5800Pが電卓としての使い勝手を左右する重要なところですね。
fx-9860GIIはそういうステータス表示エリアが全くなくてドットマトリクスだけなので画面内ですべての情報を表示する必要があるために上手く進化できなかったというのもありそうです。


>これは、もったいない。Casio Basicで利用できるのは、8行でなくて7行なのですが、7行もあるから1行くらい - DISP - 表示で使ってもええやんか、と言うのでしょうかね?

fx-9860GIIのハードを流用したがための制限ともいえますが、1行潰してステータスエリアとする方法もありますよね。
fx-CG10/20では上部にステータス専用エリアが確保されているので、その気になればfx-5800Pの操作性を完全に生かした電卓として生まれ変われたはずですが、今現在はfx-9860GIIとなんら変わりないのが惜しいです。


>fx-9860GII では、しかたなく :3 の表示を1行下げるしか対処方が見つかりませんでした。

たぶん、それしか対処方法はないですよね。


>で、入力ボックス 2.0 を使おうとしたのですが、節操なく沢山の変数を使っていて、変数のバッティングのため使えない(と言うか、大幅にコードを書き換えないとダメ)と言う事態になりました。なので1行下げたのですが...

言語仕様としてローカル変数が使えないのが痛いところです。


>いやぁ、奥が深いと言うか、fx-5800P を作ったカシオに敬服します。

おっしゃるとおりです。
fx-5800Pは電卓メーカーが通常使いの電卓として本気で作ったプログラム電卓というところですね(^^)

楽しみですね

setaro様

ホットな情報、ありがとうございます。

> ついさっきニュース探索していたらこういう記事を見つけました。
> http://headlines.yahoo.co.jp/hl?a=20150111-00000003-fsi-bus_all
> 写真の機種がfx-9860GIIのような…
>
> 高精細な新型電卓は英語圏以外の教育市場開拓向けというのが一番大きいみたいですね。
>
> ということを考えると、
> fx-9860GIIや高機能電卓は電卓としての実用性を極めるというよりは教育市場向けに徹した電卓といえるのでしょうね。

写真に写っているのが、fx-9860GII に見えるので、この記事を見る限り、関数電卓⊃グラフ関数電卓 (グラフ電卓がスタンダード電卓の部分集合)と読み取れませんか?


年間の電卓出荷台数5000万台のうち関数電卓が半分ってことは、なんと2500万台も売っているわけで、その中にはスタンダード関数電卓とグラフ関数電卓が含まれていることになります。..と言うか、グラフ関数電卓が1000万台も売れているとは思えませんので...

高精細液晶を使った現地語化は、グラフ関数電卓に波及することは間違いなさそうですね。

海外展開強化と言うことは、PRIZM fx-CG10 が確か2010年にUSで発売され、2年後の2012に国内でfx-CG20 が発売されたように、国内市場はまたもや置き去りで、さらに高い製品を買わされることにもなりそう。

その場合はメーカー保証無しの並行輸入、個人輸入で対応するしかなさそうですね。



> fx-5800Pの便利な使い勝手をアップデートで一切取り入れようとしないところでそういうところを実感せざるを得ないです。

ひょっとして、fx-5800P は FX-603P 以上に長寿命な製品になるのかなぁ...と心配になります。


> fx-9860GIIのハードを流用したがための制限ともいえますが、1行潰してステータスエリアとする方法もありますよね。
> fx-CG10/20では上部にステータス専用エリアが確保されているので、その気になればfx-5800Pの操作性を完全に生かした電卓として生まれ変われたはずですが、今現在はfx-9860GIIとなんら変わりないのが惜しいです。

やはり、開発の方向は欧米の挙行く現場と言うことなのでしょうね。


> 言語仕様としてローカル変数が使えないのが痛いところです。

そうそう、Goto のラベルはファイルごとに指定できるので、Prog でcall すると、スタックの再構築がされることになります。ですから、プログラムファイルに引数を渡し、戻り値を返す機能を付加できれば、局所変数も難しくないにではいかと勝手に思ってしまいます。


> fx-5800Pは電卓メーカーが通常使いの電卓として本気で作ったプログラム電卓というところですね(^^)

10年売ることを想定しているかも知れません(^^;)

No title

管理人様、こんにちは!

>写真に写っているのが、fx-9860GII に見えるので、この記事を見る限り、関数電卓⊃グラフ関数電卓 (グラフ電卓がスタンダード電卓の部分集合)と読み取れませんか?

そうですね。
日本以外の教育市場で必須教材として関数電卓が使われてるとしてもスタンダード関数電卓の方が多いのは間違いないと思います。
グラフ電卓は管理人様がおっしゃるように1000万台はちょっと考えられない数字なので一桁少ない100万台クラスでしょうか。
米国ではTIが強いので仕方ないところでしょうが、欧州でのシェア50%はすごいですね。
CASIO電卓サイトが欧州で多いのが分かる感じします。


>高精細液晶を使った現地語化は、グラフ関数電卓に波及することは間違いなさそうですね。

今年とかではないでしょうけど近いうちに高精細化するのは間違いないですね。


>その場合はメーカー保証無しの並行輸入、個人輸入で対応するしかなさそうですね。

ここがすごく残念なところです。
グラフ電卓はもはや日本発の電卓ではなくなったといえますね。


>プログラムファイルに引数を渡し、戻り値を返す機能を付加できれば、局所変数も難しくないにではいかと勝手に思ってしまいます。

TIもHPも最新の搭載言語はすべて局所変数ありの関数型言語なのでCASIOも次期バージョンで一気に進化する可能性ありますね。


>10年売ることを想定しているかも知れません(^^;)

fx-4800Pからfx-5800Pで約10年ですから、次も10年後というのは普通にあり得ますね(^^;

TIとカシオ

sentaro様

こんばんは、

教育方針の違いとはいえ、学校で電卓禁止と言うのは、教え方を考え直して欲しいものです。

日本でも積極的に電卓を授業に使う学校はあって、ホームページを拝見する限り、方程式の解析解を示すTI機が良いとの見解が多くを占めているようです。アメリカでTIが強いのも同じ考え方なのかも知れません。

私の個人的な感覚で申し上げれば、解析解を勉強するのは紙様子と鉛筆で十分で、むしろグラフが動的に変化する様子を頭の中で想像することで、面白さを感じます。グラフ電卓はまさにこれにうってつけでして、子供の頃にグラフ電卓があったら、きっとハマッていたと思います。

実数の世界や複素数の世界でも、結局グラフ上の動画を想像することで、理解を深めてきたような気がします。

面白いことに、物理の人と数学の人では感覚がかなり違うようで、数学の人は数学に時間の観念は無いと言い切ります。私の頭の構造は、きっと物理や技術よりにできていて、絶対に数学には向かないようです。

大学の時の高木貞治さんの「「解析概論」で一気に数学が分からなくなりました。ε-δなんて、なんで簡単なことをわざと分からなくするのか、全く理解できませんでした。後年、数学者から「数学には時間の観念が無い」と言われて、目から鱗でした。それを早く聞いていれば、解析概論であれほど手こずることも無かっただろうに....と。

脱線してしまいました。

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム関数電卓は、プログラムを作り・使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。

人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR