メインコンテンツ

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

詳細

すべて折りたたむ

ヒント

  • 無限ループ (絶対に終了しないループ) を誤って作成してしまった場合は、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 より前に導入