第八次:圖像化程式語言-SCRATCH(5)
網碟路徑
\\10.231.114.143\04**\**
程式設計重要邏輯結構
a循序結構
b.選擇結構
c.迴圈(重複)結構
程式系統開發步驟
當我們以解決問題為目標,利用電腦程式開發軟體系統做為解題方法,就會經歷一系列的工作包含需求分析、系統設計、程式開發、安裝測試、後續維護,稱為系統開發的生命週期
規劃與設計Scratch程式
步驟1-寫出角色行為的腳本描述(自然語言)
步驟2-在舞台安排角色
步驟3-新增角色行為的積木指令
步驟4-更改積木指令的參數值
步驟5-執行Scratch專案程式
步驟6-測試及除錯Scratch專案程式
實作1-專案1-身體質量指數BMI計算程式(課本8-21頁)
一.定義問題及需求分析
二.流程圖(參考)
三.程式執行結果(參考)
四.撰寫程式積木(參考.不一定要和老師一樣)
實作步驟
(1)開啟桌面程式語言資料夾內/scratch2
(2)舞台背景下載
(3)背景加入舞台
(4)依角色腳本.應用各類積木.滿足題目的需求(可自行發想變化.不一定和老師一樣)
角色腳本1
a.設定變數(身高.體重.BMI.四捨五入BMI)-循序結構 b.變數初始化(身高.體重.BMI.四捨五入BMI設為0)-循序結構 c.與使用者互動介面(自由發揮)-循序結構 d.將使用者輸入的身高(公分)轉換為公尺(1公尺=100公分)-循序結構 e.限制身高及體重的條件判斷(身高介於0.5-2.2公尺.體重介於20-200公斤)並廣播等待。若不合條件則出現警告並停止此程式-選擇結構 |
a.設定變數
b.初始化
c.與使用者互動
d.身高公分轉換為身高米.並將值給hm變數
e.限制身高及體重的條件判斷(身高介於0.5-2.2公尺.體重介於20-200公斤)並廣播等待。若不合條件則.出現警告並停止此程式
(5)存檔及測試
將檔案存在程式語言的資料夾.檔名為BMI.sb2
認識演算法(Algorithm)
當演算法改變世界時,認識演算法就是義務 |
引自鄭國威先生
1.定義:
演算法=一組用來解決問題指令步驟,簡單來說,就是找出解答的方式,好比一個"精確的食譜" ,把解決問題的確切步驟解釋的一清二楚,演算法跟與電腦關聯,在於電腦程式需要以非常精確的指令來編寫,若想要電腦解決某個特定的問題,就需要為那個問題開發演算法。
2.特性:
(1)良好的順序
(2)沒有模倰兩可即明確性
(3)有限步驟
(4)有效率的演算
3.步驟:
(1)定義問題
(2)詳列輸入及輸出
(3)描述步驟
(4)測試演算法
4.生活中的例子:
(1)搜尋引擎(Google....)
(2)訂票系統
(3)決策評估
解決 ”怎麼由板橋到高雄的交通問題 |
a.評估指標
今天如果某人希望用最短的時間從板橋到高雄,我們所期待的就是以最少通勤時間為主,評估指標就是最短時間;如果某人想要的是最節省的方式,那評估指標就是花最少的錢。演算法中的評估指標非常重要,這指標將用來計算評估你解答的品質,用以找出最好的答案。當然,評估指標可以是綜合指標,也就是可以把兩個以上的指標放入一個評估的算式中
b.合理假設
當有了好的評估指標後,你就可以把有可能的 “怎麼由板橋到高雄台北” 方式,來套入評估指標中計算,但這其中有個非常大的問題,底下直接用舉例的方式說明。
如果說 “怎麼由板橋到高雄” 我們以最短時間來做為評估指標,我們就要開始考慮飛機、高鐵、火車、客運、開車…等交通方式來評估,大部分的朋友一定會選擇高鐵,但如果不計成本來說,高鐵不一定是最快速的,今天如果請 F1 車手開著頂級跑車由板橋載你到高雄呢?或是有直升機專程接送呢?
所以在這樣的狀況下,我們要有基本假設,把目前某人能力範圍外的選項拿掉,例如說他有懼高症,那我們就會把直升機選項拿掉;他不想花超過 2000 元,就可能把頂級跑車選項拿掉…,這樣所找到的解,才會是合理又正常的解。
但有沒有人想要便宜又快速的方式由板橋前往高雄呢?這絕對有,在這狀況下,我們又要回到評估指標那邊,把時間與花費做成一個綜合性的指標,簡單說,就是把時間與花費都加上權重來衡量。這時候你可以問那個麻煩的人說,速度與金錢對你由板橋前往高雄的重要性,如果速度佔 70% 重要,金錢佔 50% 重要,那你的評估指標就可以做成
速度* 70% 金錢 * 50%
c.選擇演算法
有了評估指標、基本假設後,接下來就要擬定演算法了,就是把有可能的選項一一放入評估指標中,看看哪個比較好就選哪一個,這就是所謂的窮舉法。
窮舉法對於小型的題目(專案)來說,是非常好用的方式,因為你不用花時間去思考其他演算法,因為使用窮舉法所花的時間都比你驗證其他演算法來的短,但對於大型題目(專案)來說,窮舉法就不是個好方法
資料來源:
5.相關書籍:(有興趣同學可自行閱讀)
6.相關新聞:
Google 的人工智慧系統AlphaGo 阿爾法狗打敗人類圍棋冠軍,在三月九日到十五 日的五戰圍棋對弈中取得首勝,為人工智慧發展寫下重要里程碑。
中國圍棋(西方稱為Go)的歷史悠久且複雜無比,南韓棋王李世是全 球最佳棋士之一,他自十二歲成為職業棋士以來,已拿下十八個世界冠軍頭銜。他表示,因為人有犯錯的風險,所以可能無法打敗AlphaGo。現年 三十三歲的他在第一場對弈登場前說:「人之所以為人,是因為他們會犯錯。」
人為錯誤不僅是他唯一的弱點。李世表示,人類棋手對弈時可揣摩對方的反應與心理,但這次看不到這些線索,讓他頗不習慣。
反觀AlphaGo 這個機器棋手則有許多優勢。它從十萬多場圍棋比賽中模仿高手的棋譜,然後和自己下棋,從錯誤中「學習」。Google 的DeepMind 團隊也設計一套程式,讓AlphaGo 可以預測每一步棋對比賽的長遠影響, 從而判斷哪步落子會必勝。
引自金門大學資工系陳教授
實作2-何謂演算法動畫影片
7.演算法的表示
(1)自然語言(一般不用)
例如:求兩個自然數的最大公因數(Greatest Common Divisor, GCD)。首先我們試著用下列文字來加以描述:
1.輸入兩個自然數。
2.作輾轉相除直到餘數為零。
3.除數即為GCD。
以上描述看來似乎正確,但是依演算法觀點,嚴格說來其中的第2點並不符合明確性,因它並未說明輾轉相除如何運算,容易造成混淆與不解。我們應該改寫為:
l.輸入兩個自然數A,B。
2.A除以B餘數為R。
3.如果R為零,則跳至第5。
4.AB(B的值給A),BR(R的值給B),跳至2。
5.B即為GCD。
(2)虛擬碼(抽象)
EX.1+2+3+…+100=?
(3)流程圖(圖解)
「一圖勝過千言萬語」,看圖會意往往能收事半功倍之效,而所謂流程圖(flow chart)就是利用各種方塊圖形、線條及箭頭等符號來表達問題的解決問題的步驟及進行的順序;是演算法的一種表示方式