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

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 について修正

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-9860GIII USB POWER GRAPHIC 3 と fx-7400GIII POWER GRAPHIC がヨーロッパ市場向けに2020年3月に発売となった。fx-9860GIII は明らかに fx-9860GII の後継機である。fx-74000GIII は  fx-5800P の後継機の位置づけになる可能性が考えられる。但し、これら新機種が日本国内で発売されるかどうかは現状では不明だ。発売されるとしても国内販売価格がかなり高価になる恐れがある。
⇒  速報! CASIO fx-9860GIII 発売間近? - 新しいプログラム電卓

今のうちに 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、fx-9850G、fx9850GC PLUS。そして 新世代Casio Basic を搭載している fx-9860G、fx-5800P、fx-9860GII、fx-9860GII SD、fx-CG20 そして fx-CG50 だ。

これらの機種やパソコンでのプログラミング経験 (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プログラミング入門プログラミングプログラム関数電卓

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

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

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


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR