プログラミング講座を実施しました。コロナ禍でなかなか例年のように実施できていませんが、人数を減らして気をつけて静かに実施しました。
Scratchのいいところ
今回はScratchによるプログラミング入門編。学校でどんなプログラミングをしているかは分かりませんが、まずは楽しむところから始めましょう。
私が感じているScratchのいいところは、ブロックがジャンルごとに色分けされていること。
例えば一緒にやるときに単に「動きのところを見てください。10歩動かすをダブルクリックしてみてください。」というよりは、「動き、青ところをさがそう。10歩動かすをダブルクリックしてみてください。」といった方が直感的にわかりやすく、説明も伝わりやすいです。
「制御」と子供にとっては聞きなれない言葉も「濃いオレンジ」と言うとあっさり伝わります。
たしかに「もし」「くりかえす」は制御なのですが、プログラマーだって実際書くときに、ほとんどの人は制御の関数やコマンドのIFを使おうなんて思って使っている人はまれだと思います。
色や形っていうのはイメージが直結しやすくていいですね。
実際、ずっとのようなループやもしのような条件分岐は、コーディングしたことのある人ならわかると思いますが、ブロックのイメージに近いものがあります。
これをC言語風に書くと下のコードのようになります。
while(){//ずっと繰り返し始点
if(x==1){//もしxが1なら始点
printf("hello");
}//もし・・終点
}//繰り返し終点
終点と始点を中カッコ{}で文字で囲んで書いているだけでで、ほぼ同じであることが分かると思います。pythonだとタブで区切りますね。
これは大人の事情なので子供には関係ないことなんですが、保護者さんたちが見て興味を持ってくれたらうれしいです。
基本的な内容が中心
今回の講座ではキャラの移動や、当たり判定について学びました。
ボタンを押したらキャラが移動する。「どんなふうに?」と画面でサンプルを示しながら、各自考え、ツクガク生がサポートに入りました。
ボールは自動的に動く。どんなふうに?
自動的にとは?
動き続ける→10歩ずつ、ずっとのブロック
端についたら跳ね返るようにしたい、これでは真横に行ったり来たりする角度はどうつける?
と、やりながら考えていきます。
論理化のための作業工程
プログラミングをするときに頭からコードを効率的に考える意味はなく、Scratchをはじめプログラミング環境は遠慮なく失敗できる場ですので、やりたいことをやりたいように、自由に考えていくのがよいのではないでしょうか?
自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力
小学校プログラミング教育の趣旨と計画的な準備の必要性について「プログラミング的思考」
文科省によれば、「論理的に考えていく力」をプログラミング教育に求めていますが、プログラミング的思考は、「論理化のための作業工程」と考えたほうが私はピンとくる感じがします。それが論理的に考えていく力であればいいのですが、、とりあえず、あんまり難しく考えて躊躇するより、失敗しながらプログラミングしていけばいいと思うんですよね😅
自動車の生産会社では、衝突実験のシミュレーションにソフトウェアを使うことがあります。安全性を考慮しコストを抑えるためシミュレーションだからこそ、失敗することができ失敗を重ねることでよいものが生まれます。
プログラミングして作ったソフトウェアですから、ソフトウェア自体も、当然、失敗に失敗を重ねバージョンアップし続けていると思われます。
Scratchの講座の話から3Dの自動車の衝突実験シミュレーションの話に辿り着いてしまいましたが、Scratchは小さな1歩目でも、お子さんにとって将来への大きな一歩目になるかもしれません。
というわけで、次回、7月14日、micro:bitによるロボットカー講座もぜひご参加ください。