學習重點:
1. 變數與清單 2. 分身、模組(函式積木)的使用 3. 不同專案中角色的互通 4. 程式碼的複製
1.變數、清單
變數
一個變數由 變數名稱 & 變數值 兩個部分組成。
程式指令 A = 10 表示將 10 指派給 A ,所以 A 是變數名稱,10 是變數值。
變數依作用範圍大小,可分為: 適用於所有角色 & 僅適用當前角色 , 前者作用範圍大 ,是所有角色都可取用的變數; 後者作用範圍小 ,僅有被指派該變數的角色,才可以使用。
容易混淆的變數積木:
適用於所有角色 或 僅適用當前角色
變數...設為... 或 變數...改變...
左側的積木相當於程式指令 A = 10,它能使變數 A 的值重設為 10。
左側的積木相當於數學運算式 A(新)=A(舊)+10 ,它能使變數 A 的值重設為比現在多 10。
清單
清單是變數的集合,它以 項目編號 & 項目值 ,表示變數。
右圖的清單中,test是清單名稱,最下面長度 2 是指清單中有兩項變數,分別是 第 1 項='thing' & 第 2 項= 10 。
2.分身、模組(函式積木)
分身
當一個角色要同時出現好多個在舞台上,為了精簡和維護程式碼的需要,我們會以 分身 的方式處理。
當使用分身時,我們會將真正的角色隱藏起來,只留下分身顯示在舞台上。為了辨識每一個分身,我們會設一個 僅適用當前角色 的變數,給每一個分身作為識別碼。
分身程式的一般寫法:
改變左側的『等待秒數』或右側的『持續秒數』會如何?
兩側如何配合才會得到最佳效果?
前兩項改變秒數的實測,告訴了我們什麼?
左側的程式執行到了 建立自己的分身 積木時,會觸發右側的 事件模組 ,此時兩側的程式會同時向下執行。
左側程式的 等待秒數 ,應略大於右側程式的 持續秒數 ,程式執行結果才能正確。
4.為何變數『分身編號』要使用 僅適用當前角色 ?
請將下方積木與上題 3.的積木接在一起,左邊接左邊,右邊接右邊,最後再加一個獨立的事件模組。
執行程式,觀察結果。
模組(函式積木)
當程式大到一定程度,將嚴重地減緩程式執行效率、增加程式複雜度,進而墊高程式維護的成本,因此有了 模組化程式設計 的出現。
模組化程式設計的概念,就是將程式依功能需求,拆分成幾個區塊,每個區塊只負責單一功能的製作,彼此獨立不會重疊, 這種區塊就是模組 。
模組在 Scratch 裡被稱為 函式積木 ,是一種 自定義 的組合式積木,由 積木名稱 及 傳遞參數 兩部分組成,其中, 積木名稱是必要項 , 傳遞參數則是選項 ,可有可無。
本專案模組規劃如下:
3.不同專案中角色的互通
先開啟來源專案。
到「角色區」,在你需要的角色上點右鍵,選擇 匯出 ,可存檔在桌面上。
關閉來源專案。
開啟目的專案。
到「角色區」,點擊「選個角色」,按下 上傳 ,隨後選擇步驟 2 中存在桌面的角色檔。
上傳完畢,在角色區就會看到新增了一個角色。
4.程式碼的複製
同一個專案中的複製
拖曳你要複製的程式碼,到角色區你要貼上的角色上方。
當該角色 出現左右搖動的現象 時,放開滑鼠,即完成複製貼上的工作。
不同專案的複製
先開啟你要複製程式碼的專案,再以滑鼠點擊左側最下方的 背包 ,開啟背包。
將你要複製的程式碼,以滑鼠拖曳到背包中,關閉專案,即完成複製的工作。
開啟你要貼上程式碼的專案,再從背包中將程式碼拖曳到程式區,即完成貼上的工作。
運算思維的發想
發想一、邏輯角度:
老師會分享含有本專案所有角色的作品,你如何從不同的專案中獲取角色、循環利用?
白鍵、黑鍵非常符合分身的製作條件,你如何決定第一個白鍵和第一個黑鍵的位置?
你能找出白鍵、黑鍵的排列規律,讓程式在產生分身時,自動排放在正確位置上?
圖一顯示,黑鍵的排列有特殊例外不排的狀況,你會如何處理?
圖一:電子琴外觀
發想二、運算角度:
你從哪裡可以查到,白鍵、黑鍵的寬度和高度?
圖二中,兩個緊鄰的白鍵,它們定位點間的距離是多少?
圖二中,兩個緊鄰的黑鍵,它們定位點間的距離又是多少?
圖二:黑鍵與黑鍵、白鍵與白鍵位置關係
情境主題
請模擬一台功能正常,彈奏時琴鍵可被按下,並發出正確琴音的電子琴。
情境演示
學習重點
發想一:
圖一中,音階編號的排列有規律性嗎?能用演算法流程圖表示嗎?
把各琴鍵的分身編號,直接以琴鍵的音階編號取代,會更容易編寫程式嗎?
圖一、琴鍵與音階對照圖
發想二:
圖二的規劃表,在製作彈奏聲音的部份時,需要再增加一個轉換分身編號,成為音階編號的獨立模組嗎?
承上所述,如果你完成了這個轉換模組,你會將其結果引入哪個模組中,真正發出聲音來,W1、W2、W3 或 B1、B2、B3?
圖二、無聲電子琴模組規劃表
情境主題
請模擬一台正常功能的指針式時鐘。
情境演示
情境分析:
網路搜尋下載鐘面、時針、分針、秒針圖片。
將鐘面、時針、分針、秒針圖片修改成去背透明圖。
將鐘面、時針、分針、秒針圖片中心對準舞台中心。
撰寫時針、分針、秒針程式,將系統時間轉換為指針的轉動。
情境主題
請模擬一台正常功能的數位式時鐘。
情境演示
情境分析:
網路搜尋下載數位數字 0~9 的圖片。
將數位數字圖片修改成去背透明圖。
撰寫程式,將系統時間轉換為數位數字的跳動。