今回は、関数について説明します。LEDを点滅させるプログラムで、キーが押されたらすぐに終了できるようにするために、必要なのが関数です。
JavaScriptの関数は、必要な値を渡すと何かしらの処理を行い、結果を返します。関数は使用する前に、処理内容を定義する必要があります。
JavaScriptで関数を定義するにはfunctionを使います。IchigoLatteでの関数定義も、一般的なJavaScriptと基本的には同じです。関数定義は以下の構文になります。
function 関数名(パラメーター1,...,パラメーターN){
何らかの処理
return 戻り値
}
場合によっては、パラメーターがまったくないこともありますし、戻り値がないこともあります。
まずは、簡単な足し算をした結果を返す関数を作ってみましょう。2と5を足した結果を返すプログラムは、以下のようになります。
function add(a,b){
var c=a+b;
return c;
}
var n=add(2,5);
log(n,"\n");
function add(a,b){ のaddが関数名になります。aとbが関数に渡された値を入れる変数になります。
ちなみに、この変数aとbは関数内でのみ有効な変数です。このような特定の範囲内でのみ使える変数を、ローカル変数と呼びます。
関数内では変数aとbの値を足した結果を、変数cに入れています。その後、returnで計算した結果を返しています。
関数は定義しただけでは実行されません。また、一般的なJavaScriptでは、関数はプログラムのどこに書いても動作しますが、IchigoLatteでは呼び出す前に定義されている必要があります。
つまり、以下のようにするとIchigoLatteでは動作しません。
var n=add(2,5);
log(n,"\n");
function add(a,b){
var c=a+b;
return c;
}
プログラムを実行すると、2+5の結果である7が表示されます。
lash>ms .
7
lash>■
今回のように決まった値を計算するだけでは、関数を定義した意味がありません。そこで、ユーザーが入力した値に5を足した結果を、返すようにしてみましょう。まず、関数を以下のように変更します。
function add(a){
var c=a+5;
return c;
}
これで、5を足した結果を返す関数になります。
次にユーザーからの入力ですが、IchigoLatteではユーザーからの数値入力を行うinput()メソッドが用意されています。一般的なJavaScriptであれば、prompt()メソッドに該当します。
IchigoLatteのinput()は、10進数の値しか入力できません。0xで始まる16進数や8進数などは入力できません。入力しても予期せぬ値になることがあります。
ユーザーから入力された値に5を足した結果を返すプログラムは、以下のようになります。
function add(a){
var c=a+5;
return c;
}
var b=input();
var n=add(b);
log(n,"\n");
関数はいくつでも定義できます。と書きたいところですが、IchigoLatteは使えるメモリが少ないため、変数や関数などの合計が一定数を越えるとエラーで動作しなくなります。
どこまで使えるかは、IchigoLatteのバージョンによっても異なりますが、だいたい32個ほどと考えておけばよいでしょう。
もうひとつ、関数には制約があります。それは関数名は最大7文字まで、ということです。実は名前の長さが7文字までというのは、関数だけでなく変数名も同じです。
とにかくメモリが少ないので、IchigoLatteにはこのような制約があります。他にもオブジェクトで定義できるメソッド・プロパティは4つまでなど、いろいろな制約があります。
制約はありますが、やはりJavaScriptで手軽にプログラムできるのは便利です。ですから多少の制約は仕方ないでしょう。
次回は、、LED点滅のプログラムを改良しキーが押されたらすぐに終了できるようにします。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
Google Home mini。なくても困らないけど、他の仕事しながら問いかけに答えてくれるので、便利と言えば便利。一番使うのはタイマー。次は天気。質問には答えてくれないことが多いけど、一応問いかけたりはします。
教育用のコンピューター「Micro:bit(マイクロビット)」認識しない原因が判明。様々なマシンに接続して、3つのマイクロビットとも認識しないので、残っている原因はmicro USBケーブルしかない。
電源は入るし、動くけど、デバイスとして認識されない。で、新品の新たなケーブルを購入し接続したら、あっさりとUSBドライブとして認識されました。IchigoJamとかでは問題なかったのに(IchigoJamは電源系ラインしか使ってないからという理由もあるかも)。
何にせよ、これでマイクロビットで遊べそう。
・InDesign CS6 JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/
・Photoshop CS6 JavaScript Reference
http://www.openspc2.org/reibun/PhotoshopCS6/ref/
・Illustrator CS6 JavaScript Reference
http://www.openspc2.org/reibun/IllustratorCS6/ref/
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/