プログラム関数電卓でプログラミング
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 について追記
2023/06/23 製品入手性に合わせて更新
電卓で使う Casio Basic と Casio Python
カシオ fx-5800P カシオ fx-9750GIII カシオ fx-CG50
これまでカシオから様々なプログラミング可能な関数電卓が発売されてきた。2023年6月時点で日本国内での入手性を考えると、fx-5800P、fx-9750GIII そして fx-CG50 の3モデルに限られると思う。
古い以下のモデルでは、Casio Basic がほぼ互換で使える;
▶ fx-9860G / fx-960G SD / fx-9860G Slim, fx-9860GII / fx-9860GII SD, fx-9860GIII
▶ fx-CG10 / fx-CG20
以下のモデルでは、Casio Basic に加えて Pythonモードで Casio Python が使える;
▶ fx-CG50 (カラー高精細液晶)
▶ fx-9750GIII, fx-9860GIII (モノクロ液晶)
※ モノクロ液晶モデルでは、Pythonモードで使えるメモリが少なく (fx-CG50の半分程度)、スクリプトファイルの編集可能サイズや出力可能な行数に制限がある (約半分)。入手可能なら fx-CG50 を勧める。
▋プログラミングできるカシオの電卓
▍Casio Basic と Casio Python
カシオのプログラミングできる電卓に搭載されているのが Basic風言語であり、欧米では Casio Basic と呼ばれている。本ブログでも Casio Basic と呼んでいる。Casio Basic には一部固有の命令や記法があるが、殆どが一般の Basic に近い記述方法が使える。
ただし Casio Basic固有の仕様および制限として、
・ 代入に = を使わず → を使う
・ 局所(ロ-カル)変数が使えず大域((グローバル)変数のみが使える
・ ユーザーが関数を定義して使えない
などがあり、ちょっと特殊である。
これだけみると、かなり劣ったプログラミング言語と考える人は多く、それは当然の評価だと思う。
ところが Casio Basic で実際にプログラミングしてみると意外に使えることがわかる。Casio Basic はブロック構造の直線的結合といった基本的なプログラミングの原理と感覚で構造制御したコーディングができるので、プログラミングの基礎的な素養を身につけることはできると思う。
Casio Basic の最大の特徴は、実用的なプログラムを作れる点にある。仕事や勉強、日常的に使えるプログラムが作れる。管理人の場合は、自分の仕事上これなしでは困る程度の必要性と頻度で使っているプログラムが複数ある (当ブログで紹介している)。それ以外にも、基本に忠実なコーディングで作った実用プログラムやゲームプログラムを紹介していて、Casio Basic の意外な実力を紹介できていると思る。
カシオの電卓搭載プログラミング言語として、海外専用モデルの Casio fx-CP400 や fx-CG500 に搭載されている Basic がある。これは構造化Basic なので、Casio Basic よりも優れていると期待される。ところが実際に使ってみると、仕様が中途半端で使いづらく、なんといっても動作速度が極めて遅い。これを使ってプログラミングしたいなどと思えない代物であり、遅すぎて実用的に使えない。この言語は、発展途上の実験的な試みに留まっているレベルのものだ。電卓でプログラミングを楽しみたい人には、fx-CP400 や fx-CG500 は決して勧められない。Casio Basic の方が遙かに有用だと思う。
さらに、2020年にはグラフ関数電卓向けの PythonモードがOSアップデートで入手できるようになっている。カシオは今更上記の中途半端な構造化Basicにこれ以上リソースをつぎ込んでアップデートするとは考えにくい。
Pythonモードに目を向けると、現時点 (2023年6月) では残念ながら発展途上であり、実用プログラムを作るのに必要な入力機能が備わっておらず、これも中途半端な状態だ。現時点では工夫して楽しめるコーディングを紹介しており、本ブログオリジナルのユーザーモジュールも紹介している。なお、今後のOSアップデートによる機能追加には、大いに期待したい。
▍枯れているが使える Casio Basic
今の時点で電卓で実用プログラムを書けるのは何かといえば、Casio Basic しかないというのも事実だ。Gotoに頼らない構造制御を行い、ブロック構造の直列結合でプログラムを構築できるので Casio Baisc は古いものの、今でも楽しんで使える言語だ。
カシオは、プログラム関数電卓 fx-5800P、グラフ関数電卓 fx-9750GIII や fx-CG50、そして土木測量向け電卓 fx-FD10 Pro に Casio Basic を搭載しており、互いに一定レベルの互換性がある。ハードウェア依存の Getkey コマンドや Locate などの入出力関連コマンドについては、fx-5800P とそれ以外でキーコードや表示文字数の違いがあるが、移植は簡単だ。グラフ関数電卓では、かなり古い fx-9860G OS2.0 以降で動作するプログラムは、fx-9860GII, fx9750GIII や fx-CG20 / CG50 でそのまま正常動作する(完全上位互換)。なお、fx-CG50 と fx-CG20 は高解像度カラー液晶を搭載しており、解像度の違いとカラーの取扱に新たなコマンドが追加されている。
管理人が最初に出会った Casio Basic は fx-5800P に搭載されているものだったので、当ブログでは fx-5800P の Casio Basic について詳しく解説している。その後 fx-9860GII、fx-9750GIII や 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 は意外に高機能なので、PCでのプログラミング経験者なら、すぐにプログラムを書ける実用機でもある。
この記事を初めて書いた当時は、fx-5800P に比べて、fx-9860GII は3倍程度の価格であった。その後、fx-CG50 が登場し、fx-9860GII が国内では販売中止となった。現在では、 fx-CG50 の価格は 並行輸入品で fx-5800P の2倍以下、Amazon USA で購入するとさらに安く入手できる。
⇒ Casio プログラム電卓の価格動向
fx-5800P の補修部品の供給が 2025年までとなっているようで、fx-5800P はその頃までに発売中止になる可能性が高い。プログラム関数電卓のカテゴリーとして fx-5800P の後継モデルが発売されるかどうかは不明であり、このカテゴリーが消滅する可能性もある(とても残念だが...)。
一方で、新モデルが登場している。fx-9860GIII USB POWER GRAPHIC 3 がヨーロッパ市場向けに2020年3月に発売され、fx-9750GIII POWER GRAPHIC 3 が北米市場向けに2020年4月に発売された。fx-9860GIII と fx-9750GIII は殆ど同じ機能を持ち、明らかに fx-9860GII の後継機である。これら機種に搭載されている Casio Basic は fx-9860GII 搭載版と完全互換になっている。
ところで、fx-9750GIII は非常に安い価格設定になっており、fx-9860GIII の半額以下になっている点が興味深い。fx-9750GIII は、セカイモンや Amazon USA を使えば日本国内に居ても、fx-5800P の国内価格に近い。fx-9750GIII が fx-5800P より安いという逆転現象も実際に起きている。既にアナウンスされている fx-74000GIII POWER GRAPHICS 3 は2020年下期にヨーロッパで発売されたものだが、このモデルは管理人の視点からは全く推奨できない。
fx-5800P の後継モデルが発売されない場合は、fx-9750GIII や fx-7400GIII が fx-5800P を引き継いで国内販売される可能性もあるが、現時点では噂にすらなっておらず、不明だ。
⇒ 速報! CASIO fx-9860GIII 発売間近? - 新しいプログラム電卓
⇒ fx-9860GIII の概要
⇒ fx-9750GIII の概要
⇒ fx-7400GIII の概要 [2021/03/31 追記]
ところで、Casio Basic が "行番号付きの 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 でプログラムを書くのが簡単だとお分かり頂けるだろうか?
プログラム電卓にさせる仕事は、単純な計算だが、条件を種々変更して何度も実行すること、おそらくこれに尽きると思う。
付け加えるならば、パソコンを起動して、上記のような仕事をするには面倒に思う時こそ、プログラム電卓の出番だ。
▌電卓プログラム - Casio Basic の実用例
プログラミングに科学技術の知識は殆ど不要だ。関数電卓は使いこなせなくても、プログラム電卓は使いこなせる。言い換えれば、プログラム電卓は関数電卓の延長線上にある必要はない。実際のプログラム電卓は、関数電卓の高機能バージョンとして発売されているから、勘違いされやすいのだが...
プログラミング能力は特別のものでなく、理系か文系、年齢や性別に無関係なのは、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 / m2、mmHg、mmH2O、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で記述されている。
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 -目次-
⇒ プログラムライブラリ
▋プログラム電卓での Casio Python
fx-CG50 や fx-9750GIII には Pythonモードがある。これを当ブログでは Casio Python と呼んでいる。
今のところ記事は少ないが、オリジナルのPyrhon スクリプトを紹介している。
まずは、以下のページからすべての記事へ行けると思う。
▶ Casio Python のポテンシャル
今 Python に触れると、たとえ Casio Python であっても将来は役に立つと思う。
応援クリックをお願いします。励みになるので...
keywords: fx-5800P、プログラミング入門、プログラミング、プログラム関数電卓
リンク集 | ブログ内マップ
- 関連記事
-
- プログラム関数電卓でプログラミング 2023/06/23
- fx-5800P【プログラミング入門】:言語仕様 2021/11/05
- Casio Basic の勧め 2020/05/31
- Casio Basicでグラフィックス 2020/05/21
- Casio Basic のバージョンとバグ 2017/10/10