Casio Basic入門1

Casio Basic入門
<目次>

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


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

fx5800P_calcfx-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の開発史 [2019/08/31 追記修正]

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

プログラム関数電卓 fx-4000番台の製品に搭載された言語は、試行錯誤の跡がみられ、このシリーズ最終機種の fx-4850P の搭載言語は中途半端な仕様のまま成功せずに終わったと感じています。fx-4850P のハードウェアデザインは fx-5800P に引き継がれましたが、搭載言語はシリーズ初号機の fx-4000P の仕様が 現在の Casio Basic に引き継がれています。

一方で、グラフ関数電卓での搭載言語は着実な進化を見せました。fx-7400Gで初めてBasicコマンドが搭載され、1996発売の CFX-9850G には、ついに GetkeyLocate コマンドが搭載され、現在の世代のCasio Basic に近づきました。但し空行改行や If 文の Then や Else の直後での改行がエラーになる、コード編集画面がデフォルトで上書きモードになるなど、実用的なプログラミング言語としてはもう一歩という感じでした。しかし、これは Casio Basic の歴史上極めて重要な一歩だと言って良いと思います。GetkeyLocate が、Casio Basic の実用性を格段に向上させているからです。⇒ プログラム電卓温故知新 - CFX-9850G の最後の項目 "プログラム電卓の系譜" を参照。


翌年の 2006年に登場した fx-9860G は、基本的に CFX-9850GC PLUS の Casio Basic をベースに改行の問題を解決し、コード編集画面がデフォルトで挿入モードに変更され、プロット系コマンドのバグとも言える理解不能な仕様がうまく整理されました。ここでようやく現在の "新世代 Casio Basic" が登場しました。

fx-9860G の搭載言語からグラフィックス関連とシリアル通信関連のコマンドを取り去り、さらにいくつかのコマンドを改良したものが fx-5800P に搭載されました。fx-9860G 発売と同年のことでした。


fx-5800P での改良点の代表的なものを挙げてみます。

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

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

fx-9860G にあった グラフィックス関連とシリアル通信関連のコマンドは、fx-5800P にはありません。fx-5800P をプログラム関数電卓に位置づけるなら、グラフィックス関連のコマンドは不要といっても良いと思いまが、シリアル通信関連コマンドは残して欲しかったと思います。さらに、電卓と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-9860Gシリーズで文字列処理コマンドが追加搭載され、ハードウェアとしては高精細カラー液晶搭載した fx-CG10/20 が登場しています。そして 2015年1月時点での最新機種、fx-FD10 Pro は、fx-5800P の利便性と最新の Casio Basic を搭載したハイブリッド機とでも言える、面白い性格を持っています (fx-FD10 Pro は Casio Basic専用機です。fx-9860GII  の基板を使いながらアドインが使えない設定にした判断は、販売戦略上のものなのでしょう)。

[2021/04/18 修正]
気がつけば、新世代Casio Basic搭載のプログラム関数電卓 fx-5800P 製品寿命は、2006年の登場から2021年時点で15年を超えており、1つの製品としては最も長く製造・販売される製品になっています。なお補修用の部品の供給期限が2025年という情報もあるので、現在のところ fx-5800P の後継機種の企画・開発がおこなれているのか、プログラム関数電卓のジャンルは fx-5800P を最後に姿を消すことになるのか、大変気になるところです。
=== 2021/04/18 修正 - ここまで ===

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

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

[2018/10/31 追記]:fx-CG50 が登場
2017年春に fx-CG10/20 の後継機として fx-CG50 が欧米で発売開始され、同年10月に日本国内で発売されました。fx-CG50 は fx-CG10/20 とほぼ同じ仕様で、消費電力が大幅に抑えられ、処理速度が大幅に向上しました。そのデザインは fx-JP900 と極めて似通ったものになりました。

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

カシオは、プログラム電卓については欧米ならびに中国市場を中心に考えているののが残念なところですが、シャープがプログラム電卓開発から事実上撤退している状況で、日本企業として唯一カシオがプログラム電卓の開発を続けていることは、歓迎したいと思います。但し、特にグラフィック関連は、マクロ言語を出自とする故かVRAMへの転送速度が非常に遅いことから、fx-CG50でさえグラフィックスプログラミングを自由に行えるレベルには至っていません。

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

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


fx-5800Pの特徴

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

上て述べたように、fx-5800P の最大の欠点が、作ったプログラムをPCにバックアップすることが出来ない点にある。但し、3pinケーブル (SB-62)を用いて、もう1台の fx-5800Pへ転送することはできます。 ここを参照

この通信ケーブル(3pinシリアルケーブル)は、グラフ関数電卓の国内正規品にUSBケーブルと共に標準添付されています。

==========

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


My_func_calcs_20190803
My_graph_calcs_20190803
 
※ 管理人所有のプログラム電卓


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



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

[2021/04/18 追記]
この連載を始めた当初は、fx-5800P しか持っていなかったのですが、その後 CFX-9850G、CFX-9850GC PLUS、fx-9860G、fx-9860G Slim、fx-9860GII、fx-9860GII SD、fx-CG20、fx-CG50、fx-7400GIII、fx-9860GIII、fx-9750GIII を入手し、それらの Casio Basic でプログラムを作っています。その結果 これらの Casio Basic は互いに一定レベルの互換性が保たれるように考慮されていることが分かっています。fx-5800P で Casio Basic を使いこなせるようになれば、モノクロ液晶 や カラー高精細液晶の グラフ関数電卓でも問題無く使えます。

[2018/12/26 追記]
takumako様により CcLinker が開発され、fx-5800PのPCリンクが実現され、プログラムの保存や導入が容易になりました。
- 開発者 takumako様による CcLinker のサイト
- 当ブログの CcLinker 紹介記事


2. プログラミングとは
[fx-5800P] [fx-9860G (SD) 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プログラミング入門プログラム関数電卓

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

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

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

fx-5800Pプログラミング入門のための CasioBasic入門連載中
 
2014/10/05 修正
2014/12/19 fx-9860GII に関する追記
2015/03/12 Hit & Blow に関する追記
2016/04/26 fx-CG20 に関する追記
2017/08/10 fx-CG50 に関する追記
2018/10/31 CcLinker に関する追記
2020/02/25 大幅な加筆修正
2020/04/02 fx-9860GIII について修正
2020/06/02 fx-9750GIII について追記
2021/03/31 fx-7400GIII について追記

Casio Basicプログラミング入門に役立つと思っている

 fx5800P_calc    fx-9860GII    fx-CG20_mid        fx-CG50_small  
 カシオ  fx-5800P   カシオ fx-9860GII     カシオ fx-CG20       カシオ fx-CG50

 fx-5800P、fx-9860GII、fx-CG20、fx-CG50 に搭載されているプログラミング言語は、欧米ではCasio Basic と呼ばれていて、Basic の一種だ。Casio Basic には一部固有の命令や記法があるが、殆どが一般の Basic と同等の言語仕様となっている。Casio Basic固有の仕様として先ず挙げられるのは、代入に = を使わず → を使う点、そして局所(ロ-カル)変数が使えず大域((グローバル)変数のみが使える点、ユーザーが関数を定義して使えない点、などがある。従って、Casio Basic は構造化Basicではないのだが、構造化プログラミングの感覚で構造制御したコーディングができる。

海外専用モデルの Casio fx-CP400 や fx-CG500 に搭載されている Basic は構造化Basic に近いのだが、ループからの脱出方法に制限があることから使いづらく、そもそも動作速度が極めて遅い。これを使ってプログラミングしたいなどと思えない代物である。この言語は、お題目だけ正しくても実用的でない、発展途上の初期の段階のものだ。

形式上は非構造化Basicであっても、構造化プログラミングの感覚で、Gotoに頼らない構造制御を行い、ブロック構造の直列構造で構造制御が可能な Casio Baisc は実用的な言語と言える。

カシオは、プログラム関数電卓 fx-5800P、グラフ関数電卓 fx-9860GII、fx-CG20、fx-CG50 や土木測量向け電卓 fx-FD10 Pro に  Casio Basic を搭載しており、互いに一定レベルの互換性がある。ハードウェア依存の Getkey コマンドや Locate などの入出力関連コマンドについては、fx-5800P とそれ以外でキーコードや表示文字数の違いがあるが、移植は簡単だ。グラフ関数電卓では、fx-9860G OS2.0 以降で動作するプログラムは、fx-9860GII や fx-CG20 / CG50 でそのまま正常動作する(完全上位互換)。なお、fx-CG50 と fx-CG20 は高解像度カラー液晶を搭載しており、解像度の違いとカラーの取扱に新たなコマンドが追加されている。

管理人が最初に出会った Casio Basic は fx-5800P に搭載されているものだったので、当ブログでは fx-5800P のCasio Basic について詳しく解説している。その後 fx-9860GII や fx-CG20、fx-CG50 の Casio Basic について、fx-5800P からの違いを解説するようになった。一部のコマンドを除いて、機種間の違いは少ない。

機種間での Casio Basic の互換性に関しては、以下の記事を紹介するので、ご参考頂きたい。
 ⇒ Casio Basic - 機種間の互換性
 ⇒ fx-CG20 の概要
 ⇒ fx-5800P / fx-9860GII / fx-CG20 / fx-CG50 プログラムライブラリ - キーコード取得 
 ⇒ fx-9860GII USB POWER GRAPHIC 2
 ⇒ fx-9860GII への移植 - ピタゴラス数
 ⇒ fx-9860GII への移植 - 素因数分解
 ⇒ fx-9860GII への移植 - 厄介な旧来の命令
 ⇒ Casio fx-CG50 の概要

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

この記事を初めて書いた当時は、fx-5800P に比べて、fx-9860GII は3倍程度の価格であった。その後、fx-CG50 が登場し、fx-9860GII が国内では販売中止となった。現在では、 fx-CG50 の価格は 並行輸入品で fx-5800P の2倍以下、Amazon USA で購入する場合は 1.3倍程度と、入手し易くなっている。
Casio プログラム電卓の価格動向

fx-5800P の補修部品の供給が 2025年までとなっているので、fx-5800P はその頃までに発売中止になる可能性が高い。プログラム関数電卓のカテゴリーとして fx-5800P の後継モデルが発売されるかどうかは、まだ分からない。

一方で、新モデルが登場している。fx-9860GIII USB POWER GRAPHIC 3 がヨーロッパ市場向けに2020年3月に発売され、fx-9750GIII POWER GRAPHICS 3 が北米市場向けに2020年4月に発売された。fx-9860GIII と fx-9750GIII は殆ど同じ機能を持ち、明らかに fx-9860GII の後継機である。これら機種は Casio Basic は fx-9860GII と完全互換になっている。

ところで、fx-9750GIII は非常に安い価格設定になっており、fx-9860GIII の半額以下になっている点が興味深い。fx-9750GIII は、セカイモンや Amazon USA を使えば日本国内で7千円台で購入でき、fx-5800P の国内実売価格 (6~7千円台) に近い。既にアナウンスされている fx-74000GIII POWER GRAPHICS 3 は2020年下期にヨーロッパで発売された。

fx-5800P の後継モデルが発売されない場合は、fx-9750GIII や fx-740GIII が fx-5800P を引き継ぐ位置づけになるかも知れない。但し、これら新機種が日本国内で発売されるかどうかは今は不明だ。
⇒  速報! CASIO fx-9860GIII 発売間近? - 新しいプログラム電卓
fx-9860GIII の概要
fx-9750GIII の概要
fx-7400GIII の概要 [2021/03/31 追記]

今のうちに fx-5800P を入手されると良いと思う。 

ところで、 "行番号付きの BASIC" しか知らない方は、Casio Basic は別の新しい言語として捉えた方が良いと思う。


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

パソコンのプログラミング入門で、「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 と同じコマンドが揃っている。

上のコマンドは、それぞれ
  • Goto A は、Lbl A (指定場所)までジャンプしなさい (強制ジャンプ)
  • If の直後の式が正しい場合は Then 以降を実行、そうでなければ Else 以降を実行しなさい (条件分岐)
  • LpWhile 直後の式が正しい間は Do まで戻って処理を繰り返しなさい。LpWhile 直後の式が正しく無い時は Do にジャンプせずに LpWhile の次の行にジャンプしなさい (ループ - 繰り返し処理)
  • While の直後の式が正しい間ば WhileEnd まで実行し While まで戻って処理を繰り返しなさい。While 直後の式が正しくなければ、While まで戻らず WhileEnd の次の行にジャンプしなさい (ループ - 繰り返し処理)
と言う意味だ。英語の意味そのままなので、ちょっと練習すると、簡単にすぐ分かる。

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


プログラム電卓にさせる仕事は、単純な計算だが、条件を種々変更して何度も実行すること、おそらくこれに尽きると思う。
付け加えるならば、パソコンを起動して、上記のような仕事をするには面倒に思う時こそ、プログラム電卓の出番だ。


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

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

プログラミング能力は特別のものでなく、理系か文系、年齢や性別に無関係なのは、IT業界では広く知られている。プログラミング適性は、それ独自のものだ。理系の大学を卒業してもプログラムを書けない人が居ても不思議ではなく、文系でもSEやプログラマで活躍している人が普通にいる。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、P、C といった程度だし、組成比が小数ならば電卓が楽だ。
有機化学なら、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を好む)と圧力の話になると、英語よりも単位換算が追いつかないことも....これはある意味必須で、私の電卓には既に実装済み
Casio Basic で圧力換算プログラム

ゲーム:
プログラミングを始めたら、やはりゲームを作ってみたいものだ。 \(^_^)/
但し、使えるプログラミング言語によって、作れるゲームが大きく異なる。
fx-5800P は動作が遅いのでアクションゲームには不向きかも知れない。

[2014/01/13 追記]
fx-5800Pの実力を確かめるために、アクションゲーム(もぐら叩き)を作ってみたが、そこそこ遊べるゲームが出来た。
【2017/08/10 追記】 もぐら叩きをプログラムライブラリに収録した。
 ⇒
プログラムライブラリ - もぐら叩き (fx-5800P)
 ⇒
プログラムライブラリ - もぐら叩き (fx-9860GII)
 ⇒
プログラムライブラリ - もぐら叩き (fx-CG20 / fx-CG50)

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

[2015/03/12 追記]
Hit & Blow を グラフ関数電卓 fx-9860GII や fx-CG20 / fx-CG50 にも移植した。fx-5800P用 ならびにグラフ関数電卓 用の Hit & Blowを プログラムライブラリに収録した。
 ⇒
プログラムライブラリ - Hit & Blow


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


fx-5800P はプログラミング入門に役立つと思う理由

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

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


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

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

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

構造化プログラミングのエッセンスに従って分かり易いプログラムを書ける (構造化プログラミングができる) ので、決してバカにしてはいけない。実用的なプログラムを作れる程度に高機能なのだ。最近発売された 土木測量向け fx-FD10 pro には予め土木・測量で有用なプログラムが搭載されているが、これらは Casio Basicで記述されている。

多くの方のパソコンに入っている EXCELで使えるVBAはBasicだから簡単そうに見え、入門者向けのように言う人も居るが、実はそうでもない。簡単なプログラムでもちゃんと動かすまでに覚えることがそれなりに有る。Webで良いブログを見つけて読み込むか、本を1冊か2冊買って勉強して、Windowsの知識やオブジェクト構造の理解が無いと、Basic のコマンドを知っていても、やりたいことがスグにできないのだ。

私は、CASIOのプログラム電卓しか触ったことが無く、SHARP、HP、TI などのプログラム電卓の言語がどのようなものかは表層的な知識でしか知らない。さらに、全てのCASIO製プログラム電卓を触ったわけでもない。私が触ったことのある製品は、古いもので FX-502P、FX-602P、FX603P、fx-4000P、fx-4500P、fx-7000G、CFX-9850G、fx9850GC PLUS。そして 新世代Casio Basic を搭載している fx-9860G、fx-9860G Slim、fx-5800P、fx-9860GII、fx-9860GII SD、カラー液晶搭載の fx-CG20、fx-CG50、そして最近のモノクロ液晶搭載のfx-9860GIII、fx-9750GIII、fx-7400GIII だ。

これらの機種やパソコンでのプログラミング経験 (C / C++ / C# / VB) から、Casio Basic は入門に役立ち、経験者にはスグに使える実用的な言語だと思う。
Casio  Basic の勧め


fx-5800P がPCリンク可能になっている

2018年に入ってから、ついに fx-5800P がPCリンク可能になり、PC上で コーディングできるようになった。

ついに fx-5800P がPCリンク可能になった
fx-5800P Casio Basic をPCでコーディング

なお、fx-9860GII、fx-CG50、fx-9860GIII、fx-7400GIII はいずれもUSBケーブルを使ってPCリンクが可能だ。


残念なことに...

Casio Basic は実用的なプログラムを作れる程度の機能があるのだが、残念なことに取扱説明書の中でプログラミングに関する説明は、あまりに簡素化されすぎている。プログラミングの素養のある人が見て分かるような書き方しかされていない。


そこで...

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

 ⇒ CasioBasic 入門 - 目次-
 ⇒ CasioBasic コマンドリファレンス -目次-
 ⇒ 逆引き Casio Basic -目次-
 ⇒ プログラムライブラリ




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


 


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

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

続きを読む

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

fx-5800P プログラムライブラリ - Time Zone

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

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

最終更新:
2021/02/11

Time Zone (2021年版)

※ CcLinkerでfx-5800Pに転送できる CCLファイルのダウンロードができます
2021年のヨーロッパ・北米夏時間に対応 [2021/02/11]
※※ プログラム改善: >>>> 表示で何も入力せず確定時、値が 0 に変更されていたのを変更しないように改善 [2017/08/14] 


著作権者

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



対応機種

Casio fx-5800P 専用
Casio fx-9860G / fx-9860GII シリーズ、fx-CG10、fx-CG20、fx-CG50 用は こちら



プログラムの説明

TimeZone の作成方法は Casio Basic 入門をご覧下さい。

Time Zone は、日本、ヨーロッパ、北米での同じ時間を表示します。その際、タイムゾーンや夏時間を考慮した時間を計算します。

具体的には、3カ所のうち、どこか一カ所の時間を入力すると、時差を計算して他の二カ所の時間を表示するプログラムです。

例えば、日本、ドイツ、モントリオールの3カ所から接続して電話会議を行う時に、それぞれが夜中にならないように時間を決める時などに役立ちます。

2021年の夏時間期間:
 ・ヨーロッパ: 3月28日 午前1時 ~ 10月31日午前2時
 ・北米:3月14日午前2時 ~ 11月7日午前2時
TimeZoneでは、
 ・ヨーロッパ:3月28日 ~ 10月30日
 ・北米:3月14日 ~ 11月6日
としています。

以下のタイムゾーンや夏時間の設定が行えます。

- 日本
 JST: 日本標準時間

- ヨーロッパ
 WET: 西ヨーロッパ標準時間
 CET: 中央ヨーロッパ標準時間
 EET: 東ヨーロッパ標準時間
 FET: 極東ヨーロッパ時間

 WEST: 西ヨーロッパ夏時間
 CEST: 中央ヨーロッパ夏時間
 EEST: 東ヨーロッパ夏時間
 FEST: 極東ヨーロッパ夏時間
EU-TZ 

- 北米(アメリカ、カナダ)
 PST: 太平洋標準時間
 MST: 山岳部標準時間
 CST: 中部標準時間
 EST: 東部標準時間

 PDT: 太平洋夏時間
 MDT: 山岳部夏時間
 CDT: 中部夏時間
 EDT: 東部夏時間

US-TZ 



プログラムの使い方

0:JST - 日本時間 の入力と表示
       [0] キー: 日本時間入力

1:CET - ヨーロッパ時間の入力と表示
       [1] キー:    ヨーロッパ時間入力
       [1] キー長押し: ヨーロッパ内のタイムゾーン設定
       [3] キー:    ヨーロッパの夏時間ON/OFF
       [3] キー長押し: 夏時間の期間を表示
     
2:EDT
- 北米時間の入力と表示
       [2] キー:    北米時間入力
       [2] キー長押し: 北米内のタイムゾーン設定
       [4] キー:    北米の夏時間ON/OFF 
       [4] キー長押し: 夏時間の時間を表示

[3] キー、[4] キー長押しで表示される夏時間について:
(2018年版) 夏時間の開始と終了は、ヨーロッパでは午前1時、北米では午前2時となっています。本プログラムでは、夏時間終了日を実際の設定日の前日を表示するようにしています。終了設定日の午前0時から午前1時 / 午前2時までの時間帯は、本来まだ夏時間のままですが、寝静まっている時間帯なので無視しています。現実的には問題ないと思いますが、留意してください。


プログラムの構成

メインプログラム: TIMEZONE
サブルーチン: TZCTZDTZMTZS
入力ボックス: INPI



プログラムファイルのダウンロード

CcLinker で fx-5800P に転送できるCCLファイルのダウンロー
  ※ 上記6つのプログラムファイルに対応するCCLファイルが含まれます。
  CcLinkerの紹介

※ fx-5800P でのみ動作します。
fx-5800P 用入力ボックス INPI が必要です。
2021年版対応は、TSZ のみの更新です。






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


 


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

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


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

プログラムライブラリ - TimeZone

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

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

最終更新:
2021/02/11

Time Zone (2021年版)

2021年のヨーロッパ・北米夏時間に対応 [2021/02/11]
※ プログラム改善: >>>> 表示で何も入力せず確定時、値が 0 に変更されていたのを変更しないように改善した [2017/08/14]


著作権者

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



対応機種

  1. Casio fx-9750GIII, fx-9860Gシリーズ (G, GII, GIII) で動作する純正Casio Basic および C.Basic for FX 用
    g1mプログラムファイルのダウンロード
  2. Casio fx-CGシリーズ で動作する純正Casio Basic および C.Basic for CG 用
    (fx-FD10 Pro の純正Casio Basicでも動作すると思われます)
    g3mプログラムファイルのダウンロード
  3. Casio fx-7400GIII で走る純正 Casio Basic 用
    (他のグラフ関数電卓よりも機能制限されている fx-7400GIII の Casio Basic に対応したもの)
    fx-7400GIII専用 g1mプログラムファイルのダウンロード
Casio fx-5800P 用は こちら



プログラムの説明

TimeZonefx-5800P用に作成したプログラムを移植したものです。プログラム作成方法については Casio Basic 入門をご覧下さい。

TimeZone は、日本、ヨーロッパ、北米での同じ時間を表示します。その際、タイムゾーンや夏時間を考慮した時間を計算します。

具体的には、3カ所のうち、どこか一カ所の時間を入力すると、時差を計算して他の二カ所の時間を表示するプログラムです。

例えば、日本、ドイツ、モントリオールの3カ所から接続して電話会議を行う時に、それぞれが夜中にならないように時間を決める時などに役立ちます。

2021年の夏時間は、
 ・ヨーロッパは、3月28日午前1時 ~ 10月31日午前2時
 ・北米は、3月14日 午前2時 ~ 11月7日午前2時
となります。
TimeZone では、
 ・ヨーロッパは、3月28日 ~ 10月30日
 ・北米は、3月14日 ~ 11月6日
としています。

夏時間開始と終了の日付の情報が、サブルーチンファイル TZS 内に記載されているので、このファイルのみを書き換えるか更新すれば、2021年対応ができます。

本プログラムでは、以下のタイムゾーンや夏時間の設定が行えます。

- 日本
 JST: 日本標準時間

- ヨーロッパ
 WET: 西ヨーロッパ標準時間
 CET: 中央ヨーロッパ標準時間
 EET: 東ヨーロッパ標準時間
 FET: 極東ヨーロッパ時間

 WEST: 西ヨーロッパ夏時間
 CEST: 中央ヨーロッパ夏時間
 EEST: 東ヨーロッパ夏時間
 FEST: 極東ヨーロッパ夏時間
EU-TZ 

- 北米(アメリカ、カナダ)
 PST: 太平洋標準時間
 MST: 山岳部標準時間
 CST: 中部標準時間
 EST: 東部標準時間

 PDT: 太平洋夏時間
 MDT: 山岳部夏時間
 CDT: 中部夏時間
 EDT: 東部夏時間

US-TZ 



プログラムの使い方

0:JST - 
日本時間 の入力と表示
       [0] キー: 日本時間入力

1:CET - ヨーロッパ時間の入力と表示
       [1] キー:    ヨーロッパ時間入力
       [1] キー長押し: ヨーロッパ内のタイムゾーン設定
       [3] キー:    ヨーロッパの夏時間ON/OFF
       [3] キー長押し: 夏時間の期間を表示
     
2:EDT
- 北米時間の入力と表示
       [2] キー:    北米時間入力
       [2] キー長押し: 北米内のタイムゾーン設定
       [4] キー:    北米の夏時間ON/OFF 
       [4] キー長押し: 夏時間の時間を表示

[3] キー、[4] キー長押しで表示される夏時間について:
夏時間の開始と終了は、午前1時や午前2時などの深夜0次に近い時間設定になっています。本プログラムでは、これらの深夜の時間を午前零時に読み替えて、キリのよい日付を夏時間の句切りの日として扱っています。午前零時から実際の句切りの時間までは、1時間~2時間のズレがありますが、寝静まっている時間帯なので現実的には問題ないと思います。この点は留意してください。



プログラムの構成

メインプログラム: TIMEZONE
サブルーチン: TZCTZDTZMTZS、TZL
入力ボックス: INPI



プログラムファイル - TIMEZONE

※ fx-9750GIII、fx-9860Gシリーズ、fx-CGシリーズ の純正Casio Basic ならびに C.Basic、そして fx-7400GIII の純正Casio Basic で動作します。

fx-9860G/GII、fx-CG10/CG20/CG50、そして fx-7400GIII 専用の入力ボックス INPI がそれぞれ必要です。

  • TIMEZONE には、入力ボックス INPI が必要です(ダウンロードファイルに含めています)。
  • g1m プログラムファイルは fx-9860GII あるいは fx-7400GIII 用ですが、変更せずそのまま fx-CGシリーズに転送すると正常動作します。但し fx-CGシリーズに転送後自動的にg3m プログラムファイルに変換されます。
  • サブルーチン TZL は、C.Basic で使用するものです。但し純正Casio Basic では実行が無視されるので転送しても問題ありません。
  • メインルーチン TIMEZONE の1行目の 300→L はキー長押し時間を決める。長押しと認識するまでの時間を短くするにはこの数値を小さくする。長くするには数値を大きくする。
  • C.Basic では 現在設定されている実際の実行速度に対応して サブルーチン TZL で長押し時間を自動調整しているので、1行目での長押し時間の設定は動作に影響しない。これは特にオーバクロック時に有効。
  • ヨーロッパと北米の夏時間期間表示は、サブルーチン TZS にある。2017年の夏時間に対応した変更を行っている。 



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


     


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

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


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

プログラムライブラリ - 入力ボックス 2.1G

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

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

2015/01/23
2015/08/05 記述修正
2016/12/24 追記修正
2017/11/06 修正
2020/11/28 追記


入力ボックス 2.1G - グラフ関数電卓専用
<fx-9860G / SD / Slim, fx-9860GII / SD, fx-9860GIII, fx-9750GIII, fx-7400GIII >
fx-CG20, fx-CG50 >
INPI、INP、IN 2.1G - 汎用サブルーチン

※ g1mファイルのダウンロード・リンクを追加 [2015/02/28]
※ g3mファイルのダウンロード・リンクを追加 [2016/04/17]


著作権者

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



対応機種

Casio fx-9750GIII, fx-9860Gシリーズ(G, GII, GIII) / fx-CGシリーズ 専用
(fx-FD10 Proでも動作すると思われます)

Casio fx-7400GIII 専用 を追加 [2020/11/28]

Casio fx-5800P 専用は こちら



プログラムの説明

INPI / INP / IN 2.1G (グラフ関数電卓 fx-9860GII、fx-CG20、fx-CG50 専用) は、fx-9860GII や fx-CG20、fx-CG50 のCasio Basic プログラミングで、好みの位置に好みの桁数で数値を入力させる機能を実装する、汎用サブルーチンです。

画面構成を崩さずに数値を入力させるプログラムを簡単に作れるので、換算プログラムなどに最適です。

Casio Basic の入力命令 ? は、入力行を選べず、入力結果は改行されて右端に表示され、入力するたびに画面がスクロールするので、入力位置と入力結果の表示位置を選べません。もう一つの入力コマンド Getkey はキー1つが押されたことを検出するものなので、そのままでは複数桁の入力や編集に使えません。

そこで画面設計をしたプログラムで使うため、Windows などの Edit Box に近い入力機能をCasio Basic に提供するのが入力ボックスです。

以下の3種類の入力ボックスを用意しました。

1. INPI 2.1G
0以上の整数入力のみに対応。0以上の整数入力のみを行わせたいプログラムで使うことを想定しており、負数や小数入力のエラーチェックが不要になる。

2. INP 2.1G
0以上の整数/小数入力のみに対応。0と正の小数のみの入力を行わせたいプログラムで使うことを想定し、負数入力のエラーチェックが不要になる。

3. IN 2.1G
正負小数/整数の入力に対応、最も汎用性のある入力ボックス。


INPI、INP、IN 2.1G (fx-9860GII & fx-CG20 専用) の詳しい説明は、Casio Basic入門37 を参照。



入力ボックスの概要

Basic コマンドの使い方は、

[コマンド] [設定1],[設定2],[設定3], ...

といった使い方になります。

一方、入力ボックスはサブルーチンです。サブルーチンを呼びだす時に色々な設定を一緒に指定することができません。そこで、

[入力ボックスの設定]
Prog "入力ボックス"
[結果の受け取り]


といった書式になります。

入力ボックスには、使い勝手を考えて複数のバージョンがあります。

入力する数値の種類キーリピート抑制が
バージョン(Ver2.1G)
プログラム名
0以上の整数INPI Ver2.1GINPI
0以上の小数と政数INP Ver2.1GINP
正負の小数と整数IN Ver2.1GIN

入力する数値の種類により使い分けると、入力制限にうまく利用できます。


プログラムの使い方

メインルーチンから以下の書式で呼び出します。

→X:→Y:→D:→E
Prog "INPI"
Z→■


□ は任意の数、■ は任意の変数、但し使用機種の画面範囲内に収まるように設定する。
  参考 fx-9860GII、fx-CG20: 1≦X≦21、1≦Y≦7、X+D≦21

- X: 入力ボックス表示開始桁
- Y: 入力ボックス表示開始行
- D: 入力ボックス桁数
- E: 入力ボックスインジケータの選択
   E=2: 画面右下に <EXE>:ENTER と表示
   E=1: 画面右下に ▶E と表示
   E=(上記以外): インジケータ非表示
- Z: 入力ボックスで確定した数値が代入される

入力ボックス内部では、上記5つの変数以外に、CIF (F は、INPIN の場合のみ)、行列を用いています。これらの変数は、入力ボックスを呼び出すたびに格納されている数値が変更されます。メインルーチンでこれらと同じ変数を使う場合は、入力ボックスを呼び出すたびに変更されても良い変数として使ってください。特に行列は、入力ボックス内で 領域確保を行い、メインルーチンに戻る前に領域解放を行いますので、それを念頭に置いて使ってください。



使用例

呼び出しルーチンのプログラム例を掲載します。
・ 予約変数は S, T, U, V
これを元に色々なプログラムを作ってみると、楽かも知れません。

0→S:0→T:0→U:0→V  [予約変数の初期化]

Locate 1,1,"1:"      [初期画面表示]
Locate 1,2,"2:"
Locate 1,3,"3:"
Locate 1,4,"4:"

While 1            [無限ループ、[AC] キーでプログラム終了]

-1→M             [メニュー選択] 
Do:Getkey→K
LpWhile K=0
K=35⇒1→M
K=36⇒2→M
K=37⇒3→M
K=21⇒4→M

Locate 1,4,"        " (スペース16個)

If M=1:Then        [INPIを使った入力処理]
3→X:1→Y:8→D:2→E
Prog "INPI":Z→S
Else If M=2         [INPを使った入力処理]
Then
3→X:2→Y:6→D:2→E
Prog "INP":Z→T
Else If M=3         [INを使った入力処理]
Then
3→X:3→Y:4→D:1→E
Prog "INPI":Z→U
Else If M=4
Then
3→X:4→Y:2→D:1→E
Prog "INPI":Z→V
IfEnd:IfEnd
IfEnd:IfEnd

Locate 1,4,"Z="
Locate 3,4,Z

WhileEnd

※ 仕様例プログラムファイル (INTEST) のダウンロード
 - input_test.g1m (fx-9860GII用)
 - input_Test.g3m (fx-CG20 用) 



プログラムファイル

ファイル一式のダウンロード

fx-9860GII用プログラムファイル一式 (ZIPファイル)
  INPI.g1m, INP.g1m, IN.g1m, INTEST.g1m を含む

fx-CG20用プログラムファイル一式 (ZIPファイル)
  INPI.g3m, INP.g3m, IN.g3m, INTEST.g3m を含む

fx-7400GIII用プログラムファイル一式 (ZIPファイル) [2020/11/28 追記]
  INPI.g1m, INP.g1m, IN.g1m, INTEST.g1m を含む
  - 実装されていない行列機能の代わりにリストを使用
  - g1mファイルが動作する他のグラフ関数電卓から 3Pinケーブルを使って転送する必要がある




プログラム - INPI Ver 2.1G: プログラム名 INPI

プログラムファイル INPI.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル INPI.g3m (fx-CG20 / fx-CG50用)のダウンロード [2016/04/17 追記]
fx-9860GIIへの転送方法の簡単な説明

INPI Ver2.1G for fx-9860GII 

注1) 下から9行目の Locate X+C+I-1,Y, " " の " " は、スペース1個
注2) 下から6行目の Locate 6,4, "           " の " " は、スペース11個
注3) 下から4行目の Locate 15,4,"  " の " " は、スペース2個


プログラム - INP Ver 2.1G: プログラム名 INP

プログラムファイル INP.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル INP.g3m (fx-CG20 / fx-CG50用)のダウンロード [2016/04/17 追記]

 INP Ver2.1G for fx-9860GII 

注1) 下から9行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から6行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個


プログラム - IN Ver 2.1G: プログラム名 IN

プログラムファイル IN.g1m (fx-9860GII用)のダウンロード [2015/02/28 追加]
プログラムファイル IN.g3m (fx-CG20 / fx-CG50用)のダウンロード [2016/04/17 追記]

IN Ver2.1G for fx-9860GII 

注1) 下から10行目の Locate X+C+I-1,Y," "  の " " はスペース1個
注2) 下から6行目の Locate 6,4,"      " の " " はスペース11個
注3) 下から4行目の Locate 15,4,"  " の " " はスペース2個



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


 




keywords: fx-9860GIICasioBasic、プログラムライブラリ入力ボックスプログラム関数電卓

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


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

プログラムライブラリ - RGB指定による色確認プログラム

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

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
2018/01/13
アップデート 2018/03/25
アップデート 2020/10/31

[C.Basic] [CG]
RGB指定による色確認プログラム:
  RGB2ap - RGB Ver 1.2ap <シンプル機能版> 
(マイナーアップデート)
  RGB4c   - RGB Ver 1.4d
 
(マイナーアップテート)
  RGB5a   - RGB Ver 1.5b (マイナーアップデート)
 ※ C.Basic for CG 最新バージョン Ver 1.45 build20 に対応した機能改善アップデート
 

著作権者

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


対応機種

Casio fx-CGシリーズ (CG10 / CG20 / CG50)


動作環境

C.Basic for CG Ver 1.45  build 20 以降


プログラムの説明

このプログラムは、一見アドインプログラムに見えますが、Casio Basic 上位互換の C.Basic (つまり BASIC) で書いたものです。チョット大がかりですが C.Basic for CG のサンプルプログラムにもなると思います。

さて、fx-CGシリーズに搭載されている高精細液晶 (216x384 pixel、16bitカラー、65536色)は、プログラムの出力に大きな表現力を与えてくれます。純正Casio Basic では 基本7色 (Black, Blue, Red, Magenta, Green, Cyan, Yellow) のみを設定できますが、C.Basic for CG では基本7色に加えて RGB値での色設定ができます。

そこで、プログラム作成時の配色を検討するためにRGB設定による実際の色を確認するプログラムを作りました。テキスト文字色、テキスト背景色、グラフィックス描画の色、それらの配色を確認できます。

RBG4d はRGB値それぞれに、0 ~ 255 を設定できる 24 bit フルカラー対応バージョンです。但し、fx-CGシリーズのカラー液晶はフルカラーではありません。

そこで、fx-CGシリーズ搭載のカラー液晶の実際の仕様に合わせた 16bit カラーバージョンの RGB5b を作りました。
fx-CGシリーズの 16bitカラーは R と B が 5 bit (32階調)、G が 6 bit (64階調) なので 65,536色です。24 bitフルカラーの 16.777,216 色に比べて使える色が少なくなっていて、実際のRGB値は 0 ~ 255 の連続した整数値ではなく、R と B は 0 ~ 248 の8刻み、G は 0 ~ 252 の 4 刻みで色が変化します。これは、RGB4d で操作すると確認できます。

そこで 16 bit カラーに対応した RGB5b を使えば、fx-CGシリーズの液晶が取り得る RGB 値を正しく調べられます。但し、24 bit カラーの RGB値を指定しても問題はありませんが、意図した色にならないことが有るのは、電卓側の仕様です。 


ダウンロード

24bit カラーバージョン シンプル機能版 - RGB2ap (Ver 1.2ap)
 24bit カラーバージョン - RGB4d (Ver 1.4d)
 16bit カラーバージョン - RGB5b (Ver 1.5b)
※ RGB4d (Ver 1.4d) / RGB5b (Ver 1.5b) は機能を詰め込みすぎて、使い方が判りにくくなっています。そこでRGB値の確認を簡単に調べるだけの機能に限定した シンプル機能版 を RGB2ap (Ver 1.2ap) として改めて公開しました。


プログラムの使い方 - RGB4d (Ver 1.4d) / RGB5b (Ver 1.5b)

起動すると、モード選択画面がポップアップ。
左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer1.5b
RGB4d_StartUp RGB5b_StartUp
[F1] でテキスト文字主体の配色確認モード、[F2] でグラフィックスを含んだ配色確認モードでプログラムが起動。

※ テキストモード
左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer 1.5b
RGB4c_Txt_Mode.png RGB5a_Txt_Mode.png 
テキストモード(テキスト主体の配色確認モード)。テキスト色 (前面色)のRGBにマーカーが付いている。

※ グラフィックスモード
左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer 1.5b
RGB4c_Grph.png RGB5a_Grph.png 
グラフィックスモード(グラフィックスを含めた配色確認モード)。背景色のRGBにマーカーが付き、テキスト背景と2つの円の配色が表示される。円の2つの配色は、テキストの背景色2つと対応している。

操作は、ファンクションキー  [F1][F6]、テンキー [1][3]、その他6つのキー [SHIFT] [ALPHA] [OPTN] [X2] [VARS] [∧] を使う。

テキストモードとグラフィックスモードは設定が異なるだけ。テキストモードで起動した後、例えば [SHIFT] [ALPHA] [SHIFT] と順に押せば、グラフィックスモードで起動した時と同じ状態になる。

[F5] (HELP) で簡易的な操作説明を表示する。

左が 24bit カラーバージョンの Ver 1.4d、右が 32bit カラーバージョンのVer 1.5b
RGB4d_QH RGB5b_QH
上下矢印キーでスクロールできる。現在のところ、英数字・記号しか出力できないので英語表記になる。そこで、[F6] (QR) で日本語クイックヘルプへのリンクをQRコードで示す。

RGB4b_5.png 

スマホやタブレットなどでQRコードを読み込めば、日本語クイックヘルプのページが読める。


キー操作

[F6] (EXIT) / [EXIT]:プログラムの終了

[ALPHA] / [ ) ]:カラーサンプルエリアの切替え
  RGB4b_6.png 
  2つ(2行)のカラーサンプルエリアを切り替える。
  マーカー が選択されているカラーサンプルエリアを示す。
  ※ Text モードでの起動時は、エリアは1つだけ表示

[OPTN] / [cos]:変更するRGBエリアの切替え
  RGB4b_7.png 
  上がテキスト文字色のRGB値、下が背景 / グラフィックスのRGB値。
  カーソルや直接入力での変更対象は、マーカー▶が付いているRGBエリア。

[SHIFT] / [sin]:テキストの背景の表示/非表示切替
  RGB4b_8.png 
  [ALPHA]で選択したテキストの背景色を非表示

  RGB4b_9.png 
  [ALPHA]で選択したテキストの背景色を表示
  ※ [SHIFT] / [sin] を押す度に切り替わる(トグル動作)

[◀] / [▶]:変更したいR, G, B へカーソル移動
  RGB4b_10.png 
  左右の矢印キーで、変更したいR、G、Bにカーソル ←↕→ を移動。

[▲] / [▼]:R、G,B値の連続変更(スキャン)
  RGB4b_10.png 
  上下の矢印キーで、カーソル ←↕→ とマーカーのある値を変更。
  上の例では、テキスト色のR値が変更対象。
  ※ 通常押しだと、1つづ値が変わる(ステップスキャン)。
  ※ 長押しするとデフォルトで値が±20スキップする(スキップスキャン)。
  ※ 長押しで値が 0 か 255 付近になると、スキップが遅くなる。

[F1] / [1] (R)、[F2] / [2] (G)[F3] / [3] (B):RGB値を直接入力
  RGB4b_11.png 
  RGB値を直接キー入力する。

[EXE]:RGB値を直接入力
  RGB4b_10.png 
  [EXE] でカーソル ←↕→ とマーカーがあるところに直接キー入力。
  上の例では、テキスト色のR値が入力を受け付ける。

[F4]:基本7色に加えて White に変更
  RGB4b_11.png 
  [F4] を押すと、カーソル ←↕→ とマーカー▶のある値を、
  基本7色 (Black, Blue, Red, Magenta, Green, Cyan, Yellow)に加えて
  White に変更する。押す度に順に切り替わる。
  ※ 7色カラーバーで現在選択されている基本色に白線のマーカーを表示。
  ※ 矢印キーや直接入力した時、基本色+Whiteの場合、[F4]ファンクションに色を表示。
  ※ 基本色以外の時は、[F4]ファンクションに Color と表示

[∧] / [→]:テキスト色と背景色を同じ色に変更
  左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer 1.5b
  RGB4c_Back.png RGB5a_Back.png 
  [OPTN]でRGBエリアをで切替え、マーカーで指定されている色を、
  テキスト色と背景色に適用する。
  ※ 結果的にテキストが消える。

[VARS] / [tan]:テキストと背景を互いに補色にする
  左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer 1.5b
  RGB4c_CC.png RGB5a_CC.png 
  [OPTN]で選びマーカーが付いたRGBエリアの補色をもう一方のRGBエリアに適用する。
  ※ テキストRGBエリアを選んでいると、背景が補色になる。
  ※ 背景RGBエリアを選んでいると、テキストが補色になる。
  ※ R=G=B の時は、補色ではなくて反対色を適用する。

[X2] / [ , ]:背景色に補色を適用する
  左が 24bit カラーバージョンの Ver 1.4d、右が 16bit カラーバージョンのVer 1.5b
  RGB4c_CC2.png RGB5a_CC2.png 
  [ALPHA]で選んでマーカーが付いたカラーサンプルエリアの背景色に、
  [OPTN]で選びマーカーが付いたたカラーエリアの色の補色を適用する。
  ※ テキストのRGBエリアにが有る時は、が付いていない方の背景が補色になる。
  ※ 背景のRGBエリアにがある時は、が付いていない方の背景が補色になる。

右手操作のための代替キー
  RGB4b_keys 
  左上の6つのキーと、右手で操作するための右下の代替キーは、
  同じ機能が同じ配置になっている。
  ※ [SHIFT] = [sin]、[OPTN] = [cos]、[VARS] = [tan]
    [ALPHA] = [ ) ]、[X2] = [ , ]、[∧] = [→]


ソースコード

[2018/01/20]
Ver 1.2a 以降で、C.Basicタイマーの時間を 00:00:00 にリセットしてしまうコードが含まれており、時計の時間がリセットしてしまう問題がありました。C.Basic for CG のマイナーアップデートでこの問題を解消しました。C.Basic for CG Ver 3.3α [2018/01/20 17:00] 以降にダウンロードしたものをお使いください。

背景色を[SHIFT]で解除しテキストRGB値を[▲]/[▼]でスキャン時、背景RGB値のちらつきを抑制しました。


謝 辞

本プログラムは、sentaro様、ツル様からのアドバイスや要望により各種機能や表示を追加したものです。両氏にお礼申し上げます。


過去バージョン [2020/10/31] 追記

Ver 1.1 - RGB [download]
テキスト色のRGB値をキー入力のみで設定する最初のバージョン

Ver 1.2 - RGB2 [download]
RGB値をカーソルキーでスキャン可能にした。

Ver 1.2a - RGB2a [download]
[F4]での基本色設定に White を追加、ヘルプ機能を追加した。

・Ver 1.2ap - RGB2ap (download)
Casio Python での RGB値 の解説のために Ver 1.2a の操作性を改善して公開した。

Ver 1.2b - RGB2b [download]
テキストのみのカラーサンプルエリアを2つに増やした。

Ver 1.2c - RGB2c [download]
背景RGB値の設定・表示を追加し、テキスト/背景の補色設定 [VARS] を追加した。

Ver 1.3c - RGB3c [download]
テキスト↔背景を同色にする設定 [∧]、テキスト背景⇒もう一つの背景へ補色設定の機能 [X2]、ヘルプは増えた機能をカバーするためのスクロール表示機能、右手操作用の代替えキーを追加した。

最新バージョンは、操作が複雑で使いづらいかも知れないので、シンプルなものとして、Ver 1.2ap をお使いください。サンプルプログラムとしても判りやすいのでご参考になりやすいと思います。





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


 



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

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

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

Casio Basic入門 -目次-

Casio Basic入門

新しい記事の公開に合わせて随時追記・修正します
最終: 2020/08/27


目 次

        - 1.はじめに: [1]

        - 2.プログラミングとは: [1]  

        - 3.fx-5800PのCasio Basicコマンド一覧: [2] 

        - 4.Casio Basicを使ってみる
            - Chapter 0 - プログラム作成・実行のポイント: [2] 
            - Chapter 1 - Getkey と Locate を使いこなす: [3] [4] [5] [6] [7] [8] 
            - Chapter 2 - 動きのあるプログラムを作る: [9] [10][11][12][13][14] 
            - Chapter 3 - 自由自在に入力する(入力ボックス): [15][16][17][18] 
            - Chapter 4 - 換算プログラムを作る: [19][20][21][22] 
            - Chapter 5 - サブルーチンを使いこなす: [23] [24] [25] [26] [27] [28] [29] [30] [31] 
            - Chapter 6 - プログラムを速くする(入力ボックス) [32] [33] [34] [35] [36] [37]  
            - Chapter 7 - 超入門 - ゼロからのプログラム作成と機能追加: [38] [39] [40] [41] [42]
            - Chapter 8 - Basic 命令を活用してみる: [43] [44] [45] [46] [47] [48] [49] [50]
            - Chapter 9 - 簡単な換算プログラム - 入力ボックスの活用: [51] [52] [53] [54] 
            - Chapter 10 - 3桁区切り出力 - 汎用サブルーチンの作成: [55] [56] [57] [58] [59]  
            - Chapter 11 - 


        - 5.Casio Basicでグラフィックス / 目次
            - Chapter G01 - LCDと3つの座標系: [G01] 
            - Chapter G02 - グラフィックス画面の設定と描画: [G02] 
            - Chapter G03 - ClrGraphViewWindow[G03] 
            - Chapter G04 - Plot コマンド: [G04] 
            - Chapter G05 - Plot と ViewWindow: [G05] 
            - Chapter G06 - F-Line と線のスタイル設定: [G06] 
            - Chapter G07 - 点線とViewWindow: [G07]
            - Chapter G08 - ViewWindow の有効活用 / RclPict と RclCapt の違い: [G08] 
            - Chapter G09 - ViewWindow と設定変数: [G09] 
            - Chapter G10 - Circle コマンド: [G10] 
            - Chapter G11 - PxlOn コマンド: [G11]
            - Chapter G12 - PxlOff コマンド: [G12]
            - Chapter G13 - PxlChgコマンド: [G13] 
            - Chapter G14 - PxlTest( ) コマンド: [G14] 

            - Chapter G15 - 
            - Chapter G16 - 
            - Chapter G17 -
            - Chapter G18 -

詳細な目次へ



Casio Basic入門の概要

CasioBasic入門では、最初から順に読むことを前提に書き始めました。最初は基本的な部分から丁寧な説明を心がけていますが、進むにつれて同じ説明を省略するようになります。Casio Basicの命令やコマンドの使い方だけでなく、プログラミングの考え方、手法、知っておくと役立つ話題なども、折に触れ紹介しています。

当初、fx-5800P 使用を前提にして始めていますが、「4. Casio Basic を使ってみる」 で取り上げているプログラムは、簡単な変更で fx-9860GII や fx-CG50 への移植も可能です。具体的に fx-9860GII や fx-CG50 などへの移植を取り上げた記事もあります。

fx-CG20 / CG50 については、fx-9860GII の Casio Basic プログラムからの移植性が非常に高く、物理座標系で動くグラフィックスコマンド(TextPxlOnPxlOffPxlChgPxlTest) を使っていないプログラムは、fx-CG20 / CG50 に転送するだけで、ほぼ正常動作します。

Casio Basic - 機種別の互換性

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


「5. Casio Basic でグラフィックス」 は、グラフィックス機能を持たない fx-5800P ではなく、fx-9860GII を前提にしています。ここで紹介しているプログラムは fx-CG-20 / fx-CG50 で動作します。というのも、fx-CG20 / fx-CG50 は、カラー対応の部分を除き、fx-9860GII の上位互換になっているからです。fx-9860GII からの互換性の無いコマンドは僅かですが、fx-CG20 / CG50 で互換性のないコマンドについては、順次追加する予定です。


Casio Basic入門の読み方

PCなどでの高級言語でのプログラミング経験者には、最初から順に読み進めて頂ければ、Casio Basic が意外に使えることに気付いて頂けると思います。

昔の古い電卓やポケコンでの行番号付きのBASICなどでのプログラミング経験しか無い方、およびプログラミング未経験者の方は、以下の順序で読み進めると良いと思います。

構造化高級言語によるプログラミング経験の少ない方、プログラミング初心者向けの進め方

2. プログラミングとは
   
4. Casio Basicを使ってみる [fx-5800P 向け。fx-9860GII や fx-CG20 / CG50 にも移植可能]
   
 ・Chapter 0 (プログラム作成・実行のポイント)
   
 ・Chapter 7 (超入門:ゼロからのプログラム作成と機能追加) ※1
   
 ・Chapter 8 (Basic コマンドを使ってみる) ※2
   
 ・Chapter 1 (Getkey と Locate コマンドを使いこなす)
   
 ・Chapter 2 (動きのあるプログラムを作る)
   
 ・Chapter 3 ~ Chapter 6 / Chapter 9 ~
   
5. Casio Basic でグラフィックス [fx-9860GII 他、グラフ関数電卓向け]

※1 fx-5800P プログラミング(超)入門
Chapter 7 (超入門:ゼロからのプログラム作成と機能追加) は、fx-5800P を始めて使うプログラミング未経験者を想定したものです。Chapter 8 へ繋がります。 ⇒ Chapter 7

※2 新世代 Casio Basic への導入
Chapter 8 は、カシオのプログラム電卓で古くから使われてきた命令から、新世代 Casio Basic への導入を目的にしています。古いプログラム電卓を使いこなしているが、新しい Casio Basic にはなじみの無い方向けです。 ⇒ Chapter 8

※3 PCなどでの高級言語プログラミングの経験者には...
管理人自身がこのカテゴリーに入ります。高級言語でのプログラミング経験者は、当ブログで公開している Hit & Blow ( ここここ や ここ )、もぐら叩き (ここ) を見て、実際に fx-5800P で実行して頂ければ、Casio Basic の能力が分かると思います。さらに、改造や改善してみると Casio Basic がさらに分かると思います。

記事中で、Casio Basic コマンドリファレンスの個別項目へのリンクも入れています。このコマンドリファレンスは、管理人オリジナルのもので、取扱説明書に書かれていない多くの情報を提供しています。


新世代 Casio Basicについて

2006年発売の fx-5800P に搭載されたプログラミング言語は、カシオ自身が Basic-Like プログラミング言語と言っています。機能やコマンドが限定されているので、厳密にはその通りです。しかし実際に使ってみると、使えるコマンドに着目すれば、実用的な電卓プログラムが作れることに気がつきました。Goto は限定的に使い、例えば例外処理やエラー処理のために Goto で処理を一カ所に集中させるのは、プログラムが分かりやすくなるので良いものとして考え、それ以外は極力 Goto なしでプログラムを書くというコンセプトを本ブログでは採用し、そのプログラム例を多数紹介しています。

ここでは、カシオ製 プログラム関数電卓とグラフ関数電卓をひとくくりにして、プログラム電卓と呼ぶことにします。2006年に 発売された fx-5800P 以降のプログラム電卓に搭載されている Casio Basic は、構造化プログラミングが可能である点で、それ以前のものとは大きく異なります。

そこで、fx-5800P 以降の機種に搭載されている新しい Casio Basic を 当ブログでは、新世代 Casio Basic と呼んでいます。これらに共有しているのは、Goto なしでのコードが書け、テンキーだけでなく全てのキー([AC]キー除く)押下の検出が可能な Getkey コマンド、そして柔軟な Locate コマンドを搭載し、条件判定を 0で偽、0以外を真 (論理演算は 1 で真) となることです。これは一般的な高級言語と共通しています。Casio Basic は、構造化プログラミング言語ではないこと、しかし大域変数のみが使えること、ユーザー関数が使えないことを除けば、構造化プログラミング風のコードが書けます。なお、プログラム関数電卓として販売されている fx-71F や fx-72F に搭載されている言語は、ここでいう新世代 Casio Basic ではありません。

<新世代Casio Basic搭載機>
  - fx-5800P
  - fx-9860G (OS ver 2.以降推奨)
  - fx-9860GII (OS ver 2 以降推奨)
  - fx-CG10
  - fx-CG20
  - fx-FD10 Pro
  - fx-CG50
  ※ OS は最新バージョンへアップグレードできます

初級・中級の表記について
  初級 - Casio Basic の命令/コマンドの使い方を覚えるレベル
  中級 - プログラムの構造やロジック、変数の使い方を工夫するレベル
  中級者で十分使いこなせるので、上級と言う表記はありません

Casio Basic でのグラフィックス プログラミングを取り上げています。先ずは グラフィックスコマンドを徹底的に調べている段階なので、別系統で連載します。これまでの「Casio Basicを使ってみる」の連載は、継続予定です。
 ⇒ Casio Basicでグラフィックス


詳細な目次

1. はじめに
      ⇒ Casio Basic入門1

2. プログラミングとは
      ⇒ Casio Basic入門1

3. fx-5800P CasioBasicのコマンド一覧
      ⇒ Casio Basic入門2

4. CasioBasicを使ってみる
[fx-5800P 向け] (fx-9860GII、fx-CG20、fx-CG50にも移植可)

Chapter 0

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

      - プログラム新規作成
      - プログラム編集
      - プログラム実行
      - →命令 (代入命令)
      - ?命令 (入力命令)
      - 命令 (出力命令)

      ⇒ Casio Basic入門2

Chapter 1 - 初級
Getkey と Locate コマンドを使いこなす
キーコード取得プログラム - GET KEYCODE を作る 

      - Locate
      - Getkey
      - Doループ
      - Whileループ
      - Isz命令 (インクリメント・ジャンプ命令)
      - " " 出力命令
      - EngOn / EngOff
      - If 文
      - ⇒命令 (条件ジャンプ命令)


      ⇒ Casio Basic入門3
             - Chapter 1-1: Getkey、Locate
             - Chapter 1-2: Goto / Lbl ループ、EngモードとLocate

      Casio Basic入門4
             - Chapter 1-3: 繰り返し処理 Doループ

     Casio Basic入門5
             - Chapter 1-4: Locateコマンドと出力命令" "の違い
             - 
Chapter 1-5: 思い込みの罠 - Locateの表示桁数
             - Chapter 1-6: プログラム完成
             - Chapter 1-7: 思い込みの罠(補足) - 1桁のキーコード

      ⇒ Casio Basic入門6
             - Chapter 1-8: DoループとWhileループ再び

      Casio Basic入門7
             - Chapter 1-9: Locateコマンドで陥るバグ
             - Chapter 1-10: 利用価値の高い⇒命令(条件ジャンプ)を使ってみる

      ⇒ Casio Basic入門8
             - Chapter 1-11: ダイナミックな表示機能の実装
             - Chapter 1-12: プログラムのバックアップ


Chapter 2 - 初級
動きのあるプログラムを作る
反射ゲーム - REACT を作る

      - Lbl / Goto ループ
      - Dsz命令 (ディクリメント・ジャンプ命令)
      - Int( ) / Frac( ) 関数
      - Break コマンド
      - 例外処理 / 例外フラグ
      - 複数条件分岐 - Else If
      - ブロック構造 (構造化プログラミングの勧め)
      - アルファベット小文字の表示
      - For~To~Next
      - Progコマンド(サブルーチン)

      ⇒ Casio Basic入門9
             - Chapter 2-0: Lbl / Gotoループを使う
             - Chapter 2-1: 回る羽根を作る

      ⇒ Casio Basic入門10
             - Chapter 2-2: ランダム関数を使う
             - Chapter 2-3: 再びGetkeyとDoループでカウンタ計測
             - Chapter 2-4: 例外処理・例外フラグ・Breakコマンド

      ⇒ Casio Basic入門11
             - Chapter 2-5: プログラム制御
             - Chapter 2-6: 複数条件分岐の記法

      ⇒ Casio Basic入門12
             - Chapter 2-7: ゲーム終了条件の実装

      ⇒ Casio Basic入門13
             - Chapter 2-8: ゲーム進行に変化を付ける
             - Chapter 2-9: ゲームの仕上げ - 構造化プログラミング

      ⇒ Casip Basic入門14
              - Chapter 2-10: For文とProgコマンドを使ってみる


Chapter 3 - 中級
自由自在に入力する
入力ボックス - INPI を作る

      - 配列変数
      - 論理演算コマンド
      - For~To~Next
      - Progコマンド(サブルーチン)
      - サブルーチンの使い方
      - アルファベット小文字の表示
      - デバッグ方法
      - ド・モルガンの法則
      - 変数の使い方 - 予約変数と使捨て変数
      - 変数の適用範囲

      ⇒ Casio Basic入門15
             - Chapter 3-0: 動作確認用メインルーチンを作る

      ⇒ Casio Basic入門16
             - Chapter 3-0(続き): 「入力ボックス」を作る - 論理演算をする

      ⇒ Casio Basic入門17
             - Chapter 3-1: 「入力ボックス」プログラムの改造

      ⇒ Casio Basic入門18
             - Chapter 3-2: 入力ボックス - 末尾文字の削除機能を追加する
                デバッグ方法、ド・モルガンの法則、変数の適用範囲を理解する


Chapter 4 - 中級
換算プログラムを作る
和暦・西暦変換プログラム - YEAR CONV を作る

      - Progコマンド (サブルーチン)
      - サブルーチンの使い方
      - 変数の使い方 - 予約変数と使い捨て変数

      ⇒ Casio Basic入門19
             - Chapter 4-0: 和暦・西暦換算プログラム - 完成状態の紹介
             - Chapter 4-1: 最初にプログラム構造を考える
             - Chapter 4-2: 和暦・西暦換算プログラムを実装する

      ⇒ Casio Basic入門20
             - Chapter 4-3: オマケ機能の追加 - 数の桁数の求め方

      ⇒ Casio Basic入門21
             - Chapter 4-4: キー長押しによるメニュー選択

      ⇒ Casio Basic入門22
             - Chapter 4-5: キー長押しの処理を作る
             - Chapter 4-6: サブルーチンを使いこなす


Chapter 5 - 中級
サブルーチンを使いこなす

世界時間換算プログラム - TIME ZONE を作る

      - 入力ボックスを使う
      - サブルーチンを活用した効率的な機能追加
      - 変数の使い方 - 予約変数と使捨て変数
      - キー長押しの活用
      - 矢印キーによる循環項目選択

      ⇒ Casio Basic入門23
            - Chapter 5-0: プログラムの仕様
            - Chapter 5-1: TIME ZONE プッログラムの完成形

      ⇒ Casio Basic入門24
            - Chapter 5-2 Getkey、入力ボックス、Locate の活用

      ⇒ Casio Basic入門25
            - Chapter 5-3: 同様の機能を追加する

      ⇒ Casio basic入門26
            - Chapter 5-4: 少し異なるルーチンを、分かりやすく追加する

      ⇒ Casio Basic入門27
            - Chapter 5-5: 少し異なるルーチンを、分かりやすく追加する(2)

      ⇒ Casio Basic入門28
            - Chapter 5-6: キー長押しによる機能呼び出し

      ⇒ Casio Basic入門29
            - Chapter 5-7: 矢印キーの活用

      ⇒ Casio Basic入門30
     - Chapter 5-8: 類似処理による機能追加

      ⇒ Casio Basic入門31
     - Chapter 5-9 キー長押しによる別機能の呼び出し


Chapter 6 - 中級
プログラムを速くする
入力ボックスの高速化と拡張 - 入力ボックス 2.0 を作る

      - 処理速度の遅いコマンド/命令を見極める
      - プログラムロジックの見直し

      ⇒ Casio Basic入門32
     - Chapter 6-0: コマンドや命令の処理速度を比較する
     - Chapter 6-1: 具体的に対処する遅い処理を見つける

      ⇒ Casio Basic入門33
     - Chapter 6-2: ロジックの見直しでプログラムを高速化する

  ⇒ Casio Basic入門34
     - Chapter 6-3: 処理速度を意識して機能拡張する

  ⇒ Casio Basic入門35
     - Chapter 6-4: 処理速度を意識して機能拡張する

  ⇒ Casio Basic入門36
     - Chapter 6-5: キーリピートを抑制する

  ⇒ Casio Basic入門37
     - Chapter 6-6: fx-5800P から fx-9860GII へ移植する


Chapter 7 - 超初級
ゼロからのプログラム作成と機能追加
温度換算プログラム- TEMP CONV を作る

      - 初めての fx-5800P プログラミング
      - プログラム作成の手順
      - プログラムの実行方法
      - ?(入力)命令

  ⇒ Casio Basic入門38
     - Chapter 7-1: 最もシンプルなプログラム

  ⇒ Casio Basic入門39
     - Chapter 7-2: 同様の機能を追加する

  ⇒ Casio Basic入門40
     - Chapter 7-3: 選択肢3つの換算プログラムに拡張する

  ⇒ Casio Basic入門41
     - Chapter 7-4: バグの原因と対処 - フラグの利用

  ⇒ Casio Basic入門42    
     - Chapter 7-5: プログラムの効率化


Chapter 8 - 初級
Basic 命令を使ってみる
温度換算プログラム - TEMP CONV を作る

   - ?(入力)命令を Baisc コマンでに置き換える
     ・ Getkey と Do ループ の使い方
     ・ 入力ボックスの使い方
   - ⇒(条件分岐)命令のメリット
   - キー入力制御
     ・ Getkey と While ループの使い方

  ⇒ Casio Basic入門43
     - Chapter 8-1: メニュー選択に Getkey を使う

  ⇒ Casio Basic入門44
     - Chapter 8-2: 入力ボックスを使ってみる

  ⇒ Casio Basic入門45
     - Chapter 8-3: 換算プログラムの入力ボックスを実装する

  ⇒ Casio Basic入門46
     - Chapter 8-4: テンキー以外のキー入力を利用する

  ⇒ Casio Basic入門47
     - Chapter 8-5: [EXIT] キーで正常終了させる

  ⇒ Casio Basic入門48
     - Chapter 8-6: グラフ関数電卓用入力ボックスを準備する

  ⇒ Casio Basic入門49
     - Chapter 8-7: グラフ関数電卓へプログラムを移植する

  ⇒ Casio Basic入門50
     - Chapter 8-8: グラフ関数電卓用に表示を最適化する


Chapter 9 - 初級
簡単な換算プログラム - 入力ボックスの活用
福利計算プログラム - CompInt を作る

   - Getkey と Do ループ の使い方
   - 入力ボックスの使い方
   - 数値の3桁区切り表示をサブルーチンで実装
   - 3桁区切りのロジックを改善(高速化)

  ⇒ Casio Basic入門51
     - Chapter 9-1: fx-5800P で複利計算プログラムを作る

  ⇒ Casio Basic入門52
     - Chapter 9-2: fx-5800P で3桁区切り表示をする

  ⇒ Casio Basic入門53
     - Chapter 9-3: fx-5800P での3桁区切り表示を高速化する

  ⇒ Casio Basic入門54
     - Chapter 9-4: fx-5800P での3桁区切り表示を改良する


Chapter 10 - 中級
3桁区切り出力 - 汎用サブルーチンの作成と活用
3桁区切り出力・汎用サブルーチン - 3DS を作る

   - 数値の3桁区切り出力を汎用サブルーチン化
   - 旧来の出力命令 " " 、出力命令 の癖
   - 大域変数の使いこなし

  ⇒ Casio Basic入門55
     - Chapter 10-1: 高速3桁区切り出力サブルーチンの特長

  ⇒ Casio Basic入門56
     - Chapter 10-2: 高速3桁区切り出力サブルーチンの評価と改善

  ⇒ Casio Basic入門57
     - Chapter 10-3: 3桁区切りサブルーチン fx-5800P版 右寄せ出力機能の追加

  ⇒ Casio Basic入門58
     - Chapter 10-4: 3桁区切りサブルーチン fx-5800P版の使いこなし

  ⇒ Casio Basic入門59
     - Chapter 10-5: 3桁区切りサブルーチン グラフ関数電卓版


5. Casio Basicでグラフィックス [fx-9860GII / fx-CGシリーズ向け]

Casio Basicでグラフィックス
グラフィックスコマンドの仕様や特徴

  ⇒ Casio Basic入門G01
     - Chapter G01: LCDと3つの座標系

  ⇒ Casio Basic入門G02
     - Chapter G02:  グラフィックス画面の設定と描画

  ⇒ Casio Basic入門G03
     - Chapter G03: ClrGraphViewWindow

  ⇒ Casio Basic入門G04
     - Chapter G04: Plot コマンド

  ⇒ Casio Basic入門G05
     - Chapter G05: PlotViwWindow

  ⇒ Casio Basic入門G06
     - Chapter G06: F-Line と 線のスタイル設定

  ⇒ Casio Basic入門G07
     - Chapter G07: 点線と ViewWindow

  ⇒ Casio Basic入門G08
     - Chapter G08: ViewWindow (直交座標系) の有効活用 / RclPictRclCapt の違い

  ⇒ Casio Basic入門G09
     - Chapter G09: ViewWindow と設定変数

  ⇒ Casio Basic入門G10
     - Chapter G10: Circle コマンド

  ⇒ Casio Basic入門G11
     - Chapter G11: PxlOn コマンド

  ⇒ Casio Basic入門G12
     - Chapter G12: PxlOff コマンド

  ⇒ Casio Basic入門G13
     - Chapter G13: PxlChg コマンド

  ⇒ Casio Basic入門G14
     - Chapter G14: PxlTest() コマンド

  ⇒ Casio Basic入門G15
     - Chapter G15: 


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


 


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

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

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

Casio Basic の勧め

.
更新 2020年5月31日

Casio Basic は、最近の カシオ 製プログラム電卓(プログラム関数電卓やグラフ関数電卓)に搭載されているプログラミング言語で、意外に高機能なので実用的なプログラムが作れます。科学技術計算目的以外にも実用的なプログラムを作れます。私自身、技術計算以外のために作った自作プログラムをほぼ毎日使い、技術計算プログラムはたまに使う程度です。

カシオのプログラム電卓で新世代 Casio Basic を勧めたくなるには、幾つかの理由があります。
例えば、コマンド体系がシンプルなためプログラミングは敷居が低く、初心者にも覚えやすいこと、プログラミング経験者はスグに使えること、Casio Basic が意外に構造化プログラミング風のコーディングが可能な高機能言語であることなどが、その理由に挙げられます。


目 次
  1. プログラミングは特殊技能なのか?
  2. 新世代 Casio Basic とは?
  3. Casio Basic 搭載機種の選定
  4. Casio Basic の習得は容易
  5. fx-5800P の勧め
  6. Casio Basic を勧める背景
  7. fx-5800P の利点と弱点
  8. Casio Basic の使いこなし


プログラミングは特殊技能なのか?

プログラミングは、理系や文系、男女差、年齢や経験などとは無関係に習得可能なことはよく知られており、IT企業ではごく普通に文系出身のSEやプログラマが活躍しています。特に Casio Basic は覚えることが少なく、簡単なので、誰でも電卓プログラミングが出来ると思います。
なお、最先端でクリエイティブなプログラミングには数学(論理学含む)が得意であることは必須だと思いますが、それは別の世界の話であって、プログラム電卓でプログラムを書くには殆ど関係ありません。

参考:
<トップへ戻る>

新世代 Casio Basic とは? [2020/05/30 更新]

実際にCasio Basic を使いながら、取扱説明書には記載のない機能や仕様が分かってくると、以下に挙げる機種に搭載されている Casio Basic が意外によくできていることが明かになってきました。

1) fx-5800P                            (プログラム関数電卓)
2) fx-9860Gシリーズ
                (グラフ関数電卓)
3) fx-9860GIIシリーズ             (グラフ関数電卓)
4) fx-CG10
/CG20/CG50 
      (カラーグラフ関数電卓)
5) fx-FD10
pro                        (プログラム関数電卓 - 土木測量向け)
6) fx-9860GIII
                       (グラフ関数電卓)
7) fx-9750GIII
                       (グラフ関数電卓) 

これらに搭載されている言語は、私は 新世代 Casio Basic と呼び、CFX-9850G で初めて搭載された Casio Basic とは区別しています。

新世代 Casio Basic は、上から下へ処理が流れるようなブロック構造のコードが書けます。Getkey コマンドと Locate コマンドがあるため、スクロールを抑えて1画面で自由に入出力できるプログラムが作れます。また、条件判定は基本的に 0 で偽、0 以外で真としてコーディングできます。引数と戻り値のある関数/プロシージャをユーザーが作ることが仕様上できないので、厳密な意味での構造化Basicとは言えません。そこで 新世代Casio Basic は、構造化言語と敢えて言います。
  • Getkey[AC] キー以外の全てのキーに異なるキーコードが割り当てられ、押したキーをリアルタイムで判定できるコマンド。
  • Locate: パラメータに、即値以外に変数、式、コマンドを指定して位置を柔軟に指定して出力するコマンド。
  • 条件判定を 0 で偽、0 以外で真とできること
  • ブロック構造のコーディングGoto に頼らずにプログラムの制御を記述し、可読性の高いブロック構造でプログラミングする方法。
実は、仕様上厳密な意味で 構造化Casio Basic は既に fx-CP400 や fx-CG500 に搭載されています。これらを使えばスグに分かるのが、処理速度が極めて遅い上、代表的な問題点として If ブロックから Goto で脱出できない(動作が保証されていない)、3項演算子が無いなどの中途半端な実装により、効率の悪いコーディングを強要されるので冗長なコーディングが必要になり、さらに処理速度がかかる、といった問題があります。これに対して構造化Casio Baisc は、よく作り込まれていることが分かります。

プログラミング経験者(特にPCでのプログラミング経験者)なら、新世代 Casio Basic は違和感なく使えます。

旧来の命令
新世代 Casio Basic には、以前のプログラム電卓に搭載されていた旧来の命令も搭載されています。カシオによれは従来のユーザーの利便性を考慮して旧来の命令を残しているとのことです。最近、この旧来の命令を使いこなして、どの程度のプログラムを作れるのか色々と試して、それを反映させたエントリーを Casio Basic入門38から連載を始めています。使いこなしを検討してみると、確かに一定レベルの実用プログラムを比較的楽に作れることが分かります。

旧来の命令は表記はシンプルでも、多彩な機能を持っています。プログラミング経験の少ない人でも簡単に使えて便利です。しかし、旧来の命令が機能が多彩であることが、逆にプログラミングの自由度を減らしているとも言えます。この旧来の命令では実現できないプログラムを作るには、Basicコマンドを積極的に使えばよいのです。旧来の多彩な命令と Basic コマンドを併せて使いこなすことで、自由度が高く、実用的なプログラミングが可能になります。

<トップへ戻る>

Casio Basic 搭載機種の選定

[2020/05/30 更新]
上でリストアアップした新世代 Casio Basic を搭載した機種にはは、既に国内で販売中止になった機種と国内では発売されず海外でのみ発売されている機種を含んでいます。現時点で国内での購入に限定すれば、fx-5800P と fx-CG50 のどちらかを選ぶことになります。

但し、セカイモンやAmazon USAなどのネット通販を利用すれば、日本に居ながら海外から購入できますので、管理人はよく利用しています。fx-CG50については、並行輸入品を国内通販で購入するか、海外から直接購入すると、半額近い価格で入手できます。最近の例でいえば、アメリカ専用モデルのモノクログラフ関数電卓 fx-9750GIII が fx-5800P とほぼ同じ価格(千円程度の違い)で入手できます。そこで上でリストアップした機種は、日本で入手可能なものという前提で、機種選定について説明しようと思います。

プログラム関数電卓 fx-5800P は最も小型軽量で、最も安価、そして関数電卓としても使いやすく、ハードウェアとソフトウェアのバランスが良いので、実用に適しており推奨機種の1つです。グラフ機能はありませんが、プログラムを実用的に使うには十分な能力があります。

グラフ関数電卓はデータや数式から様々なグラフを描画できますが、主に教育用に設計されているので、実用には fx-5800P ほど向いていないと感じています。しかしグラフ関数電卓は fx-5800P に比べてCPUパワーが遙かに高いので、Casio Basic プログラムの処理能力が高く、プログラミングを楽しむにはお勧めです。なおグラフ関数電卓には、モノクロ液晶を搭載した機種と高精細度のカラー液晶を搭載した機種があります。日本国内では、fx-9860G と fx-9860GII は既に販売されておらず、高精細カラー液晶を搭載した fx-CG20 と fx-CG50 のみが発売されています。従って、グラフ関数電卓を購入する場合は fx-CG50 を推奨します。

但し、モノクロ液晶で良いならば、現在発売されている機種ならば、fx-5800P か fx-9750GIII (Amazon USA) の二択だと思います。仮に中古機を含めるならば、fx-9860G Slim が管理人の一押しです。

Casio Basic の機能は、fx-9860G に OS2.00 以降を導入したもの以降の全ての機種がほぼ同じで、互換性があります。fx-CGシリーズは高精細カラー液晶に特化したコマンドが追加されていますが、モノクロのグラフ関数電卓の Casio Basicプログラムはそのまま動作します。

各機種の概要を以下の記事でまとめていますので、参考にしてください。

fx-CG50: fx-CG50 の概要
fx-CG20: fx-CG20 の概要
fx-9860GIII: fx-9860GIII の概要
 fx-9750GIII: fx-9750GIII の概要
 fx-9860G Slim: fx-9850G Slim の勧め


 fx-9860GII: fx-9860GII USB POWER GRAPHIC 2
 fx-5800P: 本記事は主に fx-5800Pの勧め になっています

 Casio Basic - 機種間の互換性
 Casio プログラム電卓の価格動向


fx-5800P 以外のグラフ関数電卓の Casio Basicには、グラフィックス機能があり、高機能ですが fx-5800P よりも高価です。これらの中で安価な fx-9750GIII は、fx-5800P と価格差が極めて少な点が魅力です。

[2020/05/31 更新]
国内で既に販売中止になっている fx-9860G や fx-9860GII は Casio純正の開発環境 - Casio SDK を使えば、パソコン上で C言語を使ってプログラムを作り、それを電卓に転送して Add-in プログラムとして利用できます。C言語で作った Add-in プログラムは、Casio Basicに比べてかなり高速動作し、Casio Basic では無理な処理も可能です。しかしこれらのモデルはもはや販売されていません。その代わりに C.Basic を推奨します。C.Basic は純正Casio Basic の上位互換を目指しつつ、多くの独自コマンドにより Cプログラミングに近いコーディングが可能で、Cで作った Add-inプログラム並の高速処理が可能です。C.Basic は fx-9860G 以降の Add-in プログラムを使えるグラフ関数電卓があれば、もはや Casio SDK は不要です。C.Basic を使うモデルとしては、個人的には fx-9750GIII か fx-CG50 を勧めます。

fx-5800P
グラフィックス機能の無い fx-5800Pは、処理速度が相対的に低いものの、価格が圧倒的に安く(実売6~7千円程度)、関数電卓としてもプログラム電卓としてもバランスが取れた使いやすい機種です。

fx-5800P には プログラムリストを 通常の電卓モード (Comp モード) で呼び出して使えますが、グラフ関数電卓ではプログラムリストを表示するには一旦プログラムモードに入る必要があります。Casio Basicで作ったプログラムを日常的に使う場合は fx-5800P の方が利便性が高いことは、使ってみて分かります。fx-5800P と グラフ関数電卓を実際に使い比べてみると、日常使いには、バランスの良い fx-5800P が優れていると思います。

fx-9750GIII
プログラムの高速性やグラフィックス処理を重要と考えるなら、fx-9750GIII も選択肢に入れるべきです。もし使いたい Add-in プログラムがあれば fx-9750GIIIを推奨します。このモデルは北米専用モデルで国内販売されていませんが、Amazon USA や セカイモンを利用して7千円台(少なくとも1万円未満)で入手できます。有用な Add-In プログラムの1つとして、当ブログで紹介しているあCアドイン版 Casio Basic (Casio Basic の上位互換) は fx-9750GIII のアドインとしても使え、Casio Basicプログラムが極めて高速に実行できるだけでなく、多くの独自コマンドで Casio Basicでできない処理ができます。C.Basic が使いたいなら fx-9750GIII がお勧めと言えます。

fx-FD10 Pro
fx-FD10 Pro は、屋外使用を想定した堅牢な作りが特徴です。私自身が実機を持っていないので、取扱説明書から得られる内容から判断すると、上記の fx-5800P の使いやすさを備えていますが、実売2万円程度と高価で、さらに Add-in プログラムが使えません。堅牢な作りが必要ならば選択肢に含めるべきでしょう。そうでなければ、fx-5800P か fx-9750GIII を推奨します。

fx-CG50
fx-CG50 は、高精細度カラー液晶が特徴で、内蔵の関数計算も高速化されています。表現力の優れた高精細カラー液晶が必要だと考えるなら fx-CG50 を選択すべきです。 
 
<トップへ戻る>

Casio Basic の習得は容易

過去にPCでプログラミング経験があれば、Casio Basic はスグに使えると思います。私自身も過去にPCでのプログラミング経験があり、fx-5800P を買ってすぐにプログラミングができました。但し細かなところは取扱説明書に書かれていないので、自分で色々と調べました。その結果が当ブログです。

プログラミング経験があれは、当ブログの「Casio Basic コマンドリファレンス」、「Casio Basic入門」、「逆引き Casio Basic」を参考にすれば、すぐに使いこなせると思います。[2017/01/03 追記修正]

これからプログラミングをやってみようと思われる方の場合、新世代 Casio Basic を覚えることはPCで使う Basic 習得に有効だと思います。上で紹介した機種の中で特に fx-5800P は、ハードウェア的には最も非力ですが、最も安価で入手しやすく、さらに使いやすいので、学習用に向いています。僭越ながら、当ブログの Casio Basic 入門をほぼ理解できれば、Visual Basic の習得の敷居はかなり下がると思います。

Casio Basic のコマンドは、殆どが他のBasic と同じなので、覚えたことが将来無駄になりません。さらに必要最小限度の機能まで絞り込まれているので、覚えることが少いことが初心者向きの理由です。この点をもう少し説明してみます。

一般にプログラムを作る際、実現したい機能には無数の方法があります。無数の方法から適切な方法を選び出すことが、プログラミングの主な作業になるのですが、それは初級者には逆に習得の妨げとなります。Casio Basic は機能が少ないので、選択肢が限られます。従って、プログラミングの方法の選択で悩むことなく、必要なことを覚えやすいと言えます。色々なプログラムを作れば、効果的な反復学習になるわけです。

またコマンドが絞り込まれているので、アルゴリズムの工夫や計算式の応用で対応することになり、これも学習に向いていると考える理由の1つです。

機能が限定されていても、実用的なプログラムやゲームが作れることは、当ブログで紹介しています。実際にこれらのプログラムを作りながら、新世代 Casio Basic の良さに気付いたのです。実際に使ってみないと分からないものです。

<トップへ戻る>

fx-5800P の勧め

電卓でプログラミングを始めてみようと思う方には、私は fx-5800P を勧めます。

1.関数電卓としての fx-5800P
fx-5800Pは、関数電卓として見た場合、十分な機能を実現しています。プログラム機能の無い fx-995ES とほぼ同等の機能と操作性が有り、fx-5800P は高機能関数電卓と位置づけられます。カシオの関数電卓は電源を切ると、計算履歴もメモリの内容も全て消去されます。一方 fx-5800P は電源を切っても全てメモリに保存されたままです。これが関数電卓として fx-5800P を推奨する最大の理由です。

2.携帯型コンピュータとしての fx-5800P
携帯型コンピュータとして見た場合、手軽に実用プログラムを作れるので、パソコンでは真似のできない圧倒的な携帯性が最大の利点です。搭載されている Casio Basic は、ちょっとしたアクションゲームも作れます。実際に、fx-5800P のハードウェアの能力と Casio Basic の機能を確かめる目的で、「もぐら叩き」を作ってみました。結構遊べることが分ったので、冒頭で 『意外に良くできている』 と書きました。

3.Casio Basic
fx-5800Pに搭載されているCasio Basicは、グラフ関数電卓 fx-9860GII や fx-CG20 さらに 土木測量向けプログラム電卓 fx-FD10 pro に搭載されている Casio Basic と比べて、グラフィック機能や文字列処理、外部との通信機能を使うコマンドが省略されていますが、それ以外の機能は同じです。そして、fx-5800Pで作った Caso Basic プログラムは、上位機種への移植性が高いことは確認済みです。

<トップへ戻る>

Casio Basic を勧める背景

新世代 Casio Basic 搭載のプログラム電卓を勧めるには、いくつかの背景があります。

1. パソコンと同様な機能を求めない
パソコンでできることはパソコンでやれば良い。それをわざわざ電卓でプログラムを作る必要はありません。


2. サッと取り出し、パッと使える
必要な場所で、必要なタイミングで、上着やかばんのポケットからサッと出して、スグ使うのはパソコンでは絶対に出来ません。プログラムを作るだけで自分専用のオリジナル関数電卓が手に入ります。今や電卓は誰でも1台は持っている文房具です。プログラムを書くことで自分専用の機能にカスタマイズした文房具が手に入ります。


3. プログラムを簡単に作れる
ゲーム繰返し技術計算金融計算その他お金の計算単位や年月の換算時差計算 など作っておくと便利なプログラムが多くあります。自分に必要なプログラムを予め作っておくと、プログラム電卓のメリットは絶大です。

関数電卓の各種関数キーが[SHIFT]キーなどと併用しないと使えない(裏機能などと言われます)のは、2ステップキータッチが必要で効率が悪いとの評価基準があります(関数電卓マニアの部屋)。学生への関数電卓選びのガイダンスとしては、教育的配慮を斟酌すれば、私も100%同意するところです。しかし、この主張を金科玉条の如く受け売りする気になれないのも正直なところです。

実際に何度もキーを叩いて繰り返し計算を行う際には、プログラムを作ったり、数式記憶機能を使えば良いわけです。

道具は相応しい目的で正しく使えば良い。幸なことにfxー5800Pは、今や新品でも6000円程度で買えるので、2000円から3000円で関数電卓を買う変わりに、プログラム関数電卓を買うメリットを十分に感じる人は非常に多く居るはずです。ここでは、簡単なプログラミング・スキルがあれば良く、幸いなことにBasicを搭載しています。


4. 上位機へのプログラム互換性
高価で高機能なグラフ関数電卓や土木測量専業電卓への移植性が高いことは重要です。

fx-5800Pのハードウェア仕様に依存した部分を除けば、互換性、移植性が高いので、1からプログラムを作り直す手間はありません。上位機種を入手して、そこへfx-5800P のプログラムを容易に移植できるのは、Casio Basicの大きな利点です。

なお、カシオのグラフ電卓には、C、Lua、Python といった言語の開発環境(公式や非公式を含む)もあり、Casio Basic のプログラムを移植せずに別の言語でプログラミングする選択肢もあります。

fx-5800P の Casio Basicプログラムの fx-9860GII や fx-CG20 への移植をいくつか行いましたが、機種のハードウェアに依存するコマンド (GetkeyLocate)、旧来の命令 (出力命令 ◢ 、" "、入力命令 ? など) の動作の違いに適切に対処し、配列変数を行列やリストに置き換えれば、他の Basic コマンド類は互換性があります。


5. グラフ機能の優先度は低い
パソコンでできることはパソコンを利用する...と考えれば、プログラム電卓にグラフ機能は必ずしも必要ではないと思います。グラフィックスを利用したプログラムを電卓で使いたい場合は fx-CG50 のようなグラフ関数電卓を利用でき、Windows プログラミングよりは Casio Basic の方がプログラミングは遙かに楽です。

ゲームではなく、実用面からグラフ描画機能が欲しいと言う場合もあるでしょう。例えば、実験をしながらグラフを書くのは大変重要なことです。しかしそのために、プログラム電卓でわざわざプログラムを書く必要はあるでしょうか?
パソコンでエクセルを使えば、簡単にグラフを書けます。報告書、レポート、論文を書くのに最近ではエクセルのグラフが普通に使われているわけで、それなら最初からエクセルを使えば良いと思います。

私は、実用を強く意識して fx-5800P を使っていますが、グラフ機能がことさら必要だと思うことは殆どありません。本当に必要なら fx-CG40 などのグラフ関数電卓で、ブラフ表示をプログラミング可能です。しかし、正直に言えば グラフ機能の無い fx-5800P で十分に実用的なプログラムを作って、利用できます。

敢えて言えば、適材適所でしょう。そして Casio Basic 搭載機のなかでも fx-5800P は、プログラム利用の利便性が高く、小型軽量で、グラフ関数電卓よりもプログラム入力が格段に楽で、電池の持ちも長く、ハードウェアとソフトウェアのバランスが良いことは間違いありません。処理速度の遅い fx-5800P でも工夫次第で実用プログラムを作成できるので、プログラミング自体も楽しくなってきます。当ブログでは、その工夫について多く取り上げています。


6. 最も簡単にプログラミングできる携帯機器
Casio Basicを使うのなら、電卓本体のみでプログラミングできるので、いつでもどこでもプログラムを作れます。そして自分だけの付加機能を、恐らく最も簡単に追加できる携帯機器がプログラム電卓です。オリジナルプログラムを作りそれを使う楽しみと利便性があります。

<トップへ戻る>

fx-5800P の利点と弱点

fx-5800P は、新世代Casio Basic を搭載している点に最大の価値があり、同時に関数電卓としても使いやすい点が評価できます。関数電卓としてみた場合は、グラフ関数電卓 fx-9860GII よりも fx-5800P の方が必要な機能へのアクセスが速いので、使いやすいでしょう。しかもプログラミング時のコマンドや関数をメニューから探しやすいなどの使いやすさの点でも fx-5800P が優れています。

fx-5800P のもう1つの利点は価格で、他の機種に比べて圧倒的に安価です。

fx-5800P は、非常にバランスの良い製品と言えます。

fx-5800P に対する唯一にして最大の弱点は、プログラムコードのバックアップややりとりをパソコンとの間で行えるPCリンク機能が用意されていない点にあります。少なくとも fx-5800P 同志のプログラムデータのやりとりはできるので、外付けの3Pin - USB アダプタと対応ソフトウェアを発売して頂ければ実現するはずです。カシオ製でなく、サードパーティーでも良いのです。

PCとリンクしてプログラムを転送する機能の実現は、是非ともお願いしたい。

私の場合は仕事などで実用プログラムを作って、毎日のように使っていますので、電子データのバックアップ機能がどうしても欲しくなり、2台目の fx-5800p と専用通信ケーブル (SB-62)を購入しバックアップしています。なお、グラフ関数電卓を購入すれは、通信ケーブル(SB-62)は付属しているので、fx-5800P のために新たに購入する必要はありません。

[2017/08/18 追記] 最近はグラフ関数電卓に 3Pin ケーブルが付属していません。別途購入する必要があります。

[2017/09/28 追記] 2017年10月から国内販売される fx-CG50 には 3Pinケーブルが付属します。

[2018/02/26 追記] ついに fx-5800P のPCリンクが可能になりました ⇒ こちらの記事


<トップへ戻る>

Casio Basic の使いこなし

fx-5800P 搭載の Casio Basic は、使いこなしてみて初めてその価値が分かると思います。PCで一定以上のプログラミング経験があれば、この新世代 Casio Basicが 非常に使いやすく、効率的な制御構造を作れる点がすぐに分かると思います。カシオ自身がこの Casio Basic に関する情報発信を殆ど行っていないので、当ブログでは Casio Basic の使いこなしについて、異なる3つの切り口で紹介しています。

CasioBasic入門 / 目次
じっくりと読みながらプログラムを入力して Casio Basicの使いこなしやプログラムの作り方を修得する。題材のプログラムは、ある程度の完成度があり、実用的に使えるレベルになっている(と思う...)。

CasioBasic コマンドリファレンス 目次
Casio Basic のコマンドや命令を、出来るだけ詳しく調べた結果に基づいて解説している(抜けが無いことを祈るばかり...)。

逆引き Casio Basic 目次
Casio Basic で何か実現したいこと、やりたいことに対して、ピンポイントで実現方法、サンプルプログラム、考え方を紹介している(思いついたことから順次拡充中...)。

<トップへ戻る>



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


 


keywords: fx-5800PCasioBasicプログラム関数電卓

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

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

Casio Basicでグラフィックス

Casio Basic入門 - Casio Basicでグラフィックス
<目次>


2015/10/21 更新
2015/12/07 追記
2020/05/21 追記



「Casio Basic でグラフィックス」を Casio Basic入門で連載を始めています。
 ⇒ Casio Basic入門G01 から (詳しくは Casio Basic入門 - 目次 - を参照)


これまでは、「Casio Basic を使ってみる」の連載で、Casio Basic入門50 まで続いています。グラフィックス プログラミングについては、敢えて別シリーズに分けており、今後も引き続き Casio Basic入門51 以降は続くと思います。

基本的に楽しんでやっているのですが、プログラムのネタを思いつくのは、用途や位置づけといった大枠からの発想に助けられることが多いので、一見面倒な感じの「電卓でグラフィックス プログラミングとは?」といったことも考えています。


このあたりは、今後まとまってくると思いますが、今のところ考えていることを白状しておきます。



プログラム電卓でグラフィックスプログラミングには否定的でした。今でも否定的な考えは少なからず残っています。

電卓にPCと同じ機能を求めるのではなく、電卓ならではの利点を活かしたプログラムを作って、利用すれば良いと主張してきました。特に、Casio のプログラム電卓のグラフィックス機能は、グラフ機能に特化(制限)されていて、LCDの解像度や描画速度を考えると、敢えて電卓でグラフィックスプログラミングを行うメリットは無い、というのが理由です。

では、私自身が Casio Basic のグラフィックス機能(グラフ機能) を本当に分かった上で、これを言っていたのかと問われると、幾つか味見程度のプログラミングを行った程度だったと、白状しなければなりません。

つまり、当ブログのポリシー「実際に試して、確認した内容を公開する」を考えると、中途半端です。

実は、これまでに以下のような記事を書いています。私の考えの変化がそのまま現れています。

グラフ関数電卓で観る感染症数理モデル
  • [2020/05/21] 微分方程式のグラフ化に挑戦。解くのは難しいので、差分形式の漸化式から離散的なデータを計算してグラフ化しました。ちょうどエクセルでグラフを描くのと同じことが電卓でできました。グラフを表す数式がなくてもグラフ化できるのは面白いと思いました。

fx-9860GII グラフィックス - モンテカルロ法
  • [2015/02/28] fx-5800P で作ったプログラムを fx-9860GII へ移植し、さらにグラフィックス表示を追加するために、プログラム電卓で初めてグラフィックスコードを書いた。グラフィックス描画は思った以上に処理時間がかかることが実際に分かり、画面全体を埋め尽くすようなグラフィックスプログラムには向かないと思った。
楽屋裏 - Casio Basicプログラミング
  • [2015/01/19]  少しだけグラフィックスプログラミングについて、考えを変え始めたことに触れている。
楽屋裏 - Casio Basic のグラフィックス描画
  • [2015/02/17] Casio Basic ではグラフィックス描画速度が遅いが、グラフィックスコマンドの動作に少し興味を持った。
楽屋裏 - Casio Basic のグラフィックス プログラミング
  • [2015/06/24] グラフィックスコマンドは、マニュアルには殆ど記載が無いので、実際に調べ始めたところ、従来の Basicコマンドから想像するだけでは全く分からない機能が隠されていること、プログラムに依っては処理速度が問題にならない用途も有りそうなこと、そして何よりも、実際に調べてみなければ判断するのは早いと思った。
  • そこで、Casio Basic でのグラフィックスプログラミングを徹底的に調べて、Casio Basic入門で取り上げることにした。
楽屋裏 - 酔っ払いの虫 (Drunk Bug)
  • [2015/07/20] Casio Basic のグラフィックスコマンドが少し分かってきて、安心してシミュレーションゲームを作ってみた。面白い。

「楽屋裏」で記事を書いていたのは、Casio Basic でのグラフィックスをブログで取り上げるかどうか、少しは考えていた証拠ですが、Casio グラフ関数電卓でグラフィックス プログラミングについて、本腰を入れて調べるまでに半年ほど逡巡していたことになります。そして、実際に詳しく調べ始めると、取扱説明書には全く説明されていない、重要な仕様が次々と分かってきています。宝探しのようで、やっていて面白いものです。

これまでに調べて分かっているだけでも、仕様を知っていれば有用なプログラミングが出来る一方で、仕様を知らないと想定外のバグで悩むことになりがちなのが、Casio Basic のグラフィックスコマンドだと分かってきました。


ところで、新世代Casio Basic は、Basicプログラミングの入門に良いと、これまで主張してきました。グラフィックスを使わないテキストベースでのプログラミングを前提にすれば、いまでも同じように考えています。

ところが、グラフィックスコマンドについては、かなり Casio 色が強い仕様になっていて、果たして Basic修得の入門に良いと言えないかも知れません。さらに、電卓でのグラフィックス・プログラミングでは、繰り返し処理を頻繁に使うように思うので、繰り返し処理に不慣れな初学者には、その分敷居が高いようにも思います。

グラフィックス・プログラミングには電卓特有のグラフ作成機能が活きてくるのかどうか、これはまだ分かりません。そこで、グラフィックスコマンドについて、さらに知見が深まるまで、結論は保留にしておこうと思っています。


先ずは Casio Basic でのグラフィックス プログラミングを徹底的に調べて、なにか楽しいプログラムを作ろうと思います。


[2015/12/07 追記]
Casio Basic グラフィックスコマンドの探索が進むにつれて、純正 Casio Basic では、グラフィックスコマンドが限られており描画速度が遅いので、本格的なグラフィックスプログラミングには向かないという感覚はやはり正しいと分かってきました。画面を埋め尽くすような描画やビットマップを扱うのは純正Casio Basic では無理があります。

ところが、「アドイン版高速・高機能Casio Basic」 の開発 "C:Basicプロジェクト" が始まり、テスト版でグラフィックスプログラムを作ってみると、速い処理速度でグラフィックスプログラムが走ることが経験できます。これの最大のポイントは、Casio Basic の上位互換なので、基本的にCasio Basic でプログラムが書ける点にあります。試しにライフゲームを作ってみたところ、現実的な速度でビットマップ処理が出来るので、Casio  Basicでグラフィックスプログラミングが面白くなってきました。

Casio Basic のグラフィックスコマンドを詳しく探索した結果を反映した「アドイン版 Casio Basic - C:Basic」という新しい選択肢が現実的になったので、電卓でグラフィックスプログラミングへの否定的な感覚がかなり薄くなっています。適材適所で開発処理系の使い分けると良いのです。



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


 





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

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


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

楽屋裏 - fx-CG50 のチューンアップ - Ptune3

楽 屋 裏
e-Gadget


2017/07/20
更新 2020/03/28

Ptune3 が Ver 0.24 にアップデート [2020/02/20]



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

これまで、fx-CG20 で愛用してきた Ptune2 (sentaro様の作品) の fx-CG50 対応版 Ptune3 を導入しました。Ptune2 はかなりの安全設計なので、引き続き fx-CG50 専用の Ptune3 を試しています。

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


使用例
  • Ptune3 を起動
  • メモリチェック: [OPTN] - [F5] (RAM) と [OPTN] - [F6] (ROM) 実行
  • SDRAM: と Write: の数値 (SDRAM最大クロック と Write 最大クロック) をメモ
  • 最大値設定画面:[SHIFT] - [MENU] でBus CLK をメモしておいたSDRAM最大 か Write が最大付近に設定
  • 最大値設定画面を抜けて設定を保存:[EXIT] でメイン画面に戻り、[SHIFT] - [F1] (SAVE) で設定を保存
  • 設定をストレージメモリにバックアップ保存:[SHIFT] - [AC] (OFF) で一旦電源オフ
  • 電源オン [AC] して、Ptune3 起動
  • PLL を保護された範囲内で最大値に設定
  • [F5] のプリセットを選び、上で設定した値以下で、BFC と PFC を大きめに設定
  • [SHIFT] - [▲] で FLL を変更すると、各クロックを小刻みに調整できる
  • PLL や CPU クロックだけでなく、BFC (メモリバスクロック) や SFC (I/Oクロック) を安全圏内で最大化した方が、全体の動作が最速化できる。場合によっては、PLL を1段落とし、BFC / SFC を大きめに設定し、さらに FLL を上げて BFC / SFC を安全圏内で小刻みに最大化する方法も有効
※ メモリチェックを行った直後は SDRAMアクセスが不安定になる傾向があるので、一旦リスタート (背面ボタン) すると良い。
  • 最大値設定画面は、できるだけ安全を確保する Ptune3 の最大の特徴。値は安全サイドに慎重に設定する必要がある。
  •  [F4] のプリセットはCPUクロックを優先して大きめに設定する。CPUが早くても必ずしも全体の動作が速くならない。全体の動作の高速化には、メモリバスクロック (BFC) や I/O クロック (PFC) の寄与が極めて大きい。これらを大きめに設定する方が良い反面、メモリアクセスの異常は、特にROMアクセスの異常はファームウェアの修復不能なダメージに繋がるので、"メモリチェック" と "最大値設定" を活用して、慎重に設定するのが良い。


Ver 0.24 ベータ版 [2020/02/20 更新]

"X" を乗算記号 "×" に変更。

Ptune3 Ver 0.24 ダウンロード
マニュアル


Ver 0.23 ベータ版 [2020/01/04 更新]

ファンクションメニューを見やすく変更。機能に変更はない。

Ptune3 Ver 0.23 ダウンロード
マニュアル


Ver 0.22 ベータ版 [2019/08/31 更新]

同じ電池を使った時に fx-9860G シリーズや fx-CG20 と同じ値を示すように、電圧表示値が実際よりも小さめであったのを修正。sその後 電池電圧表示値について C.Basicでの値との誤差を最小にする修正を行い、差替えアップデート。

Ptune3 Ver 0.22 ダウンロード


Ver 0.21 ベータ版 [2019/02/20 更新]

実際のクロックが表示よりも微妙に遅くなっていたが、スペクトラム拡散に原因があることが判明。デフォルトでスペクトラム拡散がONになっているが、これをOFFに切り替えられるようになった。OFFにすると1.6%程度速くなる。
スペクトラム拡散ONで、FLLを1.6%上げても同じ効果なので、顕著なスピードアップにはならなそう。

Prune3 Ver 0.21 ダウンロード

[X2] または [^] キーでスペクトラム拡散を On/Off できます。


Ver 0.20 ベータ版 [2018/08/19 更新]

実際の周波数とのズレを考慮して表示するように修正(セットアップで設定できる)
(暫定補正値 = PLLより算出される内部周波数 * 900 / 914)
Ptune3  Ver 0.20 ダウンロード

sentaro様によるコメント
CG50だけお持ちの場合はさして問題になることも無いのですが、
SH4AのFX機やCG10/20をお持ちの場合は
Ftune2/Ptune2とPtune3で同じクロックにした場合、
CPUベンチマーク結果が違うことに気が付かれた方もいるかもしれません。
(参考リンク)
http://www.casiopeia.net/forum/viewtopic.php?f=25&t=7327

これはCG50のCPUが何かしらの内部仕様の変更があったか、SDRAMアクセスでの何かで、
実際の動作周波数が計算で求められる周波数よりも低い周波数で動作していると思われます。

CG50デフォルトの計算上の動作周波数は
117.96MHz
ですが、
実際にはC
-1.6%ほど低いところの、
116.15MHz(正確ではありません)
くらいで動作しています。

これはFtune2/Ptune2とPtune3でCPUベンチ値を比較すると
FX機/CG20よりも-1.6%ほど低くなるのが分かるかと思います。

今回のアップデートはその周波数誤差を補正して表示できるようにするものです。





Ver 0.10 ベータ版 [2017/09/30 更新]
sentaro様によるコメント

fx-CG50国内発売前に一応、ってことで、0.10にバージョンアップしました。
アイコンをCG50スタイルに変更したのとSDRAMチェックの仕様を少し変更したのみで機能的には0.05と変わるところはありません。(^^;

ということで、現状Ptune3では2倍以上の大幅なオーバークロックは出来ないですが、CG50は基本ベースで高速化されているのであまりPtune3の必要性はないかもしれませんね。

Ptune3 Ver 0.10 ダウンロード


バグや疑問点、何かお気づきの点がありましたらよろしくお願いします。


=== コメントここまで ===

なお管理人の私が所有している個体で、[F5] で設定される CPU コアクロック 210.11Mhz で 2ヶ月使っている限りでは問題ありません。Ver 0.10 も機能面で変わりないので [F5] で問題ないと思います。



Ver 0.05 アルファ版 [2017/07/20 公開]
sentaro様によるコメント

αテスト版ですが、Ptune3 ver0.05です。(^^;
Ptune3 Ver 0.05 ダウンロード


一番の注意点としては、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様への質問をコメント欄にアップしました。

[2019/01/31 追記] 
fx-CG50 を2台持っていますが、いずれも 300MHz までチューンアップできました。単に CPUクロックが 300MHzといっても、他の設定に応じて実際のプログラム処理速度は大きく変わりますので、CPUクロックのみで話をするのはあまり意味はありません。
以下のコメント欄にあるように sentaro様のアドバイスを頂きながら、2018年8月末に 自分なりの安全かつ最速設定を見つけ、その後ほぼ5ヶ月使用使って問題ないので、運が良ければここまでチューンアップできます。ちなみにsentaro様所有のfx-CG50では300MHzには至らないようです。無理はしないでください。






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


 


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

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

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

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

やす (Krtyski)

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


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

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

なお管理人はカシオ計算機の関係者ではなく、Casio Basicが面白いと感じる1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR