プログラミングとは、コンピュータのソフトウェアを作ること。 今まではワープロソフト、表計算ソフト、メールソフト、ゲームソフトなどなどを使ってきたが、この授業ではこのような ソフトウェアを作ることがプログラミング。
プログラム(ソフト)は、コンピュータに対する命令の集まり。
今まではコンピュータに使われてきたが、今度はコンピュータに命令することになる。
プログラムはコンピュータに対する命令の集まりで、例えばコンピュータに「XXをして、次にYYをして、そして次にZZをしろ」などということである。
このような一連の命令は、残念ながら日本語などの自然言語でコンピュータに伝えることはできない。コンピュータは人間では理解困難な独特の言語でしか理解してくれない。
そこで人間にとって少し分かりやすく人工的に作られたコンピュータへの命令用の言語がプログラミング言語。これにより人間が難解なコンピュータの言葉を覚えることなく、コンピュータに対する命令を伝えてくれる(翻訳してくれる)。
なお、プログラム言語は、言語であるので、文法が存在する。しかも自然言語のようないい加減な文法ではなく、かなり厳密な文法である。しかし、厳密であるということは、覚え易いということにつながる。恐らく皆さんの中には日本語や英語の文法が複雑で多岐に渡り、かつ例外などが多く辟易している方もおられるであろうが、プログラミング言語はずっとずっとシンプルである。
コンピュータは頭が固く、命令されたままに従って動作する。 よって、プログラミングにおける最大の重要課題は、どのような命令をどのような順序で行うかである。間違った命令を与えれば、コンピュータは疑うことなくそのまま間違った動作をしてしまう。
例えば、ロボットにある地点まで道案内をするとする。「しばらくまっすぐ→右へ曲がって→次に左に曲がって進め」としなければいけないところを、「左→右」と命令しては残念ながら目的地には着かない。
プログラミングのやっかいなところは、予め全ての命令を書き出しておかなければいけないところである。例えば、上記のロボットの道案内の例で途中工事が行われていても、進めと予め与えられた命令はそのまま実行されてしまう。もし迂回させたいのであれば、あらかじめそのように命令を与えておかなければいけない。
このようにプログラムは全ての場合を想定して、一連の命令を与えておかなければいけない。つまりある仕事をコンピュータにさせる場合、どのような手順で作業をしていかなければいけないのかを考え、記述しておかなければならない。このような一連の手順のことをアルゴリズム(algorithm)と呼び、日本語では「計算手順」と呼ばれている。
プログラムを作る、つまりアルゴリズムを考えるのは人間であり、コンピュータはそれにしたがってただ単に実行するだけである。よって、人間がすばらしいアルゴリズムを考え、それをコンピュータに与えれば、コンピュータは素晴らしい動きをしてくれる。一方しょぼいアルゴリズムしかプログラマが考えられなかったとすると、残念ながらしょぼいコンピュータとなってしまう。
プログラミングにおいて非常に重要なのは変数と代入命令である。
変数とは、コンピュータ上で一時的に数値などを入れておく箱と考えてよい。
例えば、携帯電話のメモリーを想像していただいてもよい。1番という場所に自宅の電話番号を入れて(保存・メモリーして)取っておき、後で参照することができる。
プログラミング言語における変数も基本的には同じような働きをする。
変数、つまり数値などをしまっておける箱は、かなり自由にプログラマーが用意できる。また、使用する変数は、1番、2番などではなく、自分で名前をつけなければいけない。これを変数名というが、たとえば「x」とか「n」や「total」などを変数名として使うことができる。
では、変数になんらかの数字を保存、つまり代入しておくにはどうしたらよいであろうか。
ここで早速プログラミング言語における命令を覚えなければいけない。
BASIC言語の場合、変数などに数値などを保存、つまり代入するという、命令は「=」という記号で表現され、代入命令と呼ばれる。例えば、
x = 3
という一文は立派なBASICでの命令であり、「x」 という変数(コンピュータ内に用意され自分でxと名付けた箱)に「3」という数値を保存しなさいという命令を意味する。
この一文をコンピュータに実行させると、コンピュータ内でこの動作が行われる。
代入命令「=」をもう少しだけ詳しく文法的に解説すると、右側の計算結果を左側の変数にしまう(保存する)という命令である。
第16章 演算子
・16.2 代入演算子
参考になりそうなWebページ:
*変数について; http://park18.wakwak.com/~greenspace/dev-api/develop/step_1.html