2016年2月28日日曜日

Scratch ローカル変数??


Scratchで変数を作る時、「すべてのスプライト用」「このスプライトのみ」を
選択できる。

これをもって、「すべてのスプライト用」をグローバル変数、
 「このスプライトのみ」をローカル変数と解説している記事をよく目にする。
これは首を傾げずにはいられないですよね。

 或るスプライトに属する変数ではあるけど、それって、そのスプライトに関する
全てのスクリプトで参照・変更できるんですよね、、、。
スクリプト(プロシージャ)内でのみ機能する変数ではないので、それを単純に
ローカル変数として紹介してしまうのは、どうなんでしょう。

(2.0で定義ブロックってのが作れるらしいですが、その定義内にスコープが限定される
変数があるっぽいですね。)

Scratch スプライトに「向き」は無いよね

「何らかの角度」に関する数値は持ってると思うけど。

Scratch 「ずっと」をbreakで抜ける


Scratchの「ずっと」ブロックには、終了後に他のブロックを組み合わせる為の
凸がない。

「ずっと」同じ処理を繰り返すのだから、次の処理を実行できないのは、
当然の理屈の様に思える。
ってか、普通にbreakして次の処理へ行きたいよね!!

仕方ないので、「[ ]を送って待つ」と「スクリプトを止める」を使う。


https://scratch.mit.edu/projects/99517398/#editor

今回は、ループ処理が終了するのを待ってから次へ行くので、
「[ ]を送って待つ」を使った。
並行にしたい場合は、「[ ]を送る」にすればメッセージを送った後に
次の処理が始まる。
(くっ、下らねぇ、、、orz)

Scratch カウンタ変数でfor文


Scratchでは、「[10]回繰り返す」ブロックがある。
これ、違和感あるよね。(誰が10回を数えてるんだよ!)

なので、カウンタ変数を使ってfor文にする。


https://scratch.mit.edu/projects/99516656/#editor

この場合「まで繰り返す」の「まで」は、"i < 10"の間、真を返す。
"i = 10"になったら、ループが終了する。
 ここで、"i < 10"ってやっちゃうと、"i > 9"の間真を返すので要注意!!
(くっ、下らねぇ、、、orz)

2016年2月27日土曜日

Scratch はじめの「10歩」でつまずいて


Raspbianには、Scratch(と言うプログラミング環境)が入っているので、使ってみた。
(例によって、一般的な使い方や、入門編の類の話は書かないので、その辺はググってください)

先ずは、ネコを動かすところからなんだけど、
「10歩動かす」ブロックを使っても、10歩動いているようには見えない。

twitter上で悪態をついたところ、翻訳者の先生から返信を頂いたりして恐縮至極ですが、
やっぱり↓こんな風に動いて欲しいよね。
(以後、Web版のScratch 2.0を参照して行きます)
https://scratch.mit.edu/projects/99501857/#editor
 参考:https://scratch.mit.edu/discuss/topic/26943/

でも、 この「10歩動かす」ブロックの肝は、決して「歩」(距離・長さ)ではなく、
どの方向に動くかってことだと思う。所謂タートルグラフィックスと言うもの。
頭の固い老人は「10歩」と言う字面に拘ってしまうが、 子供は「動くことが楽しい」ので、
関係ないらしい。
もし、ここで引っ掛かった人は、『こう言うものだ』と思って、先に進んだ方が
良いかもしれない。
(この辺の話を、教育用のツールとして、どのように説明すべきか等を突き詰めたい人は、
それもまた面白いでしょうが。)

それならば、特性を生かした使い方をしてみよう。


https://scratch.mit.edu/projects/98641324/
タートルグラフィックスならば、小難しいことを考えなくても、この曲がり角で、
どっちを向いて進めば良いかを判定するだけで、コッホ曲線が描ける。
勿論、再帰処理を使えばもっとスッキリしたスクリプトになる。
私は、再帰処理だと、自分が今何処(どの階層)に 居るのか分からなくなるので使えない。
検索すれば、スマートなスクリプトが出てくるので、そちらを参考にして欲しい。

勢いで、作ってはみたものの、制御ブロック等に不思議な違和感があったことを
認めざるを得ない。
https://twitter.com/AO_o10yan/status/698413436561027074
 あるいは逆に、他の言語では構文を組み合わせて作らなければならない一連の操作が、
一つの単純なブロックにまとめられているのを目にした時、不満にも似た感情が沸く
のを禁じ得ない。
ってか、そのブロック使った方が簡単・便利だから使うけどね!!

いずれにしろ、Raspberry PiのOSにRaspbianを使っているなら、非常に面白いので、
使ってみるべきだと思う。