溫瑞烘老師的教學歷程檔案(Teaching ePortfolio) - 102-1--物件導向程式設計 - 第3週講義-PHP選擇敘述與迴圈
 

資訊管理系
副教授
温瑞烘


歷程檔案 Portfolio


關於我 About Me

第3週講義-PHP選擇敘述與迴圈

PHP 選擇敘述與迴圈

本文引自http://pydoing.blogspot.tw/2012/10/php-tutorial.html

 

程式中的選擇 (selection) 就是依條件 (condition) 使程式有不同的執行方向,若條件為真,也就是 True ,程式就會跳過 False 的部份執行 True 的部份,反之亦然。選擇結構有單一選擇跟多重選擇,兩者都可使用 if 陳述 (if statement) if 為關鍵字 (keyword) 之一,若是多重選擇 if 須與 else 連用。單一選擇,也就是單獨使用 if 陳述如下:

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

以上條件為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後的大括弧的程式區塊 (block) ,如果 3 大於 5 為假,程式自然跳過條件後的程式區塊,去找區塊後的第一個陳述 (statement) 執行。

 

if else 連用,條件為真,執行 if 後的程式區塊,條件為假,就執行 else 後的程式區塊

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

else {

  echo "還好,3沒有大於5";

}

 

if-else 也可以多個連用,形成 if-else if-else 的多重選擇,最後的 else 表示以上皆非

if (3 > 5) {

  echo "喔,3大於5發生了!";

}

else if (4 > 5) {

  echo "喔,4大於5發生了!";

}

else if (5 > 5) {

  echo "喔,5大於5發生了!";

}

else if (6 > 5) {

  echo "6當然大於5哩!";

}

else {

  echo "以上沒有符合的條件 :(";

}

 

範例程式一

<?php

if (3 > 5) {

    echo "喔,3大於5發生了!";

}

else if (4 > 5) {

    echo "喔,4大於5發生了!";

}

else if (5 > 5) {

    echo "喔,5大於5發生了!";

}

else if (6 > 5) {

    echo "6當然大於5哩!";

}

else {

    echo "以上沒有符合的條件";

}

?>

 

if-else if-else 多重選擇的缺點是需要很多個條件,程式需要做很多個條件判斷,因此另外有個 switch 陳述 (switch statement) ,條件為一個常數 (constant) 值,然後程式自動尋找符合的 case 。同樣的 switch case 也都是關鍵字

switch (6) {

  case 3:

    echo "選擇是3...";

    break;  

  case 4:

    echo "選擇是4...";

    break; 

  case 5:

    echo "選擇是3...";

    break;     

  case 6:

    echo "選擇是6...";

    break; 

  default:

    echo "以上沒有符合的條件";

}

 

這裡, switch 後面的小括弧必須是常數值,此例中直接使用字面常數,也可以使用有常數值的變數 (variable) case 後空一格,然後也是接常數值,通常就是直接填入符合情況的常數,注意,每個 case 的常數後都要接冒號。case 底下的陳述,習慣上沒有用大括弧,而是用縮排 (indentation) 的方式表示屬於哪個 case 的工作。每個 case 最後,我們都有加上 break 陳述 (break statement) ,這是中斷跳出執行的意思,就是說,這個 case 符合並且執行了 case 所屬的工作,到此跳出 switch-case 的範圍,程式繼續執行switch 大括弧後的陳述。switch-case 最下面有個 default default 就是預設情況,如果以上皆非就會執行 default 的工作,這跟 if-else if-else 最後的 else 的用法相同。但是,如果 case 後沒有 break ,每一次執行 default 都會被執行。同樣的, break default 也都是關鍵字之一。我們將此例寫成完整的範例程式,如下

 

範例程式二

<?php

  switch (6) {

    case 3:

      echo "選擇是3...";

      break;     

    case 4:

      echo "選擇是4...";

      break;

    case 5:

      echo "選擇是3...";

      break;     

    case 6:

      echo "選擇是6...";

      break; 

    default:

      echo "以上沒有符合的條件";

  }

?>

 

程式 (program) 中的迴圈 (loop) 就是在特定程式區塊 (block) 中,重複執行相同的工作。PHP 中四種迴圈,分別是 while 迴圈 (while loop) do-while 迴圈 (do-while loop) for 迴圈 (for loop) foreach-as 迴圈 (foreach loop) 。我們先來看看 while 迴圈的寫法

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

  echo $i . "<br>";     

  $i--; // 調整控制變數值

}

這個迴圈所進行的工作很簡單,先在命令列上印出 10 ,然後一路倒數到 1 為止。迴圈有三個地方要注意

1.  設定控制變數

2.  條件

3.  調整控制變數值

 

while 迴圈的控制變數 (control variable) 必須在 while 之前就先設定好,此例中將控制變數 $i 設定為 10 。然後進入 while 的地方,條件 (condition) 就在 while 之後的小括弧中,此例中為當控制變數 $i 大於 0 時,迴圈便會重複執行。迴圈工作區,也就是 while 底下用大括弧圍住的程式區塊,這裡,我們只有簡單的印出控制變數 $i 的值,迴圈工作區的最後需要有調整控制變數值的地方。我們先寫成完整的範例,來執行看看結果吧!

範例程式三

<?php

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

echo $i . "<br>";     

$i--; // 調整控制變數值

}
?>

 

當我們明確知道重複次數的時候,我們得利用控制變數來記錄 while 迴圈所進行次數,這樣 while 迴圈才會有結束的一天,不然若是三個與控制變數相關的部份,漏了任一部份時,就有可能導致無窮迴圈 (infinite loop) 的發生,例如

 

$i = 10; // 設定控制變數

while ($i > 0) {     // 迴圈工作區    

echo $i . "<br>";     

// 沒有調整控制變數值

}

 

這樣一來,控制變數 $i 永遠大於 0 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 10 ,直到強制結束程式的執行為止。

 

do-while 迴圈可視為 while 迴圈的顛倒,先 do 才做 while 的條件測試。

範例程式四

<?php

$i = 1; // 設定控制變數

do { // 迴圈工作區

echo $i . "<br>";     

$i++;         // 調整控制變數值

} while ($i < 11);       

?>

 

另外一個 for 迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在小括弧之中,如下

for ($i = 10; $i > 0; $i--) {    

echo $i . "<br>";

}

 

for 之後的小括弧用兩個分號區隔三個項目,依序是控制變數的設定、迴圈結束條件、控制變數的調整。這個 for 迴圈與上面的 while 迴圈功能完全相同,寫成完整的範例程式,如下

範例程式五

<?php

  for ($i = 10; $i > 0; $i--) {   

    echo $i . "<br>";

  }

?>

 

另外有 foreach --- as 迴圈,將於陣列中介紹

 
練習
  寫一程式計算1到100之間的總和,偶數和,奇數和,3的倍數之和,2與3的倍數之和,
  分別以for迴圈, while迴圈, do-while迴圈, 將程式貼到ePortfolio及送到ccs,
  ePortfolio上建立連結
  例如:
  $N=100;
  $sum=0;
  for ($i=1; $i<=$N; $i++) {
    $sum=$sum+$i;
    if ($i==1) echo "$i ";
    else echo "+$i ";
  }
  echo "=$sum<br>";




 

全部共 0則留言
登入帳號密碼代表遵守學術網路規範
 


文章分類 Labels

 


最新文章 Top10

中華科技大學數位化學習歷程 - 意見反應