プロジェクト

全般

プロフィール

操作

PL/I(PL/1)とJavaの do-while ループの挙動にはいくつかの違いがあります。それぞれの構文と挙動を比較してみましょう。

PL/I の DO WHILE ループ

PL/I では、DO WHILE ループは条件を満たしている間、繰り返し処理を実行しますが、少し Java とは異なる点があります。

構文

DO WHILE (条件);
   /* 繰り返し処理 */
END;

PL/Iのポイント

DO WHILE は事前条件チェックのループ(Javaの while に相当)。
必ず1回実行される保証はない(最初に 条件 が FALSE なら、1度も実行されない)。

例

DECLARE I FIXED BINARY;
I = 1;
DO WHILE (I <= 5);
   PUT SKIP LIST('I = ' || I);
   I = I + 1;
END;

このコードは、I が 1 から 5 まで増加する間、出力を行います。

PL/I の DO UNTIL(Java の do-while 相当)

PL/I で Java の do-while と同じ必ず1回は実行されるループを使う場合、DO UNTIL を使用します。

DO UNTIL (条件);
   /* 繰り返し処理 */
END;

例

DECLARE I FIXED BINARY;
I = 1;
DO UNTIL (I > 5);
   PUT SKIP LIST('I = ' || I);
   I = I + 1;
END;

このコードは I が 6 になるまで実行されるので、少なくとも 1 回は必ず処理されます。

Java の do-while ループ

Java の do-while ループは、少なくとも 1 回は実行されることが保証されています。

構文

do {
    // 繰り返し処理
} while (条件);

Javaのポイント

do の中の処理は最低1回は必ず実行される。
ループの最後で while (条件) を評価するため、条件が false でも 1 回は実行される。

例

int i = 1;
do {
    System.out.println("I = " + i);
    i++;
} while (i <= 5);

このコードも I = 1 から 5 まで出力しますが、i = 10 から開始した場合でも 1 回は必ず実行される という違いがあります。

PL/I と Java の do-while の比較

言語

ループの種類

実行保証

ループ継続条件の評価タイミング

構文

PL/I

DO WHILE

なし(条件が false なら 0 回)

ループの前

DO WHILE (条件); ... END;

PL/I

DO UNTIL

あり(最低 1 回実行)

ループの後

DO UNTIL (条件); ... END;

Java

while

なし(条件が false なら 0 回)

ループの前

while (条件) { ... }

Java

do-while

あり(最低 1 回実行)

ループの後

do { ... } while (条件);

まとめ

PL/I の DO WHILE は 事前条件チェック なので、Java の while に近い。
Java の do-while に相当するのは PL/I の DO UNTIL。
Java の do-while は 最低 1 回は実行される 仕様なので、PL/I の DO WHILE とは異なる。

渡邉 拓英 さんが1年以上前に更新 · 0件の履歴