開發階段,自然免不了對需求的分析 (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
沒有留言:
張貼留言