第6.1回は、配列100本ノックです。

あらすじ

これまでも何度か言ってきましたが、プログラムは理解するのと書く事にはちょっとギャップがあり、 書く練習をする、というのが、説明を読んで行くのとは別に途中で必要になります。

また、プログラムは言葉で説明をするとかなり難しくなるけれど、書いて動かすと「ああそういう事ね」とすぐ分かる、という事が結構あります。 だから説明を読むのと、今回のようにひたすら書くのは、両方やる方が理解は深まる。

第六回でちょうど中盤の説明が一通り終わったので、次の関数の話に行く前に、ここまでやったことをひたすら書いていく、という事をやっていきたいと思います。

今回は配列です。

単純な訓練をたくさんやる、という作戦

アクションRPGなどで、勝てないボスが居たとします。
ボス戦を頑張って練習してうまくなって倒す、というやり方は確かにあるのですが、これが早いとは限りません。

何も考えずにひたすら雑魚を狩って、少し無駄なくらいレベル上げをやってしまって雑に倒す、というやり方もあると思います。 ドラクエなんかでも、無駄にレベル上げをやってからダンジョン行く、というスタイルはあるでしょう。

ゲームの場合はレベル上げを無駄にやり過ぎると簡単過ぎて楽しく無い、という問題はあるのですが、 プログラムを覚える場合は別に簡単過ぎても構わないはずです。 難しい所を頑張って頭の良さを鍛えて乗り切ってもいいんだけど、 心を無にしてひたすらスライム狩りまくって、ボスはAボタン連打で倒してしまっても構いません。

今回はこの、ひたすら雑魚を狩って不要な所までレベルを上げてしまおう、という企画です。

とにかくひたすら書き続けて、何も見なくてもスラスラ書けるようにしっかり書き方を覚える。 かったるくてつまらないですが、レベル上げです。

プログラムは自転車に乗るのと似ている所があります。
自転車が倒れない理屈をちゃんと説明しようとすると、 角運動量保存則だとかラグランジアンの回転不変性だとかいろいろ難しい事を知る必要がありますが、 とりあえずこいで乗れてしまえば、最初は難しくてもすぐに慣れて普通に乗れます。 実際自転車がうまく乗れるコツは、変な物理の理論を考えるよりも、実際にえいっと乗ってこいでみる方が良い。 むしろ理屈を考え過ぎて思い切り良く「こげない」方が、乗れるようになるのに時間がかかるでしょう。

プログラムも細かい事を説明すると難しいのですが、最初は別に細かい事を理解する必要はありません。
あまり細かい所を理解しようとする人よりも、良く分からんが書いて動かしてみる、という人の方が、最初の上達は早いと思います。 良く分からない状態でも、あまり考えずにえいっと少し書いていれば勝手に体が覚えてくれるものです。

そこで今回は、プログラムをかたっぱしから書いてみて、自転車が走り出す所まで行くのを目指します。

新しい事は一切無いので、飽きたらやめてしまっても問題は無いのですが、 自分の頭の良さに自信が無ければ無いほど、 ひたすら単調なレベル上げでカバーするのがオススメです。 要領の悪さは筋トレでカバー。目指せ脳筋。

実際の所、プログラムでは程度の差こそあれ、どこかで皆が「地頭の良さ」みたいなのの自分の限界にぶつかるものです。 ですが、プログラムはこの手の筋トレなど、地頭の良さ以外の方法でいろいろカバーが出来る、という良さがあります(数学はこれが出来なくてねぇ…)。

そんな訳で筋トレなので、もう飽きた、もう分かったよ、と思った所から、さらに少し先くらいまで訓練してみましょう。

やり方

おもに二つの問題があります。なんとなく見て解いていってもらって良いのですが、一応説明も書いておきます。

パターン1: 配列の生成

以下の配列を生成せよ」 の下に書かれている配列を作って、kotaeという変数に入れる、という事をやってもらいます。 今回は問題を大量に作る都合で、あまり間に説明とかはありません。 問題文が分かりにくくて何をやったらいいか分からない、という場合は、答えを見てください。 同じような問題を幾つか並べてあるので、一つや二つ答えを見ても問題無いように作ってあります。

結果にたまに[object Object]みたいなのが表示される事がありますが、私の方のバグなので気にしないでください。(たぶん一回目だけ表示される)

パターン2: 配列からの要素の取り出し

hairetuという変数に配列が用意されているので、そこから「XXを取り出せ」の指示にある要素を取り出す。 結果はkotaeに入れる。

例えばvar kotae = hairetu[0];とかいう風に。

ではやっていきましょう。大量にあるのでバンバンやっていって下さい。