共通しているプログラム脳を 最短最速で手に入れる方法
この記事では、プログラミング言語に共通しているプログラム脳をご紹介していきます。
最初から順々に読んでも、気になるところから読んでも理解が得られるようになっています。
推奨の読み方としては、最初から順番に読まれたほうが理解しやすいかと思います。それでは、本編をお楽しみください。
Contents
プログラミングの基本

プログラミングの概念、構成
まずは、プログラムとは何かということから話を進めていきます。
プログラムとは、コンピュータで実行するソフトウェアの処理手順を示した手順書です。
この手順書のことをソースプログラム、ソースコード、あるいはソースと呼びます。
次は、アルゴリズムとは何かについてです。
アルゴリズムとは、何か実現したい物事を行うための処理手順です。
実現したい物事を行うためには、「どのような作業」を「どのような手順」で実行していくのかを考える必要があります。
つまり、実現したい物事を行うための作業をすべて洗い出し、洗い出された作業の順序を明確にしていきます。
これは、プログラミングする前の準備段階で、実現したいことをいきなりやりなさいと言われ、何から手を付ければいいのかが分からない際に、どのようなことをするのかを書き出していくことに似ています。
思いつくところから書き出していくと、順番がばらばらになっていることもあ
りますので、順序を明確にする必要があります。
プログラミングも、いきなり書くのではなく、言葉で何をやるのかを整理してから書いていきます。
慣れてくれば、言葉で整理せずに、瞬時に書けるようになるかと思います。
そのレベルに達するには、人それぞれだと思いますので、どのレベルを目指すのかも考えられると良いかと思います。
さて、作業の洗い出しと順序を明確にしたら、実際にプログラムを書いていくわけですが、そこで注意しないといけないことがあります。
コンピュータは、人間の指示通りにしか動かない

コンピュータは、人間が指示したとおりにプログラムを実行します。
たとえそれが間違ったプログラムだとしても、そのまま実行します。
この点をふまえて、プログラムを書くときには、プログラムを実行した際に起こり得るすべての状況を考え、それぞれにきちんと対策を準備しておく必要があります。
その準備をしやすくするためにも、作業の洗い出しは有効な方法になります。
プログラムを書く準備が整いましたら、実際にプログラムを作成していくことになりますが、そこで使用されるのが、プログラミング言語になります。
プログラミング言語とは、ソフトウェアの設計図であるソースコードを作成するための言語です。
一般的なプログラムの作成から実行の流れとしては、プログラミング言語を使用して、プログラムを作成し、コンパイラによるコンパイル処理を行い、プログラムを実行し、実行した結果を表示します。
コンパイラとは、コンパイルを行うソフトウェアのことです。
コンパイルとは、プログラムを解釈してコンピュータが実行できるファイルを作成します。
プログラムを実行する際には、このコンパイルによって作成されたファイルを実行しています。
実行した結果、意図したとおりに動いていれば問題ありませんが、意図したとおりに動いていなかったら、意図したとおりに動くまでプログラムを修正します。
このことをデバッグと呼びます。
デバッグは、バグ(意図したとおりに動かないプログラムミス)を取り除くこととも言われます。
デバッグも完了し、意図したとおりに動くプログラムが作成できたら、プログラムは完成です。
世の中には沢山のプログラムがありますが、それらのプログラムを構成している要素は、たったの3つしかありません。
この3つの要素を知っていると、プログラムの作成時間の短縮や他人が読んで分かりやすい書き方になったり、他人のプログラムを理解しやすいといったことがあります。
では、その3つの要素とは何かというと、次の3つの基本構造になります。
- 順次構造(連続処理)
- 選択構造(判断処理)
- 反復構造(繰り返し処理)
この3つの基本構造を使って、複雑な処理手順も作成するができます。
まず、順次構造ですが、連続処理ということで、プログラムの実行手順を上から下へと、順々に連続して実行していきます。
次に、選択構造は、判断処理ということで、ある条件によって、プログラムの実行手順を選択して実行していきます。
最後に、反復構造は、繰り返し処理ということで、ある条件を満たすまでは、同じプログラムの実行手順を繰り返し実行していきます。
以上がプログラミングの概念と構成になります。
次の章では、データを扱っていくうえでは重要となる変数について、ご紹介していきます。
変数

第1章では、プログラムの構成についてご紹介しましたが、それだけではプログラムを書くことはできません。
3つの基本構造を使用して、プログラムを書いていくのですが、データを扱う必要が出てきます。
そのために、データを一時的に保存しておく何かが必要になります。その何かが、「変数」と呼ばれるものになります。
変数とは、プログラム内で使用する値を格納しておくためのデータの入れ物になります。
この変数を使用するためには、変数名が必要になります。
プログラミング言語によっては、格納する値のデータ型(データの種類)も定義する必要があります。
詳しいデータの種類については、作成するプログラミング言語で異なりますので、本レポートでは割愛します。
変数名と同時に値を格納する書き方(変数名 = 値)を初期化といいます。
また、変数には有効範囲があります。
変数は、どこでも定義することができますが、定義した場所によって、その変数を使用できる場所が制限されます。
この有効範囲は自動的に決まります。
例えば、反復構造の中でのみ有効な変数を定義するといったことです。
変数については、以上となりますが、プログラムを少しでも分かりやすく書く工夫について、ご紹介していきます。
まずは、コメントからです。
コメントとは、プログラムを作成者以外の人にも分かりやすく、読みやすくするために、プログラム内に書く説明文になります。
コメントは、プログラムの処理とは何ら関係はありません。
なので、コンパイルの対象にもなりません。
コメントに書く内容としては、「このプログラムは何を行うのか」、「どのような処理をしているのか」などがあります。
これにより、プログラムの可読性や保守性を高めることもできます。
次に、識別子です。
識別子

識別子は、変数、定数、クラス、インタフェース、メソッドなどに付ける名前です。
プログラミング言語によって多少の違いはありますが、識別子の長さに制限はありませんが、規約に従う必要があります。
規約に反する名前がある場合は、コンパイルエラーが発生します。
規約を守り、正しい名前を付けることになります。
例えば、Java 言語は、次の規約があります。
- 先頭の文字として使用できる文字は、英字、アンダースコア、ドル記号だけです。
- 2文字目以降は数字も使用できます。
- 予約語は使用できません。
予約語とは、プログラム中において特別な意味を持つものとして、開発者がメソッド名や変数名に使用することができないキーワードが予約されています。
そのキーワードを予約語といいます。
以上が変数とその他プログラムを書く上で知っておくと便利なコメント、識別
子、予約語についてでした。
次の章では、四則演算を行うための演算子について、ご紹介します。
演算子

ここからは、演算子についてご紹介します。
プログラムを書いていくと、ただデータを変数に代入して終わりということはありません。
変数に代入したデータを使用して、文字と文字をつなぎ合わせたり、数字と数字を足し合わせたりします。
そのときに使用するのが、演算子になります。
例えば、足し算をしたい場合は、「+」の記号を使用します。
演算子は、1つだけでなく多くの種類があります。
今回は、主な種類を列挙しておきます。
- 算術演算子:四則演算を行う演算子
- 代入演算子:データを代入する演算子
- 複合代入演算子:算術演算子と代入演算子を複合させた演算子
- 関係演算子:2つの数値の等価や大小を判定する演算子
- 論理演算子:AND、OR、NOT など論理演算を行う演算子
- インクリメント演算子:整数値に1プラスする演算子
- デクリメント演算子:整数値から1マイナスする演算子
少しだけ詳細な説明です。
算術演算子は、数値の加減乗除を行ったり、剰余を求めたりするための演算子です。
また、演算子 + は通常は数値同士の加算を行いますが、文字と一緒に利用した場合、文字を連結する演算子になります。
代入演算子は、右辺の式や変数の値を左辺に格納する演算子です。
また、複合代入演算子は、算術演算を行った後に代入をします。
関係演算子は、条件を判定するときに使用する演算子です。
関係演算子を使用した条件式を制御文で使用することにより、処理の流れを制御することができます。
関係演算子を使った条件式の評価の結果は必ず true か false になります。
論理演算子は、複数の条件を組み合わせて新たな条件を作る演算子です。
関係演算子では、値と値とを比較することにより、真偽値を判定していましたが、論理演算子を使用すると、複数の条件を組み合わせて1つの条件式として評価することもできます。
最後に、インクリメント演算子とデクリメント演算子です。
「変数 a に 1 を加える」という処理は、「a = a + 1」と書くこともできるし、略記すると、「a += 1」と書くこともできます。
さらに、略した書き方として、「++a」と書くこともできます。
この ++演算子をインクリメント演算子といいます。
同様に、変数から 1 を引くという処理を行う ――演算子をデクリメント演算子といいます。
以上が演算子になります。
次の章では、実用性のあるプログラムを作成するために必要な制御文について、
ご紹介します。
制御文

プログラムが実行される処理の順序は、基本的にはプログラムの上から下までの一連の流れで処理が1つ1つ実行されます。
この直線的な処理の流れを変えることで、特定の条件のみ実行される処理や繰り返し同じ処理を実行するといった、プログラム処理を変更させることができます。
プログラムの処理の流れを変えるのが、制御文ということになります。
制御文には、分岐文とループ文があります。
分岐文では、1つの条件式があり、その条件が成立するかどうかにより、プログラムの実行処理を分岐します。
例えば、Java 言語では、if 文や switch 文が分岐文に相当します。
switch 文の場合は、条件によるプログラムの実行処理を多分岐することができます。
次に、ループ文です。
ループ文は、1つの条件式があり、その条件を満たし続けている間は、同じプログラムの実行処理を繰り返すことができます。
例えば、Java 言語では、while 文、do-while 文、for 文、拡張 for 文がループ文に相当します。
while 文は、1つの条件式があり、繰り返し処理に入る前に条件が判定され、条件が満たされている限りは、同じ処理を何度も繰り返し実行します。
また、条件が満たされない場合は、1回も実行されません。
do-while 文は、while 文と同様に条件を満たしている間は、同じ処理を繰り返し実行します。
ただ、while 文と違うのは、繰り返し処理が実行された後に、条件判定が行われます。つまり、少なくとも1回は、プログラム処理が実行されます。
for 文は、3つの式を持ち、真ん中の式が繰り返し処理の条件式になります。
その条件が判定され、満たされる場合は、プログラム処理を繰り返し実行します。
満たされない場合は、処理が終了となります。
拡張 for 文は、プログラムの実行処理をしたい対象の変数が配列の場合に使用します。
配列の全要素に対して、プログラムの実行処理を行うことができます。
もちろん、for 文を使用して、同様の処理を行うこともできますが、拡張 for 文を使用することで簡潔に書くことができます。
ここで出てきた配列とは、1つの変数名で、複数のデータをひとまとめに扱えるデータ構造のことになります。
例えば、100個のデータを使用するとき、変数を使う場合は変数名の定義を100回行う必要があります。
しかし、配列を使うとそれが1回で済みます。
この配列の使い方次第で、プログラム処理の書く量が変わってきます。
強いては、プログラマの力量にも関わってくる部分です。
以上が制御文である、分岐文とループ文になります。
次の章では、一連のプログラムの実行処理をひとまとめにする、メソッドについて、ご紹介します。
メソッド

メソッドを説明する前に、クラスオブジェクトについて説明します。
クラスオブジェクトとは、複数のプログラム処理をひとまとめにするものです。
つまり、複数のメソッドを束ねているのが、クラスオブジェクトになります。
例えば、あるファイルを読み込む、書き込むといった処理をするプログラムがあったとします。そのプログラム全体がクラスオブジェクトになります。
そして、読み込む処理と書き込む処理がメソッドになります。
メソッドは、クラスオブジェクトの操作を定義したものになります。
メソッドは、それ単体で実行されず、必ず呼び出し元が存在します。
その呼び出し元から値を受け取って、プログラムの実行処理を行った後、実行結果を呼び出し元に返します。
必ずしも、値を受け取ることはありませんし、実行結果を返すことはありません。
呼び出し元からメソッドに渡すデータを引数(ひきすう)といいます。
呼び出し元に返す実行結果を戻り値といいます。
以上がメソッドについての説明になります。
さいごに
いかがでしたか?
お読みいただいたとおり、この記事では、具体的なソースコードを提示することをしておりません。
具体的なイメージは掴めなかったかもしれませんが、この記事の狙いとしては、1つずつの概念を言葉で理解してから、具体的なソースコードを検索して見ていただくことで、どういうものであるかということが最も理解しやすいと思い、このような記事を作成しました。
それでは!