畢業前要寫個程式出來!
2010年5月7日 星期五
恩哈
這兩週一直在寫一個程式
寫得頭昏眼花腦脹脹的
為什麼要寫程式勒
我只是想要證明在我畢業之時我還有獨立寫出有用的程式來
就算大學再怎麼鬼混,起碼還有一點寫程式能力
而題目就是 a^(-1) mod n
若只是單純求餘數的話,程式碼只要
a = a % n;
cout << a;
但是很不幸的今天題目是要解 a 的反元素的餘數
所以難度上升很多
但也還在我能寫出來的範圍之內
基本上在運算過程中
有很多都是數學公式
而只要是「公式」要用程式寫出來就不會很難
因為公式是固定的,不會有變化才叫做公式
目前我最大的難關就在於不是公式的地方要怎麼用程式碼去執行運算才能使程式解題的速度快
不知道這麼說會不會繞舌耶
簡單說
bool 公式;
if (公式)
cout << "無須擔心怎麼寫,因為公式本身就有邏輯與條件存在" << endl;
else {
cout << "怎麼寫才能使程式跑得快" << endl;
cout << "怎麼寫才不會有例外的情形" << endl;
cout << "etc." << endl;
}
例如說
int a, i, n;
cout << "a^i mod n" << endl;
cout << "input a, i, n :" << endl;
cin >> a; //a = 9
cin >> i; //i = 30
cin >> n; //n = 26
問題就來了阿
9 的 30 次方這麼大的數字不可能一次就能算出來的
一定要將 30 次方拆成多組來多次運算才行
可是拆太多組程式會因為跑太次而變慢
但是拆不夠細又會使 int 溢位
所以要怎麼拆才能兩樣都兼顧呢?
如果是人來解的話就不會有這個問題
因為人的暫存器可以無限擴張
但是今天我要用程式來運算阿!
像這類問題真的很困擾人
嘛
相信我一定能解決這問題的
不然程式就沒有看見太陽的那一天了
嘛
前文有說到想要證明畢業之時還有一點寫程式的能力
老師說︰「出去外面應徵工作不要輕易說自己會寫程式」
我還蠻認同這句話的
即使是寫程式,也有分很多個領域
在這個程式寫完之後,我想學習 Java
用 Java 寫出個視窗來執行這個程式
嘛,不然用 C++ 也行
anyway, 就是這個程式寫完之後要寫個視窗來包裝就對了
我從來沒寫過視窗程式,所以這將會是一個挑戰
人生就是不斷面臨挑戰與不斷地撞牆
嘛
好像不知不覺離題了
趕緊回來 (跳一下)
最怕就是剛說出自己會寫程式的時候,對方主管就搬出電腦來現場要求寫個程式
我會寫程式,但不怎麼厲害就是了
我很有自知之明,所以我絕不會去誇大炫耀這方面
而且有另外一個老師如是說︰「程式只是一個工具,腦袋裡有多少東西才是重點」
我也很認同這句話
就像是微積分,如果沒有遇到問題時,微積分這項工具根本用不上
但是遇到問題時,解不解的出來就看微積分這項工具磨得是否鋒利了
同理
程式寫得好不好單純看的是工程師的功力
但是只會寫程式而腦子裡卻沒有其他東西是絕對寫不出好的程式
例如目前我現在正在做的 a^(-1) mod n 這項程式
如果對於數學不好的人可能會很傷腦筋
再說有很多專業方面的東西可以被寫成程式
所以重點在於專業知識夠不夠,程式只是個工具
嘛
那我的專業在哪裡…
老實說我還真不知道耶…
雖然一年級到三年級都拼命在修通訊方面的課
但是感覺沒有學得很好
有點糟糕的感覺
我並沒有亂修課阿阿阿阿~
今日就這樣很爛的結尾吧
3 意見:
if(知道程式要對齊)
printf("你會寫程式");
else
print("還要努力練習阿");
if (知道程式要對齊)
printf("Good Job");
else
while (範例程式寫100遍);
這樣會不會太慘了?
自從專題以來,又學會寫註解也是很重要的事情
不然自己寫得程式最後連自己都看不懂 Orz
if (知道程式要對齊)
printf("Well Done");
else
while (範例程式寫100遍);
這樣會不會太狠了點?
話說經歷了專題的洗禮,我學會了註解的重要性
要是不加上註解,隔不了多久為什麼要這樣寫連自己都忘了
張貼留言