インサイドCasio Basic

 目 次
< English | 日本誤 > 

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

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



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

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


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






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


関連記事

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

Inside Casio Basic

 Inside Casio Basic - Index
< English | 日本語

Content is checked by fx-5800P, fx-9860G Sreis (OS 2 or later) and fxCG10/20/50 (OS 2 or later).
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 "CG" (fx-CG10/20/50).
 
Basic Operation CommandsModels *1)
  (Substitution)5800, 9860, CG

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


Copyright (C) 2013 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-9860Gシリーズ、fx-9750GIII 用 g1mファイルのダウンロード・リンク追加 [2015/02/28]
※ fx-CGシリーズ 用 g3mファイルのダウンロード・リンク追加 [2016/04/26]


著作権者

やす (Krtyski)
[当ブログ管理人]



対応機種

Casio fx-5800P、CFX-9850G シリーズ、fx-9860Gシリーズ、fx-9750GIII、fx-7400GIII、fx-CGシリーズ (そしておそらく fx-FD10 Proも対応)

GET KEYCODE は、fx-5800P、CFX-9850Gシリーズ、fx-9860Gシリーズ、fx-9750GIII、fx-7400GIII および fx-CGシリーズ で100%互換性があります。fx-FD10 Pro でも動作すると思われます。

KEYCODE は、CFX-9850G 以降のグラフ関数電卓用で動作する。fx-9860GシリーズのC言語用 Casio SDK で使う Bkey_GetKeyWait( ) 関数の code1 と code2 を併せて表示する機能を追加したもの。グラフ関数電卓の広い画面に合わせて表示も変更しています。fx-CG20 / fx-CG50 へも100%互換で移植できます。



プログラム GETKEYCODE の説明

fx-5800P や CFX-9850Gシリーズ、fx-9860Gシリーズ, fx-9750GIII, fx-7400GIII, fx-CG20/10/50 などに搭載されている 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-9750GIII, fx-9860Gシリーズ や fx-CG20 / fx-CG50でも動作します。
注)fx-5800Pはファイル名に12文字まで使えますが、
  fx-9860Gシリーズ, fx-9750GIII や fx-CG20 / fx-CG50 などでは最大8文字です。
  そこで、これらグラフ関数電卓では、私はファイル名を GETKEY としています。

  GetKeycode_src 

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



ソースコード (KEYCODE) グラフ関数電卓用 [fx-CG20 / fx-CG50でも動作]

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

Casio Basic のキーコード表示と共に、アドイン作成用 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 



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


 




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 用の、単三/単四向け充電器を使っています。これで、アマループを含めた全てのニッケル水素充電池に対応するので、敢えてグレードの高いものを購入しました。出張時には持って行きます。



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


 




keywords: fx-9860GIICasioBasic

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





関連記事

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

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

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

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


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


著作権者

やす (Krtyski)
[当ブログ管理人]



対応機種

・Casio fx-5800P
・Casio fx-9860Gシリーズ、fx-CGシリーズ、fx-9750GIII (キーコードおよび Locateで設定する座標を変更)

※ Casio fx-FD10 pro は fx-9860Gシリーズ用プログラムで動作すると思われる



プログラムの説明

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-9860Gシリーズ、fx-9750GIII & fx-CGシリーズ用 PYTHA

※ プログラムファイル・ダウンロード:
  - fx-9860GII用 PYTHA.g1m
  - fx-CG20 / fx-CG50用 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 





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


 




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 になっており、そこでコメントアウトの機能説明が修正されていることが確認されました。



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


 




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

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

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

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

やす (Krtyski)

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


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

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR