クリエイター手抜きプロジェクト[456]IoT編 IchigoJamに計算させる/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,600文字)


今回は、IchigoJamで計算をしてみましょう。コンピューターと言えば計算が得意です。IchigoJamで計算させて結果を表示するには、前回と同じPRINT命令を使います。


簡単なところで 1+1を計算させてみましょう。以下のように入力してリターンキーを押してください。

PRINT 1+1

すると以下のように表示されます。

2
OK

OKと表示されれば、正しく計算できたことになります。前回説明したように、IchigoJamは小数値の計算ができないので、-32768〜32767までの整数の計算だけが可能です。

毎回計算するのに、いちいちPRINTと入力するのは面倒です。そこで省略形を使います。省略形というのは、長い命令を短い数文字で代用するものです。

PRINTの場合は?になります。以下のように入力しても先ほどと同じ結果になります。

?1+1
2
OK

IchigoJamは複雑な計算はできませんが、小学校で習う四則演算はできます。それぞれ演算記号があります。

足し算 +
引き算 -
掛け算 *
割り算 /
割り算の余り %

掛け算は算数や数学で使われる×でなく*になります。割り算は÷でなく/です。割り算は小数点以下の計算ができないので、結果は整数値のみになります。

それではいくつか計算させてみましょう。?の後に計算式を入力してリターンキーを押してください。すると結果が表示されます。

?101+7
108
OK

?9999-3
9996
OK

?11*20
220
OK

?100/3
33
OK

?10%6
4
OK

ところで、IchigoJamが扱える整数の範囲は -32768〜32767です。32767に1を足したらどうなるでしょうか。やってみましょう。

?32767+1
-32768
OK

なんと最大値が一転して最小値になってしまいます。今度は最小値-32768から1を引いてみるとどうなるでしょうか。

?-32768-1
32767
OK

今度は最大値になってしまいました。最小値と最大値が隣り合わせ、これがコンピュターの計算における面白いところであり、ツボにはまってしまうところです。

どうしてこうなるのか、面白いと思った人はプログラマに向いているかもしれません。ふざけるな! って人はコンピューターを道具として使う方がよいかもしれません。

さて、IchigoJamは整数計算しかできませんが ( ) を使って、計算の優先順位を変えることができます。

?1+2*3
7
OK

?(1+2)*3
9
OK

?1+2*3+4*5
27
OK

?((1+2)*3+4)*5
65
OK

ところで、整数しか計算できないIchigoJamで、手軽に小数値を計算するにはどうしたらよいのでしょう。IchigoJamが小数値を扱えないからといって、あきらめるのはよろしくありません。

IchigoJamで小数値を計算したいなら「ゲタをはかせる」ことで処理します。ゲタをはかせるということは、得たい小数点以下の精度に合わせて10倍、100倍しておくということです。

つまり、10.35+9.41の計算なら、100倍しておけば1035+941の整数値として計算可能になります。

?1035+941
1976
OK

このように計算した後に、1/100にします。すると19.76となるわけです。(IchigoJamで ?1976/100 とすると19になってしまいますので、今回は頭の中で1/100にして19.76にしたということで)

「こんなことが役に立つの?」

という人もいるでしょう。前回は演算精度について説明しましたが、このゲタをはかせて計算することで演算誤差をなくすか、軽減することができます。

例えば映像制作でアニメーションさせる際、一定の値を加算して動くような場合、小数点以下の値を加算すると計算時の誤差によって、少しずつ表示される位置がずれてしまいます。

これを解消する場合に、このようなゲタをはかせる方法を使うことができます。他にもWebやアプリで、ゲームキャラクタを動かす場合等にも使えるわけです。

計算式もアルゴリズム(ロジック)も正しいのに、実際に動かすと動作がおかしい場合は、このようなコンピューター特有の演算誤差が関係しているかもしれません。一応知識として知っておくとよいでしょう。

それでは、また次回。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

海外からのおもしろ迷惑メールをネタにするのがよさそうな雰囲気なので、郵便局のパターンのを。でも、面白くない。けど、何かがおかしい。添付されたZIPファイルを解凍すると中はテキスト。適当に抜き出して翻訳したら「社交的なホタテ貝採りを制度化する」そうで。
-----------------
拝啓 配達員が注文番号327891708715の商品を配達するため電話で連絡を差し上げたのですが、つながりませんでした。従ってご注文の品はターミナルに返送されました。ご注文登録時に入力していただいた電話番号に誤りがあったことが分かりました。このメールに添付されている委託運送状を印刷して、最寄りの日本郵政取り扱い郵便局までお問い合わせください。敬具
日本郵政ジャパンの宛先:
-----------------

・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/

・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/

・ExtendScript Toolkit(ESTK)基本編
http://www.amazon.co.jp/dp/B00JUBQKKY/

・データビジュアライゼーションのためのD3.js徹底入門
http://www.amazon.co.jp/dp/4797368861

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/