模組化程式設計與問題解決實作
分而治之(各個擊破)演算法
模組化的核心思想-分而治之(Divide and Conquer)演算法
將一個大問題拆解成若干個小問題之後,透過逐一解決這些小問題,來解決整個大問題。
分而治之演算法與問題解決
問題1:排序
問題2:假設你是農場主人.有一小塊土地.你要將這塊土地均分為正方形.且分出的正方形要盡可能大.你如何解決這個問題?
以下解決問題的方法均不符合問題的要求
思考方向(提出的策略方法)
1.確定基本情況.而且必須採用最單純的基本情況
最簡單的情況是一個邊(側)的長度是另一個邊(側)的倍數
2.分割或縮減問題.直到將問題轉變成基本情況
3.解決問題的結果
圖片引用:Animations from Grokking Algorithms 算法圖解
動畫圖解
資料來源:Animations from Grokking Algorithms
實作1-模組化程式設計(分而治之)-花朵
執行結果
一.問題分析及演算法:
定義4個函式
(1)單片葉子
(2)五片葉子(呼叫單片葉子)
(3)花枝(呼叫單片葉子及五片葉子)
(4)花朵(呼叫花枝)
二.程式設計實作:
1.撰寫各個函式
(1)單片葉子
(2)五片葉子
a.重複?次.呼叫單片葉子函示
b.旋轉?度
(3)花枝
a.移動?點
b.呼叫單片葉子函示
c.移動?點
d.呼叫五片葉子
e.初始化(回到坐標軸原點)
(4)花朵
a.重複?次.呼叫花枝函示
b.旋轉?度
2.撰寫主程式
a.位置初始化
b.畫筆初始化
c.呼叫花朵函示
模組化程式設計總結
三種方式彈跳 (循序、重複、函示(遞迴))
https://scratch.mit.edu/projects/225806763
說明
1.在程式設計中,我們 可以透過撰寫函式(副程式)來達到模組化的成效。例如:將畫三角形、畫正方形、畫星星等三項獨立的任務分別寫成三個不同的副程式,等到需要用到時,再由主程式去呼叫。
2.在軟體開發的實務中,經常會有多人合作撰寫程式的情形,透過模組化設計,就可以將問題拆解成獨立的小模組,然後將工作指派給不同的人完成。
3.模組化也有助於增進程式碼的可讀性。
4.在主程式可以更專注於描述任務本身,而不是完成任務的細節
5.複雜的資訊系統可能有幾百萬行程式,甚至於更多,透過有邏輯性且可重複使用的函式(function),可以降低程式撰寫的複雜度。
參考網站
https://www.kidscoding8.com/4320.html
http://info23thing.blogspot.tw/2016/05/scratch.html
作業上傳
1.點自己班的連結.輸入各班密碼
運算思維大挑戰
遊戲來源:https://mtf.sjps.ntpc.edu.tw/friber108/