ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

while

条件が true の場合に繰り返す while ループ

構文

while expression
    statements
end

説明

while expression, statements, endを評価し、式が true の間はループでステートメントのグループの実行を繰り返します。結果が空でなく、非ゼロの要素 (論理値または実数値) のみが含まれる場合に、式は true になります。それ以外の場合は、false です。

すべて折りたたむ

while ループを使用して factorial(10) を計算します。

n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
n! = 3628800

ファイル magic.m のコードの行数をカウントします。continue ステートメントを使用して空行とコメントをスキップします。continuewhile ループの残りの指示をスキップして次の反復を開始します。

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
        continue
    end
    count = count + 1;
end
count
count = 31
fclose(fid);

次の乱数で上限を超えるところまで、一連の乱数を加算します。その後、break ステートメントを使用してループを終了します。

limit = 0.8;
s = 0;

while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

詳細

すべて折りたたむ

式には関係演算子 (<== など) と論理演算子 (&&||~ など) を含めることができます。論理演算子 andor を使用して複合式を作成できます。MATLAB® は複合式を左から右に評価し、演算子の優先順位の規則に従います。

while...end ブロックの条件式内で、論理演算子 & および | はショートサーキット演算子として動作します。動作はそれぞれ && および || と同じです。&&|| は、条件式でもステートメントでも一貫してショートサーキットであるため、式内では &| の代わりに &&|| を使用することをお勧めします。以下に例を示します。

x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
    break
end

式の最初の部分の評価結果は false です。このため MATLAB は未定義の関数エラーの結果になる、式の 2 番目の部分を評価する必要はありません。

ヒント

  • 無限ループ (絶対に終了しないループ) を誤って作成してしまった場合は、Ctrl + C を押して、ループの実行を停止してください。

  • 条件式が行列と評価される場合、MATLAB は行列内のすべての要素が true (非ゼロ) である場合のみステートメントを評価します。いずれかの要素が true である場合にステートメントを実行するには、関数 any で式をラップします。

  • プログラムによってループを終了するには、break ステートメントを使用します。ループの残りの指示をスキップして、次の反復から開始するには、continue ステートメントを使用します。

  • 多数の while ステートメントを入れ子にするとき、各 while ステートメントでは end キーワードが必要です。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

R2006a より前に導入