【初心者用】プログラムは3つの構成要素で考える
初心者がプログラミングの勉強を行う場合、テキストを見ながらコードを入力し、動作確認を行ことは簡単にできます。基本的に「プログラムの内容を十分理解していなくても、入力ミスさえしなければ」、誰でもプログラムを書けます。しかし、新しいプログラムを自分で考えて記述する場合、ほとんどの初心者が考え込んでしまいます。エディタなどで、とりあえずひな形の部分は入力したのに、そこから先が全く入力できない、という状態です。「何を書いたら良いのか?」「どう書いたら良いのかわからない!!」と頭を抱えてしまいます。そうなると初心者は「自分にはプログラミングは向いていない・・・」「プログラムはやっぱり難しい!!」と思い、プログラムの勉強から遠ざかってしまいます。でも、「何をどう書いたら良いのかわからない!!」というのは、単純にプログラムの構成や書き方のルールを知らないだけです。どのようなプログラムでも、その構成は大体似ています。今回は、プログラムを作成する際の、「考え方」を説明していきます。
プログラムをいざ、自分で作ろうと思うと、何をして良いか、分かりません・・・・。どうしたら、良いですか?
私も!! サンプルは入力できるのに・・・。何がいけないのかしら?
それは、単純に「プログラムの考え方、書き方」を知らないだけですよ。きちんと覚えれば、スラスラと書けるようになります。
プログラムの役割・目的
まず、「プログラム」とは何でしょうか? 「プログラムは、何かの目的を達成するための手順書」となります。「運動会のプログラム」は「行う競技種目を順番に書いたもの」となります。「コンサートのプログラム」も「その日に演奏する曲名を順番に書いたもの」です。このように、プログラムは「誰が見ても、誰がおこなっても、同じ結果が得られるように処理内容を順番に記述したもの」となります。
したがって、プログラムで何を書いてよいかわからない、という初心者は、そのプログラムを実行すれば何ができるのか、「目的」がそもそも理解できていないと言えます。目的を理解していれば、その目的を達成するために何を、どのようにおこなえば良いのか、考えられます。プログラムの内容をキーボードから入力する前に、まず「目的」をじっくり考えてみてください。
プログラムの3つの構成
プログラムの目的が理解できたら、実際にコードを記述していきます。しかし、「目的は分かったけれど、何をどう書いたら良いのかわからない」と悩んでしまうかもしれません。ただし、目的がわかっていれば、あとは「プログラムの構成」に従って、コードを記述していくだけになります。
プログラムの構成は一般的に、以下の3つになります。
- データの入力
- データの処理
- 結果の出力
この3つの構成要素をまず考え、その後処理を細かく分けて、記述していきます。
ここで、理解しやすくするために、「カレーを作る」ことを考えてみます。おそらく、ほとんどの人はカレーの作り方(レシピ)を知っていると思います。頭の中で、その調理手順を思い浮かべてみてください。
カレーを作る手順を誰かに説明する場合、どのように説明しますか?
まず、材料を準備してもらいます。
次は、材料を切ったり、煮込んだりして、最後にカレーのルーを入れれば、終わりかな。
最後に、お更に盛り付けて、テーブルまで運ぶ。って感じですかね?
今、みんなに説明してもらった内容が、まさに上で説明した3つの構成要素になるんですよ!!
改めて、3つの構成要素をカレーの調理手順と関連付けると、次のようになります。
- データの準備・・・材料の準備
- データの処理・・・各種調理
- 結果の出力・・・・盛り付け
このように、プログラムを考える場合、まずはおおまかに3つの構成要素に分けて考えるようにしましょう。目的の処理を実現するために、まずどんなデータが必要で、それらはどのようにしてプログラム内で取得するのか。キーボードから入力してもらうのか、ファイルから読み込むのか。必要なデータの準備ができたら、それらのデータをどのように処理すれば良いのか。最後に得られた結果をどのように出力するのかを考えます。ディスプレイに表示するのか、ファイルに保存するのか。このようにして、プログラムを入力する前に頭の中で整理していきます。
抽象化と詳細化
プログラムの勉強をしている人は、「3つの構成要素で本当にプログラムが書けるの?」と疑問に思うかもしれません。実際は、この3つの構成要素の内容を細かく考えていかなければなりません。
3つの構成要素は、目的を達成するための「大きな処理のまとまり」を示しています。初心者が何を書いたら良いかわからない原因は、いきなり詳細部分を考えようとしているからです。大事なことは、「まず目的を達成するための処理をおおまかに捉えること」(抽象化)です。
みなさんが仕事やバイトで、仕事内容を他の人に教える場合、どのように説明しますか? いきなり細かな作業内容を伝えますか? 細かな作業内容を伝えても、それが実際何のための作業なのか分からなければ、なかなか覚えることはできません。まずは作業内容を大まかに説明し、それから詳細を説明したほうが相手は理解しやすくなります。例えば、「まず書庫からファイルAを持ってきて、最後のページを開き、そこに書かれてある数字を確認してください」と言われたら、みなさんはこれが何の作業か理解できますか? この説明は、いきなり詳細部分から説明した場合です。一方、抽象化を使って説明すると、次のようになります。「まず、昨日の売り上げ高の確認をしてもらいます(抽象化)。確認するファイルはファイルAというラベルがついていて、書庫にあります。そのファイルの最後のページを開くと、機能の売り上げ高の数字が書いてあります(詳細化)」。いかがですか? 抽象化してから、詳細化する方が理解しやすいのが分かると思います。
プログラムを作る場合は、「まず処理内容を抽象化し、その後、それぞれの詳細を考えていく」という流れを覚えておきましょう。「抽象化はメソッド名や関数名の宣言」、「詳細化はメソッドや関数の内部処理の記述」となります。
まとめ
今回は、プログラムの考え方として以下の説明をしました。
- プログラムは3つの構成要素で考える
- データの準備
- データの処理
- 結果の出力
- まず、抽象化を行う
- 目的の処理を実現するための処理をおおまかに考える
- 次に、詳細化を行う
- それぞれの抽象化の内容を詳細に細分化して考える
プログラムを作る場合、いきなりプログラムを入力しようとせず、まずはじっくりと頭で考えて、整理してください。この習慣を身に付けるとどのプログラム言語を使っても、プログラムを作ることができるようになります。
論理的に考えろ!! ってことですね。