コンテンツにスキップ

ループ文

プログラミングの基本的な考え方「繰り返し」における繰り返し文はforwhileを用いることで実現される.

while文

最もシンプルな繰り返し文はwhile文である.

  1. 条件式が真の際にループブロックに入る.条件式が偽の場合はループブロックに入らない.
  2. ループが開始される.
  3. continueがある場合は,ソレ以降の処理を行わず,条件式(1.)に戻る.
  4. breakがある場合,ソレ以降の処理を行わず,ループブロックを終了する.
  5. ループ終端で再度「1.」に戻る.

  6. ループが常に真の場合は?

  7. ループが常に偽に場合は?
public class WhileTest {
 public static void main(String[] args){
        boolean t = true;
        boolean f = false;
        // 偽
        while(f){
            System.out.println("絶対に表示されない文");
        }
        int i = 0;
        // iが30を下回れば真
        while(i < 30){
            System.out.println(i);
            i++;
        }
        System.out.println("------------------------------");
        i = 0;
        // 真
        while(t){
            System.out.print(i+"/");
            i++;
        }
        System.out.println("これも絶対に表示されない文");
        }
}
  • continueの挙動をテストするプログラムを制作せよ.
  • breakの挙動をテストするプログラムを制作せよ.

do-while文

public class DoWhileTest{
    public static void main(String[] args){
        int i = 0;
        do{
            System.out.println("Popeye!");
            i++;
        }while(i<=3);
    }
}
  1. doブロックに入る
  2. 終端で条件式判定される.真なら,doブロックを先端に戻る.

実は, do-while分はあまり好まれない。実装されていない言語もある。
何故でしょう?(ヒント:逐次、条件分岐、繰返し)

for文

  • while文では事前に変数宣言やブロックの末尾でインクリメントする必要がある。
  • for文ではそれを一括で指定する。
// (変数宣言; (真偽値・真ならループする)条件式;   )
System.out.println("<FOR START>");
for(int i=0; i<=4; i++){
    System.out.println(">>>ループ: i = "+i);
}
System.out.println("<FOR END>");
/*
こういう動きになる
---------------------
<FOR START>
DEBUG: 第1引数を実行(int i=0;相当)
DEBUG: 第2引数を実行(i >= 3;相当)
>>> ループ: i = 0
DEBUG: 第3引数を実行(i++ 相当)
DEBUG: 第2引数を実行(i >= 3;相当)
>>> ループ: i = 1
DEBUG: 第3引数を実行(i++ 相当)
DEBUG: 第2引数を実行(i >= 3;相当)
>>> ループ: i = 2
DEBUG: 第3引数を実行(i++ 相当)
DEBUG: 第2引数を実行(i >= 3;相当)
>>> ループ: i = 3
DEBUG: 第3引数を実行(i++ 相当)
DEBUG: 第2引数を実行(i >= 3;相当)
<FOR END>
-----------------------------
*/

ブロック構造を省略

for(int i=1;i<=20;i++) System,out.println("表示: 20回中"+i+"回目!");

拡張for

後程説明するが、一つの変数に複数の値を組み込める「配列」というものがある。
配列に組み込まれた値を順にループさせるのが拡張Forである。

// arrayには複数の値 124,1678,3312,99 が順に入っている
int[] array = [124,1678,3312,99];
// これをループさせる
for(int value : array){
    System.out.println(">"+value);
}
/*
こういう動き
---------------------
>124
>1678
>3312
>99
--------------------
*/

ForEach

Javaのバージョン8以降は更に別の書き方が出来る
上記をこういうふうに掛ける。

Arrays.stream(array).forEach(i -> System.out.print(i));

i ->(i)->{みたいな書き方をラムダ式という。大学の講義では習わないが、普通に利用される。


最終更新日: 2021年4月30日