2014年9月28日 星期日

函數指標陣列 (Array of Function Pointers)

http://4rdp.blogspot.com/2014/09/array-of-function-pointers.html?m=0

函數指標陣列,這是一種 C/C++ 程式語言的高階設計技巧,希望能有較高的執行效能。
我以 Arduino 當作測試平台,比較兩種程式設計技巧,發現與我的認知有些差異。

先看傳統設計方式,用 switch case 執行不同功能:

//
// Author: Bridan
//         http://4rdp.blogspot.com
// Date:   2014/09/27
//
// Brief:  Test switch case
//

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  TCCR1A = 0x00;                // Normal mode, just as a Timer
  TCCR1B &= ~_BV(CS12);         // no prescaling
  TCCR1B &= ~_BV(CS11);      
  TCCR1B |= _BV(CS10);   
}

void loop() {
  byte i;

  TCNT1 = 0;     // reset timer
  for (i=0 ; i<3 ; i++) {
    switch (i) {
      case 0:
        Serial.println("CASE 0");
        break;
      case 1:
        Serial.println("CASE 1");
        break;
      case 2:
        Serial.println("CASE 2");
        break;
    }
  }
  Serial.println(TCNT1);
}
switch case 3 個時,編譯 2410 bytes,執行 6092 ~ 6100 timer clock
switch case 4 個時,編譯 2430 bytes,執行 8136 ~ 8146 timer clock
switch case 5 個時,編譯 2458 bytes,執行 10185 ~ 10195 timer clock

將上面程式修改成函數指標陣列,以查表方式直接跳到執行的程式:

2014年9月24日 星期三

訓練數學感 35 ─ 尋找偽幣

http://4rdp.blogspot.com/2014/09/35.html?m=0

有60個外型一樣的硬幣及一個沒有砝碼的天平,現在知道只有一個偽幣和其它的重量不同,問怎樣稱才能最少次數內就找到那個重量不同的偽硬。(注意此題並未說明那個硬幣的重量是輕是重,所以需要仔細考慮)

難度

2014年9月21日 星期日

教養孩子,你只需要一捲膠帶!(Duct Tape Parenting)

http://4rdp.blogspot.com/2014/09/duct-tape-parenting.html?m=0

教養孩子,你只需要一捲膠帶!(Duct Tape Parenting)沐風文化出版,薇琪‧霍佛 (Vicki Hoefle) 著,簡秀如 譯,ISBN 9789868885592。

適合家中有 0 到 18 歲孩子的家長使用。
教養的關鍵,在於父母的觀念,而非方法。

許多父母都把孩子當成寶,含辛茹苦、做牛做馬將他們扶養長大,結果卻逐漸把孩子推向媽寶深淵,最後變成靠爸族和啃老族。問題出在哪兒?

問題在於:你太過關注孩子的一舉一動;你運用父母的權威強迫孩子聽話;你像個傭人服侍孩子的生活;你堅持必須嚴加管教才不會丟人現眼‧‧‧‧‧‧
問題也在於:你會經常根據自己的心情和感受壓力的程度,根據外在的力量與反覆不定的修正方式,做出許多「暫時性」的教養決定‧‧‧‧‧‧

深受全美父母歡迎的教養專家薇琪,提出一種簡單又神奇的「膠帶教養術」:隨時準備好一捲膠帶。想要碎碎念下指導棋的時候,貼住你的嘴巴;想要做牛做馬服侍孩子的時候,綑住你的身體;想要給無理取鬧、上演八點檔鬧劇的孩子一巴掌時,貼住你的眼睛和耳朵。

膠帶教養術是一種放手的教養方法,重點在於

2014年9月17日 星期三

訓練數學感 34 ─ 破解密碼

http://4rdp.blogspot.com/2014/09/34.html?m=0

已知下列三個數字

3256814979
8746205319
3685172095
104283965X

請問第四個數字末位X應該是多少?

2014年9月14日 星期日

數學女孩 ─ 費馬最後定理 (Fermat's Last Theorem)

http://4rdp.blogspot.com/2014/09/fermats-last-theorem.html?m=0

更多有關 數學女孩 的事情數學女孩 ─ 費馬最後定理世茂出版集團,結城 浩著,洪萬生審訂,鍾霓譯,中文版2011年6月初版第一刷。

費馬最後定理
xn + yn = zn ,當 n > 2 時不會有自然數解

臺灣師範大學數學系退休教授 洪萬生推薦序中表示,據說美國出版商都認為科普書籍只要放進一個數學公式,就會減少五千本的銷售量,因此,他們有關數學知識的鋪陳,當然都盡可能避重就輕,略過數學論證或一般認知的面向。不過此書內文數學式超多,但在日本發售情形大相逕庭,到2010年3月5日止,已經發行日文版第七刷,這可能和懷爾斯證明費馬最後定理需引用谷山‧志村猜想 (與弗維曲線有關),而這定理為日本人谷山豐、志村五郎所發現有關。


1994年懷爾斯的證明概略為:

2014年9月10日 星期三

訓練數學感 33 ─ 求解三個正方形面積和

http://4rdp.blogspot.com/2014/09/33.html?m=0

這題有趣的小四數學題,是網友行天下提供,我拿它測試我的小朋友 (小六),他竟然要花 30 分鐘才解出來,當然包含邊看電視邊想的時間。^_^!!

求三個正方形的面積和?

2014年9月7日 星期日

電動機車搞什麼?

http://4rdp.blogspot.com/2014/09/blog-post.html?m=0

城市動力免掛牌 CuMi
今年初住家附近新設許多電動機車電池交換站 (BES,Battery Exchange Station),讓我興起老舊機車汰換的念頭。

首先,我上網查有那些電動機車商品,先鎖定三陽光陽中華汽車山葉等大廠,然後看住家附近有無經銷店,去拜訪看車。

離我家最近的山葉機車是有賣,但是車很小台馬力又小,適合一人騎,因此不考慮。其它三陽與光陽機車在家附近也有一堆店,不過都是一般機車行。還有比較誇張的,某公司網站聲稱某店是它的經銷店,實際去問老闆竟然說沒有賣。因此得到初步結論:一般的機車行是不賣電動車的,要去電動車專賣店

所以我改去一間離家兩公里遠的綠大電動車專賣店,詢問老闆才更清楚電動車交換電池是怎麼回事。它是環保署的政策,因為現在大容量的電池蠻貴的,並且各個廠家規格也不統一,在都會地區多數人住在高樓大廈,沒有方便停車充電的地方,如果電池有統一的規格,並且還有方便充電的地方,那麼將更多人會使用電動車而捨棄較髒汙的汽油機車。

雖然有這麼好的政策,但是實際執行結果,與大眾預期差別太大。電池交換站已經設置一年了,適用的機車還沒出來 !! 原來得標的城市動力電池與其它廠牌機車所用的規格是不同的,大家無法交換使用,而城市動力的機車又被工業局卡關出不來,造成充電站設備閒置已一年,成為街頭裝飾藝術,詳見中時電子報 2013 9月報導

另外,現行電動機車規格大致區分兩類,一種是馬達約 800 W 的電動腳踏車,時速 30 km 免掛牌,每輛約 24000 元。其它則馬力約 2000 W 的電動機車,時速可達 50 km 以上需掛車牌,每輛約 58000 元,交換電池的車子,含 10000 元電池充電費。還有買電動車,政府單位也有補助,詳見電動機車產業網

聽完這些,我的考慮是不買非交換電池的機車

2014年9月3日 星期三

訓練數學感 32 ─ 面積怎麼變大了? (Banach-Tarski paradox)

http://4rdp.blogspot.com/2014/09/32-banach-tarski-paradox.html?m=0

這是有名的數學悖論題目,原來 8 x 8 正方面積切成四份後重新組合排列,竟變成 5 x 13 的矩形面積!聰明的讀者應該可以看出問題在哪裡。

下面是這題目的英文原文: