フィボナッチ数を出しまくれ!Scratch, BASIC, JavaScript そして Quest、はたして君の考えたやり方は本当に動くのか!?

IMG_3241

昨日のPCN勝山クラブで、こどもがフィボナッチ数列を出したいとScratchでプログラムを組み出しました。何やら小学6年生の算数の教科書にフィボナッチ数列がのっていたらしく、フィボナッチ数列を出す機械を作りたいとのことで、できたソースコードが上の写真。過去2つの数値を足し続ける、ということで変数を2つ、なかなか良い出来です。

では、BASIC だとどうでしょうか。

IMG_3250.jpg

10 Z=1
20 L=1
30 ?1:WAIT60
40 @ズット
50   ?L:WAIT60
60   Z=L+Z
70   ?Z:WAIT60
80   L=L+Z
90 GOTO @ズット

こちらは上記Scratchコードをそのまま IchigoJam BASIC に移植したもの、行数も同じです。ちなみに出たばかりの最新バージョン 1.3b1 。

実行するとこんな具合です。

IMG_3253.jpg

28657 の次に -19168 となっているのは、IchigoJam BASIC の変数箱の大きさが -32,768~32,767 であるため。この範囲外に出ようとするとおかしな値になります。

 

では JavaScript だとどうでしょうか。

IMG_3254.jpg

var zee=1;
var loo=1;
log( 1, "\n" );sleep(1000);
while(1){
  log( loo, "\n" );sleep(1000);
  zee=loo+zee;
  log( zee, "\n" );sleep(1000);
  loo=loo+zee;
}

こちらは IchigoLatte JavaScript に移植したもの、同じですね。

実行するとこんな感じです。1836311903 の次が -1323752223 になっているのは BASIC 同様、変数箱の数値範囲を超えたからです。IchigoLatte JS の数値範囲は -2,147,483,648~2,147,483,647 で、IchigoJam BASIC よりも大きい数字を扱えます。(最後、画面にゴミが出ているのはマシンスタックが不足したためで、IchigoLatteの仕様です。ご愛嬌。)

 

さて、お次はQuest言語で。

IMG_3258.jpgIMG_3259.jpg

IchigonQuestでのソースコードはこういう具合、全11行に移植しました。表示は じゅもん「ぷりんと」でもよかったですが「はこG に入れることが表示である」ということしました。

実行するとこういう具合です。IchigoJam BASIC と同じで 28657 の次が -19168 になっています。IchigonQuest の変数の数値範囲も -32,768~32,767 です。Quest言語は実行しているところも見えるし、変数の中身も常に見えているので楽ですね。ちなみに「ゆっくり実行」もあるので、どこを実行しているのかゆっくり見ながら楽しむこともできます。

 

さて、最後にScratch 3.0でやってみましょう。

IMG_3261.jpg

こちらがソースコードです。現状のScratchと色使いまで同じですね。

実行するとこんな具合、おなじみのネコが喋ります。Scratch 3.0 は一般的なJavaScriptで作られているらしく、数値範囲は ±1.7976931348623157×10³⁰⁸ ぐらいでしょうか(詳細求む)。リッチなプログラミング環境だと表現力もリッチ、リッチな君は挑戦してみよう!ちなみに、何秒見ていれば最後を見れるか、わかるかな?

 

今回のプログラムはあくまで1つのやり方。プログラミングに正解はない、君も君なりのやり方でやってみよう、それこそが「プログラミング的思考」です。


 

IMG_3263.jpg

Scratchの開発者 ミッチェル・レズニック教授 もやって来る「SCRATCH 2018 TOKYO」は今週末 2018.10.20(sat) 、六本木アカデミーヒルズ (六本木ヒルズ・森タワー49階) にて。残念ながら事前申し込みは定員に達したためClosedとのこと。

Scratch好きに会えるチャンス!

 

 

 

 

 

 

 

 

 

.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s