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【ゲーム】:もぐら叩き(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コマンドによる、柔軟な表示機能


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

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


CASIOの電卓の中で、上記を満たすプログラミング言語を搭載されているのは、私が入手しているマニュアルを調べる限り、下記の4機種程度で、比較的限られている。

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

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

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

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

・fx-CG50:Graphing Scientific Calculator (欧米のみ販売)
 メーカーサイト (英文)

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


fx-FD10 pro fx-FD10 pro < fx-9860GII版もぐら叩きをキー入力 >


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

fx-CG50fx-CG50 fx-CG50版もぐら叩きのダウンロード >

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


上で紹介した機種には、新世代の CASIO BASIC が搭載されている。fx-5800Pが最も機能制限されていて、他はfx-5800Pのほぼ上位互換となっている。

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

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

上で紹介したもの以外の、過去のグラフ関数電卓や、プログラム関数電卓では、上記の3つの条件を同時に満たすものは無い。グラフ機能の無いプログラム関数電卓としては、2006年発売の fx-5800P が唯一上記3つの条件を満たす。しかし、fx-72F、fx-71F 、fx-3600P、fx-3950Pなどはプログラム機能が十分でないので 魅力的な新世代 Casio Basic を搭載していないので、推奨機種から除外する。

fx-9860GII、fx-CG20、fx-CG50、fx-FD10 Pro は、1万円以上の価格だ。

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

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


当初は、fx-5800P のような電卓で、遊べるアクションゲームを作れるとは思っていなかった。いきさつは、以下の記事に書いた。

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

たまたま、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/20

fx-CG50 を入手したので、早速チューンアップに挑戦!

これまで、fx-CG20 で愛用してきた Ptune2 (sentaro様の作品) の fx-CG50 対応版 Ptune3 ver 0.05 αバージョン を入れました。Ptune2 はかなりの安全設計なので、引き続き Ptune3 を試します。

fx-CG20 はRAMにSRAMを使っていますが、fx-CG50 は SDRAM に変わっています。従って新たに Ptune3 が登場したわけです。


sentaro様によるコメント

αテスト版ですが、Ptune3 ver0.05です。(^^;
http://pm.matrix.jp/Ptune3_005.zip

一番の注意点としては、SDRAMのメモリチェックはチェック後にシステムエラーを起こすことが少々あるので、SDRAMのメモリチェックをした後はリセット推奨です。
それ以外は以前のPtune2と同様にUSB接続で使用しないこと、ぐらいでしょうか。

現状ではCG20のようにメモリクロックがどんどん上げられないので、デフォルトからPLL倍率を上げていくクロックアップが全体の速度向上には効果的です。
この場合はSDRAMのメモリ動作限界で全体の動作限界が決まってしまうのでCG20よりCPUクロックを高くすることが出来ません。
CPUクロックだけを上げるには[F4]を押してPLLをx32にして[SHIFT]+[UP]を押して最上段のFLLで上げていくことになります。(PLLは32倍で制限されているため)
この場合はメモリ限界よりもCPUクロック限界が先にくるので、これでCPUの動作限界が分かります。
私の個体では280MHz前後までいきましたが、速度的にはメモリクロックがあまり上がらないためにPLLを上げていく方が全体パフォーマンス的にはかなり有利になります。
現バージョンの0.05ではデフォルトからPLLを28倍くらいまで上げて1.8倍速ぐらいが安定限界というところです。

fx-CG20はPtune3で約3倍速まで引き上げられますが、fx-CG50はデフォルトで1.5倍~2倍、それがさらに1.8倍まで上がるとすればCG20の最高速度並にはなりそうです。
そしてその状態でも消費電力がCG20比で約半分というところなのでなかなか良いですね。(^^)

=====

αバージョンなので、なんと言っても完全に自分の責任で使うもので、今はこわごわ触っています。Ptune3 に関する話題をこのエントリーにまとめるため、楽屋裏ネタとしてこの記事を投稿しています。

早速、作者のsentaro様への質問をコメント欄にアップしました。





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



  


keywords: プログラム関数電卓、fx-CG50、クロックアップ、Ptune3

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

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

楽屋裏 - 最新プログラム電卓 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

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

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

楽屋裏 - カシオ グラフ関数電卓 fx-CG50 が2017年春登場

楽 屋 裏
e-Gadget


2017/01/16
続報 (1) 2017/01/21
続報 (2) 2017/07/02
続報 (3) 2017/07/03
追記 2017/08/08


[2017/08/08 追記]:fx-CG50 を入手して調べました ⇒ fx-CG50 の概要


2017年春に、カシオから北米向けにグラフ関数電卓 PRIZM fx-CG50 が発売予定とのアナウンスがあったと、sentaro様 から情報を頂きました

カシオアメリカの発表

・学生の数学教育向けを強調
・3Dグラフ機能の強化
・カタログ機能の進化
・教科書スタイルのディスプレイ
・より直線的 (tapered, クサビ型?) な筐体デザイン
・メーカー希望小売価格 99.99 ドル (実売はもっと安いだろう)

なんだか詳細はさっぱり分からない表現が多いですね。

これを受けて、カシオフリーク達はアドイン機能が無くなるのではないかと、おおいに心配しています。
そして、Casio Basic は相変わらず遅いまま、との推測もあります。

CHEMETECH の記事
 Universal Casio Forum の記事
 cordwalr US の記事

但し、アドインが無くなるとは公式には発表されていません。カタログ機能との言及がありますが、fx-9860GII や fx-CG10/20 では、Casio Basic のコマンドを一覧する機能なので、Casio Basic は搭載されるでしょうが、アドインが無くなるという話では無いかも知れません...

海外のコミュニティーで、アドイン無くすな!とこれだけ声が大きいのを、カシオ殿は是非冷静にくみ取って頂きたいと思います。アドインがあるから、これだけ普及したという考えもあります。

一方で、今後の携帯プログラミングは、ニンテンドー3DS  の一人勝ちとなるのでしょうか?
強力で高速な BASIC (プチコン) が使えるので、プログラム電卓でのプログラミング が出来なくなれば、これからは 3DS へ民族の大移動があるかも知れませんね。

いずれにせよ、しばらくは注目です!



=== 続報 (1) [2017/01/21] ===

その後、CHEMETECH で外観や画面の画像が出てきました。

CHEMETECH の記事

元ネタは CASIO の学校向け計算機のページ のようです。
fx-JP900 と似た外装で、角の丸い長方形です。これが Tapered (直線的) と言われたものなんですね。

画面のサンプルもありました

残念ながら、メニュー画面がありません。Add-In があるかどうかすぐ分かるんですけど...

但し、上の画面のサンプル のコメントに以下の記述がありました。
Those new main menu icons tell me (real) add-in support is most likely gone.
(それらの新しいアイコンメニューアイコンから、(本当の)アドインサポートは、ほぼ無くなったようだ。)

う~む、そうなんだろうか?


=== 続報 (2) [2017/07/02] ===

fx-CG50 はアドインプログラムを扱えることが判明しました (sentaro様からの情報)
TI Planet の情報

国内発売の情報はまだないが、欧米での発売が始まり品薄状態です。
このような中、ブログ友達の とね様 がアメリカ在住のご友人経由で早速 fx-CG50 を入手されたとのことです。

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

私も海外の知人経由での入手を検討中。sentaro様は セカイモン (eBay) で注文されたとのこと。今のところ並行輸入で入手するしかありません。


=== 続報 (3) [2017/07/03] ===

eBay の日本語サイトでは fx-CG50 が無く、英語のサイト (eBay.com) で送料込みで割合安い新品の fx-CG50 が有ったので注文しました。以前から利用していた PayPal を支払いに使うと安全なので 今回も PayPal を利用しました。届いたら、Casio Basic プログラミングの視点から評価記事を書こうと思います。


=== 続報 (4) [2017/07/03] ===

日本のカシオのサイトを見ると fx-CG20 が生産終了 となっています。fx-CG50 の国内投入がいつになるかの問題のようです。

カシオの fx-CG20 のサイト







応援クリックをお願いします。励みになるので...
にほんブログ村 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プログラミング入門プログラム関数電卓

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

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

Casio Basic入門54

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正 2016/07/18
追記: 2017/07/02


 4. CasioBasicを使ってみる(続き)

Chapter 9 - 初級

前回: Casio Basic入門53 を見る


◆ Chapter 9 の目標: 簡単な換算プログラム - 入力ボックスの活用


Chapter 9-4 
fx-5800P での3桁区切り表示を改良する

前々回(Casio Basic入門52 - Chapter 9-2)で作ったものは、3桁区切りがパラパラと表示されます。


前回(Casio Basic入門53 - Chapter 9-3)で改良したものは、3桁区切り表示が高速化しました。

ところが、いずれも表示する桁数が1行以内に収まらない時はエラーが発生します。これを放置していたのですが、ここでエラーが出ないように手を入れてから、fx-9860GII へ移植することにします。

fx-5800P用パラパラ表示版

・サブルーチン: 3DIGIT
・メインルーチン: COMPINT2

ファイル名: 3DIGIT

Z=0⇒Retuen
Int(log(Z))+1→D
D-3Int(D÷3)→F

For 1→I To D
Int(Z÷10^(D-I))→C
Locate X+I-1,Y,C
Z-C10^(D-I)→Z
If I-3Int(I÷3)=F
Then Isz X
I<D⇒Locate X+I-1,Y,","
IfEnd
Next



ファイル名: COMPINT2
Locate 1,1,"1-C:"
Locate 1,2,"2-R:"
Locate 10,2,"3-Y:"
Locate 1,3,"TOTAL"
Locate 1,4,"MONTH"


0→B:0→R:0→N:0→T:0→M

Do

0→K:Do
Getkey→K
LpWhile K=0
K=73⇒Break

If K=35
Then
5→X:1→Y:8→D:1→E
Locate X,Y,"      " (スペース11個)
Prog "INP":Z→B
Prog "3DIGIT"
Else If K=36
Then
5→X:2→Y:4→D:1→E
Prog "INP":Z→R
Else If K=37
Then
14→X:2→Y:3→D:1→E
Prog "INP":Z→N
IfEnd:IfEnd
IfEnd

If BRN:Then
Int(B(1+R÷100)^(N))→T
Locate 7,3,"     " (スペース10個)
T→Z:7→X:3→Y
Prog "3DIGIT"
Int(T÷N÷12)→M
Locate 7,4,"     " (スペース10個)
M→Z:7→X:4→Y
Prog "3DIGIT"
IfEnd

LpWhile
 1
Cls
Locate 7,2,"BYE!"



fx-5800P用高速表示版

・サブルーチン: 3DIGIT2
・メインルーチン: COMPINT3

ファイル名: 3DIGIT2

Z=0⇒Return
Int(log(Z))+1→K
(LK4)+(K≥7)+(K≥10)→I
Frac(Z÷1
x103)×1x103→U
Int(Frac(Z÷1x106)×1x103)→V
Int(Frac(Z÷1x109)×1x103)→W
Int(Z÷1x109)→D

If K≤8:Than
Locate X,Y,1x108×W+1x104×V+U
I≥1⇒Locate X+K-2-(I=1),Y,","
I≥2⇒Locate X+K-6,Y,","
Else
Locate X+3+2×(I≥3),Y,1x107+1x104×V+W
Locate X+0,Y,1x104×D+W
Locate X+K-2+(I≥3),Y,","
Locate X+K-6+(I≥3),Y,","
I≥3⇒Locate X+1,Y,","
IfEnd



変数の説明
入力値: Z
X座標: X
Y座標: Y


ワーク変数 U:下3桁
ワーク変数 V:中3桁
ワーク変数 W:上3桁
ワーク変数 D:最上位1桁
ワーク変数 K:数値の桁数
ワーク変数 I:三桁区切り文字の数


ファイル名: COMPINT3
Locate 1,1,"1-C:"
Locate 1,2,"2-R:"
Locate 10,2,"3-Y:"
Locate 1,3,"TOTAL"
Locate 1,4,"MONTH"


0→B:0→R:0→N:0→T:0→M

Do

0→K:Do
Getkey→K
LpWhile K=0
K=73⇒Break

If K=35
Then
5→X:1→Y:8→D:1→E
Locate X,Y,"      " (スペース11個)
Prog "INP":Z→B
Prog "3DIGIT2"
Else If K=36
Then
5→X:2→Y:4→D:1→E
Prog "INP":Z→R
Else If K=37
Then
14→X:2→Y:3→D:1→E
Prog "INP":Z→N
IfEnd:IfEnd
IfEnd

If BRN:Then
Int(B(1+R÷100)^(N))→T
Locate 7,3,"     " (スペース10個)
T→Z:7→X:3→Y
Prog "3DIGIT2"
Int(T÷N÷12)→M
Locate 7,4,"     " (スペース10個)
M→Z:7→X:4→Y
Prog "3DIGIT2"
IfEnd

LpWhile
 1
Cls
Locate 7,2,"BYE!"





1行の桁数を超えた表示の際のエラーを抑制

このエラーは、3桁区切りを行うと ,(コンマ)が追加されるから発生します。そこで、3桁区切りの桁数を調べ、それが1行の桁数を超える時は、3桁区切り無しで表示させるようにします。

元の桁数と3桁区切り表示の桁数は以下のようになります。

表1 桁数の一覧
元の数値例元の桁数3桁区切り表示コンマの数3桁区切り表示の桁数
11101
1221202
123312303
123441,23415
12345512,34516
1234566123,45617
123456771,234,56729
12345678812,345,678210
1234567899123,456,789211
1234567890101,234,567,890313
123456789011112,345,678,901314
12345678901212123,456,789,012315
1234567890123131,234,567,890,123417
123456789012341412,345,678,901,234418

これを見れば、

[3桁区切り表示の桁数] = [元の桁数] + [コンマの数]

だと分かります。

元の数値は、変数Z に格納してから、サブルーチン 3DIGIT3DIGIT2 が起動されるので、このサブルーチンの中で、

3DIGIT
Int(log(Z))+1→D [元の桁数]


3DIGIT2
Int(logZ))+1→K [元の桁数]

のように、求められています。

=====

次に、[コンマの数] を求めると、[3桁区切り表示の桁数] を計算できます。

上の表1を見ると、[元の桁数] を3で割った時の商 が [コンマの数] になることが分かります。

[コンマの数] = Int([元の数] ÷ 3) 

従って、

[3桁区切り表示の桁数] = [元の数] + Int([元の数] ÷ 3])

となります。


あるいは、もう一つ [コンマの数] を求める面白い方法があります。これは、既に sentaro様が提案された 3DIGIT2 で使われています。

Int(log(Z))+1→K [L: 元の桁数]
(K≥4)+(K≥7)+(K≥10)→I 
[I: コンマの数]


[2017/07/02 追記]
2行目が何故コンマの数を示すのか、説明を加えます。
最初の (K≥4) をみてみます。Kが4以上の時 K≥4 の値が 1 になる性質を利用しています。
詳しく見てゆきます。 は論理演算を行い、K≥4 が正しければ(つまり真ならば)1を返します。正しくなければ(偽ならば)0を返します。これは Casio Basic を含む多くの高級言語で採用されている仕様です。
(K≥4) 自体が値を持つわけです。
Kが5ならば、(K≥4)(K≥7)(K≥10)0 になるので、I1 となり、コンマの数になります。
Kが8ならば、(K≥4)(K≥7)1 になり、(K≥10)0 になるので、I2 となり、コンマお数になります。
=== 追記おわり ===

従って、

[3桁区切り表示の桁数] = [元の数] + I

となります。

=====

3桁区切り表示を始める桁は、変数 X に入れた直後にサブルーチン 3DIGIT あるいは 3DIGIT2 が呼び出されるので、このサブルーチンが起動した時、変数 X が表示を始める桁数になっています。

すると、3桁区切り表示を行う行に [表示される全ての桁数] は、

[表示される全ての桁数] = X + [3桁区切り表示の桁数] - 1

となります。

fx-5800P では、Locate コマンドで [表示される全ての桁数] は16桁で、これを超えるとエラーになります。このエラーが発生する条件は、

[表示される全ての桁数] > 16

つまり、

X + [3桁区切り表示の桁数] - 1 > 16

この式を整理すると、

X + [3桁区切り表示の桁数] > 17

となります。

====

この条件を満たすとき、どうするかを決めます。

1) 何もしないで、サブルーチンを終了させる

2) エラーにならない換わりに、例えば -------- を表示をする

3) 3桁区切り表示ではなくて、元の数を表示する

といった処理を行えば良いですね。

今回は、「3) 3桁区切り表示ではなくて、元の数を表示する」 を採用することにします。

====

以上をまとめると、

If X+[3桁区切りの桁数]>17
Then
Locate X,Y,Z
Retuen
IfEnd


とすれば、表示が1桁に収まらない時のエラーを回避でき、3桁区切り無しで見づらいが数値が表示されます。

具体的に、3DIGIT と 3DIGIT2 に追加するプログラムコードは以下のようになります。

3DIGITへの追加分
Int(log(Z))+1→D [既にあるコード]

If X+D+Int(D÷3)>17
Then
Locate X,Y,Z
Return
IfEnd



3DIGIT2への追加分
Int(log(Z))+1→K [既にあるコード]
(L≥4)+(L≥7)+(L≥10)→I [既にあるコード]

If X+K+I>17
Then
Locate X,Y,Z
Return
IfEnd




fx-5800P用パラパラ表示版

・サブルーチン: 3DIGIT
・メインルーチン: COMPINT2

ファイル名: 3DIGIT

Z=0⇒Retuen
Int(log(Z))+1→D
D-3Int(D÷3)→F
If X+D+Int(D÷3)>17
Then
Locate X,Y,Z
Return
IfEnd


For 1→I To D
Int(Z÷10^(D-I))→C
Locate X+I-1,Y,C
Z-C10^(D-I)→Z
If I-3Int(I÷3)=F
Then Isz X
I<D⇒Locate X+I-1,Y,","
IfEnd
Next



ファイル名: COMPINT2 (変更なし)
Locate 1,1,"1-C:"
Locate 1,2,"2-R:"
Locate 10,2,"3-Y:"
Locate 1,3,"TOTAL"
Locate 1,4,"MONTH"


0→B:0→R:0→N:0→T:0→M

Do

0→K:Do
Getkey→K
LpWhile K=0
K=73⇒Break

If K=35
Then
5→X:1→Y:8→D:1→E
Locate X,Y,"      " (スペース11個)
Prog "INP":Z→B
Prog "3DIGIT"
Else If K=36
Then
5→X:2→Y:4→D:1→E
Prog "INP":Z→R
Else If K=37
Then
14→X:2→Y:3→D:1→E
Prog "INP":Z→N
IfEnd:IfEnd
IfEnd

If BRN:Then
Int(B(1+R÷100)^(N))→T
Locate 7,3,"     " (スペース10個)
T→Z:7→X:3→Y
Prog "3DIGIT"
Int(T÷N÷12)→M
Locate 7,4,"     " (スペース10個)
M→Z:7→X:4→Y
Prog "3DIGIT"
IfEnd

LpWhile
 1
Cls
Locate 7,2,"BYE!"




fx-5800P用高速表示版

・サブルーチン: 3DIGIT2
・メインルーチン: COMPINT3

ファイル名: 3DIGIT2

Z=0⇒Return
Int(log(Z))+1→K
(K≥4)+(K≥7)+(K≥10)→I

If X+K+I>17
Then
Locate X,Y,Z
Return
IfEnd


Frac(Z÷1x103)×1x103→U
Int(Frac(Z÷1x106)×1x103)→V
Int(Frac(Z÷1x109)×1x103)→W
Int(Z÷1x109)→D

If K≤8:Than
Locate X,Y,1x108×W+1x104×V+U
I≥1⇒Locate X+K-2-(I=1),Y,","
I≥2⇒Locate X+K-6,Y,","
Else
Locate X+3+2×(I≥3),Y,1x107+1x104×V+W
Locate X+0,Y,1x104×D+W
Locate X+K-2+(I≥3),Y,","
Locate X+K-6+(I≥3),Y,","
I≥3⇒Locate X+1,Y,","
IfEnd



ファイル名: COMPINT3 (変更なし)
Locate 1,1,"1-C:"
Locate 1,2,"2-R:"
Locate 10,2,"3-Y:"
Locate 1,3,"TOTAL"
Locate 1,4,"MONTH"


0→B:0→R:0→N:0→T:0→M

Do

0→K:Do
Getkey→K
LpWhile K=0
K=73⇒Break

If K=35
Then
5→X:1→Y:8→D:1→E
Locate X,Y,"      " (スペース11個)
Prog "INP":Z→B
Locate X,Y,"      " (スペース11個)
Prog "3DIGIT2"
Else If K=36
Then
5→X:2→Y:4→D:1→E
Prog "INP":Z→R
Else If K=37
Then
14→X:2→Y:3→D:1→E
Prog "INP":Z→N
IfEnd:IfEnd
IfEnd

If BRN:Then
Int(B(1+R÷100)^(N))→T
Locate 7,3,"     " (スペース10個)
T→Z:7→X:3→Y
Prog "3DIGIT2"
Int(T÷N÷12)→M
Locate 7,4,"     " (スペース10個)
M→Z:7→X:4→Y
Prog "3DIGIT2"
IfEnd

LpWhile
 1
Cls
Locate 7,2,"BYE!"




fx-5800P 用の2つのバージョン、パラパラ表示版と高速表示版を、ここで完成とします。



つづく...

⇒ Casio Basic入門55 / Casio Basic入門G01 / 目次




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




  



keywords: fx-5800PCasioBasic、入力ボックス, プログラミング入門プログラム関数電卓

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




関連記事

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

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

やす (Krtyski)

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


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

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

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


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR