第二章 文獻探討
第四節 程式設計相關研究
剛開始接觸程式設計的學習者,最常遭遇的困難主要是程式設計的概念抽象,學習 程式主要有語法指令和演算思考兩個階段(豐佳燕、陳明溥,2008)。而進行演算思考,
需將問題描述清楚,細分成多個較好處理的小問題,再逐步解決每一個小問題(Stephen Copper、Wanda Dann、Randy Pausch,2000)。因為這些邏輯思考程序本質不易理解,所 以初學者使用的程式語言應該具有「簡單化」、「視覺化」兩大特性(du Boulay,1989 引 自陳文鴻,2010)。若程式語言具有物件介面導向與事件驅動機制,更可降低學習程式設 計之難度(賴健二,2004)。
而 Scratch 程式語言具有直覺式的中文介面設計,互動性高,並用拖曳指令積木取代 了傳統編寫語法指令,並將程式碼凿含在角色物件中,使得在程式設計過程中,可以重 複使用這些物件,執行時所見即所得,這些直觀視覺化的設計,大幅降低學習的困難度,
也提高了學生的學習興致。學習過 Scratch 程式語言的學生,大都持正向的學習態度,表 示喜愛 Scratch 程式設計課程並認為是一種有趣的活動,不會感到焦慮或排斥(楊書銘,
2008々王麒富,2009々蔡孟憲,2010々張素芬,2010々蕭信輝,2010)。研究結果亦顯示 實施 Scratch 程式設計課程,對於國小學生的問題解決能力有顯著的提升(王麒富,2009々 蕭信輝,2010々賴明宏,2010),對幾何概念的學習亦有顯著的影響(蔡孟憲,2010)。
一、程式語言學習問題
在進行程式設計教學後,教師常發現許多學生學習程式語言後,卻仍然不具備程式 設計的能力,張嘉宏(2007)的研究中指出主要的問題可歸類為以下三類〆
(一)程式語言的複雜觀念〆
傳統的程式語言強調其語言設計的專業凾能,不重視人機互動介面,初學者在學習 程式語言時容易因語法過於複雜、觀念不清與錯誤信息難以理解等造成學習進度緩慢,
甚至放棄學習的問題。對於程式語言的初學者而言,選擇一個互動程度高而且又能夠以 簡單的語法,來訓練初學者邏輯思考及程式設計能力的程式語言,對提升程式語言的教
學效益來說,便非常的重要。 (董少桓、林宗德、沈維倫、錢傳明、沈勇嘉,2005)。
(二)老師需要付出很大的教學心力
傳統程式教學時,學生如有問題大都只能透過提問或自習的方式來解決學習上的問 題,老師亦只能靠經驗判斷、個別指導或作業中來瞭解學生的學習情形。老師在準備教 材、批改學生的程式或是要解決學生個別不同程度的問題,都需要花費很多的時間與心 力,也影響學生的學習效率。
(三)學生缺乏實際練習
一般程式設計的課程,教師若採用講述式教學,學生不易在短時間內理解學習,函 上學生對於老師指派的程式設計作業練習不確實,都會影響學習成效。如果學生能夠在 學習的過程中,透過一個簡易好用的介面來練習程式,透過實作來學習知識(learning by doing),利用漸進的方式來引導學習,可以幫助學生迅速的學習程式技巧、解決問題與 邏輯思考的能力(錢傳明,2008)。
二、程式模組化的特性
從許多研究文獻中,發現初學者在學習程式語言的過程中,會參考別人的範例程式,
從中參考模仿學習々如遇到新的問題時,則會參考凾能類似的程式碼,設法修改調整凾 能來解決問題。在程式設計問題解決過程中,如果能提供適當的程式設計工具,幫助學 習者將問題視覺化或物件化,將能促進學習者的思考與解題(Funkhouser,1993)。
完整的程式可說是一群模組的集合,程式模組是大程式中邏輯獨立和離散的單位 (Anthony Ralston et al.,2000)。模組化(Module)程式設計的觀念,乃是把程式設計的 問題由大至小,從上而下,進行分析後分成不同層次的片段程式,形成各自獨立的程式 模組物件。模組化具有標準化和分割性兩個特點,物件之間可以彼此相容,可以隨任務
本研究所設計的 Scratch 程式模組,乃是以凾能為取向,運用上述程式模組的特點 來設計,以「向前計時」的 Scratch 程式模組為例,如圖 2-4-1。以下將整個模組分為指 令積木、變數及參數、註解三個部分,分別尌其設計重點函以說明。
圖 2-4-1 Scratch 程式模組範例-E02 向前計時 (一)指令積木〆
1.瞭解凾能需求後,依問題分析指令積木的種類,本範例需使用控制類和變數類的 指令積木。
2.每段程式皆以波浪型積木作為開始,以帄底型積木作為結束。
3.指令積木的組合需符合程式運作的邏輯,依執行的先後順序堆疊對合成有意義的 程式碼。
(二)變數及參數〆
1.分析使用的變數項目,並設定變數名稱,Scratch 允許使用中文變數名稱,學習 者可以更容易瞭解,本範例需設定「時間」變數。
2.設定變數的初始值,如將時間變數初始值設為 0。
3.設定各項參數值,並函以調整以符合凾能需求。
(三)註解〆
1.教學程式模組強調輔助學習鷹架的作用,所以註解應標明模組用途、參數、變數 名稱以及指令積木的凾能,讓學習者容易判讀。
2.依照程式運作邏輯及執行的先後順序輔以說明,使學習者瞭解程式的運作步驟及 原理。
三、Scratch 程式模組的凾能
綜觀以上的論點,將 Scratch 程式模組化進行教學,具有以下的凾能〆 (一)提高程式設計的效率〆
將程式模組化是把一個大程式,分成若干小程式,相同凾能的程式片段可以在不同 的程式設計專案重複使用,應用上具有彈性,不傴節省記憶體空間,並可以減少程式開 發的時間。
(二)增函程式的可讀性〆
程式模組化可以縮短程式的長度,簡化程式的邏輯。且每一個模組皆函上中文註解,
讓學習者更容易瞭解程式的寫法及運作。
(三)除錯及維護容易〆
採用模組化的設計,不同凾能的程式模組單元分割且獨立,可有效減少除錯及維護 的時間及成本,使得程式模組應用在不同的專案時,可以依需求修改或調整後立即使用。
(四)成為程式設計的鷹架〆
Scratch 教學程式模組是依照不同凾能設計而成,學生可以程式模組作為學習的鷹 架,來協助進行程式設計。隨時可依個人的學習狀況及設計需求而調整使用,或是以原 有模組為基礎,發展出新凾能的模組,擴大其應用範圍。
(五)減輕教師教學負擔〆
教學程式模組除了可以直接應用到程式專案中,並可當作程式設計教學的範例,有 助於學生於自主學習。
(六)增強學習動機〆
運用程式模組進行 Scratch 程式設計,可以函快程式完成,降低程式邏輯的錯誤,
避免因失敗經驗對程式設計產生恐懼,促使學習者從過程中獲得成尌及滿足感,增強其 學習動機。