Professional Documents
Culture Documents
• 迴圈
– for 敘述
– 關係運算子與邏輯運算子
– while 敘述
– do while 敘述
• 條件式結構 ( 決策判斷 )
– if 敘述
– Switch 敘述
– break
– goto
for 敘述
• for 迴圈用以進行重複性之計算
• 單迴圈基本型式
– 單迴圈 : 僅有一參數遞增減
Method 1
int i;
for (i=0;i<10;i++)
{
}
( 起始值 ; 終止條件 ; 增
量)
運算式置於 { } 內
• 單迴圈各種寫法 ( 以下省略變數宣告 )
Method 3: Correct
for(j=0;j<n;j++) 不加 {} Method 3: Correct
fprintf(fp,”%d”,j+n); for(j=0;j<n;j++) fprintf(fp,”%d”,j+n);
不該放” ;” 少放了” ;”
Method 5: Wrong
int i,sum,sun;
Method 5: Wrong
sum=sun=0;
int i;
該行後面不能放” ;” for (i=0;i<10;i++)
for (i=0;i<10;i++);
{
for (int j=0;j<10;j++){ j 未宣告
sum 初始值未指定 for (int j=0;j<10;j++)
sum=sum+j;
{
sun+=i; sun 初始值未指定 j=j+1; j 數值將錯亂
}
sum=sum+j;
sun+=i;
}
}
• 雙迴圈其它寫法
wrong:
if(a=b)
{
}
= 指定 b 的內容給 a, 錯誤用法
If 內絕對不可只用一個等號
且 或
4. && || A=false;
3. ! !=
BOOL A,B,C; B=false;
! not, 非
C=A&B;// 相當少用 C=A|B
!= not equal,
if((a==b) && (c==d)) int a=4, b=3;
不等於 ( 用於比較 )
{ int c=2, d=4;
a!=b;
} If((a==b) || (c==d))
if(a!=b)
else {
{
{ }
}
} else
else
{ {
} }
•若 a 與 b 相等 , 並且 c 與 d 相等
C=!A;
則執行第一組 {} 內指令 , 否
則執行第二組 {} 內指令
Correct
if(a!=b) •若 a 與 b 相等 , 或 c 與 d 相等
{ 則執行第一組 {} 內指令 , 否
AfxMessageBox(“Case: TRUE”); 則執行第二組 {} 內指令
}
while 敘述
• 當迴圈次數不確定時使用
• 一般會設定一旗標 (Flag) ,預設為 FALSE( 或 TRUE), 當
某一條件符合時,變化旗標狀態,即可順利離開該迴圈
初始旗標狀態
宣告 i, 宣告完後
i 的內容為亂碼 , i 初始值要設定
非0
注意 : 執行圈數為 i
Method 2
j=0;
while (j<10)
{
j++;
}
}
}
雙重 while 迴圈 , 由於在圈數計算上 ,
比 for 迴圈困難 , 一般較少用
for 迴圈的執行圈數基本上需要已知 , while 迴圈則可以
未知 , 執行過程中改變條件式作為離開迴圈的依據 .
for 迴圈 , 執行圈數
要事先設定
執行圈數無法事先了解
Tip:
若迴圈數已知時 , 使用 for 迴圈
若迴圈數未知 , 終止條件由執行中決定 , 則使用 while 迴圈
Method 4
BOOL factor;
factor=FALSE;
int i;
i=0;
while (factor==FALSE)
{
…
…
i++;
if(i>10) factor=TRUE;
}
執行 10 次
迴圈執行次數需特別注意
案例 :
do while 敘述
Method 1
int j; 等同於 等同於
j=0; int i; j=0;
do for (i=0;i<3;i++) while (j<3)
{ { {
j++; } j++;
}while (j<3); }
Do while 與 while 差異 :
- 對於 while 而言 , 先判段條件式 , 滿足時才進入迴圈
迴圈執行幾次 ?
- 對於 do while 而言 , 先執行迴圈 , 每執行一次後 , 才
3次 判斷條件式是否滿足
Example: Do while
直接先進入迴圈
條件式 , 若不滿足 ,
則離開迴圈
if 敘述
• if 為判斷式指令,作為各種條件執行選項之
判斷
• if 基本型式
if(…)
Method 1:
{
單一條件 雙重條件 多重條件 }
if(i<10) if(i>10) if(j>10) else if (…)
{ { { {
} } } }
else else if (j>=11 && j<20) else if(…)
{ { {
} } }
else else
{ {
每一條件之群組指令均置放於 {} 內 } }
• if 指令各種寫法
Method 2
if(j>10 || j<20)
{
Method 3
Wrong
if(j>10 || j<20) fprintf ();
if(j>10 || j<20); fprintf ()
; 放錯位置
Method 4
if(i>10) fprintf(cond A); Method 5
else if (i==10) fprintf (cpnd B); if(i>10) fprintf(cond A);
else fprintf (cond C); else {
…
…
}
p1: 3 conditions, q1: 3 conditions
5. 優先順序
(a) ! -(negative) ++ --
(b) * / %
(c)+ -(add)
(d)< <= > >=
(e) == !=
(f) && ||
switch 敘述
Method 1
int I;
switch (i)
{
case 1: fprintf();
break; 等同於
case 2: fprintf(); int i;
break; i=2;
case 3: fprintf(); if(i==1)
break; AfxMessageBox("APPLE");
else if (i==2)
default:
AfxMessageBox("ORANGE");
fprintf(); else if (i==3)
} AfxMessageBox("Cherry");
else
AfxMessageBox("---");
break
Method 1
for(j=0;j<10;j++)
{
if(j>5)
break;
}
較少用
switch 範例
goto
Method 1
begin:
if(i>j)
goto stop;
goto begin;
stop:
return;
int j,k;
start:
j+=1;
if(j>10) goto stop;
goto start;
stop: