今回は、私がプログラムを組む前にやっていることについて紹介します。(本記事には個人的見解が含まれます)(本記事は、for文とif文を使えるようになった初心者を想定して書かれたものです)
for文やif文に不安がある方は、まずは本やprogateなどのオンラインのサービスを使って学習してみましょう。
紙に描く
大まかに理解する
プログラムをやるのに、どうして紙が出てくるんだろう?と思う方が多いかもしれません。ここで、プログラミング初心者の方に覚えておいて欲しいことがあります。それは、自分が理解していない作業はプログラムできないということです。例えば、大量の鉛筆を何ダースあるか数えるプログラムを作るとします。この時、1ダース=12本ということを知らなければ、正しいプログラムは作れません。
複雑な作業であれば、中身を分割する必要があります。いま、鉛筆を芯の硬さで分類し、それぞれが何ダースあるか計算するプログラムが欲しいとします。この作業を一気にプログラムにするのは難しそうなので、作業を分割します。
- 鉛筆を芯の硬さで分類する
- それぞれの本数を数える
作業を分割することには、どこの作業でエラーが起きているのかを確認しやすくなるというメリットもあります。言語化するのが難しい場合や要素が絡み合ってる場合、作業を絵で描いてみましょう。作業を絵に描いてみると、自分の頭の中がよりすっきりし、作業を分割しやすくなり、作業の抜け漏れを減らすことがにつながります。また、ゴールを可視化することでモチベーションアップにつながります。
詳細に書く
ここからは、どのようにプログラムを組むかを、紙に書いていきましょう。ここでは、文法を正しく書く必要はありません。自分が後から見返したときに意味が分かればOKです。
このプログラムでは
上の「分類」では、最初に、鉛筆を全部調べるためにfor文を書きます。その後、鉛筆を芯の硬さで分けるためにif文を書きます。(本当はelifやelse ifを使うのですが、その辺も雑に書いて大丈夫です)
下の「カウント」では、芯の硬さで分けたそれぞれの鉛筆が何ダースあるかを数え、それをprintで出力します。
ここまで書くと、プログラムの流れやそれぞれの作業の役割がより明確に分かってくると思います。ここで、作業に抜け漏れがないか、作業の分け方はこれでいいか、本当にこれだけの作業で十分か、などを再度確認します。例えばこの場合
上では、鉛筆の芯の硬さがHB,B,2B以外の時の処理を追加したいな
下では、ダースと余りが何本あるかも確認したいな
と思ったら、紙に書き足していきます。ifやforを書くのに抵抗がある方は、ifは「もし・・・なら」と、forは「繰り返す、・・・から・・・まで」と書いてみましょう。最初のうちは、日本語が多い方が書きやすく、見返す時も楽になります。
調べる
ここまで手で書いたものをパソコンに入力する前に、自分のフォルダやブラウザを検索してみます。過去に作られたもので使えそうなものがあれば使いまわせます。
そうではありません。紙に書いて作業を分割することによって、使いまわせる場所と自分が新規に書く場所をしっかりと見極められるようになります。先人の知恵である関数やモジュール、他人の書いたコードをしっかり使えるようになることが、プログラミング中級者への第一歩です。
名前をつける
プログラムを書く前に、ファイルに名前を付けます。この時、名前だけでどんな作業をしているか分かればBest。それが難しい場合、メモ帳やノートにファイル名とそこで行っている作業の概略をメモしておきます。鉛筆の例であれば
pencil_dozen.○○ 鉛筆を芯の硬さで分けて、それをカウントして何ダースか計算し、その結果を出力する
と書けば十分です。こうすることで、ファイルを探しやすくなります。
また、別のファイルを使いまわしたいときは、上書きするのではなく、コピーして元のファイルを残したまま作業をしましょう。変更した箇所を元に戻せなくなると、どこまでが正常に動いていたのか確認するのが難しくなります。
まとめ
ここまで、プログラミングを始める前の準備についてまとめてきました。これはかなり丁寧に書いているので、毎回ここまでやらなくても大丈夫です。紙に書くのが難しい…と感じる方は、まずは自分が今までに作ったプログラムを紙に書いてみましょう。そして、その中の一部を変更して、それを再度プログラミングしてみてください。
文法は、for文とif文が使えれば大体OKです。今後は手や頭を動かし、細かい文法などと同時にプログラミングのための考え方を学んでいきましょう。
参考文献
おまけ
実際にプログラムを作るときにも、このように書いています。