インサイドCasio Basic

 目 次
< English | 日本誤 > 

記載内容は fx-5800P、fx-9860GII (OS 2.04)、fx-CG20 (OS 2.00)で確認したものです.
本プロジェクトは進行中のため、追記修正があるかも知れません.

取扱説明書に書かれていない重要な内容には UNDOCUMENTED マークを付けています.



取扱説明書に書かれていないCasio Basic

表示エリア UNDOCUMENTED
多様なグラフィックス座標系 UNDOCUMENTED
内部カーソル行の制御 UNDOCUMENTED


コマンドリファレンス
*1) 機種: "5800" (fx-5800P)、"9860" (fx-9860Gシリーズ OS 2.00以降) 、"CG20" (fx-CG10/20).
 
基本動作コマンド機種 *1)
  (代入)5800, 9860, CG20
" " (テキスト表示)5800, 9860, CG20
(表示と一旦停止)5800, 9860, CG20
? (入力)5800
?→ (入力)5800, 9860, CG20
 
入出力コマンド機種 *1)
Getkey5800, 9860, CG20
Locate5800, 9860, CG20
Menu9860, CG20
 
プログラムコマンド機種 *1)
If... Then... [Else...] IfEnd5800, 9860, CG20
For... To... [Step...] Next5800, 9860, CG20
While... WhileEnd5800, 9860, CG20
Do... LpWhile5800, 9860, CG20
 
プログラム制御コマンド機種 *1)
Break5800, 9860, CG20
Return5800, 9860, CG20
Stop5800, 9860, CG20
Prog5800, 9860, CG20
 
ジャンプコマンド機種 *1)
Goto... Lbl5800, 9860, CG20
5800, 9860, CG20
Isz5800, 9860, CG20
Dsz5800, 9860, CG20
  
関係演算子機種 *1)
=, ≠, <, >, ≤, 5800, 9860, CG20
 
論理演算子機種 *1)
And, Or, Not5800, 9860, CG20
Nor9860, CG20
 
記述コード機種 *1)
: (区切りコード)5800, 9860, CG20
' (コメント文指定)9860, CG20
  
変 数機種 *1)
アルファベット (大文字)5800, 9860, CG20
配列: DimZ, Z[ ]5800
行列: Dim, Mat, Det, Trn, Fill, ...5800, 9860, CG20
List: Dim, List, Fill, Min, Max, ...5800, 9860, CG20
 
表示設定 (テキスト)機種 *1)
Cls (テキスト)5800
ClrText (テキスト)9860, CG20
Eng9860, CG20
EngOn, EngOff5800, 9860, CG20
Norm5800, 9860, CG20
Sci5800, 9860, CG20
Fix5800, 9860, CG20
Deg, Rad, Gra
°, r (rad), g (gra), DMS5800, 9860, CG20
f, p, n, μ, m5800, 9860, CG20
k, M, G, T, P, E5800, 9860, CG20
 
文字列操作コマンド機種 *1)
Str, StrJoin, StrLen, StrCmp5800, 9860, CG20
StrSrc, StrLeft, StrRight, StrMid5800, 9860, CG20
ExpStr, Exp, StrUpr, StrLwr5800, 9860, CG20
StrInv, StrShift, StrTorate, \, +5800, 9860, CG20
  
グラフィックス設定機種 *1)
ClrGraph9860, CG20
ViewWindow9860, CG20
StoV-Win9860, CG20
RclV-Win9860, CG20
Xmin, Xmax, Xdot, Xscl9860, CG20
Ymin, Ymax, Yscl9860, CG20
 AxesOn, AxesOff9860, CG20
AxesScaleCG20
 GridOn, GridOff9860, CG20
GridLineCG20
 LabelOn, LabelOff9860, CG20
CoordOn, CoordOff9860, CG20
S-L-Normal, S-L-Thick, S-L-Dot, S-L-Broken9860, CG20
S-L-ThinCG20
Plot/Line-ColorCG20
  
グラフィックス Sketch コマンド機種 *1)
Cls (グラフィックス)9860, CG20
ClrGraph9860, CG20
Text9860, CG20
PxlOn9860, CG20
PxlOff9860, CG20
PxlChg9860, CG20
PxlTest(9860, CG20
Plot9860, CG20
Line9860, CG20
PlotOn9860, CG20
PlotOff9860, CG20
F-Line9860, CG20
Vertical9860, CG20
Horizontal9860, CG20
Circle9860, CG20
SketchNormal, SketchThick, SketchDot, SketchBroken9860, CG20
SketchThinCG20
StoPict9860, CG20
RclPict9860, CG20
Black, Blue, Red, Magenta, Green, Cyan, YellowCG20
 
 






Copyright (C) 2013 - 2016 Krtyski / egadget.blog.fc2.com  All Rights Reserved.


関連記事

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

Inside Casio Basic

 Inside Casio Basic - Index
< English | 日本語

Content is checked by fx-5800P, fx-9860GII (OS 2.04) and fxCG20/10 (OS 2.00).
This is on-going project, any changes may be made.



Undocumented Casio Basic
 - Display Area UNDOCUMENTED
Variety of Coordinate Systems for Graphics UNDOCUMENTED
Control of Internal Cursor Row UNDOCUMENTED



Command Reference

*1) Models: "5800" (fx-5800P), "9860" (fx-9860G Series OS 2.00 or later) and "CG20" (fx-CG10/20).
 
Basic Operation CommandsModels *1)
  (Substitution)5800, 9860, CG20

" " (Text Display)
 (Display & Pause)5800, 9860, CG20
? (Input)5800
?→ (Input)5800, 9860, CG20
 
I/O CommandsModels *1)
Getkey5800, 9860, CG20
Locate5800, 9860, CG20
Menu9860, CG20
 
Program CommandsModels *1)
If... Then... [Else...] IfEnd5800, 9860, CG20
For... To... [Step...] Next5800, 9860, CG20
While... WhileEnd5800, 9860, CG20
Do... LpWhile5800, 9860, CG20
 
Program Control CommandsModels *1)
Break5800, 9860, CG20
Return5800, 9860, CG20
Stop5800, 9860, CG20
Prog5800, 9860, CG20
 
Jump CommandsModels *1)
Goto... Lbl5800, 9860, CG20
5800, 9860, CG20
Isz5800, 9860, CG20
Dsz5800, 9860, CG20
  
Relational OperatorsModels *1)
=, ≠, <, >, ≤, 5800, 9860, CG20
 
Logical OperatorsModels *1)
And, Or, Not5800, 9860, CG20
Nor9860, CG20
 
Description CodesModels *1)
: (Multi-statement code)5800, 9860, CG20
' (Comment Text Delimiter)9860, CG20
  
VariablesModels *1)
Alphabets (Capital Letters)5800, 9860, CG20
Array: Dim, Z[ ]5800
Matrix: Dim, Mat, Det, Trn, Fill, ...5800, 9860, CG20
List: Dim, List, Fill, Min, Max, ...5800, 9860, CG20
 
Display Setup (text)Models *1)
Cls (Text)5800
ClrText (Text)9860, CG20
Eng9860, CG20
EngOn, EngOff5800, 9860, CG20
Norm5800, 9860, CG20
Sci5800, 9860, CG20
Fix5800, 9860, CG20
Deg, Rad, Gra5800, 9860, CG20
°, r (rad), g (gra)DMS5800, 9860, CG20
f, p, n, μ, m5800, 9860, CG20
k, M, G, T, P, E5800, 9860, CG20
  
StringsModels *1)
Str, StrJoin, StrLen, StrCmp5800, 9860, CG20
StrSrc, StrLeft, StrRight, StrMid5800, 9860, CG20
ExpStr, Exp, StrUpr, StrLwr5800, 9860, CG20
StrInv, StrShift, StrTorate, \, +5800, 9860, CG20
 
Graphics SetupModels *1)
ClrGraph9860, CG20
ViewWindow9860, CG20
StoV-Win9860, CG20
RclV-Win9860, CG20
Xmin, Xmax, Xdot, Xscl9860, CG20
Ymin, Ymax, Yscl9860, CG20
 AxesOn, AxesOff9860, CG20
AxesScaleCG20
 GridOn, GridOff9860, CG20
GridLineCG20
 LabelOn, LabelOff9860, CG20
CoordOn, CoordOff9860, CG20
S-L-Normal, S-L-Thick, S-L-Dot, S-L-Broken9860, CG20
S-L-ThinCG20
Plot/Line-ColorCG20
  
Graphics Sketch CommandsModels *1)
Cls (Graphics)9860, CG20
ClrGraph9860, CG20
Text9860, CG20
PxlOn9860, CG20
PxlOff9860, CG20
PxlChg9860, CG20
PxlTest(9860, CG20
Plot9860, CG20
Line9860, CG20
PlotOn9860, CG20
PlotOff9860, CG20
F-Line9860, CG20
Vertical9860, CG20
Horizontal9860, CG20
Circle9860, CG20
SketchNormal, SketchThick, SketchDot, SketchBroken9860, CG20
SketchThinCG20
StoPict9860, CG20
RclPict9860, CG20
Black, Blue, Red, Magenta, Green, Cyan, YellowCG20
 
 


Copyright (C) 2013 - 2016 Krtyski / egadget.blog.fc2.com  All Rights Reserved.



続きを読む

関連記事

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

プログラムライブラリ - キーコード取得

プログラムライブラリ
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2014/12/19 更新: fx-9860GII 専用プログラム追加
2015/02/28 更新: g1mファイルのダウンロード追加
2016/04/26 更新: g3mファイルのダウンロード追加


キーコード取得: GET KEYCODE / KEYCODE

※ fx-9860GII 用 g1mファイルのダウンロード・リンク追加 [2015/02/28]
※ fx-CG20 用 g3mファイルのダウンロード・リンク追加 [2016/04/26]

対応機種

Casio fx-5800P、fx-9860GII、fx-CG20 (そしておそらく fx-FD10 Proも対応すると思われます)

GET KEYCODE は、fx-5800P、fx-9860GII および fx-CG20 で100%互換性があります。fx-FD10 Pro でも動作すると思われます。

KEYCODE は、fx-9860GII 専用プログラムで、C言語用 Casio SDK で使う Bkey_GetKeyWait( ) 関数の code1 と code2 を併せて表示する機能を追加したもの。fx-9860GII の広い画面に合わせて表示も変更しています。fx-CG20 へも100%互換で移植できます。


プログラム GET KEYCODE の説明

fx-5800P や fx-9860GII (および fx-CG20/10、fx-FD10 Pro など)搭載の Casio Basic には、どのキーが押されたかを知るための Getkey コマンドが用意されています。数字以外のキーが押されたことも分かるので、プログラミングの幅が広がります。Casio Basic を優れたものにしている1つが Getkey です。

Getkey コマンドを使えば、[AC] キーを除く全てのキーに対して個別に割り当てられたキーコードが得られます。

このキーコードは取扱説明書に記載されていますが、手元に取扱説明書が無い場合は、すぐにキーコードを調べられる本プログラムが役立ちます。

本プログラム作成方法の詳細については、Casio Basic 入門3 ~ 8 を参照。

 ・ Casio Basic入門3


プログラムの使い方

プログラムを起動すると、キー入力待ちになります。ここで、[AC] キーを除くいずれかのキーを押すと、対応するキーコードが表示されます。[AC] キーはプログラム終了に使います。


動作画面

起動時およびキー入力待ちの状態
GK_5800_1 GK_9860_1  


[DEL] キーを押した時
 GK_5800_2 GK_9860_2  

同じキーでも機種が違うとキーコードが異なる。


ソースコード (GET KEYCODE / GETKEY)

※ fx-5800P用に作っていますが, fx-9860GII や fx-CG20 でも動作します。
注)fx-5800Pはファイル名に12文字まで使えますが、
  fx-9860GII や fx-CG20 では最大8文字です。
  そこで、fx-9860GII や fx-CG20 では、私はファイル名を GETKEY としています。

  GetKeycode_src 

注1) 一番上の行の "  GET KEYCODE" の冒頭はスペース2個
注2) 下から3行目の Locate 1,1,"KEYCODE =     " の = の後ろはスペース4個


ソースコード (KEYCODE) fx-9860GII 専用 [fx-CG20 でも動作]

プログラムファイル keycode.g1m のダウンロード
プログラムファイル keycode.g3m のダウンロード

Casio Basic のキーコード表示と共に、C言語用 Casio SDK の Bkey_GetKeyWait( )関数の code1 と code2 を併せて表示。

KeyCode_src for fx-9860GII 

注3)下から6行目の "KeyCode ="の = 以降はスペース12個
注4) 下から3行明の Locate 15,3,"  " はスペース2個

起動した直後
KeyCode for 9860 Start 

分数キーを押した時
KeyCode for 9860 KeyCode 




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

人気ブログランキングへ


FC2ブログランキングへ


  


keywords: fx-5800PCasioBasic、プログラムライブラリプログラム関数電卓

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


関連記事

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

プログラム関数電卓でプログラミング

fx-5800Pプログラミング入門のための CasioBasic入門連載中
 
2014/10/05 修正
2014/12/19 fx-9860GII に関する追記
2015/03/12 Hit & Blowに関する追記
2016/04/26 fx-CG20 に関する追記

fx-5800Pはプログラミング入門に良いと思っている。

fx-5800P-3 fx-9860GII  fx-CG20_L 
   カシオ  fx-5800P    カシオ fx-9860GII       カシオ fx-CG20

 fx-5800P、fx-9860GII、fx-CG20 に搭載されているプログラミング言語は、Casio Basicという構造化Basicだ。カシオのプログラム電卓に固有で便利な命令もあるが、殆どが一般の Basic と同等の言語仕様となっている。但し、代入の記法の違いと大域変数のみである点を入門用としてどう考えるか?で判断が分かれるかも知れない。私は大きな問題ではないと思っている。

カシオは、プログラム関数電卓 fx-5800P、グラフ関数電卓 fx-9860GII、fx-CG20 や最近発売された土木測量向け電卓にも Casio Basic を搭載しており、高い互換性がある。ハードウェア依存の Getkey コマンドなどを除けば移植性が高いようだ。LocateGetkey などの入出力関連コマンドはハードウェアに依存した違いがあるが、移植は簡単だ。それ以外の多くの共通のコマンドや言語仕様は、ほぼ互換性があるといって良い。

 ⇒ Casio Basic - 機種間の互換性
 ⇒ fx-CG20 の概要
 ⇒ fx-5800P / fx-9860GII / fx-CG20 プログラムライブラリ - キーコード取得 
 ⇒ fx-9860GII USB POWER GRAPHIC 2
 ⇒ fx-9860GII への移植 - ピタゴラス数
 ⇒ fx-9860GII への移植 - 素因数分解
 ⇒ fx-9860GII への移植 - 厄介な旧来の命令

これらの上位機種である グラフ関数電卓と同じく、Casio Basic を使える fx-5800P は、実売価格、携帯性(コンパクト性)、電池寿命などの点で、圧倒的に優位だ。fx-5800P は Casio Basic 入門機として最適であるだけでなく、Casio Basic は高機能なので、プログラミング経験のある人には、すぐにプログラムを書ける実用機でもある。

これら機種の価格動向からみれば、fx-9860GII や fx-CG20、そして fx-FD10 Pro は高価だ。


プログラム関数電卓でのプログラミング超入門

パソコンのプログラミング入門で、「Hello World と表示させるプログラム」が最初に取り上げられている書籍を以前よく見たものだ。


これを Casio Basic で書くと、

"Hello World"

と、たった1行書くだけ! 出力命令 " " を使っている。そして、幾つかのキー操作で、即実行できる。MS-DOS、Windows、MACだろうが、Visual Basic、VB.net やC、C++だろうが、こんな簡単ではない。


キーボードから、何か数字を入力して、それを表示させるプログラムは、

?→A

はい、たったこれだけ! 

入力して、何か計算をして、結果を出力するのが、プログラムの基本動作だ。上のプログラムは、なにやら暗号のようだが、「入力」と「出力」と言う基本的な2つの仕事を行っている。

「?」 は入力待ちの命令、「→」は入力された数字を変数Aに代入する命令。つまり、1つめの仕事は、数字を入力させ、それを変数に入れると言うもの。A は、変数Aの中身を表示しなさいと言うものだ。

このプログラムを実行すると、画面表示は

?

とそっけない。ここで何か数字を入力してから [EXE]キーを押すと、入力した数字が表示される。


ちょっとグレードアップしてみる。

"INPUT NUMBER"?→A

「?」の前に「"」で挟んだ文字を追加しただけた。これを実行すると、

INPUT NUMBER ?

と表示される。


ここで、何か整数でも少数でも入力すれば、それが表示される。


さて、ここからが関数電卓のプログラムの面白いところだ。

INPUT NUMBER ?

と表示されている時に、sin(30) と打ち込むことも出来る。すると、

0.5

と表示される。

sin(30)の代わりに、数値積分の式を入れても、しっかりその計算結果が表示される。面倒な計算は、関数電卓が持っている機能を使えば良い。プログラムは、手順を示すだけのもので良い。当然、プログラムの中で計算をさせることもできる。


さて、妙な記号ばかり出てきたが、他のコマンドは、分かりやすい。

Goto ~ Lbl
If ~ Then (~ Else) ~ IfEnd
Do ~ LpWhile
While ~ WhileEnd


といった、Basic と同じコマンドが揃っている。

上のコマンドは、それぞれ

・ここから、指定の行までジャンプしなさい
・もし、○○ の時は△△を実行し、そうでない時は□□を実行しなさい
Do と書いたところから、LpWhile までを、グルグル繰り返しなさい。●●が真なら繰り返しなさい
While と書いたところから、WhileEnd までを、グルグル繰り返しなさい。■■が真なら繰り返しなさい。


と言う意味だ。英語の意味そのままなので、ちょっと練習すると、簡単にすぐ分かる。


fx-5800P でプログラムを書くのが簡単だとお分かり頂けるだろうか?



プログラム電卓にさせる仕事は、単純な計算だが、条件を種々変更して何度も実行すること、おそらくこれに尽きると思う。

付け加えるならば、パソコンを起動して、上記のような仕事をするには面倒に思う時こそ、プログラム電卓の出番だ。



電卓プログラムで便利な用途

プログラミングに科学技術の知識は殆ど不要だ。関数電卓は使いこなせなくても、プログラム電卓は使いこなせる。言い換えれば、プログラム電卓は関数電卓の延長線上にある必要はない。実際のプログラム電卓は、関数電卓の高機能バージョンとして発売されているから、勘違いされやすいのだが...

プログラミング能力は特別のものでなく、理系か文系、年齢や性別に無関係なのは、IT業界では広く知られている。理系の大学を卒業してもプログラムを書けない人が居ても不思議ではなく、文系でもSEやプログラマで活躍している人が普通にいる。男女比率が1:1なら、プログラミングのできるできないも1:1なのだ。1億3千万人の日本人の半分がプログラミングしても、驚くことではない。

さらに、作るプログラムは、科学技術に関係するものだけでなく、日常生活や事務系や営業系の仕事で便利な実用プログラムもあって、PCやスマホで使っているわけた。 当然、電卓で作るプログラムも同じで、当ブログでは科学技術以外の実用プログラムを紹介している。

電卓で作って・使って便利なプログラムには、どんなものがあるだろうか?
思いつく範囲で列挙してみる。

・世界時間換算:
今日本は18:00だから、イギリスでは何時?とか カナダの朝9:00に電話するには、日本の何時に電話をかければ良いか?といったことは、グローバル社会では結構ある。海外では夏時間も考えなければならない。そんな時に電卓でパッと海外の相手の時間が分かれば、とても便利だ。このプログラムを作って、私は毎日のように利用している。地域による微妙な時差にも対応している。
Casio Basic入門で取り上げている ⇒ こちら

年齢換算
生まれ年から年齢を割り出す。年齢から生まれ年を割り出す。歳の話になって、電卓を持ち出すとその場の空気が淀む可能性あり...
Casio Basic入門で取り上げているこちら

西暦と和暦の変換計算
電卓がすぐ横にあることが大前提だが....
Casio Basic入門で取り上げているこちら

温度単位の換算
摂氏(°C)、華氏(°F)、絶対温度(K)の換算。どれか1つを入力すると、他の単位での温度の値が表示されるプログラム。特に摂氏と華氏の換算はたまにアメリカへ出かけると役に立つ。実はプログラムはとても簡単に作れる。
Casio Basic入門で取り上げているこちら

分子量計算
この手の計算を頻繁に電卓でやりたい人は、何か特定のジャンルの化合物しか扱わないので、電卓に入れておくべき原子量データは知れていると思う。
半導体ならSi、Ga、As、Al、In、N といった程度だし、組成比が小数ならば電卓が楽だ。
有機化学なら、C、H、O、N、S、P、Mg、Zn、Cl、Br、I にあと数種の原子があれば間に合うだろう。普通の関数電卓で十分と言う人には、はいそうですね、と答えるしかない(-_-)  昔、CASIOのFX-603Pを使っていた時は入れていたと言う...

売り買いに関する計算?
原価計算、見積計算、売値から仕入値(指値)の計算など...
そもそも営業マンで値段をスバっと答える人が少ないと言う話もあるが、おそらく暗算できないという理由では無く、大人の事情があるとは思うが...
原価から各種経費を考えて最終価格を計算したり、最終コストから各種経費を前提に原価、買値を割り出したりするのに便利。
価格交渉の概算用に私の電卓には既に入っている...( ^o^)ノ

寸法精度の計算
工作現場で、サイン・コサイン・タンジェントが絡む計算で、穴位置や切る位置を、あれこれ現物合わせするのに便利なことが多いように思う。予めプログラムを準備しておくのではなく、その場でチャッチャッチャとプログラムを組む使い方にはなってしまうが...(経験あり)

光学計算
カメラのセンサとレンズの特性から、分解能、ピクセル数、ピクセルピッチ、センササイズ、レンズのF値、口径、焦点距離などを、色々計算してみたい....電卓でプログラムを使えると便利だ。私の電卓には既に入っていて使っている...

圧力単位の換算
アメリカがヤード・ポンド法をいまだに使っているため、psi (pounds per square inch) などと厄介な圧力単位がある。いや、アメリカだけが悪いわけでもない。とにかく圧力の単位ってヤツは、Pa (パスカル)、Bar (バール)、Kgf / m、mmHg、mmHO、Atm 等々、技術分野が異なれば使う単位はバラバラ。会議や展示会でアメリカ人(psiを好む)やヨーロッパ人(Barを好む)と圧力の話になると、英語よりも単位換算が追いつかないことも....これはある意味必須!(私の電卓には既に実装済み

ゲーム
プログラミングを始めたら、やはりゲームを作ってみたいものだ。 \(^_^)/
但し、使えるプログラミング言語によって、作れるゲームが大きく異なる。
fx-5800Pには、pause命令(待ちの命令) / HLT命令 (動作再開) がない。ループやGetkeyを使って作れなくもないが、アクションゲームには不向きと言える。
FX-603P / 602P / 502P には、pause / HLTがあるので、アクションを含めた数々のゲームが過去公開されていた。付け加えるなら、間接ジャンプ命令(現行のfx-5800Pには無い)が使えることも大変便利だった。

【2014/01/13 追記】 fx-5800Pの実力を確かめるために、アクションゲーム(もぐら叩き)を作ってみたが、そこそこ遊べるゲームが出来た。

【2014/10/05 追記】 昔のカシオ電卓のプログラムライブラリには必ず Hit & Blow が入っていた。fx-5800P でも Hit & Blow を作ってみた(3桁から5桁に対応してみたが、あまり意味がないかも...)。

【2015/03/12 追記】 Hit & Blow を fx-9860GII にも移植した。fx-5800P用 ならびに fx-9860GII 用の Hit & Blow を e-Gadget アーカイブに収録した。 ⇒ e-Gadget アーカイブ


どうであろうか?
何かを作ることが好きならば、電卓でのプログラミングも愉しいのではないかと思う。



fx-5800P はプログラミング入門に向いている?

CASIOの往年の名機とも言われる FX-603P / 602P / 502P は、かなり独特なプログラミング言語を搭載していて、私にはプログラミングの敷居は高かった。一方で、CASIOの現行機 fx-5800P は、一般的な BASIC に近い言語なので、非常に分かりやすい。

昔のNECのパソコンに搭載されていた N88-BASIC や Visual Basicなどを触った経験を少しでもお持ちなら、fx-5800Pですぐにプログラミングが出来ると思う。プログラミング経験の無い方でも、何かを作ることが好きだと言う方ならば、fx-5800Pはプログラミング入門に向いている


fx-5800Pでのプログラミングの敷居が低いのには、訳がある。

・非常に限られた機能しか無いので、覚えることが少ない
・プログラムを入力すれば、すぐにその場で実行してみることができる
・何かエラーがあれば、エラーが発生したところが分かる

といった特性があるからだ。

しかし、構造化Basic に対応しており、決してバカにしてはいけない。実用的なプログラムを作るだけの高機能なのだ。最近発売された 土木測量向け fx-FD10 pro には予め土木・測量で有用なプログラムが搭載されているが、これらは Casio Basicで記述されている。


多くの方が持っている EXCELで使えるVBAはBasicだから簡単そうに見え、入門者向けのように言う人も居るが、実はそうでもない。本を1冊か2冊か買ってこなければ、簡単なプログラムでもちゃんと動かすまでに覚えることが非常に多い。Windowsの知識が必要であったり、オブジェクト構造の理解が必要で、Basic のコマンドを知っていても、やりたいことがスグにできないのだ。


私は、CASIOのプログラム電卓しか触ったことが無いので、SHARP、HP、TI などのプログラム電卓の言語がどのようなものかは知識でしか知らない。さらに、全てのCASIO製プログラム電卓を触ったわけでもない。私が触ったことのある製品は、FX-502P / FX-602P / FX603P / fx-4500P そして、fx-5800P と fx-9860GII だ。

これらの機種やパソコンでのプログラミング経験から、 fx-5800Pはプログラミング入門機 といって良いと思う。

Casio  Basic の進め



残念なことに...

せっかく良い製品なのだが、取扱説明書の中でプログラミングに関する説明は、あまりに簡素化されすぎている。プログラミングの素養のある人が見て分かるような書き方しかされていない。

せめて、CASIO のホームページで入門者向けのコンテンツを準備するなり、冊子を作るなりすべきだと思うのだが、如何だろうか>CASIO、電卓関係者の方々



そこで...

fx-5800P の Casio Basic 入門講座の連載を始めている。併せてオリジナルの Casio Basic コマンドリファレンスを拡充中だ。
これから、Casio Basicを始めてみようと言う方、プログラミング経験はあるがチョット忘れかかっている方、を意識して書いている。
よろしければ、どうぞ...

CasioBasic 入門 - 目次-
CasioBasic コマンドリファレンス -目次-
逆引き Casio Basic -目次-





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

人気ブログランキングへ


FC2ブログランキングへ



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

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

続きを読む

関連記事

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

Casio Basic入門2

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します.
最終:2016/04/23


3. fx-5800P CasioBasicの コマンド一覧

fx-5800P Casio Basic の主なコマンド

(1) 入力
 ・入力命令:?
 ・Getkey

(2) 出力
 ・出力命令:
 ・文字列出力: "   "
 ・Cls
 ・Locate

(3) 代入
 ・代入:

(4) ジャンプ
 ・Goto / Lbl 
 ・Dsz / Isz 
 ・ 

(5) 条件分岐
 ・If 文: If ~ Then ~ Else ~ IfEnd 

(6) ループ(繰返し)
 ・Goto / Lbl
 ・Do 文: Do ~ LpWhile 
 ・While 文: While ~ WhileEnd 
 ・For 文: For ~ To (~ Step) ~ Next 

(7) 関係演算
 ・= / / > / / < /

(8) 論理演算
 ・And / Or / Not

(9) 配列変数
 ・Z[ ]

(10) リスト
 ・List

(11) 行列
 ・MAT
 ・det( )
 ・Trn( )
 ・MAT A-1
 など

(12) 実行制御コマンド
 ・Prog
 ・Break
 ・Return
 ・Stop

(13) 各種関数
 ・Int( ) / Frac( )
 ・log( )
 など

(14) 出力設定コマンド
 ・EngOn / EngOff
 ・Norm / Fix / Sci
 など


※ CasioBasic 特有のものは、入力:?出力:代入:ジャンプ命令:Dsz / Isz / ⇒ です。これらの中で、特にジャンプ命令は、非常に利用価値の高いものです。


さて、多くのプログラミング言語と比較すると、fx-5800P のCasioBasic で覚えるべき項目は、とても少ないのです。と言うのも、一般的にパソコンでプログラミングを覚えるには、WindowsなどのOSの動作に関する知識、APIやMFC、様々な機能の多層構造などを知らなくてはなりません。プログラミングの本質を覚える前にギブアップとなりやすいのです。

プログラミングの基本は fx-5800P の CasioBasic に凝縮されていると言えます。

[2016/04/23 追記]
fx-9860GII、fx-CG20 を入手し、これらの Casio Basic についても調べています。機種が異なれば、ハードウェアの違いなどから Csio Basic も少し違ったものになっています。グラフィックスに関しては、fx-9860GII について詳しく調べて Casio Baisc入門 G01~G14 で紹介しています。そして、fx-CG20 までを含めて Casio Basic の互換性について調べました。

Casio Basic - 機種別の互換性

これを見て改めて思うことは、機種間の互換性がかなりのレベルで保たれていて、fx-5800P の Basic Basic が基本になっているということです。Casio Basic 入門には 価格面で入手し易い fx-5800P が適していると言えます。

グラフィックスの描画速度が、fx-CG20 よりも fx-9860GII が速いので、グラフィックスまで含めれば、そして余裕があれば、¥10,000 ~ ¥20,000 程度の fx-9860GII が入門機として良いかも知れません。グラフィックス・プログラミングをしないのであれば、fx-CG20 も入門機として問題ないと思いますが、fx-9860GII と同様に価格が気になります。


「CasioBasic入門」では、実際にプログラムを作りながら、これらのコマンド類を解説してゆく予定です。作って面白いプログラムを題材に取り上げたいと考えています。基本は fx-5800P 向けの内容ですが、fx-9860GII への移植についても触れています。


Casio Basic 入門と並行して、コマンドリファレンスも作っています。

⇒ CasioBasicコマンドリファレンス: 目次 (随時拡充中)

当初 fx-5800P 向けに書いていますが、fx-9860GII や fx-CG20 への適用についても、順次付記してゆく予定です。




4. CasioBasicを使ってみる

実際に手を動かしてプログラムを作ってみることが、プログラミングのスタートです。そして、正しく動作する簡単なプログラムを改良することが、プログラミング習得の最短の道だと思います。

そこで、実際にプログラムを一緒に作りながら、ゆっくりと確実に進めてゆきます。



Chapter 0
プログラム作成・実行の操作ポイント

多くの場合、電源を入れると以下のCOMPモードの画面になります。

Compモード 

fx-5800P は電源を切った時の状態が保存され、次に電源を入れた時に保存された状態で画面表示されます。従って電源を入れた時、上記のCOMPモードでない可能性もあります。

fx-5800P では、左上にある [MODE] キーが操作の起点となります。どのような状態であっても、[MODE] キーを押すと必ず以下に示すモード選択画面になります。

ch1-ModeSelect 

このモード選択画面では、メニュー番号を入力する以外に、この画面からの遷移はできません。

通常の電卓の画面にするには、[1] (1:COMP)、プログラムモードにするには、[5] (5:PROG) とします。

[5] (5:PROG) を選ぶと、以下の Program Menu 画面になります。

TC7-ProgMenu 

この Program Menu 画面から抜けるには、[MODE] キーを押してモード選択を行います。

プログラムの作成、実行、編修は、全てこの Program Menu 画面を起点に操作します。
プログラムの作成、実行、編修中に、[EXIT] キーを何回か押せば、必ず Program Menu に戻ります。


プログラムの作成、実行、編修でポイントとなる画面は、以下の4つです;

1) Program Menu 画面: [EXIT] キーを何回か押せばここに戻る

TC7-ProgMenu 


2) Prog Edit 画面: Program Menu から [3] (3:EDIT) で編修するプログラムを選択

TC7-ProgEdit 


3) Prog List 画面: Program Menu から [2] (2:RUN) で実行するプログラムを選択

TC7-ProgList 


4) プログラム編修画面: プログラムの作成、編修を行う

TC3-5 


先ずは fx-5800P の取り扱い説明書 の88ページ以降の説明を読みながら、実際に操作をしてみてください。また、ハードカバーの裏側に説明のあるステッカーが貼ってありますので、それも少しは参考になります。

1. 最も多用するキー
プログラムの編集画面が表示されている時は、

[FUNCTION] キー

[EXIT] キー

[MODE] キー


を押すと、必要なメニューが出てきます。これら3つのキーから始まる操作で、プログラム作成作業の殆どを行えます。


1.1 [FUNCTION] キー
これを押すと出てくるメニューのうち、最も多用するのが、「3:PROG」メニューと、「1:MATH」です。ここから Casio Basic のコマンドを選んで、編集画面でコマンドを書き込みます。

1.1.1 [1] (1:MATH) メニュー
様々な関数を選択して、プログラム編集画面に書き込めます。さらに、ミリ(m)、マイクロ(μ)、キロ(k)、メガ(M)といった、3桁区切りの接尾記号も、その本来の意味で使えます。例えば1000と書く代わりに1kと書けます。
また、"  " で括られた中には、数字やアルファベット以外にも、表示すべき文字列を書き込めますが、「1:MATH」メニューから文字として書き込むこともできます。

1.1.2 [3] (3:PROG) メニュー
ほぼ全てのコマンドを、このメニューから選んで書き込めます。
また、"  " で括られる中には、数字やアルファベット以外にも、表示すべき文字列を書き込めますが、「3:PROG」メニューから文字として書き込むこともできます。例えば、"<EXE>" などという表示は、「3:PROG」 メニューから、大小関係を判定する <> を選んで文字として使えます。


1.2 「EXIT] キー
1つ前の表示に戻るために使います。分からなくなったら、[EXIT] キーを何度か押せば Program Menu へ戻ります。


1.3 [MODE] キー
Program Manu から抜けて、関数電卓の画面へ戻る時には、[1] (1:COMP) を選びます。
もし、うっかり [MODE] を押してしまうことがありますが、そこで出てくるメニューから [5] (5:PROG) を選べば、プログラム編集画面へ戻れます。この場合でも、作業中の内容はj保存されています。



2. プログラム実行の手順

作成したプログラムを実行するには、2つの方法があります。

Program Menu 画面からのプログラム実行
COMPモードからのプログラム実行: [FILE] キー


2.1 Program Menu 画面からのプログラム実行
Program Menu 画面で、[2] (2:RUN) を選び、ここで表示される Prog List からプログラムを選べば、実行できます。

2.2 COMPモードからのプログラム実行: [FILE]キー
[MODE] [1] (1:COMP) で遷移する、通常の電卓画面(COMP モード)で、プログラムを実行したい時に [FILE] キーを押します。そこで現れるプログラムリストから、プログラムを選んで実行します。


2014/01/21追記: 上記いずれの方法においても、プログラムリストが表示されている時、目的のプログラム名の頭のアルファベットを入力すると(例えば "P")、そのアルファベット("P")で名前が始まるプログラム名にジャンプします。もし "P" で始まるプログラムが無い場合は、アルファベット順で "P" よりも後ろの文字で始まるプログラム名までジャンプします。
プログラムリストが表示されている時はアルファベット入力モードになっているので、例えば "P" で始まるプログラムへジャンプさせるには、[ALPHA] キーを押さずに、いきなり [6] キー(このキーの右上にピンク色で "P" と印刷されています)を押すだけのワン・アクションなので、便利です。


3. アルファベットや数字の入力

[ALPHA] キー と [SHIFT] キーを使って、通常入力モード、ALPHAモード、SHIFTモードを切り替えて入力します。

[ALPHA] を押すと、画面左上に A が表示され、ALPHA入力モードになっていることを示し、キーの右上にピンク色で印刷されているアルファベットや記号を入力できます。但し、キーを1つ入力する前に必ず [ALPHA] を押す必要があります。[ALPHA] をもう一度押すと、画面左上の A  が消え、キーに白で印刷されている数字や関数などを入力できます(通常入力モード)。

[SHIFT] を押すと、画面左上に S  が表示され、SHIFT入力モードになっていることを示し、キーの左上にオレンジ色で印刷されている記号や関数を入力できます。もう一度 [SHIFT] を押すと、画面左上の S  が消え、キーに白で印刷されている数字や関数などを入力できます(通常入力モード)。

[SHIFT] を押してから [ALPHA] を押すと、画面左上に A のみが表示され、ALPHA入力モードであることを示し、ALPHAモードで入力できるアルファベットや記号を、連続して入力できます。いちいちキー一つごとに [ALPHA] を押す必要がありません。


これで、プログラムを作成する準備ができました。


つづく...

⇒ CasioBasic入門3 / 目次




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

人気ブログランキングへ


FC2ブログランキングへ


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

商品詳細を見る


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

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

関連記事

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

fx-CG20 の高速化 - Ptune2 の導入

2016/04/23

画像と文章が重なっている場合は、ページを再読込してください(最近この問題が発生しています)。

fx-9860GIIfx-CG20_M 
はじめに

カシオのグラフ関数電卓 fx-CG20 は、fx-9860GII で動作する Casio Basic プログラムの移植性が高く、fx-9860GII から fx-CG20 へのプログラムファイルの転送が簡単にできで、転送してそのまま動作するプログラムもあります。fx-CG20 の最大の特徴は、高精細カラー液晶が搭載されていることでしょう。

そこで、fx-CG20 を fx-5800P や fx-9860GII と比較しながら fx-CG20 の概要 にまとめています。ここでは、オーバークロックを行ってプログラムの処理速度の比較も行っています。

さらに、fx-5800P、fx-9860GII、fx-CG20 の Casio Basic の互換性について Casio Basic - 機種別の互換性 でまとめています。


fx-CG20/10 用のオーバークロック・アドイン Ptune2 は、fx-9860GII 用 Ftune2 を紹介している fx-9860GII のオーバークロック -Ftune2 - からダウンロードできます。



fx-CG20 と fx-9860GII


fx-CG20 を使ってみると、計算処理速度やグラフィックス描画速度が fx-9860GII に比べてかなり遅いことに気付きます。表現力の高い高精細カラー液晶を搭載しているだけに、物足りなさを感じます。


fx-CG20 のアドイン機能

アドイン機能は電卓に新たなプログラムを導入して使うもので、fx-CG20 にもアドイン機能があります。そこで、fx-CG20/10 専用のアドイン Ptune2 で、処理の高速化が可能です。


fx-CG20 の高速化

Casio Basic プログラムを速く動作させるには、ロジックの見直しなどを最初に考えるべきですが、それも限度があります。手っ取り早く高速化するには、そもそも電卓の動作速度を向上すれば良いわけです。そこで役立つのが、 fx-CG20/10 の処理速度を大幅に向上させる、Ptune 2 というアドインプログラムです。

Ptune2 は、当ブログの読者のお一人 sentaro様の作品です。fx-CG20/10 のCPUは、実際の能力よりもかなり低い状態で使われていて、実際の能力を引き出すことで処理速度を高速化するのが、このアドインの仕事です。

sentaro様のオーバークロック・アドインは、以下のカシオのグラフ関数電卓に対応しています。
  • Ftune: fx-9860G、fx-9860GII USB POWER GRAPHIC (いずれもCPUに SH3 を使った製品)
  • Ftune2: fx-9860GII USB POWER GRAPHIC 2 (fx-9860GII はマイナーアップデートしている)
  • Ptune2: fx-CG20、fx-CG10 Prizm (北米専用モデル)
Ptune2 を使うと、fx-CG20/10 はオリジナルの4~5倍の高速化が可能になり、計算量の多いプログラムやグラフィックスプログラムの実行に、このアドインの最大のメリットがあります。


Ptune2 利用の前に

オーバークロックを行う場合の注意事項があります。詳しくは下記記事の オーバークロックとはどのようなものか? を必ずお読み下さい。簡単に言えば、メーカー保証外の使用方法なので、オーバークロックに起因する不具合は保証対象外になります。
fx-9860GII のオーバークロック - Ftune2 -


それでも Ptune2 を紹介する理由

Ptune2 は、海外でも取り上げられており、世界で愛好者が増えています。
その最大の理由が、できるだけ安全に利用できる配慮がされていることです。そして、これまで作者の sentaro様との11ヶ月間以上のやりとりから、プログラミングスキルと、プログラム作成に関する考え方、プログラミングへの取り組む姿勢、そしてお人柄が分かるにつれ、このアドインの安全性への配慮には疑いがないと考えています。

sentaro様の発言は、当ブログ、高機能電卓の情報、Universal Casio Forum 、CEMETECH、に残っていますので、気になる方はじっくりとお読みください(Universal Casio Forum や CEMETEC では sentaro21 というハンドルネームをお使いです)。

オーバークロックには避けられないリスクがあるわけですが、それでも Ptune2 を改めて紹介するのは、この作者個人への信頼性が最大の理由です。Ptune2 は、プリセットされた最大クロックで使う限り、リスクがかなり低いと言って良いと思います。但し、メーカー保証外の機能を引き出すわけで、リスクがゼロではなく、利用者の責任でお使い頂くのは、絶対条件です。

このアドインの性格を正しく理解して、正しく使ってください。


Ptune2 を使ってみよう

先ずは、電卓に保存されているデータやプログラムを全てバックアップしておき、電卓をリスタートしたり工場出荷状態にリセットした後に、データやプログラムを元に戻せるように準備することが最も重要です。

  1. fx-CG20/10 と PC をリンクする: 付属の USBシリアルケーブルでPCと fx-CG20 を繋ぐと、fx-CG20/10 のメモリが、PCの外部ドライブとして認識されます。ファイルのやりとりは、PC上のファイル処理で行えます。
  2. データのバックアップ: PCとリンクした後、fx-CG20/10 のメインメモリ保存メモリの両方のバックアップをPCに保存します。
  3. ダウンロードPtune2 をダウンロードします。間違って FtuneFtune2 をダウンロードしないように!
  4. インストール: PCとリンクした状態で、ダウンロードした Ptune2.g3a を fx-CG20/10 にコピーします。詳しくは、fx-CG20/10 ソフトウェア バージョン 2.02 取扱説明書の第13章 - データ転送 を参照のこと。
  5. MAIN MENU: fx-CG20/10 で [MENU] キーをクリックして MAIN MENU 画面を表示します。
  6. Ptune2 起動: MAIN MENU 画面で、Ptune2 のアイコンを選んで Ptune2 を起動します。
  7. メモリチェック: 始めて起動すると自動的にメモリチェックが始まります。安全対策の1つです。
  8. ノーマルクロック: ノーマルクロックが 58.98MHz と表示されます。
  9. オーバークロック:  [F5] キーを押すと 191.69MHz と表示されます。これでオーバークロック終了です。
  10. MAIN MENU[MENU] キーを押して MAIN MENU に戻ります。
しばらくプログラムを走らせてみたり、その他の電卓の機能を使ってみて、画面表示や、キーの応答性などに異常が無いことを確認します。


さらに高速化してみる
私の事例では、現在使用している fx-CG20 は、オーバークロックで 243.30MHz で動作させています。機種個別に注目点が異なりますので、さらに高速化したい場合の疑問点については、コメント欄でご質問ください。
作者の sentaro様からの回答が貰えるかも知れません。

私の場合は、安全動作できる最高クロックより1段低いところで使う方針にしています。

私の使用機では、250.68MHz で動作するので、一段低い243.30MHz で使うようにしています。
具体的には、Ptune2 を起動して、[SHIFT] [MENU] で出てくる 安全設定メニューで、以下のようになっています。

ROM margin: 3%
RAM margin: 3%
PLL CLK Max: 800.00MHz
CPU CLK max: 250.00MHz
Shw CLK Max: 180.00MHz
Bus CLK Max: 180.00MHz
I/O CLK Max: 24.00MHz
Start MemCK: on
F1 Yes/No: off
Wait Auto -: on
RAM WW Auto: on
ROM IWW At-: on
PFC Auto Up: on
FLL Diso: on
Batt Disp: on

主に、下線の値を変更します。
この設定は、これ以上の厳しい設定が出来なくするためのもので、Ptune2 の安全対策の1つです。
[EXIT] キーを押してメイン画面に戻ってから、[F1] キーでこの設定を保存しておきます。
そして、メイン画面でまず [F5] キーで 191.69MHz にしてから、右矢印キーを押してクロックを上げて行きます。そしてこの設定以上の値にはできないようになっていることを確認しましょう。

電卓個体によって、設定は変わってきますので、デフォルトの [F5] (191.69MHz) より高いクロックに設定する際は、注意が必要です。
何かおかしくなって、リスタートして元に戻るのなら、多くの場合大丈夫のようです。万一 ROM が書き換えられたり消去されると、電卓が起動できなくなり回復不可能になります。

デフォルトの [F5] の 191.69MHz で使えばかなり安心できますので、先ずはここから高速化の世界を体験してみてください。



アマループ

オーバークロックは電力消費が激しいので、2~3日で LOW BATTERY になってしまいます。そこで、ニッケル水素充電池をお勧めします。初期は乾電池よりも電圧が高いのがニッケル水素電池ですが、fx-9860GII では問題なく使えます。

私は、Amazonブランドのエネループ(アマループ(^^;)を愛用しています。富士通グループのFDK株式会社製で、性能は三洋電機が以前製造していたエネループと同等です。三洋電機から正式に製造移管(売却)されて製造していますので、三洋電機製と同等の性能や品質なので、安心しています。特に最新の最高性能である必要もなく、とにかく安い(Panasonic製の半値近い)アマループが気に入っています。

エネループはニッケル水素電池の一種ですが、お勧めの記事;
エネループを購入するときに候補にしたいアマゾン版エネループ、通称『アマループ』ができるヤツ。
アマゾンのエネループ、通称アマループを買ってみた

さらに、詳しく興味があれば以下が面白いです;
第10回:ニッケル水素電池はどれを使えば良い?国内メーカーガチンコ対決!【前編】


アマゾンでは、本日時点で、単四8本パックで、¥1,380 と、市販のエネループの半額近くなっています。
⇒ Amazonベーシック 充電式ニッケル水素電池 単4形8個パック (最小容量750mAh、約1000回使用可能)

私は、充電した4本を常に準備しています。海外出張などでは、8本を持ち歩きます。
1000回充電可能と謳っていますが、経験的には300回程度で充電容量が低下しますが、300回ということは1年以上使える計算で、それが690円(4本分)なので、これで十分でしょう。


補間や持ち歩き用の電池ケースは以下を使っています。
★クリア★単3形&単4形電池兼用電池ケース。単3、単4兼用!収納保管ケースエネループ・エネロング等の充電池の保管に最適!単3形電池なら4本まで単4電池なら5本まで収納可能パーテーション(間仕切り)で電池を固定!

1個99円ですが、配送料が82円かかるので、4つほどまとめて購入しています。このケースは繋げて使えるので便利です。


充電器は、4本同時に充電できて、1本づつ充電状態を制御&表示できる機能のあるものを強く勧めます。私は既に持っていた Panasonic のENELOOP PRO 用の、単三/単四向け充電器を使っています。これで、アマループを含めた全てのニッケル水素充電池に対応するので、敢えてグレードの高いものを購入しました。出張時には持って行きます。





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


人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic

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





関連記事

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

Casio Basic入門1

Casio Basic入門
<目次>

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


はしがき
[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番台では、構造化プログラミングを実現しようとして、うまくいかなかったのではないかと、その跡が感じられます。

グラフ関数電卓での搭載言語は着実な進化を見せました。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関連だと思います。

このような弱点があるものの、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年になろうとしており、FX-603P の製品寿命を超える可能性も見えてきました。使用している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 の後継機種がそろそろ現実性を帯びてきているのではないかと、大きな期待を寄せています。 


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 Prog Calc 
※ 管理人所有のプログラム電卓


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 が大きく進化していることを伝えたいという気持ちもあります。

[2016/04/23 追記]
この連載を始めた当初は、fx-5800P しか持っておらず、その後 fx-9860GII そして fx-CG20 を入手し、それらの Casio Basic でプログラムを作っています。その結果 これら3機種の Casio Basic は互いに一定レベルの互換性が保たれるように考慮されていることが分かっています。fx-5800P で Casio Basic を使いこなせるようになれば、fx-9860GII や fx-CG20 でも問題無く使えるということです。



2. プログラミングとは
[fx-5800P] [fx-9860GII / fxCG20]

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


プログラムって何だ?

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

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

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

言葉に動詞や文型があるように、プログラミング言語にもコマンド(命令)やステートメント(文)があります。これらの単語を覚え、文法を覚えるのは難しくありません。普通の外国語に比べると覚えることはとても少ないのです。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 / 目次




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

人気ブログランキングへ


FC2ブログランキングへ

  

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

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

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

Casio Basicコマンドリファレンス

Casio Basic
コマンドリファレンス

Casio fx-5800P と fx-9860GII、fx-CG20 で確認をとっています。Casio fx-FD10 Pro では互換性はあると考えられますが、実機で確認していないので「可能性」としてご覧ください。
※随時拡充してゆきます
最終:2016/04/23


目 次


◆ 入力
      ? 
      Getkey

◆ 出力
     
      "  "

◆ 代入
     

◆ 画面表示
      Locate
      Cls

◆ 条件分岐
      If文: If ~ Then (~ Else) ~ IfEnd

◆ ジャンプ
      Goto / Lbl
      Dsz命令
      Isz命令
      ⇒命令

◆ ループ(繰り返し)
      Lbl / Goto
      Do文 (Do ~ LpWhile)
      While文 (While ~ WhileEnd)
      For文 (For ~ To (~ Step) ~ Next)

◆ 関係演算
  = / ≠ / > / ≧ / < / ≦

◆ 論理演算
  Or / And / Not

配列変数 (fx-5800Pのみ)

◆ リスト
  List [  ]

◆ 行列計算 (fx-5800P)

◆ 実行制御
  Prog
  Break
  Return
  Stop

◆ 各種関数
  Int / Frac
  log()


◆ 計算結果の出力設定 
  EngOn / EngOff / Eng
  Norm 

グラフィックスコマンド [fx-9860GII]
  ※ 探索集のグラフィックスコマンドをまとめたもの
  ※ コマンドリファレンス作成中





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

人気ブログランキングへ


FC2ブログランキングへ

  

商品詳細を見る

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

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

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

プログラムライブラリ - ピタゴラス数

プログラムライブラリ
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
デバッグ: 2014/12/03
追加:2014/12/06 fx-9860GII プログラム
修正:2015/07/04 fx-9860GII プログラムTypo
追記修正:2016/04/15


ピタゴラス数探索プログラム: PYTHAGORAS

対応機種

・Casio fx-5800P
・Casio fx-9860GII & fx-CG20 (キーコードおよびLocateで設定する座標の変更が必要)

※ Casio fx-CG20/10, fx-FD10 pro でもキーコードおよびLocateで設定する座標を変更すれば、同様に動作すると思われる


プログラムの説明

a2 + b2 = c2 となる自然数の組 (a, b, c) をピタゴラス数という。なかでも a, b, c の最大公約数が 1 の時原始ピタゴラス数という。本プログラムはピタゴラス数の以下の性質を利用して、原始ピタゴラス数を探索して表示する。

ピタゴラス数の性質 

関連記事は以下を参照。

 ・ fx-5800P でピタゴラス数
 ・ fx-9860GII への移植 - ピタゴラス数


プログラムの使い方

・プログラム終了には、[AC] キーを押す。

・動作モード: 「ステップモード」と「連続モード」がある。
ステップモードで [EXE] キーを長押しすると連続モードに切り替わる。
連続モードで [(-)] キーを押すとステップモードに切り替わる。

・プログラム起動時は「ステップモード」である。

・ステップモード
[EXE] キーを押すたびに、次の原始ピタゴラス数を表示する。

・連続モード
次々と原始ピタゴラス数を探索して表示する。


動作画面

プログラム起動時(ステップモード)

Pytha1 

最初に見つかった原始ピタゴラス数を表示している。
起動時はステップモードなので、[EXE] キーを押すと次の原始ピタゴラス数を探索する。

Pytha2 

さらに [EXE] キーを押すと、3つめの原始ピタゴラス数が探索される。

Pytha3 

ここで、[EXE] キーを長押しすると、連続モードに切り替わり、原始ピタゴラス数を次々に探索して表示を続ける。



連続モードでは、[(-)] キーを押すとステップモードに切り替わる。再び [EXE] キーを長押しすると連続モードになる。
連続モードのまま置いておくと、以下のようになる。





プログラムファイル

fx-5800P 用 PYTHAGORAS

Pythagoras_Source 
※ 13行目、15行目、17行目の Locate の空白はスペース14個


▶ fx-9860GII & fx-CG20用 PYTHA

※ プログラムファイル・ダウンロード:
  - fx-9860GII用 PYTHA.g1m
  - fx-CG20用 PYTHA.g3m
 
このソースコードは、fx-9860GII、fx-CG20共通
fx-9860GII PYTHA CB Source 
※ fx-5800P と異なる部分を赤文字で示す。
※ 13行目、15行目、17行目の Locate の空白は、スペース19個

9860_Pytha1 fx-CG20_Pytha 

9860_Pytha2 fx-CG20_Pytha2 







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

人気ブログランキングへ


FC2ブログランキングへ



  

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

商品詳細を見る



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

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


関連記事

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

楽屋裏 - Casio Basic コメントアウト ' のバグ

楽 屋 裏
e-Gadget

追記 2015/07/15
追記 2016/04/09

Casio Basic のコメントアウト ' のバグ報告です。

※ [2016/04/09: カシオの対応を確認]

※ [2015/07/15: カシオに問い合わせた結果を追記]


バグが確認されているのは、以下の機種とOSバージョンです。
  • fx-9860G OS 1.04
  • fx-9860GII OS 2.04 
  • fx-CG20 / fx-CG10 OS2.00
fx-5800P には、コメントアウト機能が無いので、対象外です。


先ず最初に、以下をそれぞれ実行すると、問題ありません。

Locate 1,1,"Line:1"

Text 1,1,"Line:1"

"Line:1"



次に、それぞれをコメントアウトして実行すると、エラーになります。

'Locate 1,1,"Line:1"

'Text 1,1,"Line:1"

'"Line:1"


一方、以下のように区切りコード := に変えれば、コメントアウトしてもエラーになりません。

'Locate 1,1,"Line=1"

'Text 1,1,"Line=1"

"Line=1"


さて、コメントアウト '  について、fx-9860GII OS 2.04 の取扱説明書には、以下のように説明されています。

' (コメント文指定)
機能 : プログラム中にコメント文を挿入します。
解説 : 行の先頭に ' を入力した行はコメント文として扱われ、実行時には無視されます。

仕様通りの動作ではなさそうです。

==========


ここで、1つ前の OS 2.01 でのバグが思い出されます。

Casio Basic のバージョンとバグ

Locate 1,1,"Line:1"

で、エラーになったバグです。" " で囲まれる文字列の中に、区切りコード : が含まれることで、バグが発生しました。字句解析に失敗していたと考えられます。

なお、この OS バージョンでは、旧来の出力命令 " " では、バグが発生していません。例えば、

"Line:1"

はバグになりませんでした。

なお、このバグは、最新の OS バージョンでは解消されていることが分かっています。

==========


現状では、解消したかに見える区切りコード : の字句解析のバグが、コメントアウト ' が絡むと解消されていないようです。

区切りコード : は、fx-9860GII OS2.04 の取扱説明書では、以下のように説明されています。

: (区切りコード)
機能 : 2つの文を結合し、途中で停止せずに、連続して実行します。
解説 : 
・出力コマンド(◢) と異なり、区切りコードで結合した文は途中停止せずに実行されます。
・区切りコードは2つの計算式や2つのコマンドを結合するために使われます。
・区切りコードの代わりに、 (キャリッジリターン)を使うこともできます。


字句解析において、区切りコードが (キャリッジリターン)として認識されているとすると、ここで  記号を使って表現すると、

'Locate 1,1,"Line:1"↵

は、

'Locate 1,1,"Line↵
1"↵


と同じことになり、2行目でエラーになるのは当然です。

ならば、このエラーを解消するには、2行目の最初に ' を追加してコメント文にすれば良いはずです。

'Locate 1,1,"Line↵
'1"↵


これはエラーになりません。それなら、区切りコードを使って元の1行に戻して、

'Locate 1,1,"Line:'1"↵

とすると、エラーにならないことが確認できました。


これで、 ' でコメントアウトされた行の字句解析において、区切りコード : (キャリッジリターン)と解釈してしまっていることが分かります。

==========


結果として、Casio Basic で、 ' でコメントアウトする行に 区切りコード : が含まれると発生するエラーは、面倒でも区切りコードの直後にもう一つ ' を入れることで、対処できることが分かりました。


他のグラフ関数電卓での状況について、情報をお寄せ頂ければ幸いです。
[2015/07/07 追記]
sentaro様からコメント欄で情報をお寄せ頂きました。バグ発生が確認された機種とOSバージョンは記事冒頭に追記しました。


ところで、コメントアウトの入力ですが、[SHIFT] [4] (CATALOG) から、延々と探して入力しています。もっと楽に入力できる方法があれば、教えて頂けませんか?

 ⇒ sentaro様から情報を頂きました。コメント欄にも書いたように、これが使えないと私が思い込んでいましたが間違っていました。

[2015/07/07 追記]
プログラムの編集画面に入った時の状態で、
[F6] (CHAR) [F2] (SYBL) [▶] [▶] [▶] [▶] [▶] [▶] (右矢印6回) で ' を選び、[EXE]


[2015/07/15 追記]
本件、カシオに問い合わせをし、回答を頂きました。
これは、取扱説明書のバグとのことで、次回のバージョンアップで対処するとのことです。

「コメントアウト ' を行頭に付けると、行頭から 区切りコード : 、キャリッジリターン 、出力命令  までをコメント文として扱う」のが仕様であって、次回のバージョンアップ時に下記のように取扱説明書の記載を改訂するとのことです。

【現在の取扱説明書の記載】

 解説:行の先頭に ’ を入力した行はコメント文として扱われ、

 実行時には無視されます。

   ↓

【改訂後の取扱説明書の記載】

 解説:行の先頭に ’ を入力した行は

  :(区切りコード) (キャリッジリターン) ▲(出力コマンド)

 までをコメント文として扱われ、実行時には無視されます。


なお、コメントアウトする場合は、その行にある 区切りコード : 、キャリッジリターン 、出力命令  の直後に ' を入れるのは、正しい対策とのことです。

問い合わせをしてから比較的時間がかかりましたが、取扱説明書の記載の改訂という、結論に至るまでの時間と考えれば、納得です。いつもように真摯な対応でした。


[2016/0409 追記]
本件に関するカシオの見解は、コメントアウトの動作は仕様通りで、むしろ取扱説明書のバグ で、次の取扱説明書の改訂時に修正するとのことでした。

fx-9860GII (バージョン 2.09) ソフトウェア取扱説明書

カシオのサイトで、ソフトウェア取り扱説明書が改訂され バージョン 2.09 になっており、そこでコメントアウトの機能説明が修正されていることが確認されました。



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

人気ブログランキングへ


FC2ブログランキングへ


  


keywords: fx-9860GII、CasioBasicプログラム関数電卓コメントアウトバグ

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

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

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

やす (Krtyski)

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


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

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

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

人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR