2019.02.28
第2回 実は奥深いパズルゲーム
この連載では、プログラミングの経験が全くない方でもわかるように、プログラミングの学び方を説明していきます。
仕事でプログラミングをどうしても覚える必要がある方、最近流行りのプログラムに興味はあるけど何をするものか全くわからない方、近い将来必須科目になるプログラムを子供に習わせたいけど親である自分がプログラムが何なのかわからなくて不安な方など、そんな方でも気軽に読んでいただける連載です。
みなさんもプログラム初心者のMさんと一緒にプログラミングに触れてみてください。
本連載は、プログラミング初心者のMさんが、ビジュアルプログラミング教材「プログラミングゼミ」を学びながら、プログラミングの思想と技術を習得していくストーリーです。
さて、プログラミング教室に通ってきたMさん、先生に言われて、パズルを始めたようです。
パズルで学んだ「最適化」、「動作確認」が、スマホがサクサク動くために役立っていたんですね。
これからもMさんと一緒に、プログラミングを楽しんでください。
次回は、パズルゲームのさらに奥深いことを極めましょう!
さて、プログラミング教室に通ってきたMさん、先生に言われて、パズルを始めたようです。
●パズルは単なる遊びではない!?
こんにちは、Mさん。今日は顔色いいですね。 |
|
はいっ、プログラミングへの拒否反応が薄れてきたみたいです。 |
|
それは良かった! では、今日も楽しく始めましょうか。 きょうは、この「パズル」に挑戦してもらいますよ。 |
まずは、レベル1の中の「もんだい1-1」をやってみましょう。 |
では、やってみます。 ドラゴンにぶつからないようにケーキを取るのか。簡単簡単! |
じゃあ、実際に動かしてみよう。 |
あれっ!? ☆が2つしかない(´;ω;`) 先生、このプログラム間違ってませんよね。 |
|
よくできてますよ。ちゃんとケーキをとれたので、成功ですね。 | |
でも、☆は2つしかないんです。 | |
では、このヒントを見てもらいましょうか。 |
2手で? いったいどうすればいいんですか? 私には思いつきませんが。 |
|
「あるく」以外のブロックを使ってみてください。 | |
「ジャンプ」というブロックがありますね。 でも、ジャンプでどう動くのか分からないんですけど。 |
|
そんなときは、実際に「ジャンプ」ブロックだけを使って プログラムを組んでみればいいんです。 PCが壊れるわけじゃないから、いろいろ試してみてください。 |
|
はい。やってみますね。 |
ああっ。ドラゴンに食べられた! 失敗しちゃった。 |
|
大丈夫ですよ。 ほら、ドラゴンに食べられたということは、 「ジャンプ」で、何コマ動いたことになりますか? |
|
あ、「2コマ」ですね。 それなら、こうすればいいのかな? |
やったー、できた! | |
素晴らしいですね。 これで、プログラミングで大切な2つの点を学びましたね。 |
|
どういうことですか? |
●実際にプログラムを動かしてみる ― 「動作確認」
「ジャンプ」が「2手」で動くということを、実際に動かして確認しましたね。 それを、「動作確認」といいます。 実は、プロのプログラマーでも、プログラミング言語のコマンド (プロゼミのブロックにあたる)をすべて熟知しているわけではないんですよ。 |
|
へぇー、以外ですね。 | |
英語の講師も、辞書に載っているすべての単語を 知っているわけではないのと同じです。 そして、英語も日々新語が生まれてますよね。 |
|
そういえばそうですよね。 | |
プログラミング言語も、日々バージョンアップしていますので、 新しいコマンドが追加されることもあるんです。 コマンドの意味がよく分からないときは、「動作確認」をして、 どう動くかを確かめてから使用するようにします。 |
|
辞書を引くのと同じ感覚ですね。 |
そう!その通り。 プログラミングでも、分からなければ、辞書を引き、 実際に動作確認すればいいんです。 |
分かりました。 なんか、少し肩の荷が下りた気がします。 |
●できるだけ少ない手で打つ - 「最適化」
2つ目の点って何ですか? |
|
それは、Mさんが「5手」から「2手」でプログラミングできたことです。 これを「最適化」といいます。 |
|
「最適化」、なるほど、確かに2手は、最も良い手ですね! |
|
そうです。それが、「☆3つ」の意義です。 |
|
これは、実際のプログラミングでどのように役立つんですか? |
|
いい質問ですね。 実は、プログラミングの最適化は、2つの意味があります。 1つは、「時間短縮」。 5手で解くより、2手の方が、時間がかかりませんでしたよね。 Mさんは、スマホのアプリなどを使っていて、アプリがサクサク動かず、 イライラしたことはありませんか? |
|
しょっちゅうです! でも、あれは、通信が遅いんですよね。 |
|
そうです。 でも、通信内容を極力抑えて、時間を短縮できないか、 プログラマーは地道な努力をしているんですよ。 もちろん、通信内容だけではなくて、 様々なプログラミングの工夫に気を配ってます。 |
|
そうなんですか。難しそうですね。 では、もう1つの意味は? |
|
それは、「容量節約」。 安いスマホだと、すぐに容量が一杯になって、 アプリがダウンロードできなかったり、動画が見れなかったりしますよね。 |
|
そうですね。 私の友人も、安いスマホを買ったことを後悔してますよ。 |
|
それはつらいですね。 次の買い替えの時期には、記憶容量をチェックした方がいいですね。 それで、プログラマーとしては、ダウンロードするプログラムが できるだけメモリを消費しないように工夫することで頑張ってるんですよ。 |
|
それが最適化か。 そういわれると、必要性が分かりますね。 |
|
今は、メモリの大容量化が進んでますので、 いい機種さえ買えば、メモリの心配はいらないんですが、 昔は、少ないメモリを如何に効率よく使えるかが、 プログラマーの腕の見せ所だった時代もありましたね。 |
|
そうなんですか。 私には、まだまだむりですね。 |
|
心配しなくてもいいですよ。 今は、「できるだけ少ない手で」をモットーに考えるだけでいいです。 | |
分かりました! |
●最適化にチャレンジ!
では、最適化ついでに、レベル2の「もんだい2-4」をやってみてください。 |
分かりました!やってみます。 |
まず、最初のケーキを取った後に…下に行ってみようか。 |
できました! |
|
うまくいきましたね。 でも、ヒントを見ると、後1手減らせそうですね |
|
あっ、そうですね。 では、逆回りでやってみようかな。 |
やったー! |
|
素晴らしいですね。 今回は「回る方向」が最適化のカギでしたね。 でも、実は、もっと短い方法があるんですよ! |
|
えーっ? ヒントを見ると、これが最適だと思いますが。 |
|
それは、こうするんです。 |
すごい!!!!!!! 数字に小数を使うなんて全然発想にありませんでした! |
|
ですよね。 わたしたち大人の講師たちも最初は気づきませんでしたが、 ある子どもの生徒さんがやっているのを見てビックリしたものです。 なんせ、プログラマーには「データ型」という固定概念がありますからね。 |
|
??? データ型って何ですか? |
|
おっと、口が滑りましたね。 それは、数字には、整数とか小数とかいろいろ種類があるように、 PC内でも数字に種類があることなんですが 難しいので、また後日説明しましょう。 |
|
了解でーす。 |
パズルで学んだ「最適化」、「動作確認」が、スマホがサクサク動くために役立っていたんですね。
これからもMさんと一緒に、プログラミングを楽しんでください。
次回は、パズルゲームのさらに奥深いことを極めましょう!