小貓和小明一起玩游戲,小明對小貓說:“小貓你能根據(jù)我的指令在舞臺上行走嗎?”小貓說:“好啊,開始吧?!毙∶髡f:“走一個正三角形,走一個正方形,走一個正五邊形……”“哎呀,正五邊形我可不會走?!毙∝堈f:“你教教我吧?!?/p>
編程是可以解決實際問題的,現(xiàn)在我們就用“分析問題一抽象建模一算法設計一編程執(zhí)行”的步驟來解決怎樣走出符合要求的形狀這個實際的問題吧。
根據(jù)問題場景,界定需要用Scratch解決的問題是:從鍵盤給出“邊數(shù)”賦值,根據(jù)邊數(shù)畫出對應的正多邊形。
分析角色:“小貓”,“要畫出正幾邊形?”,需要輸入框。如圖1。
抽象是軟件開發(fā)的基礎,就是找到事物的重要特征,過濾或忽略非本質的細節(jié)。比如地圖就是地形的抽象。根據(jù)抽象到的條件構造一個與之相似的問題,這個新問題稱之為模型。相同的事物可以有不同的模型,解決問題也會因此有差異。抽象建模是實用但又非常高深的學問,我們這里有個簡單的概念就可以了。
這里我們抽象出畫正三角形的方法,發(fā)現(xiàn)主要特征有:邊數(shù)、內角和外角。如圖2。這就是抽象建模過程。通過表格繼續(xù)總結更多正多邊形的規(guī)律:正多邊形內角公式(n-2)×180°/n,正多邊形外角為360°/n。
算法是解決問題的方法。根據(jù)剛才的總結,在確定邊數(shù)n的情況下,圖形的內角和的公式為(n-2)×180°,正多邊形外角和恒定為360°。我們的抽象模型中要素除了邊數(shù)n以外,選擇內角或外角都是可以的,但是經過分析選擇外角要素用于計算更簡單。
下面用流程圖描述算法。如圖3。
首先根據(jù)功能需求自定義“賦值”和“繪畫”積木。通過模塊區(qū)分可以分別執(zhí)行需要的功能,便于調試和升級。比如1.0版只詢問邊數(shù),根據(jù)邊數(shù)畫出固定邊長的正多邊形,在調試中發(fā)現(xiàn)邊數(shù)過多時會畫出舞臺邊緣。于是2.0版就新增變量“邊長”,并相應升級賦值和繪畫積木。在3.0版中還可以判斷輸入的數(shù)值,避免出現(xiàn)小數(shù)、負數(shù)的輸入導致繪圖錯誤。
賦值部分的編程,通過詢問和回答為變量“邊數(shù)”和“邊長”賦值。詢問時顯示,繪圖時小貓隱藏。如圖4。
繪畫部分的編程,在自制積木中制作新的積木并添加邊數(shù)和邊長兩個輸入項。重復執(zhí)行邊數(shù)次,每次移動邊長后左轉360°÷邊數(shù)。如圖5。
整體編程就非常簡單了,擦除上一次的結果,開始新的一次賦值和繪畫就可以了。如圖6。
雖然整個實例非常簡單,一句話就是正多邊形外角和為360°,但是編程解題的思路“分析問題一抽象建模一算法設計一編程執(zhí)行”都體現(xiàn)在這里面了哦。同時我們還復習了控制中的重復執(zhí)行、偵測模塊的詢問和回答、數(shù)據(jù)模塊的建立變量。