Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
1
壹、課程說明
單元名稱 問題解決與程式設計
單元摘要
本教學單元分為五個子題
1. 問題解決與程式設計:強調演算法垂直式邏輯思考的精神,以及循序漸進
的解題流程,引導學生分析問題、設計解題步驟及說明解題策略。
2. 程式語言基礎:利用積木圖示的工具,解說變數、運算子、流程控制等程
式設計正確觀念。
3. 程式設計概念:進一步介紹物件導向、事件驅動、多執行緒、電腦繪圖及
程式除錯等概念,特別強調概念學習與日常經驗,避免過度拘泥於特定的
程式語言或開發工具。
4. 專題製作:以演算法式思考解決問題,經由專題的設計解說,讓學生充分
了解整個解題與程式開發的過程。
5. 發表與觀摩互評:最後透過分組實作、運用網路平台發表與觀摩互評,達
成實務經驗的結合。
實作上,本單元採用美國麻省理工學院(MIT)開發之 Scratch 軟體,培養
學生電腦解題與視覺化程式設計之能力。Scratch是 MIT開發的視覺化程式設
計軟體,採用堆積木式的程式寫作概念,支援多媒體素材,簡單且易學。除了
訓練思考邏輯,更可以激發無限創意。
設計者 辛文義 教師(新竹縣立湖口高級中學)
學習目標
1. 讓學生應用自己的數學知識,學習分析問題要素、推展解題策略、精進邏
輯思考。並且藉由有意思、有趣的應用問題,獲得有成就感的快樂。
2. 訓練邏輯思考、學習如何利用電腦解題。
3. 了解演算法流程控制的基本輸入、輸出、處理步驟、條件判斷、迴圈、程
式除錯等基本概念。
4. 了解視覺化、多媒體程式所運用物件導向、事件驅動、多執行緒等設計方
法。
5. 利用免費且跨平台的視覺化程式設計工具,可以充分實習與分享交流。
6. 個人創意激發與小組團隊合作,產出無限可能。
2
課綱範圍 五、電腦與問題解決
5.基礎程式設計
教學節數 七節(每節五十分鐘)
先備知識 1. 基礎英文。
2. 電腦軟體基本操作能力。
3. 多媒體概念。
教學活動
一、問題解決與程式設計(50 分鐘)
1.如何解決問題?
【學生實作】※學習單一:渡河問題
2.什麼是程式?
3.解題工具介紹
4.使用 Scratch
【學生實作】※學習單二:SCRATCH 安裝指引
【情境式聯想】認識 Scratch 介面
5.第一個程式
【學生實作】※學習單三:第一個程式
二、程式語言基礎 (50 分鐘)
1.變數
2.介紹運算子。
【學生實作】※學習單四:溫度轉換
3.流程控制
【學生實作】※學習單四:會閃躲的彈跳球
三、程式設計概念 (100 分鐘)
1.介紹事件驅動概念
【學生實作】※學習單五:跑吧!貓咪
2.介紹多執行緒概念
【學生實作】※學習單六:水族箱
3.幾何繪圖應用
【學生實作】※學習單七:萬花尺
【學生實作】※學習單八:直線方程式的幾何繪圖
4. 程式除錯
四、專題製作 (100 分鐘)
1.程式設計開發的生命週期
3
2.遊戲製作:打磚塊
【實作指引】打磚塊遊戲製作
3.分組實作
五、發表與觀摩互評 (50 分鐘)
1.網路分享
2.程式包裹
3.作品觀摩互評活動
評量方法
1. 能完成學習單所規劃的內容。
2. 能與小組成員一同完成程式設計專題。
3. 發表與互評之表現。
4. 其他:課堂觀察、口頭問答。
參考資源
1. Scratch http://scratch.mit.edu 2. Scratch programming language
http://en.wikipedia.org/wiki/Scratch_programming_language 3. Learn Scratch http://learnscratch.org/ 4. Free tool offers 'easy' coding
http://news.bbc.co.uk/1/hi/technology/6647011.stm 5. Alice http://www.alice.org 6. LEGO Mindstorms http://www.lego.com/eng/education/mindstorms/ 7. Squeak http://www.squeak.org/ 8. Scratch Programming Handbook http://www.redware.com/scratch/ 9. Greenfoot http://www.greenfoot.org/ 10. 湖中傳說 http://go38.net 11. Moodle 中文加油站 http://moodle.tw
http://scratch.mit.edu/http://en.wikipedia.org/wiki/Scratch_programming_languagehttp://learnscratch.org/http://news.bbc.co.uk/1/hi/technology/6647011.stmhttp://www.alice.org/http://www.lego.com/eng/education/mindstorms/http://www.squeak.org/http://www.redware.com/scratch/http://www.greenfoot.org/http://go38.net/http://moodle.tw/http://en.wikipedia.org/wiki/Image%3AScratch_Logo.png
4
貳、教學活動計畫
一、問題解決與程式設計(50分鐘) 教學活動 時間 說 明
1.如何解決問題? 10 分 『問題解決』是要為令人困擾的問題尋找一個解決的方法。若
以電腦為解題工具,首先我們要判斷什麼問題適合電腦解決,
然後學習解題的程序。如此,可以幫助您有系統的、科學的找
出解決之道。
1-1. 判斷什麼問題適合電腦解決à電腦的特性
1-2. 學習解題的程序。
(1)了解問題:
首先了解問題內容與剖析問題,已知的資料、狀況和條件是
什麼?要達成的目標是什麼?有哪些資源可以使用?問題
的限制範圍為何?不明確未知的是什麼?
(2)找出連結:
找出已知的資訊和目標的連結,這連結中需要解決的問題為
何?從問題的分析中,以前曾經遇過類似的問題嗎?
(3)實現計畫:包含設計解題方法、實作。
(4)測試與修正:檢驗獲得的解,如果錯誤,再繼續進行上
述步驟的修正。
【學生實作】※學習單一:渡河問題
2.什麼是程式? 5分 2-1. 程式為一系列指令程序並指揮電腦依此特定程序運作,
以產生預期的結果。簡單的說程式就是許多叫電腦做事的指令
程序。
2-2. 程式設計與電腦解題的關係
我們可以利用程式設計來命令硬體從事較複雜的計算和資料
處理,把電腦當做創意思考與解決問題的工具。其實,您所使
用的各式各樣的軟體,都是程式組成的,指揮電腦完成特定工
作。
3.解題工具介紹 10 分 介紹幾個常用於電腦解題的工具,如製作心智圖創意發現、流
程圖了解問題、試算表分析資料、程式開發應用軟體都是常用
的解題的工具。
3-1. 分析工具介紹。 (1) 心智圖工具 (推薦使用免費的 Freemind
http://freemind.sourceforge.net/wiki/ )
http://freemind.sourceforge.net/wiki/
5
(2) 流程圖工具 Dia (http://diainstaller.de/download.html)
(3) 資料分析工具 (推薦使用 OpenOffice 試算表工具 Calc)
3-2. 程式開發工具 (1) BASIC 語言 (推薦使用 FreeBASIC)
(2) C 語言 (推薦使用 Dev C++)
(3) 多媒體視覺化的程式設計 (推薦使用 Scratch)
4.使用 Scratch 10 分 4-1. Scratch 簡介。 Scratch是 MIT開發的視覺化程式設計軟體,採用積木式 的程式寫作概念,支援多媒體素材,簡單且易學。除了訓
練思考邏輯,更可以激發無限創意。"影像 imagine •程式 program •分享 share " 是 Scratch的核心價值,Scratch 網站中 ( http://scratch.mit.edu/) 有 Windows 、Mac 版 本,也可以在 Linux 作業系統中使用模擬器執行,而且 它是完全免費的。
4-2. Scratch 下載安裝。
網址 http://scratch.mit.edu/
http://dia-installer.de/download.htmlhttp://scratch.mit.edu/
6
【學生實作】※學習單二:SCRATCH 安裝指引 4-3. 認識 Scratch 介面。
【情境式聯想】您可以想像自己是一位電影導演,觀眾
看到的是舞台(1)上的演出,舞台下方是演員休息室(2),您
的演員們都是調皮搗蛋的小精靈,但是他們會遵照您各式各
樣的指令(4),完成他們的劇本(3)演出內容,可以修改每位
小精靈演員的服飾外觀與聲音(5),或是安排舞台上的位置與
大小(6),也可以加入或自創其他演員(7)。安排就緒後,點
按【綠色旗子按鈕】(8)就可啟動程式,電影開演了。而【紅
色停止按鈕】 (9)可中斷程式執行,就像是導演喊"卡"。 上
排選單(10)提供檔案新增、開啟舊檔、存檔、分享等功能。
5.第一個程式 15 分 5-1.解題構想設計:以流程圖描繪出第一個程式的構想,讓學
生看到流程圖示的實例。
5-2. 程式實作:利用 Scratch 完成這個程式,提供學生視覺 化積木程式設計的初體驗。
【學生實作】※學習單三:第一個程式
7
5-3.程式設計步驟:綜合上述,整理步驟
分析à設計à實作à測試與修正
8
二、程式語言基礎 (50分鐘) 利用 Scratch 淺顯易懂的程式區塊,解說程式語言基礎概念。
教學活動 時間 說 明 1. 變數 10 分 1-1.解說變數的意涵à記憶體,以及資料型態的概念。
1-2.變數宣告 、設定變數 、變
數值增減 、顯示與隱藏
。
2. 介紹運算子。 20 分 2-1.算術運算子。
2-2.比較運算子。
2-3.邏輯運算子。
【學生實作】※學習單四:溫度轉換 3. 流程控制 20 分 3-1. 選擇敘述。
3-2. 重複敘述
計數式重複敘述使用方法。
9
條件式重複敘述使用方法。
【教學示例】數值加總
【學生實作】※學習單四:會閃躲的彈跳球
【註】 Scratch 沒有程序(Procedures)或檔案讀寫(File I/O),而且只支援到一維陣列(List)。
10
三、程式設計概念 (100分鐘) 可以使用 Scratch 進一步介紹的進階程式設計概念。
教學活動 時間 說 明 1. 介紹事件驅動概 念
30 分 1-1.感應偵測(類似機器人),包含鍵盤、物件碰撞(例如滑鼠
游標、邊界)、滑鼠按鍵、聲音與顏色偵測。
【教學示例】 磚塊程式碼(被球撞到時)
1-2.鍵盤、滑鼠、訊息傳遞(接收)事件處理。
【教學示例】解說 Scratch 的(Trampoline)專案,利用鍵盤
控制人偶做蹦床動作。
11
【學生實作】※學習單五:跑吧!貓咪 2. 介紹多執行緒概 念
30 分 使用訊息傳遞(message passing)的多執行緒程式 (multithreaded code) 是 Scratch 的核心技術。 2-1. 說明多執行緒的概念。
Ø 為了充份運用 CPU時間,把暫時閒置的 CPU時間用
在執行應用程式的其他工作上,便是執行緒的概念。
Ø 利用執行緒可使一個應用程式在同一時期能執行多
項工作,以達到程式多工,即為多執行緒。
Ø 真正執行的時候一次只有一個執行緒在執行,其他執
行緒則等待。執行先後順序會依照優先權來判定
2-2. 以水族箱裡魚的動作為例,程式同時啟動兩個(或更多)
執行緒:
(1)不斷向前移動、碰到邊緣就反彈
(2)利用亂數,製造偶爾轉身的動作
12
2-3 訊息傳遞(message passing) :介紹訊息傳遞方法 角色物件之間或是與舞台背景之間,都可以透過訊息的傳播,
達到通訊溝通的功用。
廣播訊息
接收到訊息
【學生實作】※學習單六:水族箱 3. 幾何繪圖應用 30 分 3-1.畫筆功能介紹:包含物件筆跡,畫筆的顏色、亮度與大小,
以及蓋章。
13
3-2.萬花尺:運用物件控制、顏色、旋轉的角度、線條與迴圈
繪製千變萬化的圖案。
【學生實作】※學習單七:萬花尺
3-3. 數學函數繪圖,先介紹 Scratch 的幾何座標(註:為笛卡
兒座標系),再配合【Pen】畫筆與變數,繪製三角函數圖形。
Cos 函數圖
14
【學生實作】※學習單八:直線方程式的幾何繪圖
15
4. 程式除錯 10 分 41 介紹程式除錯的概念與方法 在程式執行時,因本身有錯誤或隱藏著的一些未被發現的
缺陷或問題,而造成的功能不正常、當機、資料遺失、中斷等
現象,稱為 bug。而 debug 即是更正錯誤(除錯)的意思。 除錯的方法有許多種,Scratch 中提供了單步執行(Single
Stepping)的方法,可以一步一步顯示程式執行的過程,讓你逐 步檢驗程式的問題。
【小百科】
早期的計算機由於體積非常龐
大,有些小蟲子可能會鑽入機器內
部,造成計算機工作失靈。史上的第
一個「Bug」是因為一隻飛蛾意外走 入一電腦而引致故障(如下圖所
示),因此用「Bug」從原意為臭蟲引 申為程式錯誤。
【圖文來源】維基百科
http://en.wikipedia.org/wiki/Software_bug
http://en.wikipedia.org/wiki/Software_bughttp://upload.wikimedia.org/wikipedia/commons/8/8a/H96566k.jpg
16
四、專題製作 (100分鐘) 教學活動 時間 說 明
1. 程式設計開發
的生命週期
5分 當我們以解決問題為目標,利用電腦程式開發軟體系統做為
解題方法,就會經歷一系列的工作,包含需求分析、系統設
計、程式開發、安裝測試、後續維護,稱為系統開發的生命
週期。分項的陳述點出各階段的重要工作。 1. 需求分析:了解使用著的需求與問題,釐清限制條
件、資源與目標。 2. 系統設計:利用設計工具與方法,建構規劃系統架
構、流程與雛型。 3. 程式開發:選擇適當的程式語言以及開發工具,撰寫、
編譯程式,並進行程式除錯工作。 4. 安裝測試:安裝開發完成的軟體,並讓使用者進行測
試。 5. 後續維護:產品的維護作業,是系統開發生命週期中
最長的階段。
2. 遊戲製作:打磚
塊
25 分 以遊戲製作為主題及小組合作方式,引導學生利用前述所學,
體悟程式開發的過程。
2-1.系統分析 (以心智圖分析說明物件屬性及各物件之間的
關係)
17
2-2.程式設計(另參 實作指引)
以【球】為例,需設計與舞台、磚塊、死亡線、板子之間的互
動方法。
(1)與舞台碰撞時,
【註】反彈時隨機亂數的反射角度,可以產生路徑的多變性。
(2) 碰觸死亡線時
(3) 撞擊板子時
18
(4)撞到磚塊時
【註】此處運用顏色碰觸偵測,有別物件碰撞偵測。
2-3.程式測試與除錯:介紹單步執行(Single Stepping)除錯法, Scratch 中提供此方法,可以一步一步顯示程式執行的過程, 指引學生逐步檢驗程式的問題。
【實作指引】打磚塊遊戲製作 (請參附件專題製作示範) 3. 分組實作 70 分 以二~三人為一組,實作一個多媒體互動的小遊戲。
【實作要求】
1. 需撰寫簡要系統分析文件。
2. 利用 Scratch 完成遊戲製作。
3. 要充分使用圖片、音樂、聲音等多媒體素材。
4. 需具備互動性(鍵盤、聲音或滑鼠)。
5. 建議加入計時、分數、關卡等難度運用。
6. 創意+趣味=成功的遊戲。
打磚塊?吃甜甜圈!
19
五、發表與觀摩互評 (50分鐘) 經由發表的活動, 達到同儕觀摩學習的目的。 由於教學現場時空的限制, 我們可以利用Scratch
網站的個人專案功能以及 Moodle 教學平台的互評功能,完成本項教學活動。
教學活動 時間 說 明 1. 網路分享 20分 經由MIT的 Scratch個人專案網站與國際交流,這是
Scratch的特色,目前網站上已經約有 200,000 作品分享,而且 都可以下載原始碼,有利交流學習。 11.申請網路帳號,並設定專案。(http://scratch.mit.edu/signup)
12.上傳作品:請同學執行 Scratch 的【分享!】功能,將作品 上傳至 Scratch 網站。
2. 程式包裹 15分 Scratch 無法產生執行檔,但是可以透過 JAVAApplet 來執行 程式,透過這樣的方式將成果展示於網際網路或電腦上。
20
21. 何謂 JAVA Applet? Ø Applet 是一種在 Web環境下,執行於客戶端的 Java
程式組件。
22. 製作展示的程式包裹。
l 準備 Scratch 的原始檔 (例如 2Pong.sb) l 下載 Scratch 的 JAR 檔 (http://scratch.mit.edu/static/misc/
ScratchApplet.jar)。 l 製作 HTML 網頁檔(例如 Show.html),內容如下。
21
3.作品觀摩互評活 動
15分 利用Moodle 數位教學平台,由學生將作品嵌入張貼於討 論區,並進行互評活動。 31.張貼作品:Moodle平台訂定互評量尺及建立互評討論區, 學生將 Scratch專案嵌入語法貼上,並繳交原始程式為附件。
32.互評:學生彼此互相觀摩,並給予評比及回饋。
22
學習單一:渡河問題
渡河問題
一位農夫帶一匹狼、一隻羊及一個高麗菜要渡河,而小船一次只能載一人和狼(或羊或
高麗菜)。假如農夫先帶高麗菜上船,則狼會吃掉羊;如果農夫先帶狼上船,則羊會吃掉高麗
菜,只有農夫在場時,才不會發生上述情形,問如何渡河?
圖片來源:Pastor Project in Scratch
(1) 請您找出已知的資料有哪些?限制條件是什麼?解題目標是什麼?
(2) 請用圖示或文字說明渡河方法?
(3) 使用 Scratch 開啟 Pastor 專案,完成渡河。
(4) 研究一下 Pastor 專案的程式內容。
23
學習單二:Scratch 安裝指引
Scratch 安裝指引
下載的網址 http://scratch.mit.edu/ (http://scratch.mit.edu/files/ScratchInstaller.exe)
Scratch 網站
選擇適當作業系統版本的 Scratch 下載
安裝 Scratch
安裝完成後,在桌面會有 圖示或是選單中有 Scratch 軟體捷 徑,點按後即可啟動 Scratch。
http://scratch.mit.edu/
24
學習單三:第一個程式
第一個程式
【步驟一】啟動 Scratch,點按上排選單中的【New】按鈕,開始一個新的專案。
【步驟二】點按控制【Control】類指令按鈕
【步驟三】將 拖曳至
劇本區
25
小小解說
代表的意思是: 當【綠色旗】按鈕 被點按時,進
行下方指令。
【步驟四】點按外觀【Looks】類指令按鈕
【步驟五】將 拖曳至劇本區,接在 下方,像是組合積
木一般。
小小解說 : 代表的意思是:讓精靈說話,內容【Hello!】可以點選並修改。
【步驟六】點按右上角【綠色旗】按鈕 ,執行程式。在舞台上,就會在【貓】角
色上出現 Hello!的對話框。
26
27
學習單四:變數、運算子與流程控制
一、 【變數與算術運算子的運用】完成攝氏溫度轉換成華氏溫度的程式(Tip: 執行時變數大小 可以調整)。
二、【會閃躲的彈跳球】繪製一顆球,並完成程式碼,讓這顆球在舞台中不斷移動,而且遇到
邊緣要反彈。此外,遇到滑鼠游標時,要反彈或閃躲。
參考
程式 執行結果
28
學習單五:跑吧!貓咪
跑吧!貓咪
構想設計:貓咪跑步,一直抵達終點紅線時才停下,並發出聲音與訊息。
畫面設計
同時,我們也將整個構想用流程圖來分析與表現。
流程圖
29
程式實作:利用 Scratch 完成這個程式
【步驟一】啟動 Scratch,點按上排選單中的【New】按鈕,開始一個新的專案。
【步驟二】調整【貓精靈】的位置
【步驟三】點按 新增精靈,繪製一條紅色的線
【步驟四】調整紅線的位置。這時候,您的演員休息室中已經有兩位精靈,分別是(Sprite1)
貓與(Sprite2)紅線。
30
【步驟五】點選(Sprite1)貓,來加入控制的指令。
加入的指令分別是
31
(1) 當按綠旗啟動程式時。
(2) 移動 5 步,可以自行調整步數。
(3) 下一套服裝,每個精靈可以繪製多個外觀
或服飾,會有動畫效果。
(4) 播放聲音,也可以錄製自己的聲音喔。
(5) 對話框訊息,內容可以自訂。
(6) 偵測是否碰觸到(Sprite2)。
(7) 選擇結構,如果(if)條件成立就(then)【】否
則(else)就【】。
小小解說: Scratch 的指令利用顏色分類,分別是動作(Motion)、外觀 (Looks)、聲音(Sound)、筆 (Pen)、控制(Control)、感測 (Sensing)、數值邏輯(Numbers)、變數(Variables) 八大類。 您可以利用顏色來識別選用。
【步驟六】參考流程設計,調整劇本中的指令。
【步驟七】執行程式看看,您會發現精靈只移動一次就停下來,除非再按一次綠旗啟動按鈕。
32
【步驟八】改用有條件的迴圈 ,如右圖
小小解說:
這些指令建構了演出的劇本(程式),若以文字敘述,可以這麼說明:『重覆執行【跑 5
步、換衣服】直到碰觸 Sprite2(紅線)後不再重覆,然後發出喵喵(meow)聲和說(I Win!)』
【步驟九】再次執行程式看看是否達成目標?如果沒有,當個抓蟲(Debug)大師,檢查看看,
找出錯誤的地方。
【步驟十】完成了,點選上排【Save】按鈕將這個程式儲存起來。
33
34
學習單六:水族箱
參考 Scratch 水族箱(Aquarium)專案。 1.增加一種水中生物,並設計出它的動作與行為。 2.隨著時間的改變,切換為夜間背景(可利用變更亮度的方法)。
3.當夜間背景時,發出【回家】訊息,各生物收到訊息後皆隱藏起來。 4.當日間背景時,發出【出門】訊息,各生物收到訊息後皆顯示出來。
35
學習單七:萬花尺
1. 利用巢狀迴圈繪製美麗的圓圈線條。
2. 修改移動的距離、旋轉的角度、顏色、線條粗細等,變化出不同的圖案。
3. 將不同形狀的圖案(方形、橢圓、線條等), 利用蓋章(仿製)與顏色特效,製作特別的花
樣。
36
學習單八:直線方程式的幾何繪圖
繪製直線方程式 Y=AX+B 圖形,其中 A值與 B值設為變數,可任意變動數值。 Ø 完成圖
Ø 參考程式
37
專題製作示範:
打磚塊遊戲
一、系統分析
一、系統設計:畫面構成
38
二、程式邏輯分析:
球
程式碼 解說
39
40
磚塊(兩種不同磚塊)
程式碼 解說