2010年1月30日 星期六

錙銖必較

在學校好像很少被要求程式應該怎麼寫


程式怎麼寫才會比較精簡


根據上一篇的學習


我把我寫的程式寄給了面試官


沒想到得到了更多的回應


面試官除了指出我的問題點以外


還要我試著比較二者的差異性


前者是我精簡後的結果


後者是面試官給我的參考答案


為了方便比較,我這裡使用了macro的方式,方便比較二者的差異性


#define test_1
//***************************************************************//
//
// 利用陣列與指標的方式
//
//***************************************************************//

#if defined test_1


 int posi; 
 int str_test(char *ptr1,char c);


 int main(void){


  char test_a[]="Rock Solid, Heart Touching.";
  posi=str_test(test_a,'o');


     return 0;
 }
 
 int str_test(char *ptr1,char c){
  int i=0;
  while(ptr1[i] != 0x00){
   if (ptr1[i]==c){return i;}
   i++;
  }
  return -1;
 }


//***************************************************************//
//
// 比較str_test的執行效率,要60個指令時間
//
//***************************************************************//



//***************************************************************//
//
// 比較這裡的code size 要261
//
//***************************************************************//



//***************************************************************//
//
// 利用純指標的方式
//
//***************************************************************//

#elif defined test_2


 int posi; 
 int find_char( char* str, char target);   // 實作這個函式
 
 int main(void){
     char* str = "Rock Solid, Heart Touching.";
  posi=find_char( str, 'o');


     return 0;
 }
 
 int find_char(char* str, char target){
     int result = 0;
     while ( *str != '\0'){
         if ( *str == target){
             return result;
         }
         result++;
         str++;
     }
     return -1;
 }


//***************************************************************//
//
// 比較find_char的執行效率,只要55個指令時間,快了5個指令時間
//
//***************************************************************//



//***************************************************************//
//
// 比較這裡的code size 只要255,少了6個指令空間
//
//***************************************************************//



嗯,看起來程式技術不只關系了code size,也關系著執行速度


愈來愈期待我的面試結果了


學弟說我遇到的面試官是一個會移動的compiler


假如可以錄取的話,應該可以在裡面學到更多才是


2010年1月28日 星期四

副程式如何使用陣列

這星期二1/26有了第一次研發替代役的機會


本來該公司的職務是應徵BIOS


我本來對BIOS沒有很感興趣


不過前一天和黃老師聊天的結果他和我說:「如果你抱著沒有要上的心情去的話,那麼你把錢給我就好了。」


一開始我也不是聽得很懂,後來追問的結果就是:與其擺爛,到不如表現好一點,到最後再決定要不要去那家公司上班,不然你浪費的是自己的時間,也浪費別人的時間。真的很感謝黃老師在前一天的開導。


為了了解BIOS是什麼,黃老師就幫忙找資料,也幫忙惡補,因為我在前一天晚上8:30才被通知要面試,所以準備的時間有限,BIOS- Basic Input Output System,嗯,了解一個單字,再來就是學習BIOS的相關語言,黃老師幫忙我惡補SPIM 的組語,終於看懂簡單的加減法的用法。


雖然在面試的時候才發現這職務和BIOS沒有關系,鬆了一口氣,不過被考了一個我很弱的指標,果然不會寫,不過主管似乎人也滿好的,讓我用我習慣的方式寫,不過也沒關系,至少指標似乎很重要,那麼就來複習一下吧。


 


面試的題目:利用副程式丟一串字串,再丟一個字元,回傳這個字元在這個字串所在的位置。


int str_test(unsigned char *ptr1,unsigned char c);
int posi;


unsigned char test_a[10]={'a','b','c','d','e','f','\0'};
unsigned char test_b[10]={'i','3','4','c','1','d','\0'};
unsigned char test_c[10]={'i','c','4','c','1','d','\0'};


int main(void){


 posi=str_test(test_a,'c');
 posi=str_test(test_b,'c');      
 posi=str_test(test_c,'c'); 
 
 while(1);
}


int str_test(unsigned char *ptr1,unsigned char c){
 char same_char=-1,i=0;
 while(ptr1[i] != 0x00){
  if (ptr1[i]==c){same_char=i;break;}
  i++;
 }
 return same_char;
}


雖然當時不會寫,不過回來後發現,利用指標的方式,程式上就可以有更多的變化了,至少解決了以前沒辦法把陣列丟進副程式的冏境,真的只要用心,是可以學到更多的東西的。


2010年1月21日 星期四

螺絲與爆炸圖


嗯,為了讓螺絲更逼真


花了很多時間在學習如何劃螺紋芽


參考http://www.youtube.com/watch?v=nBNZukW1QfU


首先先劃一個圓柱體



在此圓柱體上基準面劃一個大小相同的圓


選取剛劃的圓,特徵→曲線→螺旋曲線,選擇「高度與圈數」,設定方向、高度與圈數。


然後選擇前基準面


在前基準面上劃一個多邊形,選擇「外接圓」、「三角形」


特徵→掃出除料,選擇剛劃的三角形和螺紋曲線。


確定後就可以看出螺紋芽了


至於實際的螺絲要怎麼劃,這個可能就要參考專業的工具書了


這是我劃出來的螺絲



組裝五代電腦鼠的輪框總成



將輪框總成爆炸後可以更清楚的知道如何設計輪框




昨天http://tw.myblog.yahoo.com/sn903209ss/article?mid=1706&prev=200&next=1680就是在說這件事,嗯,早上起來看到這張圖的感覺算還不錯,心情有好一點了,多花一點時間劃出來的圖果然就是比較漂亮也比較容易理解。


那麼我的收獲就是我除了圓和方以外,我可以劃螺紋了。


或許我也應該去借一本solidworks的工具書回來練習一般。


堅持的代價

嗯~


最近真的很充實啊- -


不知道有在看我的blog的人的感想是什麼


最近的事真的是磨練耐心和脾氣的「好物」


到底是什麼「好物」呢?


嗯~


1、教學弟製作一台電腦鼠---其實電腦鼠真的是需要花時間的,如果是新手從無到有,沒花個一年我覺得沒有辦法,更別說沒人指導了。


2、論文--講到這個就要怪自己的作文為何如此不堪回首,難怪國中開始就覺得作文是一種折磨,更別說論文裡面該注意且瑣碎的事非常多。


3、stm32-- 一個對自己來說是一個全新的微控制器,因為硬體功能強大,加上自學的份上,極度困難!不過看在它好像真的很威的份上,還是找時間玩一下好了。


4、vb-- 本來是想好好重頭學習的,不過不知道為什麼,學校的電腦竟然灌了會造成部分程式有問題,所以只好等論文寫好再來研究吧!


5、matlab GUI -- 和VB還有BCB的寫法完全不一樣,嗯,我們還是玩入門就好,進階的還是先擺一旁吧!


嗯~


以上和這篇文章的標題完全無關


那麼我到底在堅持什麼


今天為了讓solidworks劃得螺絲可以更像螺絲


花了5個小時在研究螺紋芽


好不容易終於劃完了


結果劃完後的圖竟然看不出有螺紋芽的感覺


5個小時就過去了-


ㄜ~


所謂隔行如隔山


真想要有一個專家可以坐在我旁邊隨時幫我解答


好了~很晚了


我要休息了


或許我睡覺起來會知道我在堅持什麼!!!


2010年1月9日 星期六

工具學習

老大最近常說一句話:「這可能是書讀太少了!」


剛聽到的感覺好像也沒有什麼


覺得這句話好像也沒有什麼問題


最近心血來潮


去圖書館搬了幾本工具書


哇賽~


裡面的內容確實讓我嚇了一跳


原來我常用的工具有無限的功能可以使用


而我


只有用到那個工具的10%


連很有自信的word 和 excel


原來還有一堆好用的工具我不會使用


開了眼界


還順手借了一本matlab程式介面開發


哇賽


不得了了


果然我是井底之蛙


這只是工具書的現象


更別說理論的書了


說到這個可能就頭痛了


哈


沒關系


再給我一陣子摸索一下


我再來展現我學了什麼


不過我已經可以在excel和matlab上做簡單的動畫了


2010年1月6日 星期三

VBA

VBA是什麼?


就是visual basic of application


在excel加入vba


讓excel更方便好用


以前有學過vb


所以應該還滿好學的


上次去日本


看到高手在用


就來學一下了


看學弟玩了一陣子


似乎滿有趣的


今天看書的第一天


從光碟把資料抓出來


發現批次檔


心血來朝


花了一整天在學批次檔的指令


不錯


科技始終來致於人性


現在我也會寫簡單的病毒程式了喔


呵呵~~


2010年1月5日 星期二

初稿寫完了

這陣子我好像消失了


躲在實驗室裡


安安靜靜的寫著自己的論文


因為是論文的關系


很多小細節就變得很重要了


以前習慣做出來就好


寫論文就不是這樣了


要寫清楚


也因為這樣


好像自己對於事情的洞悉力有變強的感覺


不過在寫論文的過程中


真的學到了很多


還去借了WORD的書回來看= =


原來WORD有這麼多好用的功能


我都不知道


不過還是把初稿寫好了


太好了


終於可以寫程式了


不過


這次我要寫的是視窗程式


呵呵


換換跑道~


GO~


2010年1月1日 星期五

再見了2009

好快


一年又過了


告別了2009


迎接2010


那麼2009年到底做了什麼


翻翻自己的日曆


今年還真是特別忙碌的一年


比賽,比賽,還是比賽


電腦鼠,電腦鼠,還是電腦鼠


哈哈


上面有歡樂有難過有痛苦


就讓難過和痛苦隨著2009年一起隨著時間而流逝吧


留下歡樂隨伴著我


 


今年和學弟們去101


滿滿的人



走到了101腳下


繞了101


今天風很大


要找順風處


終於找到了順風處


可是人很多


好多人


好位置都被佔滿了。


最後


只看到被樹擋到的煙火


= =|||


既然來了101


那就去聽演唱會吧


哇


王力宏


好久沒看他在台灣跨年了


最後的1個小時都是他的


開心


2010


在王力宏的歌聲


開啟了序幕


最後跑到師大夜市吃東西


到了零晨四點才到家


起來已經12點了


整個人昏沉沉的- -


算了


第一天就放假了


happy~