Powered by SmartDoc

選択構造

選択構造の表現

問題集7ページの問題1の例1のフローチャートとプログラムの対応を図に示します。

選択構造をソースに

この図に示されるように選択構造はifという文に置き換えます。ソースプログラムを示します。

選択構造のプログラム
class ex7_1 {
    public static void main(String args[]){
        int a = 15, b, c;

        if(a > 10){
            b = a;
        }else{
            c = a;
        }
    }
}

if文の一般形は次の通りです。

if文の一般形
if (条件文) {
  条件成立時に実行する文
} else {
  条件不成立時に実行する文
}  

{と}を使い、条件成立時および不成立時に処理する範囲を指定します。else以降は省略できます。

演習

問題集8ページの問題3のプログラムを作成する。ただし、変数の値の変化がわかるようにすること。

if文の入れ子

if文の条件成立時および不成立時の処理の中にif文が含まれることを入れ子といいます。例えば、ある施設の入場料(ryoukin)が年齢(age)が7才未満は0円、7才以上13才未満は100円、13才以上は500円という場合のフローチャートは次のようになります。

if文の入れ子

このフローチャートをプログラムに置き換えると次のようになります。このプログラムの左側にあるのは行数を示す番号です。実際には入力しません。

入れ子の例
     1	class IfNest {
     2	    public static void main(String args[]){
     3	        int age, ryoukin;
     4	
     5	        // 年齢の読み取り
     6	        age = Integer.parseInt(args[0]);
     7	        // 料金判定
     8	        if(age < 7){
     9	            ryoukin = 0;
    10	        } else if(age < 13){
    11	            ryoukin = 100;
    12	        } else {
    13	            ryoukin = 500;
    14	        }
    15	        // 表示
    16	        System.out.print("年齢" + age + "才の料金は");
    17	        System.out.print(ryoukin + "円です。");
    18	    }
    19	}

このプログラムを実行するときは次のようにプログラム名の右側にプログラムに渡すデータを記します(1)

コマンドラインからデータを取り込むには6行目のように記します。args[0]がプログラム名のすぐ右にあるデータです。データは文字として取り込まれるのでInteger.parseInt()メソッドを使って整数値に変換し、変数へ代入しています。

この例では整数8をプログラムに渡しています。

プログラムへデータを渡す
java IfNest 8
  1. これをコマンドラインからデータを渡すと言います。

演習

ある家電量販店では通常、商品購入金額の10%をポイントとして還元している。特別期間にはさらに表に示すポイントに金額に応じて上乗せしている。特別期間内のポイントを計算するプログラムを作りなさい。例題と同じようにコマンドラインから金額を入力し、結果を表示すること。

購入金額 上乗せするポイント
20,000円未満 0%
20,000円以上50,000円未満 3%
50,000円以上100,000円未満 5%
100,000万円以上 8%