C# 入門指南 - 繼續測試

軟體生命週期 (sofeware life cycle) 分成三大階段,開發 (development) ,然後使用 (use) ,然後修改 (modification) ,接下來便是使用、修改的無限循環




開發階段,自然免不了對需求的分析 (analysis) ,然後設計 (design) 、建置 (implement) ,接著進行測試 (testing) ,其實這順序沒有絕對,「設計」與「建置」可能只是先做個簡單版本,「測試」與「使用」說到底都是實際執行觀察結果,「修改」等於以之前的基礎再次「設計」與重新「建置」。


我們打算開發的 Encrypt 類別 (class) 的需求已經很清楚,也就是產生一個英文小寫字母對換的字串 (string) ,我們用 cArray 屬性 (property) 當作對這個字串的參考 (reference) ,然後以 setArray() 方法 (method) 建立這個字串。


我們現在正式來寫 Encrypt ,利用 .net 中 Random 類別可以得到隨機數物件,然後再以 Next() 方法取得指定範圍的隨機數
class Encrypt {
    string cArray;
        
    public void setArray() {
        System.Random r = new System.Random();
        int a = r.Next(1, 10);
        int b = r.Next(1, 10);
            
        int x, y, m;
        char c = 'a';
        int i;
        System.Text.StringBuilder s = new System.Text.StringBuilder();
        for (i = 0; i < 26; i++) {
            x = c;
            y = x * a + b;
            m = y % 26;
            s.Append((char) (m + 97)); 
            c++; 
        }
    
        this.cArray = s.ToString();   
    }
    
    static void Main() {
        Encrypt e = new Encrypt();
        e.setArray();
        System.Console.WriteLine("e: " + e.cArray);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:encrypt00.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2012 年 10 月 */


編譯後執行,如下



嗯,看起來有一點問題,密碼表後面重複了 bjrzhpxfnvdlt ,我們在 Main() 中加入迴圈 (loop) ,跑十六個表格出來再看看, Main() 需要修改如下
static void Main() {
    for (int i = 0; i < 16; i++) {
        Encrypt e = new Encrypt();
        e.setArray();
        System.Console.WriteLine("e" + i + ": "+ e.cArray);
        System.Threading.Thread.Sleep(1000);
     }
}


重新編譯後執行,如下過程



Sleep(1000) 是讓程式暫停一秒後才執行,這是因為 Random 依時間取得隨機亂數,因此多次執行各間隔一秒才能取得不同的密碼表。


有幾行的英文字母重複出現,這代表轉換公式有問題,我們接下來需要先修正後的數學公式


中英文術語對照
軟體生命週期sofeware life cycle
開發development
使用use
修改modification
分析analysis
設計design
建置implement
測試testing
類別class
字串string
屬性property
參考reference
方法method
迴圈loop


您可以繼續參考
軟體開發


相關目錄
回 C# 入門指南
回 C# 教材
回首頁


參考資料
http://msdn.microsoft.com/zh-tw/library/ms173109%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/x9afc042.aspx
http://msdn.microsoft.com/zh-tw/library/ms229036%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/0b0thckt.aspx

沒有留言: