如果讓一個(gè)人反復(fù)做一件相同或相似的事情,他會(huì)感到厭煩與疲倦,還容易出錯(cuò)。計(jì)算機(jī)天然具備替代人類做重復(fù)工作的優(yōu)勢。Matlab 與其他程序語言一樣,主要采用兩種方式實(shí)現(xiàn)循環(huán)操作。
for 循環(huán)
寫一個(gè)求 1 至給定的整數(shù) n 的和的例子來說明 for 循環(huán)的用法。
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 逐個(gè)取值加到 sum 上。最終得到的 sum 值就是我們要求的值。
for 后面緊跟著一個(gè)表達(dá)式i = 1:n. 前面說過 : 的用法,顯然
= 右邊的值是一個(gè) 1 到 n 的矩陣。
for 語句后面緊跟著一個(gè)縮進(jìn)了的語句,這個(gè)語句部分,我們常把它稱為循環(huán)體。這里面循環(huán)體只有一個(gè)語句,事實(shí)上,循環(huán)體可以有多個(gè)語句。
整個(gè)的 for 循環(huán)語句以end結(jié)束。
以n = 10為例,這個(gè)循環(huán)過程就是從矩陣[1,2,3,4,5,6,7,8,9,10]中依次取值賦給變量i, 然后按順序執(zhí)行循環(huán)體中的語句,在這個(gè)例子中,就是執(zhí)行sum = sum + i. 執(zhí)行到矩陣中的最后一個(gè)值,for 循環(huán)就結(jié)束。
一點(diǎn)編程經(jīng)驗(yàn)經(jīng)驗(yàn)都沒有的同學(xué)可能理解這些程序稍有點(diǎn)困難,可以拿張紙,將程序每一步的執(zhí)行結(jié)果都寫出來。
這里 i 值不必須要用在循環(huán)體中,也可以作為計(jì)數(shù),用來重復(fù)循環(huán)體中語句特定次數(shù)。比如下面的例子:
for i = 1:10
disp('Hello World!')
end
這個(gè)程序的功能是顯示十次Hello World!
for 循環(huán)還可以使用 break 結(jié)束循環(huán),也可以使用continue 結(jié)束當(dāng)前循環(huán),進(jìn)入下一次循環(huán)。取 n = 10,把剛才那個(gè)程序改一下:
sum = 0;
n = 10;
for i = 1: n
if i == 3
continue;
end
if i == 7
break;
end
sum = sum + i;
end
disp (sum);
在這個(gè)程序里,用 if 語句判斷 i 的值是不是 3 ,如果是 3 則跳過循環(huán)體中后面的語句,進(jìn)入下一次循環(huán),也就是取 i 為4,并繼續(xù)執(zhí)行循環(huán)體中的語句。
如果 i 的值是 7 ,則退出循環(huán)。
請注意,這里跳出當(dāng)前循環(huán)體中的語句,進(jìn)入下一次循環(huán),用的是 continue. 而退出整個(gè)的循環(huán)過程,用的是break. 這也是continue與break的區(qū)別。
while 循環(huán)
while 循環(huán)是說當(dāng)滿足一個(gè)條件就一直執(zhí)行某些動(dòng)作。我們把上面的例子用 while 循環(huán)改寫一下。
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 的值,就一直執(zhí)行 sum = sum + i的動(dòng)作。為了保證 i 值的同步變化,需要在做完sum = sum + i動(dòng)作后,讓 i 的值也同步增加1。
其他的與 for 循環(huán)類似,不再贅述。