如果讓一個人反複做一件相同或相似的事情,他會感到厭煩與疲倦,還容易出錯。計算機天然具備替代人類做重複工作的優勢。Matlab 與其他程式語言一樣,主要采用兩種方式實作循環操作。
for 循環
寫一個求 1 至給定的整數 n 的和的例子來說明 for 循環的用法。
sum = 0;
n = input('Please enter the number n: ');
for i = 1: n
sum = sum + i;
end
sprintf ('You added 1 to %d, and the result is %d', n, sum)
在這段代碼中,先從使用者那裡獲得 n 的值,然後從 1 至 n 逐個取值加到 sum 上。最終得到的 sum 值就是我們要求的值。
for 後面緊跟着一個表達式i = 1:n. 前面說過 : 的用法,顯然
= 右邊的值是一個 1 到 n 的矩陣。
for 語句後面緊跟着一個縮進了的語句,這個語句部分,我們常把它稱為循環體。這裡面循環體隻有一個語句,事實上,循環體可以有多個語句。
整個的 for 循環語句以end結束。
以n = 10為例,這個循環過程就是從矩陣[1,2,3,4,5,6,7,8,9,10]中依次取值賦給變量i, 然後按順序執行循環體中的語句,在這個例子中,就是執行sum = sum + i. 執行到矩陣中的最後一個值,for 循環就結束。
一點程式設計經驗經驗都沒有的同學可能了解這些程式稍有點困難,可以拿張紙,将程式每一步的執行結果都寫出來。
這裡 i 值不必須要用在循環體中,也可以作為計數,用來重複循環體中語句特定次數。比如下面的例子:
for i = 1:10
disp('Hello World!')
end
這個程式的功能是顯示十次Hello World!
for 循環還可以使用 break 結束循環,也可以使用continue 結束目前循環,進入下一次循環。取 n = 10,把剛才那個程式改一下:
sum = 0;
n = 10;
for i = 1: n
if i == 3
continue;
end
if i == 7
break;
end
sum = sum + i;
end
disp (sum);
在這個程式裡,用 if 語句判斷 i 的值是不是 3 ,如果是 3 則跳過循環體中後面的語句,進入下一次循環,也就是取 i 為4,并繼續執行循環體中的語句。
如果 i 的值是 7 ,則退出循環。
請注意,這裡跳出目前循環體中的語句,進入下一次循環,用的是 continue. 而退出整個的循環過程,用的是break. 這也是continue與break的差別。
while 循環
while 循環是說當滿足一個條件就一直執行某些動作。我們把上面的例子用 while 循環改寫一下。
sum = 0;
n = input('Please enter the number n: ');
i = 1;
while i <= n
sum = sum + i;
i = i + 1;
end
sprintf ('You added 1 to %d, and the result is %d', n, sum)
在這段代碼裡面,i 的初始值是 1,隻要 i 的值小于等于 n 的值,就一直執行 sum = sum + i的動作。為了保證 i 值的同步變化,需要在做完sum = sum + i動作後,讓 i 的值也同步增加1。
其他的與 for 循環類似,不再贅述。