1. プログラミングことはじめ

Author:森 雄大@東京農工大学
Date:2015/11/14
Version:1.0 (初版)

1.1. はじめに

プログラミングには、言語を問わずいくつか共通する点や注意しなければいけない点などがあります。これを読んでいる方はおそらくプログラミングという モノ を扱ったことが無いと思われますので、プログラミングの最初から説明していきたいと思います。

なお、このテキストではプログラミングを書く際に注意しなければならない点を書いています。 なぜ教える際や確認する際に注意しなければならないかというと、プログラミングでは、書くことについて知っていないとわからないミスが多いからです。 そのため、基本的なプログラミングを書く際のエッセンスを取り出して、このテキストを書き上げました。わからない所があればぜひ連絡してください。

1.2. プログラミングの基本法則

ポイント

  • プログラムにはミスがつきもの
  • プログラムの処理順序に気をつける

プログラムには言語の種類を問わず共通する点があります。それを幾つか説明していきたいと思います。

まずはじめに重要で当たり前のことですが、プログラムは書いたようにしか動かないということです。 プログラミングに慣れてくると、自分のプログラムは間違えていないはずという考えに陥ることがあります。 そのような場合、大体がプログラミング上のミスです。もし何か問題が発生した場合、自分が書いたプログラムのミスを考えましょう

次に、プログラムは上から下に実行されるということです。プログラムには実行する順序があります。 実行する順序を考えずにプログラミングし、うまく動かないと言うのはよくある話です。きちんと順序を考えプログラミングしましょう。

ただし関数(かんすう)というものが存在する場合、処理は上から下に行われず。関数のところへ移り関数を実行してから元の場所に戻ります。なので関数がある場合は特に順序に注意しましょう。

大きく2つこのことについて覚えておけばミスした場合ある程度の対応はできると思います。

では、次からはプログラムとはどのようなものか説明したいと思います。

1.3. プログラムの概念

ポイント

  • プログラムとは 変数関数条件分岐ループ を組合せた処理のこと

プログラムではいくつか共通する概念(がいねん)があり、それらを組み合わせることで大体のプログラムは書けるようになっています。それを説明していきましょう。

変数

まずは変数というものを説明していきたいと思います。変数とは具体的な値を変えられる値です。

例えば:

y = ax ( a は任意の整数)

という式が存在するとします。 この時の計算の答えはもちろん ax ですが、この時 x の値を変えることで計算の結果が変わることがわかります。 このような x を変数といいます。この変数を使用することで状況が変わっても同じようなことに対するプログラムであれば同じプログラムを使用できるという利点があるため広く使われています。

関数(かんすう)

関数とは 「あるもの(入力)に対しあるもの(出力)を返すもの」 です。ちょっとわかりづらいかもしれませんので具体例を上げておきましょう。:

* 文章中のあいうえおの数を計算するもの、これは関数です。文章が入力で計算した数が出力となります。
* 1 から n までの総和を計算するもの、これも関数です。n が入力で総和が出力です。
* 時間を入力するとその時間に対応した挨拶を返すもの、これも関数です。なにが入力でなにが出力かわかりますね?

これらは全部、入力を受け取り内部で処理をし、結果を出力として返しています。このようなものを関数と言います。プログラムではこの関数を組み合わせて任意の処理をしています。

_images/rur_text_kansuu_kasan.png

条件分岐(じょうけんぶんき)

条件分岐とは,「あるものが正しい場合、あることを行う」ことです。例えば、プログラマによくある話しとしてこのようなものがあります。:

ある妻がプログラマの夫に「買い物にいって牛乳を 1 つ買ってきてちょうだい。卵があったら 6 つお願い」と言った。
夫はしばらくして、牛乳を6パック買ってきた。
妻は聞いた「なんで牛乳を6パックも買ってきたのよ!」
夫いわく「だって、卵があったから......」

これは条件分岐の良い例です。夫の認識では「もし卵があった場合牛乳を6つ買い」「なかった場合牛乳を1つ買ってこい」というふうになっていたわけです。 この様な、「もし何々なら何々する」という考え方はプログラミングの基礎となる考え方なので覚えておきましょう。

_images/rur_text_bunki.png

ループ

ループとは繰り返しのことです。例えば、2+2+...+2といった計算を行う場合、これをいちいち プログラムに書いて行くのはとても面倒です。そこでループというものを使用します。この場合だと、足す回数を n として、n回足すことを繰り返せば良いことになるわけです。繰り返しは同じ作業を何回も繰り返す際にとても有効です。これもプログラミングの基礎なので覚えておきましょう。

_images/rur_text_roop.png

これらがプログラムを書く際に必要になる基礎概念です。現在のプログラムはこれらを組み合わ せることにより複雑な処理を行っています。ですからこれらをきちんと理解しておくことが重要です。

1.4. ミスの処理について

ポイント

  • 問題を正しく理解することがミスを解決する第一歩
  • 論理的に考え、正しい事柄を積み上げていくこと
_images/rur_text_bug.png

ここからが一番重要で、もしミスが発生した場合の対処法を教えます。 プログラミングのミスは大きく3つにわけられます。

  • 文法ミス
  • 考え方のミス
  • 環境のミス

このうちの環境のミスに関しては私たちにはどうすることもできませんし、このようなことは高度なプログラミングを行わなければなかなか出会わないため今回は説明しません。

文法ミス はその名の通り文法のミスです。プログラミングでのよくあるミスとしては、;(セミコロン),(カンマ) のような記 号のつけ忘れ、大文字小文字の間違いなどです。これらは一見しただけですぐに分かるミスなので注意して見つけましょう。

重要なのは、 考え方のミス です。プログラムを書いて動かしてみたけど自分が思った動きとは全く違うということがあります。これはそもそもの考え方 が間違えている場合が多いです。ではどのようにして考え方のミスを見つければ良いのでしょうか?三つの方法があります。

一つ目として、ミスを発見する際に有効なのが背理法(はいりほう)です。これは「Aが正しい場合...」と「本来正しくない事柄を正しいとしたり、本体正しい事柄を正しくない」として現在の考え方や事実に当てはめ矛盾(むじゅん)を発見する方法です。

例えば、:

人類はタイムマシンを発明することは出来ない
もしも発明していたら、未来からの客人が現代に来ている筈

どこにも未来人がいないのでタイムマシンは発明できない

もし現在の考え方にミスが存在する場合、背理法を利用しても矛盾が発生し ない場合が多いです。そのため背理法は考え方のミスを発見する有効な方法と言えるでしょう。

二つ目の方法は月並みですが基礎から論理的に思考を組み上げていく方法です。これはシンプルですがとても強力で、正しい事柄を積み上げていけば正しい結果に導かれる という考えかたです。何かミスをしたと思った場合は、もう一度基礎から考えたほうがいいでしょう。

三つ目は、問題に対しての認識が間違えている場合です。これは例を挙げるならば A を求める問 題に対し B を求めた場合です。この場合だといくら論理的に正しい事柄を積み上げていったとしても答えにはたどり着けません。繰り返し見なおしても間違いがわからない場合はまず問題を確認してみたほうが良いでしょう。

このように幾つかミスに対する対処法を教えました、ただ一部だけ間違えていた場合などはこれらの方法をそのまま使用できません。ではどのようにするかというと、問題がありそうなところにミスが存在した場合どうなるかを考えたほうがいいのではないでしょうか。もしそのように考え、考えたようにプログラムが動いた場合、そこにミスが有ります。ミスがある場所がわかると、さっき述べた方法によりミスを正すことができるようになります。ミスが複数個存在しても同じです。一つ一つミスを潰していくことがミスを無くす近道になります。

1.5. まとめ

正直いってあとは習うより慣れろです。少しやってみるとわかるようになることも多いため、ぜひ進んでプログラミングを行ってみてください。また自分でプログラミングを行っていてわからないことがあったら MAYKID (http://maykid.com/contact) に連絡してください。

1.6. 参考サイト

ここまでプログラミングに関する基本的な事柄をざっくりと説明してきました。そこでいろいろプログラミングに関し参考になる サイト等を上げておきたいと思います。このテキストを読み上げているためある程度の事柄はわかると思います。