初心者のJavaプログラミング

プログラミングガチ初心者がIT業界を目指して頑張ります。

【第11回】初心者のJavaプログラミング【if文、for文の基本】

こんにちは。
木曜は用事があって書けませんでした。
金曜は飲み会があって想像以上に酔ってしまい、現在に至ります。

今日は木曜にやったif文、for文について書こうと思います。

プログラムの基本構造

プログラムの基本構造は大きく分けると3つあります。これを説明するのには流れ図を使った方が分かりやすいのでそれで説明します。

直線型(連続型)

f:id:fightingneetkun:20140726165238p:plain
こんな感じです。プログラミングの基本的な形です。処理1が終わったら処理2へ。処理2が終わったら処理3へ。というように上から順番に処理をしていく形です。
だから、宣言していない変数を使うとアラートがでるんですね。

分岐型(選択型)

f:id:fightingneetkun:20140726165650p:plain
条件式というものがあり、条件がYES(真、true)だと処理2へ。条件判定の結果NO(偽、false)だと処理3へ。というような流れになります。
例えば条件式に
10 < 11
というように書くとします。この条件式の判定はYESですよね。10は11よりも絶対小さいですから。すると処理3の方へはいかず、処理2の方に流れていきます。
この例は単純すぎますが、イメージをつかめればと思います。

以下例です。

class Test {
  public static void main( String args[] ) {
    if (args.length > 0) {
      // 何かしら文字列を入力した場合の処理
      System.out.println(args[0]);
    } else {
      // 何も文字列を入力しなかった場合の処理
      System.out.println("使い方");
      System.out.println("java Test [好きな文字列]");
      System.out.println("入力した文字列が出力されます");
    }
  }
}

このようにif文を使って表現します。

if (条件式) {
  条件式がtrueの時に実行したい処理
} else {
  条件式がfalseの時に実行したい処理
}

args.lengthは配列の要素数を調べるためのメソッドですね。この場合はコマンドライン引数の文字列を表します。args.length > 0 とうい条件はなにか文字列を入力したかしてないかを判断しています。何か入力した場合は、その文字列を出力させて、何も入力されなかった場合は、else文の方の処理がはしり、使い方を教えてくれます。
こうすると、ちょっぴりユーザーに優しくなったきがしますよね。

反復型(繰り返し型)

f:id:fightingneetkun:20140726170231p:plain
処理1が行われた後条件式にて判定を行ってtrueであれば処理2に行きます。その後また条件式に戻ってきて、また判定です。で、条件に対してfalseがでたらこのループを抜けられるという仕組みになります。

構文はこんなです

for (初期化セクション; 繰り返しの条件; 最後に行う処理)

初期化セクションは最初の1回しか行われません。
繰り返しの条件というところが、ループの判定になります。ここを満たしている限りループします。
最後に行う処理は、ループが1回終わるごとに最後に実行されます。
for文といったらこれ!というようなサンプルがあるので、それを以下に貼ります。

class Test {
  public static void main( String args[] ) {
    int sum  = 0;
    int prod = 1;

    for (int i = 1; i < 6; i++) {
      sum  += i;
      prod *= i;
    }
    System.out.println("sum  = " + sum);
    System.out.println("prod = " + prod);
  }
}

初期化セクションにint i = 1 とあります。これがループの判定の基準になります。
条件の所では、i < 6 となっています。iが6未満であれば以下の処理が行われることになります。
最後のi++ はインクリメントですね。条件がtrueで処理が一通り終わった後にiに1を足すという意味になります。
流れ的には、

  • i = 1 の時

i < 6 を満たすのでfor文内の処理が行われる。
処理が一通り終わった後i++ でiが2になる

  • i = 2 の時

i < 6 を満たすのでfor文内の処理が行われる。
処理が一通り終わった後i++ でiが3になる

...

  • i = 5 の時

i < 6 を満たすのでfor文内の処理が行われる。
処理が一通り終わった後i++ でiが6になる

  • i = 6 の時

i < 6 は満たされないのでfor文の処理は行われない。
for文のループ脱出!!

という感じになります。

最初の方は流れ図を書きながら1個1個確かめながらやった方がいいと思います。



それでは今日はこの辺で。
おわり。