C# Online ! 第廿三篇:邏輯課程 Part IV ~ C# 迴圈–while、do while

  • 16265
  • 0
  • C#
  • 2011-07-08

C# Online ! 第廿三篇:邏輯課程 Part IV ~ C# 迴圈–while、do while

各位朋友大家好! 今天要跟大家介紹的是迴圈,什麼是迴圈呢? 簡單的講,就是指 重複執行的程式(repeated execution of statements),舉例來說,當你想要將一段程式重複的執行100次,1000次或是10000次的時候,如果每執行一次就必須寫一遍的話...,光用想的就很嚇人,這時候就可以運用迴圈來做這些事情,我們只需要寫一次!

看完以上的說明,是不是覺得迴圈很方便呀!! 接下來就進入正題,運用迴圈的方式有很多種,這一篇要介紹的方法是使用 while (還有其他的關鍵字可以使用,往後的文章內會介紹。)其實 while 陳述式跟前幾篇介紹的 if 陳述式有點類似,不同的地方在於 while 會重複執行陳述式或陳述式區塊,直到指定的運算式條件判斷為 false 為止

先來看個簡單的例子:

 


namespace Chapter23
{
    class Program
    {
        static void Main() 
        {
            int n = 1;
            while (n < 4) 
            {
                Console.WriteLine("目前n的值為 {0}", n);
                n++;
            }
            Console.ReadKey();
        }
        
    }
}

 

 

以上的例子,會去判斷 n < 4 是否為 true,如果是的話,則會執行 while 底下的陳述式,也就是顯示目前n的值為多少以後再把 n++,n++ 以後的值,再去做 n<4的判斷是否為true,會一直重複以上的動作,直到判斷為 false,才會跳出while這個迴圈,繼續往底下的陳述式執行,所以這個例子會顯示底下的文字在螢幕上:

 

目前n的值為 1

目前n的值為 2

目前n的值為 3

 

n的值為3以後再加1就不小於4,因此就會跳出 while 陳述式,繼續往底下的陳述式執行(Console.ReadKey();)。

這邊有一點要注意,while 運算式的條件判斷是在每次執行迴圈前發生所以 while 迴圈有可能一次都不會執行也可能執行一次以上。再舉一個例子跟上面的例子做比較,就會比較清楚了,例子如下:

 


namespace Chapter23
{
    class Program
    {
        static void Main() 
        {
            int n = 1;
            while (n++ < 4) 
            {
                Console.WriteLine("目前n的值為 {0}", n);
            }
            Console.ReadKey();
        }
        
    }
}

 

上面的例子,會先判斷 n++<4是否為 ture,如果為 true,再去執行底下的陳述式,所以會顯示:

 

目前n的值為 2

目前n的值為 3

目前n的值為 4

 

上面說明的時候有提到,while 迴圈有可能一次都不會執行(條件判斷結果為 false),我們拿第一個例子來舉例,以下的例子裡的 while 陳述式是不會執行的:

 


namespace Chapter23
{
    class Program
    {
        static void Main() 
        {
            int n = 5;
            while (n < 4) 
            {
                Console.WriteLine("目前n的值為 {0}", n);
                n++;
            }
            Console.ReadKey();
        }
        
    }
}

 

接下來要介紹的是另一種用法 ─ do while,與使用 while 的時候有不同的地方,我們直接來看一個簡單的例子:

 


namespace Chapter23
{
    class Program
    {
        static void Main() 
        {
            int i = 1;
            do
            {
                Console.WriteLine("{0}", i);
                i++;
            } 
            while (i <= 10);
            Console.ReadKey();
        }
        
    }
}

 

上面這個例子,會先執行do底下的陳述式,然後再去做 while 的條件判斷,如果判斷結果為 true,則再執行一次 do 底下的陳述式,直到 while 的條件判斷結果為 false 才離開迴圈。看完 while 與 do while 的例子,我們可以發現兩者之間的差別while是先判斷條件,如果符合條件才會去執行底下的程式區段而 do while 則是至少會執行一次 do底下的程式區段以後,再去判斷條件是否符合

 

小提醒: 使用do while的時候,while (條件判斷) 最後的 ; 可別忘記嘍!! 要離開while迴圈除了
                判斷條件為 false以外,也可以運用跳躍陳述式(例如 break, return…等等)來離開迴圈。

 

最後我們利用 do while 與 while 來做練習吧,有興趣的朋友可以跟著做一次。

練習目標:可以讓人輸入目前的存款餘額與年利率及期待的存款,然後計算出必須要幾年後才能達到期待的存款。

程式碼如下:

 

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Chapter23
{
    class Program
    {
        static void Main(string[] args)
        {
            double balance, interestRate, targetBalance;
            Console.WriteLine("請輸入您目前的存款餘額:");
            balance = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("請輸入您目前的年利率%數:");
            interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;
            Console.WriteLine("請輸入您期待的存款餘額:");
            do
            {
                targetBalance = Convert.ToDouble(Console.ReadLine());
                if (targetBalance <= balance)
                       {
                            Console.WriteLine("您必須輸入一個大於您目前存款餘額的數字\n請再次輸入您期待的存款餘額:");
                       }  
            }
            while (targetBalance <= balance);

            int totalYears = 0;
            while (balance < targetBalance)
            {
                balance *= interestRate;
                ++totalYears;
            }
            Console.WriteLine("再過 {0} 年後,您的存款餘額為 {1} 元。", totalYears, balance);
            Console.ReadKey();
        }
    }
}

 

來看看執行結果吧,如下圖所示:

ch23-01

 

ch23-02

 

ch23-03

 

 

這邊大家可以看到,我們有在輸入期待的存款餘額這邊加入判斷,所以如果輸入的數字是小於目前存款餘額,則會顯示如下圖:

ch23-04

所以一定要輸入比目前存款餘額大的數字才會去運算出結果:

ch23-05

 

練習結束,你是不是也成功了呢? 本篇就介紹到這邊,謝謝大家的耐心觀看。

 

 

希望資深的前輩們與跟我一樣剛開始想學習C#的初心者,可以給我一些建議跟鼓勵,或是幫我按個讚!您的鼓勵就是我的動力! 感謝您們 ~

(本文中相關內容有參閱、引述MSDN)

 

 

 

 


如果這篇文章對您有幫助,請幫我點選「我要推薦」、按個讚、或是幫我推到其他平台;您的鼓勵將會是我繼續努力的一大動力!!

若是有任何指教或是需要討論之處,也不用客氣,請在下面留言給我,我將會儘速回覆~

Share | . . . . . . . . . .