2012年10月14日 星期日

迴圈的介紹

今天要跟大家介紹的主題,也是日後會經常使用到的敘述,讓我們切入正題吧。

迴圈是蝦米東西?我用一個例子來跟大家解釋,假如我想要在銀幕上看到1,2,3,4....10的數字,要怎麼做呢?如果前面幾篇文章都有了解的話,心裡應該會想說,這有什麼困難的..

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Loop_Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("1" + "\r\n");
            Console.Write("2" + "\r\n");
            Console.Write("3" + "\r\n");
            Console.Write("4" + "\r\n");
            Console.Write("5" + "\r\n");
            Console.Write("6" + "\r\n");
            Console.Write("7" + "\r\n");
            Console.Write("8" + "\r\n");
            Console.Write("9" + "\r\n");
            Console.Write("10" + "\r\n");

            Console.ReadKey();
        }
    }
}

的確,這樣做可以達到我剛剛的目的,但是,如果使用迴圈,將會有更簡單的做法。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Loop_Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 10; i++)
            {
                Console.Write(i + "\r\n");
            }

            Console.ReadKey();
        }
    }
}

蝦米!!程式碼少這麼多而且結果竟然是一樣的,誰來給我講講迴圈是怎麼回事。

上面使用的是迴圈的敘述之一【for】,【for】的關鍵是必須要有一個【變數】,【判斷式】以及變數的【改變規則】。

【for】是這樣運作的,程式會宣告一個變數,並給予初始值,接著檢查【判斷式】,若【判斷式】【成立】,則繼續執行大括弧裡面的程式碼,執行完大括弧裡的程式碼再回過頭來,先依照變數的改變規修改變數,再檢查【判斷式】,如此循環直到【判斷式】【不成立】。

頭很暈?讓我用上面的程式碼來解釋。
【for】後面我宣告一個整數變數【i】,【判斷式】為變數【i】要小於或等於整數10,變數的改變規則為每次都把目前的變數【i】加1。 接著我們看程式怎麼運作:

一開始 i = 1。
檢查【判斷式】i<=10,因為i = 1 小於等於 10【成立】,執行大括弧的程式碼。
回過頭來i++,i目前內容是1,所以i加1之後的內容為2。

檢查【判斷式】i<=10,因為i = 2 小於等於 10【成立】,執行大括弧的程式碼。
回過頭來i++,i目前內容是2,所以i加1之後的內容為3。
.
.
.
.
.
.
檢查【判斷式】i<=10,因為i = 10 小於等於 10【成立】,執行大括弧的程式碼。
回過頭來i++,i目前內容是10,所以i加1之後的內容為11。

檢查【判斷式】i<=10,因為i = 11 小於等於 10【不成立】,程式結束。

有沒有比較清楚的【for】的用法了,上面的題目也可以用另外一個迴圈的敘述【while】來寫。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Loop_Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            while (i <= 10)
            {
                Console.Write(i + "\r\n");
                i++;
            }

            Console.ReadKey();
        }
    }
}

咦!結果一樣,那【while】的用法又是什麼?其實【while】與【for】一樣需要一個【變數】,【判斷式】以及變數的【改變規則】,運作的方式也相同,都是先檢查【判斷式】,如果【判斷式】【成立】,執行大括弧的程式碼,然後把目前變數內容加1,接著再檢查【判斷式】如此循環。

那麼,這兩種用法的差異在哪邊?我會說,【for】使用起來比較【方便】,【while】使用起來比較【彈性】,沒有一定要用哪一個迴圈寫法,要看情況使用。

另外,迴圈的敘述除了這篇文章介紹的【for】、【while】之外,還有【do..while】、【foreach】等,而且迴圈敘述大多可以搭配【break】敘述來【中斷】迴圈或是【continue】敘述來【略過】迴圈,以後有機會會陸續在文章中出現,求知慾強的可以先到網路上找尋相關資料來看,今天就先到這,改天見。

沒有留言:

張貼留言