至於當初的那道 bonus 題(參閱:到底是怎麼訓練出我的邏輯思考能力的?現在回想起來,我認為是如下的過程。
第一個要完成的步驟是至少要把乘數和被乘數印出來吧!因此我先努力完成圖1。就是簡單的呼叫輸入函式以接受兩個數字,並用輸出函式把它們印成直式效果。這部分不至於太難。
接下來因為要印出乘數和被乘數的個位數字相乘的結果,所以我得把被乘數拆解成兩個數字。具體我到底怎麼做的,年代久遠已無法回想起來。也許是呼叫取餘數的函式?也許是用字串分割函式、再轉成 integer?
但重點在於實作這個步驟的過程中,我頭腦裡的思維模式,因為這就是拆解一道問題的必要程序。我「現在」已經能印出如圖1的樣子了,我「下一個階段」如圖2,它們之間的差距是什麼?我要如何做到?因此在心中會試想各種可能性,然後去書本上找有哪個「適合的工具」能幫我完成這個步驟。
這有點像圖3,小朋友在玩的、幫助建立認知能力的玩具。一個蘿蔔一個坑,我所要做的事就是找出合適形狀的「蘿蔔」來塞這個坑。有時我可能會誤解某個蘿蔔的用法,將它削去某部分、或是將兩個蘿蔔疊起來塞進去之類的奇葩方法,但重點是對於初學的我來講能解決問題即可,最佳化不是我現在該煩惱的事。
完成圖2之後,接下來就換十位數的相乘,又產生了新的「下一個階段」。就這樣一步一步下去直到完成作業。
我認為這就是我當初建立起邏輯思考的過程。不是靠大量實戰、也不是靠熟悉語法,而是將問題拆解成好幾段更小更容易的「小程式」,然後依序完成。
一直卡關的程式新手們,也許你需要的只是適當的分解問題,邏輯能力就會自然而然的培養起來了!