今天,我們一起來(lái)學(xué)習(xí)Arduino的循環(huán),編程語(yǔ)言中提供了各種各樣的控制結(jié)構(gòu),可以實(shí)現(xiàn)更多更復(fù)雜的控制,循環(huán)語(yǔ)句就是其中一種,它允許我們多次執(zhí)行一個(gè)或一組語(yǔ)句,下圖是大多數(shù)編程語(yǔ)言中循環(huán)語(yǔ)句的一般形式:

C語(yǔ)言中提供了以下類型的循環(huán)語(yǔ)句來(lái)處理循環(huán)請(qǐng)求。
while 循環(huán)
while 循環(huán)的執(zhí)行順序非常簡(jiǎn)單,它是一個(gè)頂部驅(qū)動(dòng)的循環(huán),它的格式是:
while (表達(dá)式) { 語(yǔ)句; }
當(dāng)表達(dá)式為真,則執(zhí)行下面的語(yǔ)句;語(yǔ)句執(zhí)行完之后再判斷表達(dá)式是否為真,如果為真,再次執(zhí)行下面的語(yǔ)句;然后再判斷表達(dá)式是否為真……就這樣一直循環(huán)下去,直到表達(dá)式為假,跳出循環(huán)。這個(gè)就是 while 的執(zhí)行順序。
do…while 循環(huán)
do…while 是一種底部驅(qū)動(dòng)的循環(huán),它的結(jié)構(gòu)如下:
do { 語(yǔ)句; } while (表達(dá)式);
在表達(dá)式被執(zhí)行之前,循環(huán)體語(yǔ)句首先被執(zhí)行一次。與 while 和 for 循環(huán)不同,do…while 循環(huán)會(huì)確保循環(huán)體語(yǔ)句至少執(zhí)行一次。如果控制表達(dá)式的值為 true,那么另一次循環(huán)就會(huì)繼續(xù);如果是 false,則循環(huán)結(jié)束。
for 循環(huán)
和 while 一樣,for 循環(huán)也是一個(gè)頂部驅(qū)動(dòng)的循環(huán),但是它包含了更多的循環(huán)邏輯,每個(gè)for循環(huán)最多有三個(gè)表達(dá)式,如下所示:
for ( 表達(dá)式1; 表達(dá)式2; 表達(dá)式3) { 語(yǔ)句 }
在一個(gè)典型的 for 循環(huán)中,在循環(huán)體頂部,先后執(zhí)行下述動(dòng)作:
(1) 表達(dá)式 1:初始化,只執(zhí)行一次。在計(jì)算表達(dá)式2之前,先計(jì)算一次表達(dá)式 1,以進(jìn)行必要的初始化,后面不再計(jì)算它。
(2) 表達(dá)式 2:控制表達(dá)式,每輪循環(huán)前都要計(jì)算控制表達(dá)式,以判斷是否需要繼續(xù)本輪循環(huán)。當(dāng)控制表達(dá)式的結(jié)果為 false,結(jié)束循環(huán)。
(3) 表達(dá)式 3:調(diào)節(jié)器,指計(jì)數(shù)器的自增或自減,在每輪循環(huán)結(jié)束后且表達(dá)式 2 計(jì)算前執(zhí)行。即,先運(yùn)行調(diào)節(jié)器,再執(zhí)行表達(dá)式 2,以此進(jìn)行循環(huán)判斷。
例如:
for(counter = 2;counter <= 9;counter++) { //語(yǔ)句將被執(zhí)行10次 }
嵌套循環(huán)
C語(yǔ)言允許在一個(gè)循環(huán)中使用另一個(gè)循環(huán)。下面的例子說(shuō)明了這個(gè)概念。
for ( 初始化 ;控制表達(dá)式; 調(diào)節(jié)器增量或減量 ) { // 語(yǔ)句塊 for ( 初始化 ;控制表達(dá)式; 調(diào)節(jié)器增量或減量 ) { // 語(yǔ)句塊 } }
實(shí)際運(yùn)用:
for(counter = 0;counter <= 9;counter++) { // 語(yǔ)句塊將執(zhí)行10次 for(i = 0;i <= 99;i++) { // 語(yǔ)句塊將執(zhí)行100次 } }
無(wú)限循環(huán)
無(wú)限循環(huán)也被稱為死循環(huán),它是一個(gè)沒(méi)有終止條件的循環(huán),所以這個(gè)循環(huán)會(huì)無(wú)限的執(zhí)行下去。語(yǔ)法如下:
for循環(huán)-無(wú)限循環(huán)
for (;;) { // 語(yǔ)句塊 }
while循環(huán)-無(wú)限循環(huán)
while(1) { // 語(yǔ)句塊 }
do…while循環(huán)-無(wú)限循環(huán)
do { 語(yǔ)句塊; } while(1);
也就是說(shuō),在for循環(huán)中如果設(shè)置初始化、控制表達(dá)式和 調(diào)節(jié)器,它將進(jìn)入無(wú)限循環(huán);在while循環(huán)和do…while循環(huán),中如果判斷表達(dá)式不為 false,它也將無(wú)限循環(huán)下去。
寫在最后,初學(xué)者編程時(shí),if、else、for、while、do 后面的執(zhí)行語(yǔ)句不論有多少行,就算只有一行也要加“{}” 。