C#物件導向程式設計(四){反覆運算敘述句與跳躍陳述}

程式最方便的功能之一就是可以使用特定的描述完成反覆的事情,而這種能力就叫做迴圈(LOOP)。反覆重複陳述式直到特定的次數、或者終止的條件,除非遇到跳躍陳述,否則將會依照規則順序執行。這些相關的關鍵字有這些:for、foreach、in、do、while、continue、break、goto、return。這篇將會看看如何組合應用。
c#

  • dowhile
    dowhile 實際上是用 do 關鍵字與 while 組合起來的迴圈用法,不同於 while 的地方是 無論條件成立與否都會執行一次。

        void Start () {
            int x = 5;
            do
            {
                Console.WriteLine(x);
                x++;
            } while (x < 5);
        }

    Output: 5 之後停止。

  • while
    while 以條件為優先做判斷,決定何時停止迴圈執行。

        void Main()
        {
            int n = 0;
            while (n < 5)
            {
                Console.WriteLine(n);
                n++;
            }
        }

    Output: 0~4 之後停止。

  • for
    for 迴圈可以下的條件參數較多,以(起始值範圍值迭代值)組成,立變數 i 起始值。 不論迴圈重複幾次,此步驟只會發生一次。再以範圍值評估條件 (i <= X),i 值會與 X 進行比較,成立則繼續運作。接著利用迭代值使 i 超過範圍停止迴圈。

        void Main()
        {
            for (int i = 1; i <= 5; i++)
            {
                Console.WriteLine(i);
            }
        }

    Output: 1~5 之後停止。

  • foreachin
    foreach 則必須搭配 in 關鍵字使用,簡單說他是一種簡化版的for 迴圈,有可以遍歷集合項目的特點,但僅提供讀取禁止修改主體元素。

            int[] nums= new int[] { 0, 1, 3, 5, 6, 8, 10, 13 };
            foreach (int num in nums)
            {
                System.Console.WriteLine(num);
            }

     
     

 
跳躍陳述式:利用以下關鍵字可讓程式控制立即轉移。

  • break
    之前 switchcase 中使用過 break 關鍵字,不過 break 也可以拿來中斷 forwhile 迴圈。

        void Main()
        {
            for (int i = 1; i <= 1000; i++)
            {
                if (i == 5)
                {
                    break;
                }
                Console.WriteLine(i);
            }
        }

     

  • continue
    continue 則是另一種打斷迴圈的方式,只是在打斷後還會繼續執行下一圈。

    void Main()
        {
            for (int i = 1; i <= 10; i++)
            {
                if (i < 5)
                {
                    continue;
                }
                Console.WriteLine(i);
            }
        }

     

  • goto
    goto 陳述式會將程式控制權直接轉移到標記陳述式。跳轉至預設的標籤可以讓一組包覆極為複雜的迴圈立刻解放。標籤用字組加上 : 來定義。

        void Start () {
            int n = 0;
            while (n < 60)
            {
                if(n == 50) goto Found;
                n++;
            }
            Found: Console.WriteLine(n);
        }
  • return
    return 陳述式除了之前提到可以傳回值以外,如果方法是 void 類型,則省略 return 陳述式。它也會終止執行在其中出現的方法,並且將控制權轉給方法本身。

    void Update () {
            if (Input.anyKey)
            {
                print(Input.inputString);
            }
            else return;
            print("GO~");
        }

    以UNITY的 Update舉例的話,除非按下按鍵否則最後一行的 GO~ 不會被印出來,會直接回到Update的開始繼續執行。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *