はじめに

コンピュータはしばしば繰り返し作業を自動化するために使用されます。エラーなくタスクを繰り返すことは、コンピュータが得意で、人間が下手なことです。条件式と同様に、ループも互いにネストすることができますが、これはプログラムの読みやすさを低下させ、性能も良くなりません。ネストされたループを避けるようにしましょう。Java には 3 種類のループがあります。この実験では、それぞれを学んでいきましょう。

コンテンツ

コンピュータサイエンスにおける「再帰」は、問題の解が同じ問題のより小さなインスタンスの解に依存する手法です(反復とは対照的)。このアプローチは「再帰」と呼ばれ、多くの種類の問題に適用できます。再帰はコンピュータサイエンスの中心的な考え方の一つです。再帰の力は、有限の数の文で無限のオブジェクトを定義できる可能性に明らかにあります。同じように、無限の計算を、有限の再帰プログラムで記述できます。たとえこのプログラムに明示的な反復が含まれていなくてもです。

/home/labex/project/recursionTest.java ファイルに次のコードを記述します。

public class recursionTest{
    public static int fibonacci(int n){
        if(n<=2){
            return 1;
        }else{
            return fibonacci(n-1)+fibonacci(n-2);
        }
    }
    public static void main(String[] args){
        int res = recursionTest.fibonacci(10);
        System.out.println(res);
    }
}

出力

次のコマンドを使用して recursionTest.java ファイルを実行します。

javac /home/labex/project/recursionTest.java
java recursionTest

出力を見てください。

55

while ループ

while ループに入るときは、まず条件がチェックされます。while ループは、条件が偽になるまで常に実行されます。構文は次のようになります。

/home/labex/project/whileTest.java ファイルに次のコードを記述します。

public class whileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        // x が 3 より大きくなったときに終了し、内側のコードは合計 3 回実行されます。
        while (x <= 3)
        {
            System.out.println("x = " + x);
            // 次の反復のために x の値を 1 つずつ増やします
            x++;
        }
    }
}

出力

次のコマンドを使用して whileTest.java ファイルを実行します。

javac /home/labex/project/whileTest.java
java whileTest

出力を見てください。

x = 1
x = 2
x = 3

do-while ループ

このループは while ループと非常に似ていますが、1 点違いがあります。条件の値がどんなになろうとも、ループは必ず少なくとも 1 回は実行されます。その後、条件がチェックされます。ですから、場合によってはいくつかの状況に適さないかもしれません。構文は次の通りです。

/home/labex/project/doWhileTest.java ファイルに次のコードを記述します。

public class doWhileTest
{
    public static void main(String[] args)
    {
        int x = 1;
        do
        {
            // 以下のコードが最初に実行され、その後条件がチェックされます。
            System.out.println("x = " + x);
            x++;
        }
        while (x <= 3);
    }
}

出力

次のコマンドを使用して doWhileTest.java ファイルを実行します。

javac /home/labex/project/doWhileTest.java
java doWhileTest

出力を見てください。

x = 1
x = 2
x = 3

for ループ

for ループは次のようになります。

for (init expression; condition expression; increment expression)
{
    // statements here
}

for ループの開始を示す初期化条件は 1 回だけ実行されます。条件式は、ループに入る前に毎回チェックされます。これはループの終了条件をテストするために使用され、ブール値を返す必要があります。条件が真になると、ループ内の文が実行されます。その後、インクリメント式が実行されて、次の反復のためにカウンターやその他の変数の値が変更されます。

/home/labex/project/forTest.java ファイルに次のコードを記述します。

public class forTest
{
    public static void main(String[] args)
    {
        // for ループは x=1 のときから x<=3 のときまで実行されます
        for (int x = 1; x <= 3; x++) {
            System.out.println("x = " + x);
        }
    }
}

出力

次のコマンドを使用して forTest.java ファイルを実行します。

javac /home/labex/project/forTest.java
java forTest

出力を見てください。

x = 1
x = 2
x = 3

ループ本体の中でいつでも、if ブロックの文の中で continuebreak のようなコードを使ってループを抜けることができます。break は全体のループを抜けますが、continue は現在の反復を終了して、次の反復を実行します(条件が真の場合)。

/home/labex/project/loopTest.java ファイルに次のコードを記述します。

public class loopTest
{
    public static void main(String[] args)
    {
        // for ループは x=1 のときから x<=3 のときまで実行されます
        for (int x = 1; x <= 3; x++) {
            if(x==2){
                // 全体のループを抜ける
                break;
                // continue は現在の反復のみを終了し、次の反復を行います
                // break 式を削除して continue を使用することができます。出力を見てください。
                // continue;
            }
            System.out.println("x = " + x);
        }
    }
}

出力

次のコマンドを使用して loopTest.java ファイルを実行します。

javac /home/labex/project/loopTest.java
java loopTest

出力を見てください。

x = 1

まとめ

この実験では、3 種類のループを学びました。for ループと while ループは学びやすいですが、do-while ループは論理的にはあまり完璧ではありません。非常に慎重に選択する必要があります。