プログラムの制御と条件

プログラムの制御とは?

順次構造

此処迄の学習で作ったプログラムは全て、プログラムが書かれた順番に実行されました。
言い換えると、プログラムは実行した順番で書かなければなりませんでした。
例えば色を変えたい場合は、

g.setColor(Color.blue); //青いペンに持ち替えて
g.drawString("おはよう", 20, 60); //文字を書く

の順にしなければ文字は青くなりません。
此の様に、上から下へプログラムが書かれている順番を順次構造と言います。

選択構造

第1章の初めて書くJavaプログラムでは、目玉がぎょろりと左を向いているアプレットを作りました。
しかし、右を向かせたい事もきっと有るでしょう。
其処で、左向きのプログラムと右向きのプログラムの両方を用意して措いて、状況に応じてどちらかを使い分ける様にしてみましょう。
プログラムは「左向き」と「右向き」の2つを用意強いても実際に実行されるプログラムは、其の時の条件で選ばれたどちらかです。
此の様な構造を選択構造と言います。

反復構造

第1章の一寸だけグラフィックスでは、10本の直線を使って家の絵を描きました。
此の時のプログラムは、

g.drawLine(・・・);

が10個並びました。
つまり、

直線を描きなさい
直線を描きなさい
直線を描きなさい
直線を描きなさい
    :
    :

と10回命令している訳です。
此を、

以下の処理を10回繰り返しなさい
直線を描く

の様に繰り返し回数を指定し、実際の命令は1回で済ませば便利です。
更に、3階建ての豪邸を描きたければ繰り返し回数を変更するだけなのでプログラムに柔軟性が増します。
此の様に、同じ事を繰り返すプログラム構造を反復構造と言います。

但し「g.drawLine(20, 110, 120, 110);」を10回繰り返しても、同じ場所に10回描く事になる為家の絵にはなりません。
反復構造を使って家の絵を描くには、配列と添字を使った工夫が必要です。

基本構造

以上の「順次構造」「選択構造」「反復構造」の組み合わせで、あらゆるプログラムを書けます。
此の3つの構造だけで書かれたプログラムを構造化プログラムと言い、構造自体を基本構造と言います。

「構造化プログラミング」は、解り易いプログラムを目指して提唱されたプログラムの形です。


構造の条件

論理値型

「はい」又は「いいえ」のどちらかの値しか取らない型をboolean型(論理値型)と言います。
Javaでは、論理値型のデータは下の表の様に表します。

論理値型の表し方

プログラム中の表記 意味
true 「はい」
false 「いいえ」

選択構造や反復構造の条件は論理値型で表します。

条件を求める演算子

選択構造や反復構造の条件としては、例えば以下の様になります。
「既に繰り返した回数は10回より小さい?」と言う条件の結果が「真」で有れば反復を継続し、「偽」で有れば反復を終了します。
「目玉の向きは、'左'に等しい?」と言う条件の結果が「真」で有れば左向きの目玉を描き、「偽」で有れば右向きの目玉を描く事になります。
此の様に、条件とは2つの情報の関係を調べる事に他なりません。
そして調べた結果、論理値を得るのです。
論理値を得る為の演算子を関係演算子と言い、次の様な種類が有ります。

関係演算子 演算の種類 結果(boolean型)
true(真) false(偽)
E1 < E2 小さい E1 < E2 E1 ≧ E2
E1 > E2 大きい E1 > E2 E1 ≦ E2
E1 <= E2 小さいか等しい E1 ≦ E2 E1 > E2
E1 >= E2 大きいか等しい E1 ≧ E2 E1 < E2
E1 == E2 等しい E1 = E2 E1 ≠ E2
E1 != E2 等しくない E1 ≠ E2 E1 = E2

E1・E2:オペランド

条件が2つ以上の時

例えば、「目が開いている」且つ「左向きである」と言う条件が「真」の時「此の黒目を描く」と言う様に、条件が2つ以上有る場合も有ります。
此の様な時には、1つ1つの関係演算子について論理値の結果を得た後、両者から全体の結果を求めます。
此の様な論理値をオペランドとする演算子を論理演算子と言います。
論理値は「真(true)」と「偽(false)」の2種類しか有りません。
此の2つの論理値で行われる演算は、

(真・真)(真・偽)(偽・真)(偽・偽)

の4組しか有りません。
此等がオペランドの値として与えられた時、求められる結果を全て書き出した表を真理値表と言います。
論理演算子には以下の種類が有ります。

論理演算子の種類

論理演算子 演算の種類 意味 一般形 真理値表
&& 論理的AND 且つ E1&&E2
E1 E2 E1&&E2 E1||E2 !E1
|| 論理的OR 又は E1||E2
| 論理否定 でない !E1

E1・E2:オペランド

例: x < 3 && y < 3・・・「x」が「3」より小さく、且つ「y」も「3」より小さい時だけ全体の結果が「真」に

戻る