程式區段

Download Report

Transcript 程式區段

(社團)

判斷式用於選擇某程式區段是否被執行。
判斷式是由條件式與判斷式語法所組成。
判斷式共有兩類:
若希望建立當某條件為真,即執行某一程式
區段的控制時,if…else if…else判斷式較為
適用。
 若希望利用條件式,在許多程式區段中選擇
執行其中之一,此時則要需利用
switch…case。


迴圈用於控制某一程式區段的重複執行,
共有三種。
For
 While
 do…while


最單純的判斷式為只有if敘述的型式,其語
法如下:
if (條件式) 單行程式敘述;
或者
if (條件式)
單行程式敘述;

如果希望if成立後,執行不只一行的程式
敘述時,我們就必須用大括弧({}),標
示出希望執行的程式區段。語法如下:
if (條件式){
程式區段;
}
或
if (條件式)
{
程式區段;
}

下圖是if判斷式的判斷流程圖。
進入判斷式
輸入值>=0
且(&&)
輸入值<=9
真
印出
You Input a number …..
system(………
return 0;
程式結束
假

其語法如下:
if (條件式){
程式區段一;
}
else {
程式區段二;
}

其流程圖如下:
進入判斷式
輸入值>=0
且(&&)
輸入值<=9
真
印出
You Input a number …..
system(………
return 0;
程式結束
假
印出
This is not a number …..

其語法如下:
if (條件式一){
程式區段一;
}
else if (條件式二){
程式區段二;
}
else if (條件式三){
程式區段三;
}
……
else {
程式區段N;
}

if…else if…else判斷式的的執行流程如下:

巢狀if判斷敘述的應用
巢狀判斷指的是在if…else if…else的程式區段中,再使用判斷
敘述:
if (條件式一){
程式區段一;
if (條件式二){
程式區段二;
}
else {
程式區段三;
}
程式區段四;
}
else {
程式區段五;
}
/* 內層if判斷式 */

其程式執行的流程圖如下。

當您想要運用一個條件,選擇執行許多不同程式區段
中的某個程式片段時,您可以應用switch…case來完
成。其語法如下:
switch (條件式){
case條件值一:
程式區段一;
break;
case條件值二:
程式區段二;
break;
……
default:
程式區段N;
}

整個switch…case判斷式的執行流程如下
圖所示:

在程式裡,for迴圈的使用是非常常見的。
透過for迴圈,可以達到重覆執行某一程式
區段特定次數的目的。其語法如下:
for (起始運算式 ;測試條件式 ;計次運算式)
{
程式區段;
}

語法各部分說明如下:
起始運算式:用於設定計次變數起始值,起始
運算式只在進入迴圈的時候執行。
 測試條件式:計次變數的限制條件式,若為真,
則進入迴圈執行程式區段,若為假則跳出迴圈。
 計次運算式:執行完程式區段後,利用計次運
算式更改計次變數。


流程圖如下:

以下為一個會重覆執行3次的for迴圈範例。
for (i = 1; i <= 3; i++ ){
printf(“The %d time of 3.\n“,i);
}

這個迴圈的執行過程將可運用以下的表格
表示:
進入迴圈
時的i 值
執行次數
條件式值
i <= 3
更改後的i值
i++
螢幕輸出
第一次
1
真
The 1 time of 3.
2
第二次
2
真
The 2 time of 3.
3
第三次
3
真
The 3 time of 3.
4
第四次
4
假

下圖是整個過程的流程圖。

while迴圈的語法如下:
while (測試條件式){
程式區段; /*迴圈內執行多行敘述*/
}
或
while (測試條件式)
單行敘述; /*迴圈內執行單行敘述 */

以下以流程圖表示while迴圈的執行過程:

do…while迴圈的語法如下:
do {
程式區段; /*迴圈內執行多行敘述*/
} while (測試條件式) ; /*注意最後要加 ; 分號*/

其流程圖如下:

下面是一個在for迴圈裡的break敘述:
for (i=1; i < 5 ; i++){
程式區段一;
if (i == 3){
……
break;
/* 強迫程式直接跳離迴圈 */
}
程式區段二;
}
程式區段三;

在迴圈執行的過程中,遇到continue敘述時,將可
強制程式跳過迴圈中continue之後的敘述,回到迴
圈的計次運算式,再開始下一次迴圈執行的流程。
下面是一個在for迴圈裡的continue敘述:
for (i=0; i<=4 ; i++){
程式區段一;
if (i == 3){
……
continue;
/*強迫程式直接回到迴圈的計次運算式*/
}
程式區段二;
}

以下是幾個正確與錯誤的goto敘述。

正確!goto可以往前跳。
stop:
…
goto stop ;

正確!goto敘述可以由程式敘述裡面的程
式區塊往外跳,底下是以if判斷式為例子。
if(…){/* 程式區塊 */
goto stop ;
……
}
stop:

錯誤!goto敘述由main跳至函數裡,goto不可以
跨越函數。
int main(void)
{
……
goto stop ;
……
}
function goto_test()
{
……
stop:
……
}

可以但危險!
goto stop ;
……
for(起始值運算式 ;測試條件式 ;遞增運算式){
……
stop:
……
}

下面是一個在for迴圈裡使用goto敘述的程式:
1
2
for (i=1; i < 5 ; i++){
程式區段一;
3
4
5
6
7
8
goto stop ;
程式區段二;
}
程式區段三;
stop:
程式區段四;
//強迫程式直接跳至stop標籤