###### tags: `學期一` # 如何運用「猜數字題組」刻意練習 Outline 設計了三個題目,都是猜數字,但有不同的複雜度 每一題有各自練習的目標與側重點,希望一步一步帶你體驗如何從演算法到程式碼(如何透過演算法有效改善程式碼的運作效率) - A7:get you started|透過程式碼來打造可以具體模擬猜數字的環境 - A8:up your game|設計思考,稍微複雜的邏輯設計 - A9:挑戰實作|有能力透過程式碼來實踐複雜的邏輯 不同的學習者,不同的思維模式,可能會有不同的方式運用這些作業來幫助自己學習 對於相對欠缺抽象概念訓練的同學,在初期學習時,也許更能透過 trial & error 來釐清邏輯 因此對於演算法題組可以採用以下幾種不同的解題模式: ⬇️ 可能作圖呈現比較好 模式一:A7 -> A8 -> A9(照著順序解決問題) 模式二:A7 -> A9 -> A8(從成果看清楚思考邏輯) 時間運用的規劃:A8,A9 普遍會花蠻多時間的,記得提前啟動 + 搭配 AC 其他機制解題! main question : 何時知道自己比較適合先跳到 A9 開始寫? 最後,溫馨提醒你:進度第二週的範圍包括 「S2 從演算法到程式碼」 以及 「S3 網站設計與介面實作」,不要忘記預留足夠的時間學習! CTA:分享自己的解題過程 / 順序 ------------------------------- >**學習成果與目標** >・了解「猜數字題組」的設計用意 >・清楚知道如何根據自己的思考習慣調整解題順序 #### 以「題組」設計的演算法實作 接下來的「猜數字題組」環繞著「先求有,再求好」的理念設計,讓你有機會體驗「透過演算法優化程式」的完整過程。雖然三題都環繞著「猜數字」這個主題,不過每個題目都有各自的學習目標以及側重點 ##### 1. 初步實作,打好基礎 在[經典猜數字:熱身題](https://lighthouse.alphacamp.co/courses/39/assignments/919)當中,你會綜合使用多種基礎程式語法,讓電腦順利模擬出猜數字的情境 ##### 2. 設計流程,提升效率 接著,在[設計演算法:提升猜對數字的效率](https://lighthouse.alphacamp.co/courses/39/assignments/1206)當中,你會使用運算思維拆解目前的猜數字流程,辨識出猜數字最有效率的方法,並把這個「想法」轉變成可以具體執行的流程圖與虛擬碼 ##### 3. 挑戰實作,親手實踐 最後,在[實作程式碼:有效率地猜中數字](https://lighthouse.alphacamp.co/courses/39/assignments/921)這份作業中,你會依循著先前整理出的流程圖與虛擬碼,親手改良整個猜數字的流程,讓程式可以成功執行你的想法 這一連串的練習相當接近現實開發流程:先有可運作但還可以更好的程式,後續再透過思考與設計提升這套程式解決問題的效率 #### 同樣的題組,不同的解題模式 然而我們也觀察到:不同的學習者有著多樣的思維模式,也因此會依循不同的方法從這些作業中學習 對善於抽象思考的同學而言,照著原先題組的順序解題是自然的事情;但對於過去相對缺少「抽象概念」訓練的同學,在初期學習時,也許更適合跳脫原先的規劃,透過 trial & error 來釐清邏輯 因此對於演算法題組,你可以根據自己的狀況,採用以下幾種解題模式: * 模式一:照著順序解決問題 <div style="width:100%"><img style="max-width:1000px; width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/15430/_____2021-04-15___12.52.06.png"></div> * 模式二:從成果釐清邏輯 <div style="width:100%"><img style="max-width:1000px; width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/15431/_____2021-04-15___12.55.11.png"></div> 由於模式二並不符合真實世界優化程式的順序(用已經優化的程式確認這套程式的設計邏輯),因此同學雖然可以運用,但不要忘記建立一套外顯自己思路的方法喔! #### 如何知道自己比較適合哪種模式? <!-- 建議你搭配「停損點」進行判斷:如果在看完[設計演算法:提升猜對數字的效率](https://lighthouse.alphacamp.co/courses/39/assignments/1206)題目敘述以及所有的提示後,用力思考 30 分鐘後依舊對自己的答案沒有信心,那麼就建議你可以嘗試用模式二來完成題組 ➡️ 有種模式一比較好請先用,真的能力不行再用模式二的感覺 ➡️ 應該要用一種:模式一二都可以,你自己選 --> 如果不太確定自己比較適合哪種解題模式,以下是提供給你的判斷建議: 1. 如果你相當習慣抽象思考:過去在寫作業 [給菜鳥的臨櫃小抄](https://lighthouse.alphacamp.co/courses/39/assignments/918) 時得心應手,那麼建議你優先嘗試使用模式一來解題 2. 如果你比較習慣有即時回饋:過去在寫作業 [給菜鳥的臨櫃小抄](https://lighthouse.alphacamp.co/courses/39/assignments/918) 時對你來說有點吃力 / 不直覺,那麼建議你優先嘗試使用模式二來解題 當然,如果嘗試了其中一種方法發現不太適合(搭配[停損點](https://lighthouse.alphacamp.co/courses/38/units/7526)判斷),可以隨時再切換使用另一種模式 整個解題過程中也不要忘記善用助教與觀摩的力量,有效幫助自己學習! #### 好像都要觀摩同學作業才會寫,這樣我有真正學會嗎? 過去學長姐們在攻克演算法題組的過程中,時常會需要透過觀摩的方式來幫助自己解題,卻也因此產生了「自己是不是沒有真的學會」的自我質疑 如果你深有同感,教練想鼓勵你:「觀摩」是學習程式的過程中非常重要的技能,「觀摩」的重點不在最後有沒有寫出來,而是在於你是否有充分釐清自己卡住的點在哪裡,並透過觀摩明確地解決心中的疑問。 當然,也歡迎你隨時回到前面的單元,複習:如何[從「觀摩」中有效成長](https://lighthouse.alphacamp.co/courses/38/units/7526) #### 預留時間,準備迎戰! 根據過去經驗,A8、A9 會花費**完成 A7 兩倍以上的時間**才能寫出來,因此建議同學們根據完成 A7 所花費的時間去預留完成 A8、A9 的時間,才能更有效地運用本週時間完成進度 最後提醒你:進度第二週的範圍包括 「S2 從演算法到程式碼」 以及 「S3 網站設計與介面實作」,不要忘記預留足夠的時間學習!