Scratch Advent Calendar 2014 7日目の記事です。
前の日はうちの小4による
「"わりびき"をつくりました」 でした。
次の日は募集中です。誰か書きませんか?
「わりびき」が誕生したきっかけは、
Nagoya.php vol7でした。
※Nagoya.phpは名古屋でだいたい隔月開催しているPHPの勉強会です。勉強会ですが、LTや発表にはそれほど重点はありません。プログラム問題を課題に皆で黙々と時にわいわいとPHPのコードを書いている勉強会です。
Nagoya.php vol7で選ばれた課題が偶々再帰を使う問題で、さらに偶々PHP初心者(プログラミング初心者も含む)が多い回だったため、終了後に常連の間で「再帰はプログラミング初心者にはハードル高い」「再帰を理解できるかどうかがプログラマ思考の分かれ目では?」という話になりました。
そこで、「プログラミング初心者(といってもScratchを使ってすでに2年近く経とうとしているんですが)のうちの子供に再帰を使わせてみよう!」という話になったわけです。
が、ハノイの塔は難しすぎる気がして(なにせ私自身イメージが湧かない)何か他に良いネタはないかと考えていたら、子供自身から何気なくネタが提供されました。
「もし割引券を何枚でも使えたら、いくらでも安くできる?いくらまで安くできる?すっごく高いものがタダで買えたりする?」
そのネタが飛んできたのが外出中だったこともあり、口頭で100円を10%オフ券でいくらまで安くできるかをやってみただけで終了。
「ところで、いま割引券何枚使った?」
「忘れた」
「よし、後でscratchでやろうね」
という感じでScratchで組んでみることになりました。
そんなわけで、うちの子が作ったのが「わりびき」です。
http://scratch.mit.edu/projects/37549232/
「中を見る」を見れば分かる通り、再帰になりませんでした(汗
私が誘導することなく、子供がわからないと言った概念や計算方法(パーセントの概念とか、10%オフの計算の仕方とか、切り捨て・切り上げとか)だけ説明しつつ、子ども自身に好きに書かせたら「〜まで繰り返す」だけで解決してしまったのです。
そこで、私が自分で再帰版を作ることにしました。(ここまで前置き。長っ!w)
http://scratch.mit.edu/projects/37977098/
うちの子供はScratch1.4で育てたので、「ブロックを作る」という発想があまりなかったようで、それが敗因(?)だと思います。
さっそくこれを書いている私の後ろから覗き込んで「再帰ってなに?」とか言ってるので、私の作った再帰版を見せながら説明して理解できるか見てみたいと思います。
最後に宣伝です。
こんな親子が運営するCoderDojo Nagoyaは第3回は12/14(日)開催です!
http://coderdojo-nagoya.doorkeeper.jp/events
今回はScratchではなくHour of Codeをやりますが、普段は初心者にはScratch cardの作例・上級者には好きな作品を作ってもらい、最後に発表するという形式でやっています。
名古屋周辺で興味のある方は来てみてください。メンター希望のプログラマも歓迎です!