第四章 程式流程控制

25
1 第第第 第第第第第第 第第第第 第第

Upload: jillian-orr

Post on 03-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

第四章 程式流程控制. 條件控制 迴圈. 4.1 流程控制的認識 (1). 在 PHP 中流程控制的指令分為兩類: 條件控制 與 迴圈 。 條件控制 :根據關係運算或邏輯運算的條件式來判斷程式執行的流程,依判斷的結果執行不同的程式區塊。條件控制的指令包括:. if if…else if…elseif…else switch. 4.1 流程控制的認識 (2). 迴圈 :根據關係運算或邏輯運算條件式的結果來判斷,重複執行指定的程式區塊。迴圈指令包括:. while do…while for foreach. 4.2 if 條件控制. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章 程式流程控制

1

第四章 程式流程控制條件控制迴圈

Page 2: 第四章 程式流程控制

2

4.1 流程控制的認識 (1)在 PHP 中流程控制的指令分為兩類:條件控制 與 迴圈。

條件控制:根據關係運算或邏輯運算的條件式來判斷程式執行的流程,依判斷的結果執行不同的程式區塊。條件控制的指令包括:

ifif…elseif…elseif…elseswitch

Page 3: 第四章 程式流程控制

3

4.1 流程控制的認識 (2)

迴圈:根據關係運算或邏輯運算條件式的結果來判斷,重複執行指定的程式區塊。迴圈指令包括:

whiledo…whileforforeach

Page 4: 第四章 程式流程控制

4

4.2 if 條件控制4.2.1 單向選擇 if :如果…就…這是一個單向選擇的條件控制結構,這個條件控制是最為單純的,也就是當判斷式成立時即執行區塊中的程式碼。語法格式以下是單向選擇流程控制的流程圖:

Page 5: 第四章 程式流程控制

5

單向選擇 if

程式範例$A = 10 ;$B = 5 ;if ($A > $B ) {echo “ 變數 A 大於 變數 B “;}echo " 程式結束 " ;

Page 6: 第四章 程式流程控制

6

4.2.2 雙向選擇 if…else :如果…就…否則就…這是一個雙向選擇的條件控制結構。條件判斷時,當條件成立時可以執行某個程式區塊,不成立時就執行另一個區塊時,即可使用這個條件控制結構語法格式以下是雙向選擇流程控制的流程圖:

Page 7: 第四章 程式流程控制

7

雙向選擇 if…else

程式範例if($a > 0) {

echo '$a 變數的值是正數 ';

}else{

echo '$a 變數的值是負數 ';

}

Page 8: 第四章 程式流程控制

8

4.2.3 多向選擇 if…elseif…else :如果…就…如果…就…否則… (1)

當第一個條件成立時就執行指定的程式區塊,不然就看第二個條件是否成立,成立時就執行指定的程式區塊,以此類推,當所有的條件都不成立時,就執行最後一個程式區塊。

Page 9: 第四章 程式流程控制

9

4.2.3 多向選擇 if…elseif…else :如果…就…如果…就…否則… (2)語法格式以下是多向選擇流程控制的流程圖 ( 以設定 3 個條件式為例 ) :

Page 10: 第四章 程式流程控制

10

多向選擇 if…elseif…else

程式範例if … elseif … 範例:

if ($A > $B) {

echo "$A > $B" ;}elseif($A==$B){

echo "$A = $B" ;

}else {

echo "$A < $B" ;

}

Page 11: 第四章 程式流程控制

11

4.3 switch 條件控制 switch 也是一個多向選擇的條件控制,但是與 if / elseif / else 不同的地方是 if 或 elseif 後都是以一個條件式做為判斷的依據,而 switch 會定義一個自訂變數,而每一個執行區塊為會以 case 並且帶一個值為開頭,當該值等於 switch 所定義的變數時,即執行這個 case 中的程式區塊。

語法格式以下是 switch 多向選擇流程控制的流程圖 ( 以設定 3 個方案為例 ):

Page 12: 第四章 程式流程控制

12

4.3 switch 條件控制 程式範例

switch ($direction){case " 東 ":

echo " 我要往東走 ";break;

case " 西 ":echo " 我要往西走 ";break;

case " 南 ":echo " 我要往南走 ";break;

case " 北 ":echo " 我要往北走 ";break;

default:echo " 我不知道要往哪走 ";

}

Page 13: 第四章 程式流程控制

13

4.4 迴圈在程式流程控制中,另一個相當重要的結構就是迴圈。在程式的某些區塊,會因為條件判斷或是設定次數的關係重複執行,一直到不符合條件或達到設定次數後才往下執行,這就是所謂的迴圈。4.4.1 while 迴圈while 迴圈是先設定條件,當符合條件時執行指定的程式,一直到不符合條件時才跳出迴圈。語法格式以下是 while 迴圈流程控制的流程圖:

11

Page 14: 第四章 程式流程控制

14

4.4.1 while 迴圈

程式範例 本範例利用 while 迴圈顯示由 1 到 10 的數字。

while ($i<10){$i++;echo $i.“&nbsp;”; // &nbsp; 為空白字元

}

while ($i<10){$i++;echo $i.“&nbsp;”; // &nbsp; 為空白字元

}

Page 15: 第四章 程式流程控制

15

4.4.2 do…while 迴圈do…while 迴圈與 while 迴圈幾乎是一樣的,只是 do…while 迴圈是先執行迴圈中的程式,並在最後才設定條件。當目前狀況仍符合條件時即繼續執行指定的程式區塊,一直到不符合條件時才跳出迴圈。語法格式以下是 do…while 迴圈流程控制的流程圖:

Page 16: 第四章 程式流程控制

16

4.4.2 do…while 迴圈 程式範例 本範例利用 do…while 迴圈來顯示由 1 到 10 的數字。

do{

$i++;

echo $i.“&nbsp;”; // &nbsp; 為空白字元}while ($i<10)

Page 17: 第四章 程式流程控制

17

4.5 for 計次迴圈 (1)

所謂計次迴圈,就是設定一個有次數的條件,若程式在符合條件的狀況下即執行迴圈內的程式,否則就跳出迴圈結束或往下執行程式。for 計次迴圈是先設定一個變數的初值,再設定該變數執行計次的條件,最後設定變數的計次方式。當符合條件時即執行指定的程式區塊後計次,一直到不符合條件時才跳出迴圈結束程式或往下執行。

Page 18: 第四章 程式流程控制

18

4.5 for 計次迴圈 (2) 語法格式 以下是 for 計次迴圈流程控制的流程圖:

Page 19: 第四章 程式流程控制

19

4.5 for 計次迴圈 (2)

程式範例 本範例要顯示由 1 加到 10 的總和。

for ($i=1;$i<=10;$i++){

$countI += $i;

}

echo $countI;

Page 20: 第四章 程式流程控制

20

FOREACHFOREACH 迴圈迴圈 foreach, 專門使用在陣列操作 , 有二種格式

分如下:1) foreach (array_expression as $value)2) foreach (array_expression as $key => $value) 與後面的陣列設定值有關

兩者的差別在「 index 值是否需要」。

Page 21: 第四章 程式流程控制

21

FOREACHFOREACH 迴圈迴圈 FOREACH 格式 -Type 1

foreach ( 陣列名稱 as $value){迴圈敘述 ;

} 意義:每次迴圈依序將陣列元素的內容放入

$value 變數中 , 直到陣列中每一個元素都執行一次。

範例 :$month = array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug',

'Sep','Oct','Nov','Dec') ; foreach ($month as $value)

echo "$value <br> " ;

Page 22: 第四章 程式流程控制

22

FOREACHFOREACH 迴圈迴圈 FOREACH 格式 -Type 2

foreach ( 陣列名稱 as $key => $value) {迴圈敘述 ;

} 意義 : 除了會將陣列元素依序存入 $value

外 , 也會將陣列指標 index 同時存入 $key 中。

Page 23: 第四章 程式流程控制

23

FOREACHFOREACH 迴圈迴圈 FOREACH 格式 -Type 2 範例

1: <html>2: <title>Foreach</title>3: <body>4: <?php5: $A = array (0,10,20,30,40,50,60) ;6: foreach ($A as $key => $value){7: echo "\$A[$key] : " ;8: echo "$value <br> " ;9: }10: ?>11: </body>12: </html>

1: <html>2: <title>Foreach</title>3: <body>4: <?php5: $A = array (0,10,20,30,40,50,60) ;6: foreach ($A as $key => $value){7: echo "\$A[$key] : " ;8: echo "$value <br> " ;9: }10: ?>11: </body>12: </html>

Page 24: 第四章 程式流程控制

24

4.6 流程控制的跳躍指令程式設計有時需要將目前的執行動作直接跳出流程控制區塊或是迴圈,執行下一輪的迴圈動作或向下執行程式,此時就必須使用跳躍指令。關於 break 與 continuebreak 及 continue 就是流程控制中的跳躍指令,它們都能停止目前的程式動作,不同的是 break 指令會跳出流程控制區塊或是迴圈往下執行,而 continue 指令會跳出目前的迴圈動作進行下一輪迴圈的執行。

Page 25: 第四章 程式流程控制

25

作業一 簡易購物車 假設有三種商品,其名稱、價格如下 :

php 入門書 $400 c 語言入門書 $ 550 資料結構原文書 $ 800且有三種會員資格,分別會打不同的折扣如下 : 金卡會員 7 折 銀卡會員 8 折 一般會員 95 折

設計一個 purchase.html 頁面,讓使用者輸入「使用者名稱」、「購買數量」、「會員資格」 ( 單選 ) 後,送出至 purchase.php 負責計算折扣後,並列出 : 使用者名稱、購買物品、會員資格,折扣,總金額等資料。

Due data: 二週後。