程式敘述

Download Report

Transcript 程式敘述

第三章 流程控制結構
•
•
•
•
流程控制結構
程式區塊
條件控制敘述
迴路控制敘述
3-1 流程控制結構
• 流程控制敘述可以分為二大類,如下所
示:
– 條件控制敘述(Branching Statements):條件
控制敘述是一個選擇題,單一選擇或多選一,
主要是依照第二章關係和條件運算式的結果,
決定執行那一個區塊的程式碼。
– 迴路控制敘述(Looping Statements):迴路控
制是重複執行區塊的程式碼,擁有一個結束
條件,可以結束迴路的執行。
3-2 程式區塊-1
• 程式區塊是一種最簡單的結構敘述,它的目的只是
將零到多列的程式敘述組合成一個群組,可以將整
個程式區塊視為一列程式敘述,如下所示:
{
程式敘述;
…………
}
• 上述程式區塊使用「{」和「}」大括號包圍的程式
敘述,事實上,在大括號內也可以不含任何程式敘
述,稱為「空程式區塊」(Empty Block)。
3-2 程式區塊-2
• 程式區塊提供群組方式的程式編排,不只如此,
它還可以隱藏變數的宣告,如下所示:
{
int temp;
temp = a;
a = b;
b = temp;
}
• 上述程式區塊的變數temp只在區塊內使用,離
開程式區塊,就無法存取變數temp,變數temp
稱為程式區塊的區域變數(Local to the Block)。
3-3 條件控制敘述
•
•
•
•
3-3-1 if是否選條件敘述
3-3-2 if/else二選一條件敘述
3-3-3 switch多選一條件敘述
3-3-4 ?:條件敘述運算子
3-3-1 if是否選條件敘述-1
• if條件敘述是一種是否執行的單選題,只是決定是
否執行區塊內的程式碼,如果條件運算結果為true,
就執行括號間的程式區塊,其語法格式如下所示:
if ( 關係/條件運算式 )
{
程式敘述;
……
}
• 上述if條件的關係/條件運算式如為true,就執行區
塊的程式碼,如果為false就不執行程式區塊。
3-3-1 if是否選條件敘述-2
• if條件敘述的範例,如下所示:
if ( level >= 60 )
{
System.out.print("Java程式設計");
System.out.println("範例教本");
}
• 如果程式區塊的程式敘述只有一列,也
可以省略區塊的大括號,如下所示:
if ( level < 60 )
System.out.println("ASP網頁設計範例教本");
3-3-2 if/else二選一條件敘述-1
• If/else是使用在排它情況的兩個執行區塊,只能二
選一,我們可以加上else指令,其語法格式,如下:
if ( 關係/條件運算式 )
{
程式敘述1;
}
else
{
程式敘述2;
}
• 如果if的關係/條件運算式為true,執行程式敘述1,
false就執行程式敘述2。
3-3-2 if/else二選一條件敘述-2
• If/else條件敘述的範例,如下所示:
if ( score >= 60 )
{
System.out.println("成績及格");
}
else
{
System.out.println("成績及格");
}
• 程式碼因為成績有排它性,60分是及格分數,
所以可以顯示不同的字串內容。
3-3-3 switch多選一條件敘述-1
• 第一種方法:重複使用if/else條件建立多選一的條
件敘述,如下所示:
if ( score >= 80 )
System.out.println("學生成績A");
else
if ( score >= 70 )
System.out.println("學生成績B");
else
System.out.println("學生成績C");
• 程式碼使用if/else條件,每次判斷一個條件,如果
為false就重複使用if/else條件再進行下一次的判斷。
3-3-3 switch多選一條件敘述-2
• 第二種方法:使用switch多條件敘述,依照符
合的條件執行不同區塊的程式碼,其語法格式
如下所示:
switch ( 變數 )
{
case 常數1:
程式敘述1;
break;
case 常數2:
程式敘述2;
break;
case 常數3:
程式敘述3;
break;
………..
default:
程式敘述;
}
switch條件只擁有一個關係/條件運
算式,每一個case條件的比較相當於
一個「==」運算子,如果符合,就
執行break指令前的程式碼,每一個
條件需要使用break指令跳出條件敘
述。
最後的default指令並非必要的指令,
這是一個例外條件,如果case條件都
沒有符合,就執行default程式區塊。
3-3-3 switch多選一條件敘述-3
• switch條件敘述的範例,如下所示:
switch (grade)
{
case 'A':
System.out.println("學生成績A");
break;
case 'B':
System.out.println("學生成績B");
break;
case 'C':
System.out.println("學生成績C");
break;
default:
System.out.println("學生成績D");
}
• 程式碼比較成績A、B和C以便顯示不同的字串
內容。
3-3-4 ?:條件敘述運算子
• Java的條件敘述運算子?:可以使用在指定敘述
以條件指定變數值,其語法格式如下所示:
變數 = (關係/條件運算式) ? 變數值1 : 變數值2;
• 上述指定敘述的「=」號右邊是條件敘述運算
子,如同一個if/else條件,使用「?」符號代替
if,「:」符號代替else,如果條件成立,就將
變數指定成變數值1,否則就是變數值2,一個
條件敘述運算子的範例,如下所示:
hour = (hour >= 12) ? hour-12 : hour;
3-4 迴路控制敘述
•
•
•
•
•
•
3-4-1 for迴路敘述
3-4-2 while迴路敘述
3-4-3 do/while迴路敘述
3-4-4 break指令敘述
3-4-5 continue指令敘述
3-4-6 巢狀迴路
3-4-1 for迴路敘述-1
• Java的for迴路可以執行固定次數的程式區塊,這個
迴路擁有一個計數器,計數器每次增加或減少一個
值,直到迴路的結束條件成立為止,其語法格式如
下所示:
for ( 初始值 ; 結束條件 ; 變數更新 )
{
程式敘述;
}
• 迴路執行的次數是從括號的初值開始,執行變數更
新到結束條件(此為關係與條件運算式)為止,在括
號內的三個運算式可以是空的for( ; ; ),如果沒有指
定結束條件,預設是true,表示是一個無窮迴路。
3-4-1 for迴路敘述-2
• for迴路稱為「計數迴路」(Counting Loop),迴
路使用變數控制迴路的執行,從一個最小值執
行到最大值,例如:計算1加到5的總合,每次
增加1,如下所示:
for ( i = 1; i <= 5; i++ )
{
System.out.println("數字: " + i);
total += i;
}
• 迴路的程式碼是從1加到5計算其總合。
3-4-2 while迴路敘述-1
• while迴路敘述不同於for迴路,就是需要在程
式區塊自己處理計數器的增減,while迴路是在
程式區塊的開頭檢查結束條件,如果條件為
true才進入迴路執行,其語法格式如下所示:
while ( 結束條件 )
{
程式敘述;
}
• 迴路執行的次數是直到結束條件為false為止。
3-4-2 while迴路敘述-2
• 使用while迴路計算1加到10,如下所示:
while ( i <= 10 )
{
System.out.println("數字: " + i);
total += i;
i++;
}
• while迴路計算從1加到10的總合,變數i是一個
計數器變數,如果符合i <= 10條件,就可以進
入迴路執行程式區塊,迴路的結束條件為i >
10 。
3-4-3 do/while迴路敘述-1
• do/while和while迴路敘述的差異是在迴路的結
尾檢查結束條件,因此do/while迴路的程式區
塊至少會執行一次,其語法格式如下所示:
do
{
程式敘述;
} while ( 結束條件 )
• 迴路執行的次數是直到結束條件為false為止。
3-4-3 do/while迴路敘述-2
• 使用do/while迴路計算1加到10,如下所示:
do
{
System.out.println("數字: " + i);
total += i;
i++;
} while ( i <= 10 );
• 迴路的第一次執行需要到迴路的結尾,才會檢
查while條件是否為true,如果true就繼續執行迴
路,計算從1加到10的總合,迴路的結束條件
為i > 10 。
3-4-4 break指令敘述
• Java的迴路敘述在有些時候,需要在迴路中測
試迴路條件,break指令可以在條件成立時終止
迴路的執行,如下所示:
do
{
System.out.println("數字: " + i);
total += i;
i++;
if ( i > 10 )
break;
} while ( true );
• 程式碼當計數器變數i > 10時跳出迴路。
3-4-5 continue指令敘述
• 在Java迴路的執行過程中,continue指令敘述可
以馬上繼續下一次迴路的執行,如果使用在for
迴路,一樣會自動更新計數器變數,如下所示:
for ( i = 1; i <= 10; i++ )
{
if ( (i % 2) == 0 )
continue;
System.out.println("數字: " + i);
total += i;
}
• 程式碼是當計數器變數為偶數時,繼續迴路的
執行。
3-4-6 巢狀迴路-1
• 巢狀迴路是在迴路內擁有其它迴路,例
如:在for迴路擁有for、while和do/while
迴路,同樣的,while迴路內也可以擁有
for、while和do/while迴路。
3-4-6 巢狀迴路-2
• Java的巢狀迴路可以擁有很多層,例如:在for
迴路內擁有while迴路,如下所示:
for ( I = 1; I <= 9; i++ )
{
……
j = 1;
while ( j <= 9 )
{
…..
j++;
}
}
迴路一共有兩層,第一
層的for迴路執行9次,
第二層的while迴路也是
執行9次,兩層迴路總
共可以執行81次。