輪迴性跳躍,是指執行完了一段程式又回到這段程式的開頭重覆執行這一段程式的跳躍。For (重覆)迴路可以借由迴路控制變數loop control variable來控制重覆執行的次數。
For迴路可以被用來了多次執行同一個指令,其原型如下
for (initialization;condition;increment) statement;
完整的FOR迴路可以控制多次重覆執行同一個指令區塊。其流程圖如下,其中藍色部份為for (initialization;condition;increment)指令擔任執行部份。它首先會開始這個迴路,並且依 initialization 指令來初始化迴路計數次數變數。緊接著會依 condition指令執行分岔判斷,滿足(ture)時會進入迴路執行迴路內的block,否則不滿足(false)則結束並離開迴路。執行完一次的迴路後,會依 increment指令進行迴數計數變數的增或減。完成增減後會循箭頭指示回到迴路的condition檢查部份。
For loop, for迴路的原型流程圖
其程式原型如下
for (initialization;condition;increment)
{
block to be prepeated
}
其中initialization是指初始化迴路控制變數的指令,說明重覆執行迴路開始時迴路控制變數的初始值設定。 condition 是指判斷完成重覆執行的時的條件,條件是由迴路控制變數的大小限制。而 increment 則是指每一次重覆執行後迴路控制變數如何增減。
範例:
#include "c4mlib.h" //引入ASA Seriesc函式庫
#include "math.h" //引入math,h函式庫
#include "stdlib.h" //引入stdlib函式庫
float deg2Rad(float i);
int main(void)
{
C4M_DEVICE_set(); //執行ASAM128板初始設定
int i;
float angle;
for (i=0;i<180;++i)
{
angle=deg2Rad((float)i); //度度量轉為徑度量
printf("sin(%d)=%f\n", i, sin(angle));
}
}
float deg2Rad(float i)
{
float r,pi=3.1416;
r=i*pi/180;
return(r);
}
顯示結果
>> sin(0)=0.000000 >> sin(1)=0.017452 >> sin(2)=0.034900 >> sin(3)=0.052336 >> sin(4)=0.069757 >> sin(5)=0.087156 >> sin(6)=0.104529 >> sin(7)=0.121870 >> sin(8)=0.139173 >> sin(9)=0.156435 >> sin(10)=0.173649 >> sin(11)=0.190809 >> sin(12)=0.207912 >> sin( |
)=0.224952
>> sin(14)=0.241922
其中因為函式sin() 都是數學函式館內函式,所以要再引入math.h。
for() 中 initialization;condition;increment 彈性非常大,除了 condition必需要存在而且唯一以外, initialization,increment可以是空的,也可以同時有多組,可以是與控制變數無關的判斷式。例如:
for(; a>=0 ;) a++;
for(x=1,y=100;x<10;x++,y--)