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~