Casio Basic - 機種間の互換性

Casio Basic - 機種別の互換性
<Casio Basic入門 - 目次>


2016/04/19
更新:2017/07/31


日本国内で正式発売されているカシオのプログラム電卓のうち、fx-5800P、fx-9860GII、fx-CG20 に搭載されている Casio Basic の互換性について、まとめてみます。

Casio Basic プログラムの移植、Caso Basic 搭載の機種選定の参考になるかも知れません。今回 Casio Basic を複数の機種に渡って整理した結果、改めて fx-5800P の価値を見直し、カシオはよく考えて商品展開していることも分かりました。


ハードウェアの違い

Casio Basic のコマンドには、ハードウェアに依存するものが有るので、ハードウェアの主な違いをまとめてみました。

Graphing Calcs 
左から、fx-CG50、fx-CG20、fx-9860GII、fx-5800P


表1 ハードウェア仕様の主な違い

機種fx-5800Pfx-9860GIIfx-CG20 / fx-CG50
液晶ディスプレイ
Casio Basic Graphics 出力
Casio Basic Text 出力
表示種別
モノクロ、96 x 31 ピクセル
なし
16 桁 x 4 行
テキストのみ
モノクロ、128 x 64 ピクセル
127 x 63 ピクセル
21 桁 x 7 行
 
テキスト、グラフィックス
カラー、384 x 216 ピクセル
379 x 187 ピクセル
21 桁 x 7 行
テキスト、グラフィックス
寸法 (mm)163 x 82 x 15184 x 91.5 x 21.2188.5 x 89.5 x 20.6
重量 (g)150260220
電池 / 寿命単4電池 x1 / 1年単4電池 x4単4電池 x4
仮数+指数10桁+2桁10桁+2桁10桁+2桁
内部演算桁数15桁15桁15桁
プログラムメモリ容量最大28.5 KByte最大 62 KByte最大 61 KByte
プログラムファイル名最大12文字最大8文字最大8文字

ちなみに、最新の関数電卓、CLASSWIZ fx-JP900 / 700/ 500 の液晶はモノクロの高精細で実際に細かい表現が出来ていますが、192×63 ピクセルの液晶です。解像度でいえば fx-9860GII と fx-CG20 / CG50 の間です。

fx-5800P はテキスト出力のみ。fx-9860GII と fx-CG20 / CG50 のCasio Basic では、テキスト出力とグラフィックス出力を同時に行えず、切り替えて表示する仕様です。

[2016/10/13 追記]
fx-FD10 Pro については、持っていないので詳しく調べていませんが、カシオお客様サポートセンターによれば fx-FD10 Pro はアドインを使えない仕様とのことです。言い換えれば、Casio Basic 専用機の位置づけのようです。
 
 


互換性とは?
同じプログラムを異なる機種で使って同じ結果が得られるなら、そのプログラムは互換性があります。

一方で、コマンドレベルで言えば、グラフィックス出力やテキスト出力のコマンドは、その出力結果が同じならば、互換性があります。

例えば、以下のようなコードで円を描画する場合、

CoordOff
GridOn
AxesOn
LabelOff
ClrGraph
Circle 1,0,3


fx-9860GII と fx-CG20 / CG50 での出力は、次のように同じ結果になります。

Circle_9860GII Circle_CG20 
fx-9860GII での出力結果       fx-CG20 / CG50 での出力結果

この場合は、プログラムの互換性があります。

プログラムの互換性を確保するために円を描画するコマンド Circle を使うと、高い解像度のLCDで表示(fx-CG20 / CG50を使用)する時 は、線を太く表示して、出力(表示)の互換性を維持しています。


では、以下のようなコードで直線を描画する場合、

CoordOff
GridOff
AxesOff
LabelOff
ClrGraph
For 1→A To 31
PxlOn 15+A,45+A
PxlOn 47-A,45+A

Next

fx-9860GII と fx-CG20 / CG50 での出力は、次のように違った出力結果になります。

Cross_9860GII Cross_CG20 
fx-9860GII での出力結果       fx-CG20 / CG50 での出力結果

各コマンドはエラーも無く、正常に動作します。しかし線描画コマンド PxlOn の太さがピクセル1個分なので、fx-986oGII と fx-CG20 で出力(表示)が異なり、互換性がありません。
 
 
グラフィックス・コマンドの互換性

詳細動作が異なるグラフィックス・コマンド
ClrGraph コマンドで設定されるデフォルトの論理座標系や、ViewWindow コマンドで設定する論理座標系で使うコマンドは、fx-9860GII と fx-CG20 / CG50では、出力結果がほぼ互換性があります。液晶の解像度の違いを Casio Basic で吸収していて、同じコードを書けば、同じ出力結果が得られます。

一方、物理座標系で使うコマンドは、出力結果が異なり、互換性がありません。

今のところ分かっている範囲で、詳細動作で互換性が無いコマンドを紹介します。
 
 
Xdot
Xdot と Xmax や Xmin との間の次の関係は、fx-9860GII でも fx-CG20 / CG50 でも正しいのですが、

H × Xdot = Xmax -
Xmin

H の値は、Casio Basic の描画範囲と関係があって、fx-9860GII と fx-CG20 / CG50 では異なります。

H の値は、

・ fx-9860GII   : H=378 なので、378 × Xdot = Xmax - Xmin の関係になります。

・ fx-CG20 / CG50  : H=126 なので、126 × Xdot = Xmax - Xmin の関係になります。

例えば、
 1→Xmin
 1→Xdot

を実行すると、Xmax が変更されますが、
fx-9860GII では Xmax が 127 となり、fx-CG20 / CG50 では Xmax が 379 と、異なった値になります。

この関係以外は、互換性があります。
 
 
線のスタイル設定
描画コマンド LINEF-LINEVerticalHorizontalCircle  の線の太さを設定するコマンドで描画する実際の線の太さは互換性がありません。しかしそれによってプログラムの互換性を確保しています。

線の太さ (ピクセル)
前置コマンド / セットアップコマンドfx-9860GIIfx-CG20/CG50
SketchNormal / S-L-Normal13
SketchThick / S-L-Thick25
SketchBroken / S-L-Broken13
SketchDot / S-L-Dot13
SketchThin / S-L-Thinなし1
 
 
物理座標系のコマンド
Casio Basic の物理座標で使う以下のコマンドは、描画位置の座標が同じでも、液晶画面全体での相対的な描画位置が変わります。つまり、コマンドレベルでの互換性はあるが、画面全体でみると出力結果が異なるのでプログラムの互換性はありません。

PxlOnPxlOffPxlChgPxlTest( )Text 

fx-9860GII のグラフィックス描画範囲は 127 × 63 ピクセルで、fx-CG20 / CG50 では 379 × 187 です。
例えば、fx-9860GII でこれらコマンドを使ったグラフィックス表示を、fx-CG20 / CG50 で実行すると左上に偏って表示されます。
逆に、fx-CG20 / CG50 でのグラフィックス表示コードを fx-9860GII で実行すると、より狭い fx-9860GII のグラフィックス領域の外側で描画を行うことになり、"Out of Domain" (領域外)エラーが出ます。
 
 
fx-CG20 / CG50 でしか使えないグラフィックス・コマンド

カラー設定コマンド
fx-CG20 / CG50 には以下のカラー設定コマンドがあります。

Plot/Line-Color, Black, Blue, Red, Magenta, Green, Cyan, Yellow

当然ながらモノクロ液晶の fx-9860GII ではエラーとなって使えません(互換性がありません)。
 
 
グラフ設定コマンド
fx-CG20 / CG50 では、以下のグラフ設定コマンドが追加されています。

GridLine (グリッド線), AxesScale (軸目盛り)

プログラム
ClrGraph
GridLine
AxesScale
SketchThin F-Line 3,3,0,0


fx-CG20 / CG50 でしか使えない

fx-CG20/CG50 でグリッド線と軸メモリを指定

NewGrSet
プログラム
ClrGraph
GridOn
AxesOn
SketchThin F-Line 3,3,0,0


fx-CG20 / CG50 と fx-9860GII で互換性有り

fx-CG20/CG50 でグリッドOn、軸On を指定
NewGrSet2

fx-9860GII でグリッドOn、軸On を指定
GrSet 
 
 

 
入出力コマンドの互換性

詳細動作が異なる入出力コマンド

Locate コマンド
fx-9860GII と fx-CG20 / CG50 の Casio Basic でのテキスト出力範囲は同じで、21桁 × 7行 になっています。これら2機種でテキスト出力を行う Locate コマンドは互いに完全互換です。

一方、fx-5800P にも Locate コマンドがありますが、テキスト出力範囲が 16桁 × 4行 なので、上記2機種とは画面内でのテキスト出力の配置が異なるか、領域外のエラーになります。表示位置のパラメータを手直しすれば、バランスの良い配置になったり、エラーを回避できます。
 
 
Getkey コマンド
Caso Basic には、[AC] キー以外のキーに全てユニークなキーコードが割り当てられていて、どのキーが押されたかを返す Getkey コマンドがあります。

fx-9860GII と fx-CG20 / CG50 は、キーコードが完全互換なので、Getkey コマンドは完全互換です。

一方、fx-5800P のキーコードは、上記2機種とは全く異なるので、Getkey コマンドは上記2機種とは互換性がありません。
 
 
通信コマンド
fx-5800P の Casio Basic には通信コマンドがありません。
一方、fx-9860GII と fx-CG20 / CG50 の Casio Basic には、以下の同じシリアル通信コマンドが用意されています。

Send( )Rceive( )Send38KReceive38KOpenComport38KCloseComport38K
 
 


配列関連のコマンド

配列変数 Z[ ]
fx-5800P の Casio Basic では、配列変数 Z[ ] が使えます。
fx-9860GII や fx-CG20 / CG50 には、配列変数が無いので、行列やリストで代用する必要があります。fx-9860GII では、リストよりも行列の方が処理速度が速いので、配列変数の代わりに行列を使う方が良いかも知れません。
 
 
行列コマンド
fx-5800P の Casio Basic では公式に行列がサポートされていませんが、使えます。
fx-9860GII と fx-CG20 / CG50 の Casio Basic では、共通の行列コマンドがあります。
 fx-9860GII / fx-CG20 / fx-CG50 の行列コマンドと fx-5800P の行列コマンドは完全互換ではありません。

 
文字列処理コマンド
fx-5800P の Casio Basic には文字列処理コマンドはありません。
 fx-9860GII と fx-CG20 / fx-CG50 の Casio Basic には、以下の同じ文字列処理コマンドがあります。

StrLeft( )StrRight( )StrMid( )Exp▶Str( )Exp( )StrUpr( )StrLwr( )StrInv( )StrShift( )StrRotate( )StrJoin( )StrLen( )StrCmp( )StrSrc( )
 

画面入出力制御コマンド

(入力命令)
fx-5800P のみで使えて、fx-9860GII と fx-CG20 / CG50 ではエラーになる。
 
 
 と " " (表示命令)
全機種で使えるが、fx-9860GII / fx-CG20 /CG50 と fx-5800Pで、詳細動作が異なります。
 
 
Cls (クリアコマンド)
 fx-5800P: テキスト画面を消去します。
fx-9860GII と fx-CG20 / CG50: グラフィックス画面を消去します。
 
 


Casio Basic の互換性

機種の違いによる Casio Basic の互換性を一覧にしました(表2参照)。
コマンド類の互換性については、以下のように分類します;
  • 全機種の Casio Basic で完全互換のもの: で表記
  • 全機種の Casio Basic に用意されているが、機種によって詳細動作が異なるもの: で表記
  • 特定の機種の Casio Basic だけで使えるもの: で表記
  • 特定の機種の Casio Basic には用意されていないもの: --- で表記

表2 代表的なコマンドの互換性

記 述fx-5800Pfx-9860GIIfx-CG20/50
1入力命令(基本動作) ?------
2表示命令(基本動作)" ", 〇1〇2〇2
3旧来の命令(基本動作) :, ?→,  →
4関係演算子=, ≠, >, ≥, <, ≤
5ジャンプGoto ~ Lbl, Dsz, Isz, ⇒
6制御構造If ~ Then ( ~ Else) ~ IfEnd
For ~ To ( ~ Step) ~ Next
While ~ WhileEnd
Do ~ LpWhile 
7サブルーチン呼び出しProg
8プログラム制御Break, Return, Stop
9論理演算1And, Or, Not
10入力制御Getkey〇1〇2〇2
11画面制御Locate〇1〇2〇2
12クリア1(テキスト クリア)Cls------
13クリア2(テキスト クリア)ClrText---〇2〇2
14配列変数Z[ ]行列行列
15行列(非公式)〇2〇2
16論理演算2Xor---〇2〇2
17クリア3(グラフィックス クリア)Cls, ClrGraph---〇2〇2
18文字列処理、通信---〇2〇2
19コメントアウト ' ---〇2〇2
20グラフィックス1(モノクロ、論理座標系)---〇2〇2
21グラフィックス2(モノクロ、論理座標系)Xmin, Xmax, Xdot,
SketchNormal, SketchThick,
SketchBroken, SketchDot,
S-L-Normal, S-L-Thick,
S-L-Broken, S-L-Dot
---〇2〇3
22グラフィックス2(物理座標系)PxlOn, PxlOff, PxlChg,
PxlTest( ),
Text
---〇2〇3
23グラフィックス3(カラー、論理座標系)Plot/Line-Color,
Black, Blue, Red, Magenta,
Green, Cyan, Yellow,
SketchThin, S-L-Thin,
GridLine, AxesScale
------
  • fx-5800P で詳細動作が異なるものは 〇1 と表記
  • fx-9860GII と fx-CG20/50 では完全互換だが fx-58000P とは詳細動作が異なるのは 〇2 と表記
  • fx-9860GII と fx-CG20/50 で詳細動作が異なるものは〇2 〇3 と表記しています。
[2016/04/25 追記]
こうして眺めてみると、115 のコマンドを使えばテキスト出力の殆どのプログラムが書けることが一目瞭然ですね。そのうち、3 ~ 9 までのコマンドが全機種で完全互換です。

つまり、機種が異なっても、主に 115  のコマンドを使えば、どの機種でも Casio Basic 共通(ほぼ互換)のプログラムを書け、最低限の手直しでプログラムが移植できることが改めて確認できました。

逆に言えば、価格面で最も入手し易い fx-5800P でCasio Basic が使いこなせるようになれば、作成したプログラムやCasio Basicに関する知識が、他のグラフ関数電卓にもそのまま使えると言えます。つまり、fx-5800P が Casio Baisc 入門に適していることが改めて分かります。

Casio Basic は構造化プログラミング考え方を適用でき、特にテキスト表示のプログラミングについては他の高級言語に極めて近い仕様です。従って、fx-5800P で Casio Basic を学べば、プログラミング入門と言えるでしょう。




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ






keywords: fx-9860GIICasioBasic、グラフィックス, プログラミング入門プログラム関数電卓

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


関連記事

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

fx-5800P【ゲーム】:もぐら叩き~まとめ~

fx-5800Pでもぐら叩き
e-Gadget


fx-5800P で作る「もぐら叩き」ゲームのまとめ
コード修正 2014/03/20
fx-FD10 proに関する記述追加 2014/09/28
コード誤記修正 2016/05/12
  fx-CG20 に関する記述修正 2017/01/04
fx-CG50 に関する記述追加 2017/07/24
追記 2017/08/06


普通のプログラム作成の記事と異なり、多少冗長な内容になっており、(1)~(8)で、徐々にプログラムを作ってゆく様子を複数の記事で紹介した。


最終的なプログラムは、本ページの一番下に掲載した。またこれを一部改善したもの、および各機種へ移植したものを プログラムライブラリに収録している。[2017/08/06 雨域]

プログラムライブラリ - もぐら叩き (fx-5800P)
プログラムライブラリ - もぐら叩き (fx-9860GII)
プログラムライブラリ - もぐら叩き (fx-CG20 / fx-CG50)


もぐら叩きゲームの開発は、一連の連載は開発ストーリーになっている (fx-5800P版)。

fx-5800P【ゲーム】:もぐら叩き(1)

fx-5800P【ゲーム】:もぐら叩き(2)

fx-5800P【ゲーム】:もぐら叩き(3)

fx-5800P【ゲーム】:もぐら叩き(4)

fx-5800P【ゲーム】:もぐら叩き(5)

fx-5800P【ゲーム】:もぐら叩き(6)

fx-5800P【ゲーム】:もぐら叩き(7)

fx-5800P【ゲーム】:もぐら叩き(8)


fx-5800P に搭載されているプログラミング言語は、Casio Basic というカシオの味付けをした BASIC言語 だ。

特に、もぐら叩きのようなゲームを作る際に特に重要かつ必要なものは、以下の機能だろう。
1) 広い表示画面
2) Getkeyコマンドによる、リアルタイムキー入力監視機能
3) Locateコマンドによる、柔軟な表示機能
4) 真 (0以外) と 偽 (0) による条件判定


さらに、昔のプログラム電卓に搭載されていた BASIC と異なり、構造化プログラミングが可能な点も特筆できる。昔のプログラム電卓やポケコンに搭載されていた BASIC は行番号と GOTO コマンドでプログラムの流れを作っていたが、現在の Casio Basic は Goto コマンドを使わずに制御構造を作れるので、ブロック構造による 構造化プログラミングができるようになっている。

これらの機能が、fx-5800P を魅力的にしている。


CASIOの電卓の中で、上記を満たすプログラミング言語を搭載されているのは、下記のように比較的限られている。

・fx-9860G: グラフ関数電卓(生産終了)
 取扱説明書

・fx-9860G II: グラフ関数電卓 - fx-9860Gシリーズ、fx-9750シリーズ(生産終了)
 メーカーサイト / 取扱説明書

・fx-CG20 / fx-CG10: カラーグラフ関数電卓(生産終了)
 メーカーサイト / 取扱説明書

・fx-FD10 pro:土木測量向けプログラム関数電卓 (現行品)
 メーカーサイト / 取扱説明書

・fx-CG50:カラーグラフ関数電卓 (2017/10/20 国内発売)
 メーカーサイト / 取扱説明書

・fx-5800P: プログラム関数電卓(現行品)
 メーカーサイト / 取扱説明書


fx-FD10 pro fx-FD10 pro < fx-9860GII版もぐら叩き >


fx-CG50 noce photo fx-CG50 < fx-CG50版もぐら叩きのダウンロード


fx-9860GIIfx-9860G II  fx-9860GII版もぐら叩きのダウンロード >
fx-CG20fx-CG20 fx-CG20版もぐら叩きのダウンロード >

fx-5800P-3fx-5800P <fx-5800P版モグラ叩き> 


各機種の画像の右に、対応する「もぐら叩き」プログラムのダウンロードリンクを示している。ダウンロードして転送するだけで楽しめる (fx-5800P を除く) ので、先ずは遊んでみてください。

完全互換でないのには理由がある。電卓の機種が異なると、ハードウェアの違いからキー配置が異なる。従って、Getkeyで得られるキーコードが異なるため、ソースレベルでの互換性は無い。これを除けば fx-5800Pのプログラムからの移植性は比較的高いと(旧来の命令の互換性については、少し注意が必要だ⇒こちらを参照)。

fx-5800P、fx-9860Gシリーズ (さらにOS載せ替えしたfx-9750Gシリーズ)、fx-CGシリーズ以外ではこのゲームは走らない。例えば、fx-72F、fx-71F 、fx-3600P、fx-3950Pなどはプログラム機能が十分でないので適用外だ。

ところで、fx-9860GII、fx-CG20、fx-CG50、fx-FD10 Pro は、1万円以上の価格だ。一方で、fx-5800P は 6千円台前半 (2017/01/01時点の Amazon価格) と格段に手軽な価格だ。この価格で、上記4つの条件を満たす言語を搭載しているのだから、改めて魅力的なマシンと言える。

※ 興味があれば、最近のCasio プログラム電卓の価格動向 をご参照。


当初は、fx-5800P のような電卓で、遊べるアクションゲームを作れるとは思っていなかった。たまたま、Goto~Lbl コマンドで、カウントタイマーを作ってみると、意外に速いことから、実際に遊べるレベルのアクションゲームを作れるかどうかを試したくなったのが、もぐら叩きを作り始めた動機だった。

パソコンで作るゲームと異なり、最初にゲーム仕様を作るのではなく、機能を追加した時にゲームとしてのスピード感を損なわないように探りつつ、様子を見ながら後付けでゲーム仕様を考えた。実際に私自身が考えたり試したりした事柄を、時系列で実況中継風に書いた結果、冗長な記事となってしまった。

できあがったゲームは、バリバリのゲーマーには物足りないのだが、普段からあまりゲームで遊ばない人間(=私)には、少しすつスキルアップして、得点が増えてゆくのが愉しい。


ご興味の有る方は、是非一度プログラムを入力して、遊んでみて欲しい。


もぐら叩きが意外にうまくいったので、最近はシューティングゲームができないものか?と、色々と動きのあるルーチンを作って遊んでみている。ひょっとしたら、何かシューティングゲームができるのかも知れない。

電卓の遅い処理速度、完全シングルタスク、広いといっても16×4 しかない画面で、動きやロジックを試しながら、遊べそうなゲームを模索してみようと思っている。


おしまい( ^o^)ノ



以下は、プログラムコード: [2016/05/15 誤記修正]

[2017/08/06 追記]
メインルーチンの3行目 Lbl 0 の下に、2行追加したものをプログラムライブラリに収録している。
追加した2行は、
While Getkey
WhileEnd


もぐら叩き: Wack -a-Mole by やす(Krtyski)

Wack-a-Mole_src 




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ






keywords: fx-5800Pfx-CG20fx-9860G IIゲーム、プログラミングもぐら叩きプログラム関数電卓

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

関連記事

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

楽屋裏 - 最新プログラム電卓 fx-CG50 の記事

楽 屋 裏
e-Gadget


2017/07/04


fx-CG50  2017/01/09 に Casio Ameria が グラフ関数電卓の最新機種 fx-CG50 の発売をアナウンスしたことが分かり 記事 にしました。

アナウンス通りに 2017年4月から欧米で発売されました。国内では fx-CG20が生産終了となっているのでいずれ発売されるでしょうが、その時期は未発表です。

fx-CG20 が国内で発売されたのは、欧米で発売されてから1年後だったので、fx-CG50に国内発売もかなり先になるかも知れません。私も国内発売を待ちきれずに、eBay で購入し到着を待っているところです。入手したら Casio Basic 動作の観点から評価記事を書く予定。

既に海外から fx-CG50 を取り寄せて早速記事にしている方がいらっしゃるので、それを紹介します。Google で検索して、実際に入手したという日本語の記事を調べたところ、2017/07/04 時点で以下の2つのサイトがあります。


OptoEleMechの日記 - CASIOの最新関数電卓 (fx-260 SOLAR II、fx-CG50、fx-CG500)

古い機種を集めて紹介しているサイトはよく見ますが、最新機種を積極的に収集して紹介しているサイトは珍しいと思います。複数メーカーに渡って最新機種の様子がよく分かります。
ベンチマークの結果も公開されています。⇒ 総和のベンチマーク結果
このベンチマークは、関数電卓として内蔵されている総和関数 (Σ) を使ったもので、内蔵関数機能の評価を行っていることになります。


とね日記 - 最新のグラフ電卓 CASIO fx-CG50 (2017)

カシオ初のプログラム関数電卓 fx-201P の次の機種 fx-202P から 最新の fx-CG50 までの複数機種で同じ積分計算をさせてベンチマークの結果を公開されています。このベンチマークは、三角関数を含んだ積分計算をプログラミングしたもので、プログラム機能の評価を行ったことになります。





今後、随時追加してゆきます。




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ






keywords: プログラム関数電卓、fx-CG50

リンク集 | ブログ内マップ
関連記事

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

Casio Basic入門1

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現などは随時追記・修正します.
最終更新:2017/08/06


はしがき
[2014/11/03追記]

fx-5800P を買ってきてプログラムを作ってみようと思い、取扱説明書を見ると、プログラムが分かる人向けのヒントくらいしか書かれていません。

これはヒドイ!!(以前は良かったのに...このあたりは「1.はじめに」で紹介してます)

とりあえずプログラミングを始めたものの、細かいことは、色々と試行錯誤を繰り返さないと分かりません。こうして、取扱説明書には書かれていない詳しいことが、少しづつ分かってきました。

プログラムを作りながら色々と調べているうちに、fx-5800P に搭載されているプログラミング言語:Casio Basic は、かなり優れモノだと分かってきました。プログラミング経験者向けに Casio Basic の面白さを一言で紹介すると、「電卓で使える構造化BASIC 」 です。

なかなか優れている Casio Basic なのに、こんな取扱説明書では、さっぱり使いこなせない人が多いだろうし、経験者が取扱説明書を読むと、未だに古い Basic 風言語と変わらないと思うだろうし、良さを知らないままにプログラミングを諦める人も多いだろうと思うので非常にもったいないと思います。

新世代 Casio Basic が使える fx-5800P は、非力なプロセッサしか積んでいないにもかかわらず、まともな実用プログラムを作れます。さらに、fx-5800P はプログラムを呼び出して使う利便性が高く、高機能な fx-9860GII や fx-CG20 よりも便利なことは、あまり知られていないのではないでしょうか? 

自分の必要性に合わせて、いくつもの実用プログラムを作ってみて、分かったこと試してみたこと を含めて、取扱説明書では絶対にわからない Casio  Basic の使いこなしを整理したものが Casio Basic 入門 講座です。それと並行して、取扱説明書では絶対にわからない Casio Basic のコマンドリファレンス 、逆引き Casio Basic を公開しています。

「1.はじめに」 では、Casio Basic や fx-5800P の歴史や特徴を私見を交えて書いていますので、「2.プログラミングとは」まで飛ばしてもらって結構です。



1.はじめに [2015/01/04 修正]

私が初めて手にした電卓が、カシオのFX-502Pという関数電卓でした。手帳サイズでプログラミングできる画期的な製品で、世界中にカシオファンを増やした原動力となったようです。

fx-502P 
手帳タイプのソフトカバーが付属した FX-502P

私がFX-502P を入手した当時は、関数電卓として使っていて、プログラミングの「プ」の字も知りませんでした。その後プログラムに興味を持ち、生まれて初めて作ったのが、FXー502Pのプログラム「反射ゲーム」
画面表示が変化した直後に、どれだけ早く反応してキーを押せるか...そんなゲームでした。
 ⇒ FX-502P / 602P / 603P のプログラム

カシオはFX-502Pに続いて、プログラム互換性の高い後継機として、1981年にFX-602P、1990年にはfx-603Pを発売しました。
FX-602P には取扱説明書だけでなく、「プログラムライブラリー」と言う厚い本が付属していて、それには数多くの実用プログラムが掲載されていました。掲載されているプログラムを入力し、理解し、さらに自分なりに改造することで、プログラミングがどのようなものか、少し分かりました。きちんと動作するサンプルプログラムを参考にして、自分でプログラムを改造する作業が、プログラミングの学習には非常に有効だと実感しました。

これらのプログラム機能は、今思えばアセンブリ言語に近い感じで、電卓のメモリに直接あるいは間接的にアクセスして、ジャンプはインクリメント/デクリメントを行うことができるなど、工夫のしがいがある面白いもので、プログラミングの好きな人には楽しく遊べるものでした。

その後登場したプログラム互換のFX-602P や FX-603P は、アルファベット表示が可能になり、記憶容量が増えたことで、測量計算などの実用に耐えるプログラム関数電卓として不動の地位を得てきました。プログラム言語としての完成度、ハードウェアとしての使いやすさがユーザーに支持された結果でしょう。


プログラミング言語仕様から読み解く Casio Basicの開発史

カシオは、プログラム関数電卓とグラフ関数電卓、そしてポケットコンピュータの3系統で、搭載言語の開発を進めている時期がありました。ポケットコンピュータはPCの高機能化、小型化、低価格化により市場からその姿を消しました。プログラム関数電卓では、fx-4850P を最後にプログラミング言語のバージョンアップを止め、新製品が出なくなりました。そして、唯一グラフ関数電卓が搭載言語とともに進化してゆきました。

プログラム関数電卓 fx-4000番台の製品に搭載された言語は、使いにくく、中途半端な仕様のまま成功せずに終わったと感じています。私見ですが、fx-4000番台では、2行表示の液晶ディスプレイを使って構造化プログラミングを実現しようとして、うまくいかなかったのではないかと、その跡が感じられます。

一方で、グラフ関数電卓での搭載言語は着実な進化を見せました。fx-7400シリーズでは、一応 構造化Basic といえる形にまで進化しました。そして、2005年に登場した CFX-9580GC PLUS の Casio Basic では、ついに GetkeyLocate コマンドが搭載され、現在の世代のCasio Basic に近づきました。但し制御構文の改行ができないので、もう一歩という感じです。しかし、これは Casio Basic の歴史上極めて重要な一歩だと言って良いと思います。GetkeyLocate が、Casio Basic の実用性を格段に向上させているからです。

翌年の 2006年に登場した fx-5800P は、基本的に CFX-9850GC PLUS の Casio Basic をベースに制御構文の改行を許すように改造され、さらにグラフィックス関連とI/O関連のコマンドを取り去り、あとはほぼ同じ構成で実装して、さらに使いやすく進化しました。

代表的な改良点を挙げてみます。

入力命令 ?A では、変数 A に既に入っている値を表示し、変更がなければ [EXE] キーを押すだけで確定できる機能が追加されました。一方、?→A とすれば、A の値を表示せずに新たに入力させます。この ?A の機能は、変更が無ければ [EXE] を押すだけで良いので、作成したプログラムの使い勝手が格段に向上します。現在のところ、この機能があるのは、fx-5800P と fx-FD10 Pro のみで、グラフ関数電卓にはこのような便利な機能はありません。

[FILE] キーでプログラムリストを表示し、そこからプログラムを実行できる機能も、fx-5800P の利便性を向上させる優れた改良だと思います。これが可能なのは、他には fx-FD10 Pro のみです。グラフ関数電卓では、一旦プログラムモードに入らないとプログラムを呼び出せません。

CFX-9850GC PLUS にあった グラフィックス関連とI/O関連のコマンドは、fx-5800P にはありません。fx-5800P をプログラム関数電卓に位置づけるなら、グラフィックス関連のコマンドは不要といっても良いと思いまが、I/O関連コマンドは残して欲しかったと思います。結果的に、fx-5800P の最大にして唯一の弱点はI/O関連だと思います。電卓とPCの間で、プログラムファイルをやりとりするPCリンク機能が無いのも fx-5800P の利便性を発揮しきれない仕様上の大きな弱点です。

このような弱点があるものの、fx-5800P は、グラフ機能の無いプログラム関数電卓として、極めて大きく進化した Casio Basic を搭載し、プログラム電卓としてバランスの取れた、そして関数電卓としても使いやすい優れた製品です。

プログラム関数電卓として大成功を納めた FX-502P や FX-602P の最終進化形 の FX-603P は、結果的に21世紀に入っても販売が続き、その製品寿命は10年以上の長きにわたりました。趣味ではなく仕事用に実用プログラムが使われ続け、ユーザーの大きな支持に答え続けた結果なのだと思います。FX-603P の実用品としての完成度の高さの証明でもあります。FX-603P に取って代わるプログラム関数電卓が永らく登場しませんでした。

※参考: プログラム関数電卓ノスタルジア(Casio fx-502P、fx-602P、fx-5800P)

さて、グラフ関数電卓で熟成してきた新世代 Casio Basic を機能制限して搭載した fx-5800P は、しばらく FX-603P と併売されていましたが、ついに FX-603P が生産中止となりました。fx-5800P が プログラム関数電卓 FX-603P の後継機となったわけです。

その後も Casio Basic の改良がグラフ関数電卓で続き、fx-9860GII で文字列処理コマンドが追加搭載され、ハードウェアとしては高精細カラー液晶搭載した fx-CG10/20 が登場しています。そして 2015年1月時点での最新機種、fx-FD10 Pro は、fx-5800P の利便性と最新の Casio Basic を搭載したハイブリッド機とでも言える、面白い性格を持っています (fx-FD10 Pro は Casio Basic専用機です。fx-9860GII とほぼ同じハードウェアを使いながらアドインが使えない設定にした判断は、販売戦略上のものなのでしょう)。

気がつけば、新世代プログラム関数電卓 fx-5800P は、2006年の登場から10年になろうとしており、その製品寿命を超える可能性も見えてきました。使用しているIC類などの部品調達の継続性を考えれば、FX-603P と同様に 10年を1つの区切りとすれば、2016 年には fx-5800P の後継機種が期待されるところです。

2014年12月に、スタンダード関数電卓の新シリーズ fx-JP500, fx-JP700, fx-JP900 (CLASSWIZ シリーズ) が発表され、順次発売が開始されました。高精細液晶の搭載、省電力でありながらCPUの大幅な処理速度向上、その他様々な改良が加えられ、死角が殆ど無い関数電卓と言えます。fx-JP900 のみに搭載された表計算機能 は、データ保存機能が無いので実用的とは言えないものの、実力をアピールする意味は十分にあります。この表計算が、操作性やユーザーインターフェースの面でグラフ関数電卓 fx-9860GII に似ていることは、大変興味深いのです。

高精細液晶と高速・省電力CPUと言う新しいハードウェアに加えて、グラフ関数電卓と酷似した表計算機能を新ハードウェアで走らせる機能のアピールは、発売開始から9年目の fx-5800P の後継機種がそろそろ現実性を帯びてきているのではないかと、大きな期待を寄せています。 

[2017/07/02 追記]:fx-CG50 が欧米で販売開始
2017年春に fx-CG10/20 の後継機として fx-CG50 が欧米で発売開始されました。残念ながら日本国内では発売開始の情報はありません。fx-CG50 は fx-CG10/20 とほぼ同じ仕様で、アドインプログラムも使え、さらに処理速度が1.5倍程度速くなっているようです。そのデザインは fx-JP900 と極めて似通ったものになっています。アメリカで fx-CG10 PRIZM が発売されてから1年後に 日本で fx-CG20 として発売開始されたので、fx-CG50 の国内販売が行われるとしても1年程度遅れる可能性がありそうです。

最新のグラフ関数電卓 fx-CG50 (2017) 

カシオは、プログラム電卓については欧米ならびに中国市場を中心に考えているののが残念なところですが、シャープがプログラム電卓開発から事実上撤退している状況で、日本企業として唯一カシオがプログラム電卓の開発を続けていることは、歓迎したいと思います。

このような状況下で、fx-5800P の後継機種の動向が気になります。fx-JP900 と fx-CG50 と同様のデザインで、これらの中間サイズの グラフィック機能を割愛したプログラム関数電卓が fx-5800P の後継として登場すれば面白いと思います。

===== 追記おわり ====




fx-5800Pの特徴

最新の Casio Basic から見れば、fx-5800P 搭載の Casio Basic はサブセット版と言えますが、プログラム関数電卓として不要な機能を省略しただけで、新世代 Casio Basic 搭載機としては、低価格で使い勝手の良い絶妙なバランスの製品です。

上て述べたように、fx-5800P の最大にして唯一の欠点が、作ったプログラムをPCにバックアップすることが出来ない点で、なんとも中途半端な仕様になっています。非常にもったいない。なぜこんな中途半端な仕様にしたのか?機会があれば、是非ともカシオに話を聞きたいところです。

fx-5800P で作ったプログラムは、もう1台の fx-5800Pへ転送することはでき、そのための通信ケーブルがオプションで用意されています。バックアップしたいなら「もう1台買って下さい」と言うわけです。 ここを参照

ところで、この通信ケーブル(3pinシリアルケーブル)は、fx-9860GII や fx-CG20 にUSBケーブルと共に標準添付されているものです。

fx-5800P の後継機種では、同様に3PシリアルケーブルとUSBケーブルを標準添付してPCリンク機能を実現してもらいたいものです。これがあれば、fx-5800P のプログラムも PCにバックアップ可能になるからです。

なお、私は作ったプログラムをエクセルに転記して、バックアップをしています。
[2014/09/30 追記] バックアップ用に、専用通信ケーブルと2台目のfx-5800P を購入してしまいました。但し、エクセルへのソースコードの記録は続けています。→ ここを参照


fx-502P&fx-5800P 
fx-502P と fx-5800P (写真は「プログラム関数電卓ノスタルジア(fx-502P、fx-602P、fx-5800P)」掲載のもの)

My ProgCalcs 20170806 
※ 管理人所有のプログラム電卓


fx-5800P は、薄型、軽量で上着の内ポケットに十分入る大きさです。そして、4行x16桁の液晶ディスプレイを搭載し、加えて新世代 Casio Basic が搭載されています。 高機能グラフ関数電卓 fx-9860GII も入手し、fx-5800P と比較していますが、改めて fx-5800P のバランスの良さを再認識しています。新世代 Casio Basic は、実用プログラムに加えて、ちょっとしたアクションゲームを作れるレベルの構造化Basic です(本ブログでも、いくつか紹介しています)。さらに、fx-5800Pは実売で6000円台前半なので圧倒的に購入しやすいのです。

カシオプログラム関数電卓 FX-5800P-Nカシオプログラム関数電卓 FX-5800P-N
(2006/09/22)
CASIO(カシオ)

商品詳細を見る


さて、新世代 Casio Basicを搭載した fx-5800P の取扱説明書では、プグラミングが分かっている人しか分からない程度の記述しかありません。その上、プログラム事例は殆ど紹介されていません。カシオは、紙のプログラムライブラリーやウェブでの情報も国内では用意するつもりはなさそうです。

2014/1/21 追記: fx-CG20の簡単なプログラミングの紹介を見つけました。申し訳ない言い方ですが、とりあえずやっつけたといった内容に感じられ、電卓の使い方の導入で終わっています。それが目的ならば敢えて申し上げることはありませんが、プログラミング入門としては、あまり力を入れているとは思われません。→ここ

一方で、海外では、カシオのホームページで動画による様々な説明(Webinar)が紹介されています。但し全て英語なので、明らかに日本人向けではありません。日本メーカーであるカシオ製品のサポートが、日本で積極的に行われないのは、非常に残念です。

Webinarの一例

そこで新世代 Casio Basic の良さを共有したいと考え、私なりの「Casio Basic入門」を公開することにしました。fx-5800P のプログラミングのしきいを下げてみよう、という試みです。合わせて、プログラミング経験者、特に長らく Casio プログラム電卓でプログラムを作ったことのある方には、新世代 Caso Basic が大きく進化していることを伝えたいという気持ちもあります。

[2017/08/06 追記]
この連載を始めた当初は、fx-5800P しか持っておらず、その後 fx-9860GII、fx-9860GII SD、fx-CG20、fx-CG50 を入手し、それらの Casio Basic でプログラムを作っています。その結果 これらの Casio Basic は互いに一定レベルの互換性が保たれるように考慮されていることが分かっています。fx-5800P で Casio Basic を使いこなせるようになれば、fx-9860GII シリーズや カラー高精細液晶の fx-CG20 / fx-CG50 でも問題無く使えるということです。



2. プログラミングとは
[fx-5800P] [fx-9860GII (SD) / fx-CG20 / fx-CG50]

プログラムの「プ」の字も知らない方のために、最初にあらかじめ知っておいて頂きたい基本的な事柄を紹介します。


プログラムって何だ?

プログラムと言うのは、「手順書」です。そして予め用意された単語と文法を使って、手順を書くことをプログラミングと言います。
手順を書くために使う言葉を「プログラミング言語」と言います。

そして、その単語と文法が分かればプログラムを書けるようになるわけです。

プログラムを読む相手は電子回路ですから、そこには情緒も感性も不要です。むしろ曖昧さがは有ってはなりません。厳密に一通りにしか解釈できないように書くために、単語や文法が考えられています。

言葉に動詞や文型があるように、プログラミング言語にもコマンド(命令)やステートメント(文)があります。これらの単語を覚え、文法を覚えるのは難しくありません。普通の外国語に比べると覚えることはとても少ないのです。Casio Basic については、覚えるべき事柄が非常に少ないので、さらに楽です。



プログラミング言語とは?

プログラムは手順書なので、基本的にはコマンド(動詞)と必要な名詞(目的語)をステートメントの規則(文型)に従って書きます。

「~をしなさい」  「~に~をしなさい」

といった短い文の組合せと繰返しで、プログラムは構成されます。


プログラミング言語には、多くの種類があります。C言語、java、BASIC、FORTRAN などを見聞きしたことは有りませんか?これらは最もよく用いられる代表的な言語です。これらの言語に一般的な優劣は有りませんが、それぞれ得意とするものが異なっています。

なお、これらの多くはアメリカで発明されたので、英単語から派生した単語を使い、語順は英文法に近くなっています。「O に V しなさい」 は、「V O」 といった語順になります。「ピアノを弾きなさい」「Play piano」 となるのと同じです(動詞 + 目的語)。

fx-5800P や fx-9860GII などのカシオのプログラム電卓には、BASIC が内蔵されています。但し、カシオが作った BASIC なので、Casio Basic と呼ばれています(特に海外のサイトでは、この表現をよく見ます)。基本的な単語や文型はパソコンで使う BASIC とほぼ同じです。

一部カシオ独自のものがありますが、古くからのユーザーのために残しているとのことです。古くから採用されていた独自のものは、当ブログでは旧来の命令と読んでいますが、使い勝手が良いので残っていても良いと思います。

ちなみに、Casio Basic で検索すると、おかげさまで当ブログがヒットしますが、CASIO Basic はカシオ時計のブランドだというのが分かります。



プログラムで計算

プログラムを書く時に、計算をさせることもできます。

1234 x 5678

とプログラムに書けば、電子回路が計算してくれます。プログラムを書く時に計算結果を知る必要はありません。

但し、上の計算結果を知るためにわざわざプログラムを書く人はいないでしょう。電卓のキーをチョイチョイと叩けば答えが出ますね。

上のように決まった数でなくて、色々と異なった数のかけ算をしたい時、プログラムが役立ちます。

A = 1234
B = 5678

としておいて、

C = A x B
Print C


とプログラムを書くと、かけ算の結果を画面に表示します。この書き方はパソコンで使う一般的なBASICの書き方です。

A x B は、A や B に色々と異なった数を入れると、異なった答えを出してくれます。これを Casio Basic で書くと、

1234→A
5678→B
AxB→C


正確に、このように3行のプログラムを書いて、それを実行させると、画面には 7006652 と計算結果が表示されます。


前置きが長くなりましたが、ポイントは以下の6項目です。

1) パソコンのプログラミングは、こんなに簡単ではありません
プログラム電卓ならではの簡便さです。

2) A や B は変数
変数は、数を入れておく容器です。A や B は容器の名前です。
予め、容器Aに数1234を入れ、容器Bに5678を入れておきます。
そして、AxB は、容器の中身の数のかけ算をしなさい、と言うプログラムです。
このように、プログラムでは頻繁に「変数」を使います。

fx-5800P や fx-9860GII などのプログラム電卓で使える変数は、アルファベットの A~Zの26文字です。但し、配列変数 (fx-5800P) や 行列 (fx-5800P や fx-9860GII など) という変数を必要に応じて追加して使うことができます。配列変数や行列については、その使い方を含めて、後で説明します。今は忘れてもらって結構です。

3) → は代入命令
変数Aに 1234を入れることを、「変数Aに1234を代入する」と言います。
そして、Casio Basic では、代入をしなさいと言う「代入命令」を 「」と言う右矢印の記号で表現します。

の左のものを、右へ代入すると決められています。
1234→A
のように、数字を変数に代入するだけでなく、変数を変数に代入できます。

例えば、

1234→A
5678→B
A→B


とすると、変数Bの中身は、5678でなくて、1234 に変化します。

CasioBasicコマンドリファレンス: → (代入命令)

パソコンの Basic では、変数 A に 1234 を代入するとき、

A = 1234

と書きます。代入命令については、Casio Basic は独特なものですが、 記号は代入の方向を示しているので、却って分かりやすいと思います。



4) は出力命令

これも Casio Basic 独特の命令です。◢ は出力、つまり画面表示するだけでなく、併せて一時停止の機能があります。

上の3行のプログラムは、上から下へ順に実行されます。

AxB

は、AxBの結果を表示して、そこでプログラムの実行を一時停止しなさい、という命令です。そして、[EXE] キーを押すと一時停止が解除されます。これも命令に含まれる機能です。

CasioBasicコマンドリファレンス: (出力命令)


5) ?は入力命令
変数Aと代入命令を併せて使って、

?→A

と書くと、画面表示が、

?

となり、そこでプログラムが一旦停止します。

の表示は、キー入力をしてください、と言う意味です。そして、プログラムが一時停止し、何かキー入力を待ちます。[EXE] キーを押すと入力内容が確定され変数Aに代入され、プログラムの一時停止が解除されます。これも Casio Basic 特有の命令です。

実はここには、Casio Basic 特有のおもしろい面があります。
画面に

?

と表示され、入力が促されている時に、例えば

9999÷3

と入力して[EXE] キーを押すと、この計算結果が変数Aに代入されます。

fx-5800P は関数電卓なので、様々な関数機能が内蔵されています。そこで、? が表示されて入力待ちの状態で、sin(30) と入力して[EXE]キーを押すと、計算結果の 0.5 が変数 A に代入されます(DEGモードの時)。関数電卓特有の機能を活かした入力命令になっていることが分かります。

"A="?→A

と書くと、画面には" と "で括られた文字

A= ?

のように表示され、入力待ちになります。

"A="?→A
5678→B
AxB


は、キー入力した数字を変数Aに代入して、AxBを計算した結果を表示するプログラムです。様々な数値や計算結果に5678を掛け算した結果を表示します。

CasioBasicコマンドリファレンス: ? (入力命令)


6) プログラムは上から下へ連続実行
プログラムは、上から下へ連続的に実行されます。

そして、出力命令や入力命令は、一旦停止の機能があるので、そこで実行が一旦停止します。この一旦停止は特別な例です。さらに、実行の流れを変えるコマンドや文があり、これらを使えば上から下への実行順序を変えることができます。

このような明示的なコマンドや文が無い限り、プログラムは上から下へ連続的に実行され、プログラムの一番下の行で、完全に実行が停止します。

プログラムは上から下へ実行される原則は、当たり前のように感じられるでしょう。しかし、これを忘れるとプログラムの動作が分からなくなるものです。とても重要な原則なので、必ず覚えてください。


関連記事:
- プログラム関数電卓でプログラミング
- fx-5800P【プログラミング入門】:プログラム作成から実行までの操作



*****


次からは、実際にプログラムを作りながら、プログラムの単語や文型をみてゆきます。


つづく...

⇒ CasioBasic入門2 / 目次



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ






keywords: fx-5800PCasioBasicプログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

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

やす (Krtyski)

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


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

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

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR