Main Content

ループのコントロール ステートメント

ループのコントロール ステートメントでは、コードのブロックを繰り返し実行できます。ループには次の 2 種類があります。

  • for ステートメントでは特定回数のループを実行し、インデックス変数の値をインクリメントさせて各反復を追跡します。

    たとえば、10 要素のベクトルをあらかじめ割り当て、5 つの値を計算します。

    x = ones(1,10);
    for n = 2:6
        x(n) = 2 * x(n - 1);
    end
  • while ステートメントでは、条件が真である限りループが繰り返されます。

    たとえば、factorial(n) が 100 桁の数値となる最初の整数 n を見つけます。

    n = 1;
    nFactorial = 1;
    while nFactorial < 1e100
        n = n + 1;
        nFactorial = nFactorial * n;
    end

各ループには end キーワードが必要です。

読みやすくするため、特に入れ子を使用する場合 (つまり、ループに別のループが含まれている場合) はループにインデントを適用することをお勧めします。

A = zeros(5,100);
for m = 1:5
    for n = 1:100
        A(m, n) = 1/(m + n - 1);
    end
end

プログラムで break ステートメントを使用してループを終了したり、continue ステートメントを使用してループの次の反復にスキップしたりできます。たとえば、関数 magic のヘルプに含まれる行数 (つまり、空行に至るまでのすべてのコメント行の数) をカウントします。

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line)
       break
    elseif ~strncmp(line,'%',1)
       continue
    end
    count = count + 1;
end
fprintf('%d lines in MAGIC help\n',count);
fclose(fid);

ヒント

間違って無限ループ (それ自体では終了しないループ) を作成した場合は、Ctrl+C キーを押してループの実行を停止します。

参考

| | | |

外部の Web サイト