Main Content

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 = 37
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 キーワードが必要です。

  • MATLAB while ループは、他のプログラミング言語、C や C++ などの do...while ループに似ています。ただし、while はループの終了時にではなく開始時に条件式を評価します。

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    do...while の動作に似せるには、while の初期条件を true に設定してループ内に条件式を配置します。たとえば、MATLAB while ループを使用することで上記の do...while ループを実装します。

    while true
        statements
        if ~expression
            break
        end
    end
    

拡張機能

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

バージョン履歴

R2006a より前に導入