模組化程式設計與問題解決實作


分而治之(各個擊破)演算法

模組化的核心思想-分而治之(Divide and Conquer)演算法

將一個大問題拆解成若干個小問題之後,透過逐一解決這些小問題,來解決整個大問題。

分而治之演算法與問題解決

問題1:排序

問題2:假設你是農場主人.有一小塊土地.你要將這塊土地均分為正方形.且分出的正方形要盡可能大.你如何解決這個問題?

以下解決問題的方法均不符合問題的要求

思考方向(提出的策略方法)

1.確定基本情況.而且必須採用最單純的基本情況

最簡單的情況是一個邊(側)的長度是另一個邊(側)的倍數

2.分割或縮減問題.直到將問題轉變成基本情況

 

 

3.解決問題的結果

圖片引用:Animations from Grokking Algorithms 算法圖解

動畫圖解

資料來源:Animations from Grokking Algorithms

原始影片https://goo.gl/NM3eku


實作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.點自己班的連結.輸入各班密碼

0714

0715

0716

0717

0718

運算思維大挑戰

遊戲來源:https://mtf.sjps.ntpc.edu.tw/friber108/