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

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 に関する追記

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

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

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

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

 ⇒ 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 は高機能なので、プログラミング経験のある人には、すぐにプログラムを書ける実用機でもある。

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


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

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


これを Casio Basic で書くと、

"Hello World"

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


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

?→A

はい、たったこれだけ! 

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

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

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

?

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


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

"INPUT NUMBER"?→A

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

INPUT NUMBER ?

と表示される。


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


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

INPUT NUMBER ?

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

0.5

と表示される。

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


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

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


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

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

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


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


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



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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

ゲーム
プログラミングを始めたら、やはりゲームを作ってみたいものだ。 \(^_^)/
但し、使えるプログラミング言語によって、作れるゲームが大きく異なる。
fx-5800Pには、pause命令(待ちの命令) / HLT命令 (動作再開) がない。ループやGetkeyを使って作れなくもないが、アクションゲームには不向きと言える。
FX-603P / 602P / 502P には、pause / HLTがあるので、アクションを含めた数々のゲームが過去公開されていた。付け加えるなら、間接ジャンプ命令(現行の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-5800P用 ならびに fx-9860GII 用の Hit & Blow を e-Gadget アーカイブに収録した。 ⇒ e-Gadget アーカイブ


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



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

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

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


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

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

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

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


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


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

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

Casio  Basic の進め



残念なことに...

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

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



そこで...

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

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





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

人気ブログランキングへ


FC2ブログランキングへ



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

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

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

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

この人とブロともになる

QRコード
QR