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