• 沒有找到結果。

VB程式設計初學者除錯行為分析

N/A
N/A
Protected

Academic year: 2021

Share "VB程式設計初學者除錯行為分析"

Copied!
75
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學資訊教育研究所 碩士論文. 指導教授:吳正己 博士. VB 程式設計初學者除錯行為分析. 研究生:. 陳美文. 撰. 中華民國一百零一年七月.

(2) 摘 要 本研究目的旨在探討 VB 程式設計初學者的除錯行為及他們對於除錯的看 法。研究方法主要是以問卷調查方式瞭解學生除錯的看法,並以質性分析方式分 析個案學生除錯過程中的行為,最後輔以訪談以進一步探討前述除錯看法及行為 產生之原因。問卷調查對象為台北市某高職三年級資料處理科學生兩班共 72 人, 其中八人並進行除錯過程分析及訪談;程式設計除錯的範圍包括變數、判斷、迴 圈、及副程式等基本概念。 研究結果顯示,大部分學生認為自己的除錯技巧不足,並認為除錯技巧與 個人天分或經驗有關;而當學生無法解決程式錯誤時,會先求助同學,其次才是 老師。雖然學生指出他們會利用除錯工具來找出錯誤,但實際觀察其除錯過程發 現,他們僅能倚賴編譯環境呈現的訊息(如「錯誤清單」、「波浪狀底線標註」) 來找到程式錯誤,卻甚少使用或不知道如何使用除錯工具(如「逐步執行」 、 「設 定中斷點」) 。此外,學生表示他們不喜歡除錯,但成功除錯會讓他們有成就感並 且增加信心。針對研究結果,建議教師可以藉由教學設計增強學生除錯的成就感, 使學生能以更正向的態度面對程式錯誤,並能瞭解除錯也有其系統性的方法,非 僅依個人天賦。建議未來研究可以增加學生樣本數,以增加研究的外在效度;並 可以進一步探討學生在進階程式設計概念(如陣列、遞迴等)的學習,以期更全 面性的了解學生的除錯行為。. 關鍵詞:程式設計初學者、除錯、Visual Basic. i.

(3) Abstract The Analysis of Novices’ Debugging Behaviors in VB Programming. Mei-wen Chen. This study aims to investigate the debugging behaviors of novices in Visual Basic (VB) programming. Seventy-two students from a vocational high school in Taipei City participated in the study. The data collected for analysis were the questionnaire results answered by all students to learn their self-perceived behaviors and perceptions of debugging, the video-taped and screenshot-recorded debugging scenarios of eight case students, and the interview data of the eight students. The analysis results showed that most students considered themselves lack of debugging skills and believed these skills were kindly bound to individual’s nature and could not be learned; they did not like the challenges of debugging but enjoyed the success of resolving bugs. When encountering debugging problems, they would seek help from colleagues first rather than the teachers. Although students indicated that they used VB debugging tools to locate errors, our observation revealed that they could only relied on system provided error messages but could not use or be aware of the existence of debugging tools such as “breakpoint”. To engage novices’ in debugging, teachers may consider adopting proper instructional design so that students’ sense of accomplishment could be reinforced. Future studies may repeat this study but with larger sample size to improve the external validity.. Keywords: Novice programmer, Debugging, Visual Basic ii.

(4) 致 謝 回首三年的碩士生活,真是有苦有樂,確切來說應該是苦中作樂,如今終於 要卸下碩士身份,好想開心的大喊大叫:我終於畢業了! 三年時間裡面,最感謝的莫過於指導教授 吳正己老師,雖然老師行政工作 繁忙,但總是會排開他忙碌的時間,來指導我的論文上各種疑難雜症,也常常勉 勵我要多學習、不懂就要問,落實其培養碩士生「邏輯思考」與「問題解決」的 能力,我想三年時間下來,我應該有 Level Up 了。再來要感謝我的兩位口試委 員:林育慈老師、邱瓊芳老師,給了我很多寶貴的意見,讓我的論文能夠更加完 整。當然,亦要感謝實驗學校的老師:劉家欣老師,沒有您大力幫忙,我就不能 收集到這麼完整的實驗資料了。 感謝我的家人:爸、媽、老弟,感謝你們無條件的支持我,完成我從小就一 心想念師大的夢想。雖然台北到高雄實際 350 公里的距離,在我心裡,你們就像 隨時在身旁陪伴我,不管我遇到甚麼好事壞事,第一個就想和你們分享,我永遠 愛你們! 三年生活中,謝謝身邊的朋友們帶給我豐富的心靈養份。不管是生活大小事 -當我們睡在一起的室友們:郁如、玉玲、雅瑄、莉萍、嘉彥、文妍、惠中、冠 妤、玟蒨,感謝有你們陪伴,讓我每天回到寢室都可以很放鬆,忘記一天有多辛 苦。還有音樂所的朋友們,帶著我參加許多大大小小的音樂會、演奏會,讓我在 研究之餘,還能滋潤我枯竭的腦子,我都覺得快變成音樂所的學生了。CSE LAB 的夥伴們,怎麼可以少的了你們,尤其是雅旬、志軒、筱蔓,大家一起為了研究 而並肩作戰(嘴泡)的日子,希望你們都可以順利的完成論文。最後,還要特別 謝謝孫林與政煥兩位博班大學長,常常給予我很多建議與幫助,以後也要請你們 多多指教摟! 最後,感謝自己,不管經歷多少磨練與困難,還好有一顆不放棄與堅定的心, 支持這一路上的跌跌撞撞,順利的走過,也完成了碩士學位。而接下來即將成為 博士生,對自己來說也是更大的挑戰,期許自己能更有衝勁與動力去迎接下一階 段的新生活。 敬,現在與未來,那些閃閃發光的日子!. iii.

(5) 目 錄 附表目錄......................................................................................................................vii 附圖目錄.................................................................................................................... viii 第一章 緒論................................................................................................................ 1 第一節. 研究背景與動機.................................................................................... 1. 第二節. 研究目的................................................................................................ 3. 第三節. 研究限制................................................................................................ 3. 第四節. 名詞釋義................................................................................................ 3. 第二章 文獻探討........................................................................................................ 5 第一節. 程式設計初學者學習問題.................................................................... 5. 第二節. 程式設計除錯........................................................................................ 9. 第三節. VB 程式設計 ....................................................................................... 14. 第三章 研究方法........................................................................................................ 17 第一節. 研究設計.............................................................................................. 17. 第二節. 研究對象.............................................................................................. 17. 第三節. 研究工具.............................................................................................. 18. 第四節. 實施程序.............................................................................................. 21. 第五節. 資料分析.............................................................................................. 22. 第四章 結果與討論.................................................................................................... 25 第一節. 除錯行為.............................................................................................. 25. 第二節. 除錯態度.............................................................................................. 29. 第三節. 除錯過程.............................................................................................. 32. 第五章 結論與建議.................................................................................................... 41 第一節. 結論...................................................................................................... 41. 第二節. 建議...................................................................................................... 42 iv.

(6) 目 錄 參考文獻...................................................................................................................... 45 附錄一 程式設計問卷調查...................................................................................... 51 附錄二 除錯題目...................................................................................................... 53 附錄三 除錯行為觀察表.......................................................................................... 57 附錄四 除錯行為觀察表示例.................................................................................. 58 附錄五 學生訪談大綱.............................................................................................. 63 附錄六 程式設計問卷調查—開放式問題填答結果.............................................. 64. v.

(7) 附表目錄 表 3-1 各除錯問題屬性 ............................................................................................. 19 表 3-2 除錯問題之錯誤列表 ..................................................................................... 19 表 3-3 除錯行為編碼 ................................................................................................. 24 表 4-1 學生除錯求助對象優先次序之次數統計 ..................................................... 26 表 4-2 學生使用 VB 除錯工具的情形 ...................................................................... 26 表 4-3 「偵錯工具」各項的使用情形 ..................................................................... 28 表 4-4 學生修改錯誤程式碼前的構思情形 ............................................................. 28 表 4-5 學生除錯遭遇問題的情形 ............................................................................. 30 表 4-6 學生對除錯的看法 ......................................................................................... 31 表 4-7 學生除錯成功情形 ......................................................................................... 32 表 4-8 編號 3 學生除錯行為觀察表 ......................................................................... 35. vi.

(8) 附圖目錄 圖 3-1 螢幕錄製軟體 ................................................................................................. 20 圖 3-2 研究實施步驟 ................................................................................................. 21 圖 4-1 除錯問題第一題(三的倍數)程式編譯畫面例 ......................................... 33 圖 4-2 編號 4 學生使用註解的功能 ......................................................................... 36 圖 4-3 除錯問題第二題(交換變數值)程式編譯畫面例 ..................................... 37 圖 4-4 第二題正確執行結果 ..................................................................................... 38 圖 4-5 第二題錯誤執行結果 1 .................................................................................. 38 圖 4-6 第二題錯誤執行結果 2 .................................................................................. 38 圖 4-7 除錯問題第三題(速食店點餐)程式編譯畫面例 ..................................... 39. vii.

(9) 第一章. 緒論. 第一節 研究背景與動機 隨著數位化時代來臨,擁有資訊能力是現代人需具備的基本技能。如同教孩 子學習藝術創作、寫作與演說等基本技能,是為了能讓他們運用這些能力表達自 己並與外界溝通;教授孩子程式設計也是讓他們能運用電腦創作發揮,增強自我 的表達能力(Ellinger, 2003) 。Resnick 等人(2009)指出學習程式設計能增進邏 輯思考、問題解決能力等。Hartmann、 Nievergelt 與 Reichert(2001)更建議把 程式設計(pRogramming)與其原有的閱讀、寫作、算術 3R(Reading、wRiting、 aRithmatic)基本素養並列成新的 4R。在 2003 年美國計算機協會 ACM(Association for Computing Machinery)提出 K-12 電腦課程架構,把電腦科學規劃成主要學科, 而其他各國也相繼將電腦科學列為中小學的學習科目(Tucker et al., 2004)。 台灣的電腦課程為高中與高職必修科目,其課程目的是要培養學生電腦科學 的基本概念及邏輯思維與問題解決的能力,教材規劃上主要均是以程式設計為學 習的內容及工具,程式設計儼然是教師教學的重點之一(教育部技職司,2010; 教育部國教司,2008)。雖然課程綱要未指定應教授的程式語言,但大部分高中 教師均選擇使用 Visual Basic(VB) (陳宏煒,2003) ;而高職教師亦是教授 Visual Basic 程式語言為主。高中職教師選擇使用 VB 的可能原因是,早期台灣的課綱 主要是以 BASIC 語言為架構,其直譯式的語言環境較編譯式單純易學,後來有 了 Windows 作業環境之後,教師自然使用了支援該環境下的 VB。 學習程式設計對初學者來說是很困難的。許多的研究指出,學生學習程式設 計常遭遇到的困難是,如何找出程式錯誤之處並加以修改(Fitzgerald et al., 2008; McCauley et al., 2008; Simon et al., 2008)。初學者在解決程式錯誤時,通常沒有 完全理解程式就以嘗試錯誤的方式修改,導致無法成功地解決錯誤(Jadud, 2005; Parsons & Haden, 2007; Simon et al., 2008)。Perkins 等人(1986)分析學生學習 1.

(10) LOGO 和 BASIC 程式設計的除錯行為發現,有些學生面對程式錯誤時不知所措, 且不願意進一步探索解決問題;有些學生試圖解決問題,並測試程式執行的結果; 另外,有些學生沒有深層思考就嘗試修改程式碼,一直重複嘗試那些無效的解決 方法。沈碧麗(2005)也發現當學生遇到程式錯誤時,常無法自己找出錯誤的原 因,而是立即求助於教師。在電腦教科書中,程式設計除錯的內容所佔的篇幅甚 小(McCauley et al., 2008),電腦課程仍然很少給予學生正式的除錯訓練與教學 策略(Chmiel & Loui, 2004)。顯然,瞭解學生的除錯行為,並給予學生適當的 除錯方法訓練,應是程式設計教學的一個重要議題。 除錯議題的研究主要的程式語言從早期的 BASIC(Gugerty & Olson, 1986; Perkins & Martin, 1986; Putnam, et al., 1986) ,至近期的 JAVA 程式語言(Fitzgerald et al., 2008; Jadud, 2005; Murphy et al., 2008; Simon et al., 2008),相關電腦科學教 育文獻中,很少探討 VB 的教學,更遑論解析學生在的 VB 程式除錯行為。而 VB 程式語言提供可視化的介面,讓學生在學習程式語言的時候,不被語法和錯 誤訊息分心(Powers et al., 2006)。另外,在程式編輯時有提供立即式的偵錯功 能輔助程式設計者除錯。VB 既然是台灣高中職程式設計(或問題解決)教學的 主要工具,實有必要瞭解學生在學習程式設計時,如何進行除錯,以及對除錯抱 持的態度,以進一步的提供電腦科學教育者參考,並規劃有效的教學策略。. 2.

(11) 第二節 研究目的 本研究目的旨在探討影響 VB 程式設計初學者的除錯行為以及對於除錯的 態度。根據研究目的,本研究提出的待答問題如下: 1. 學生程式設計的除錯行為為何? 2. 學生對於程式設計除錯的態度為何?. 第三節 研究範圍限制 本研究的研究範圍與限制如下: 1.. 本研究之課程範圍為程式設計基本程式概念,其範圍包括變數、迴圈、 判斷、副程式等內容。. 2.. 本研究之研究對象採方便取樣,研究結果可能受限於研究對象,若要將 結果推論至其他班級或學校,須再擴大樣本數,進行更深入的分析。. 第四節 名詞釋義 一、除錯 除錯是指程式設計者在程式的測試過程中,發現錯誤和找出確切錯誤的位置 並解決錯誤(McCauley, 2008) 。在本研究中,當程式設計者首次開始編譯執行程 式,到程式成功運行,這期間的過程都被包含在除錯的階段。 二、除錯行為 行為(behavior)是個體表現的一切活動,表現在外且能被直接觀察記錄或 測量的活動(張春興,2007)。在本研究中,除錯行為是指在除錯的階段,程式 設計者所表現的行為,特別針對學生除錯過程中察看、測試、編輯等行為,以及 學生尋求對象求助、除錯工具的使用來進行分析。. 3.

(12) 4.

(13) 第二章. 文獻探討. 本章分為三節,就本研究運用之相關文獻整理、歸納,依「程式設計初學者 學習問題」、「程式設計除錯」及「VB 程式設計」三個面向進行探討。. 第一節 程式設計初學者學習問題 本節先是探討初學者學習程式設計時所遇到的困難,再探討初學者在程式設 計過程中常犯的錯誤,最後是探討程式錯誤類型。. 壹、初學者遭遇的困難 程式設計是一個描述、執行、反思、除錯(description- execution- reflectiondebugging- description)的循環過程(Valente, 1995)。程式設計不僅是撰寫程式 碼,而是設計演算法的程序,並考慮其程式輸出正確性與效率(Gal-Ezer, 1998)。 在這過程中必須撰寫精確程式碼告訴電腦該執行的指令,所以瞭解程式語言的知 識與結構是很重要初學者在學習程式設計,不僅是要瞭解程式語言的特性、了解 程式架構與執行的流程,並且要融會貫通程式語法與語法的結構(Bayman & Mayer, 1988)。但對於初學者來說,這些龐大且複雜的程式語言和語法的結構, 實在是非常困難且不容易理解,對初學者學習造成難題與困擾。 Lahtinen、 Ala-Mutka 與 Järvinen(2005)探究新手程式設計者的困難的研究中,在課程內 容層面的問卷其中「在學習程式設計中什麼樣類型的問題是你覺得困難?」,問 卷結果指出學生覺得困難的排名前三名的依序是:用設計程式來解決任務、區分 程序的功能、以及在程式中找到錯誤。而多數的研究指出(Fitzgerald et al., 2008; Jeffries, 1982; McCauley et al., 2008; Simon et al., 2008),學生學習程式設計困難 是如何找出程式的錯誤並修改它,而找出錯誤是最花費學生的時間。 當然找出程式錯誤連帶就是要修改錯誤讓程式能夠正確執行,但 Katz 與 5.

(14) Anderson(1987)提出當學生遇到程式出了問題或錯誤,學生沒有好的方法來解 決程式的錯誤。沈碧麗(2005)研究中亦提及教師於課堂上讓學生練習撰寫程式, 當學生遇到問題時無法自己找出程式錯誤的來源,一碰到問題就立即求助教師。 由其是當初學者面對程式錯誤的訊息時,他們無法瞭解錯誤訊息所指何意,到底 是程式語法錯誤還是程式的語意錯誤,對他們來說利用錯誤訊息來判斷程式的錯 誤的地方是很困難的(Hughes, Jadud, & Rodrigo, 2010; Marie et al., 2008)。 根據上述所述對初學者來說學習程式設計困難,大多數是找不到程式錯誤在 哪裡,以及不知道如何修改錯誤,一碰到程式錯誤就束手無策。當然對初學者來 說這些都是一種挑戰,不管是要理解錯誤訊息、找到錯誤、修改錯誤都是很重要。 學習程式設計的目標是能夠運用所學的程式語言來解決問題,程式設計者在除錯 的過程中需要融會貫通程式語言的基本知識,包含程式語言的語法知識和語意知 識,才找出錯誤進行修復進而解決錯誤。. 貳、初學者常犯的錯誤 找不到錯誤、不知道如何修改常是初學者最困擾的地方,而錯誤為什麼會產 生,是因為程式設計的語意與我們自然語言的語意不同,若初學者在學習程式設 計時沒有建構正確知識,在設計程式時很容易就會產生程式錯誤(Bonar & Soloway,1985)。而 Spohrer、Soloway 與 Pope(1985)將初學者在設計 PASCAL 程式所犯的錯誤歸納為四種錯誤: 1. 遺漏(Missing):遺漏程式語法,像是未宣告變數、未定義變數。 2. 錯置(Misplaced):程式語法錯置。 3. 變形(Malformed):語法格式錯誤。 4. 偽裝(Spurious):寫入多餘、不必要的程式語法。 Perkins 和 Martin(1986)研究初學者學習 BASIC 程式設計困難的地方,歸 納四種初學者常犯的錯誤:. 6.

(15) 1. 省略(Omissions):遺漏程式語法,例如遺漏分號…等。 2. 錯置(Migrations):錯置或誤用語法,將原本用在某個敘述的語法誤用 到其他語法敘述。 3. 次序錯誤(Sequence errors):程式碼順序上的錯誤。 4. 錯誤(Mistakes):無法歸類到以上三類的其他錯誤。 Jadud(2005)研究初學者學習 BlueJ 最犯的錯誤其前三項為:遺漏分號 (semicolon)、未宣告變數(unknown variable)、遺漏括號(bracket expected), 其最主要是皆是語法錯誤,當遇到語法錯誤,學生只需稍做修改就可以快速完成 編譯,所以語法錯誤是容易修復的,反之花費在編譯語意錯誤的時間比較多。 McCauley(2008)研究初學者學習 JAVA 程式設計以 Spohrer 等人(1985)提出 的錯誤分類來設計程式設計題目,其研究發現大多數是遺漏程式碼或是程式的結 構不正確。 經由上述研究可以發現,不管是哪一種程式語言,初學者在設計程式時,會 出現的錯誤不外乎是遺漏程式語法、語法錯置、格式錯誤。雖然有些錯誤的產生 是跟程式語法、程式結構有關,但是仍有很大的原因是與程式語言的語法本身無 關(Spohrer, 1986)。. 叁、程式錯誤的類型 而程式發生錯誤主要的錯誤類型,依照錯誤發生的階段與成因,主要分為編 譯錯誤(compile-time errors)和執行階段錯誤(run-time errors)兩種(Ahmadzadeh, et al., 2005; Spohrer & Soloway, 1986): 一、編譯錯誤 編譯錯誤是指編譯程式時發現的錯誤。這類型的錯誤通常是程式語法的錯誤 (syntax errors) ,因為程式設計者沒有遵循程式語言的語法,包含語法使用有誤、 或是拼字錯誤、未清楚的定義變數或物件,以及輸入不正確的程式敘述,導致程. 7.

(16) 式無法順利編譯。這類錯誤通常在編譯時會被自動檢查出來,幫助程式設計者指 出錯誤並能夠即時修正(尹玫君,1991)。初學者程式設計錯誤型態大部分是程 式碼遺漏或是程式結構不正確(McCauley, et al., 2008)。 二、執行階段錯誤 執行階段錯誤是指程式在執行時出現未經預期的錯誤狀況。這類型的錯誤通 常是邏輯錯誤(logic errors)或語意錯誤(semantic errors),程式設計者程式語 法並未撰寫錯誤而是語意錯誤。這類錯誤在編譯的過程中無法被察覺,因為程式 語法無錯誤不影響程式的執行,是由於內在語意所產生的錯誤,這些錯誤必須由 程式設計者自己來改正、除錯(尹玫君,1991)。 由上述得知,程式設計者在面對編譯錯誤時通常都能根據編譯軟體的指示即 時修正,反之,當遇到執行階段錯誤,程式設計者必須自己找出語意錯誤並修正 錯誤,而這類型錯誤的除錯過程,正是需要深入研究並探討其成因。. 8.

(17) 第二節 程式設計除錯 本節先是探討除錯重要性,接著探討除錯應具備的知識,最後再探討除錯行 為。. 壹、除錯重要性 程式設計的過程中皆會遇到錯誤的產生,很少有人第一次程式設計就成功。 由其是初學者在不熟習程式語法與結構之下,不管是程式的語法錯誤或語意錯誤, 初學者必須經歷面對錯誤與解決錯誤的階段才能設計出可以運行的程式(Valente, 1995) 。在程式設計的過程中,Shneiderman(1980)將其分為四個階段:程式的 理解、程式的組織、程式的除錯、程式的修正。吳正己與林凱胤(1997)程式設 計包括四個主要步驟:瞭解問題的需求、擬定解題的計畫、撰寫程式碼、及測試 與除錯。所以程式要能成功的運行,除錯是程式設計中重要的一個環節,也是程 式設計的核心。 Shneiderman(1980)定義除錯的能力:分析錯誤、找出錯誤以及改正錯誤 的能力。McCauley(2008)除錯是指程式設計者在程式的測試過程中,發現錯 誤和找出確切錯誤的位置並解決錯誤。所以除錯是當程式發生錯誤,要找出錯誤 並修改錯誤,讓程式能成功執行。而對初學者來說,他們學習程式設計所遭遇的 困難大多數是找不到錯誤以及不知道如何修改錯誤,這表示他們在程式設計的除 錯階段是有學習阻礙。學生是需要除錯的能力來發現錯誤與修改錯誤,除錯是必 須被教導的技能(Katz & Anderson, 1987)。 但電腦課程卻很少給予學生正式的除錯訓練與教學策略(Chmiel & Loui, 2004) 。綜觀現今電腦教科書,程式設計除錯的內容所佔的篇幅甚小(McCauley, et al., 2008),教師在程式設計教學中,往往會忽略教導除錯。 根據上述,教師與教科書缺乏教授除錯的內容,大多數學生認為除錯是程式 編寫中的一部份,學生沒有將除錯視為一個獨立的技能,而教師在教學時也未特 9.

(18) 別教授程式除錯的技能,學生花費很多時間在程式的除錯上。顯然,瞭解學生的 除錯行為,並給予學生適當的除錯方法訓練,應是程式設計教學的一個重要議 題。. 貳、除錯知識 除錯需要精通程式知識,包含程式語法和語意,以及理解程序應用(Gugerty & Olson, 1986; Putnam, Sleeman, Baxter, & Kuspa, 1986) 。尹玫君(1991)其研究 指出當學生進行程式除錯或設計演算法等複雜的任務時,他們必需具備基礎的程 式語法及語意相關的知識,雖然學習程式語言特性,並不能增進解決問題的能力, 但它卻是進入更高一層思考活動所必須具備的基本知識。 而在除錯的知識方面,Decasse 和 Emde(1988)研究歸納除錯者所需要的 七種除錯知識: 1. 預完成程式的知識(knowledge of the intended program) 2. 實際程式的知識(knowledge of the actual program) 3. 程式語言的知識(understanding of the programming language) 4. 一般程式設計知識(general programming expertise) 5. 應用領域的知識(knowledge of the application domain) 6. 關於程式錯誤的知識(knowledge of bugs) 7. 除錯的方法(knowledge of debugging methods) 開始除錯首要的任務就是先預想與評估程式輸入與輸出的結果與實際上輸 入與輸出的結果的差異,當實際上執行程式時,依循著程式的程序的執行情況來 評估與理解程式,同時也需要熟悉程式語言與一般程式設計的原則來理解程式, 並且有錯誤類型的知識與運用策略來解決錯誤的方法,所以除錯同時需要很多能 力來解決問題。 Ahmadzadeh、Elliman 與 Higgins(2005)研究新手提出好的程式設計者在. 10.

(19) 除錯過程中擁有以下四種知識: 1. 預完成程式的知識(knowledge of the intended program) 2. 實際程式的知識(knowledge of the actual program) 3. 除錯的方法(knowledge of use of debugging methods) 4. 關於程式錯誤的知識(knowledge of the error itself) 而這四種除錯的知識與 Decasse 和 Emde(1988)提出的七種除錯知識中之四者 相同,可知擁有好的除錯能力的程式設計者,這些除錯知識是需要具備的。. 叁、除錯行為 行為(behavior)是個體表現的一切活動(張春興,2007) ,只限於表現在外 且能被直接觀察記錄或測量的活動。本研究提及的除錯行為是指除錯的階段程式 設計者所表現的一切活動。Perkins 等人(1986)研究中以觀察和訪談的方式來 了解學生學習 LOGO 和 BASIC 程式設計中怎麼解決程式的問題,提出以下兩種 解決的類型: 1. 停止者(Stopper):當學生面對程式錯誤時,完全不知所措,而且不願意 進一步探索解決問題,就停止解決錯誤。 2. 行動者(Movers):學生試圖解決問題,寫下或是修正程式碼,並測試程 式執行的結果。期間停頓思考的時間,不足以代表學生是停止解決錯誤。 另外,從 Movers 衍伸出 Extreme movers,是指學生沒有深層思考就嘗試 修改程式碼,常會導致過多的錯誤而放棄解決錯誤,或者是沒有針對錯誤 找出解決方法,一直重複嘗試那些無效的解決方法。 另外 Jeffries(1982)研究提及新手程式設計者在解決程式錯誤的問題時, 常未完全理解程式碼便立即嘗試修改並測試。Jadud(2006)藉由觀察學生編譯 與執行的過程來了解學生的除錯行為,發現學生在發生編譯錯誤時,很快地再次 重新編譯程式,學生會藉由觀察程式執行的狀態來修改程式碼,所以學生花很少. 11.

(20) 的時間查看語法錯誤的訊息、編輯程式碼,以及重新編譯。使用試誤的方式來了 解錯誤,此種情況常會導致無法成功地解決問題,因為如果沒有仔細理解程式, 而不斷的用嘗試錯誤的方式解決問題,則會影響程式設計後續的除錯(Putnam, et al., 1986)。 Perkins 等人(1986)從觀察學生除錯中發現重要的技能,分別為以下三種: 1. 密切追蹤程式碼(Close Tracking of Code) :以閱讀程式碼的方式了解程式 的運作,特別是密切察看某幾行程式碼。 2. 修補(Tinkering):編寫程式碼或是以修改程式碼的方式來解決程式設計 的問題。 3. 拆解程式(Breaking Problems Down) :將程式適當的拆解成數個部份來解 決問題。 Murphy 等人(2008)觀察學生解決程式錯誤的情形,歸納出以下幾種除錯 時發生的行為: 1.. 獲得領域知識(Gain domain knowledge):利用程式的輸出,或是反覆 查看問題,從中獲得問題主要的概念知識。. 2.. 程式碼追蹤(Tracing, including: Mental, Print, Debugger) :包括在腦海中 追蹤程式碼、列印程式及輸出結果,以及使用偵錯工具等追蹤程式碼。. 3.. 測試(Testing):利用資料或數據來測試程式的輸出是否是成功正確的 執行結果。. 4.. 理解程式碼(Understanding code):以閱讀程式碼的方式,理解程式的 運行。. 5.. 使用參考資源(Using resources):使用線上 JavaDoc 說明文件、Java Tutorial 說明文件、課本講義。. 6.. 使用工具(Using Tools):使用偵錯工具。. 7.. 隔離問題(Isolating the problem) :看起來可疑的程式碼,利用註解的指. 12.

(21) 令隔離問題。 8.. 與舊經驗連結(Pattern matching):程式設計者利用舊有的程式設計解 題經驗來判別程式碼正確與否。. 9.. 尋找替代方案(Consider alternatives) :考慮多種解決方式來解決問題。. 10. 程式語言環境(Environmental) :利用程式環境的功能,例如:復原鍵。 11. 避開問題(Work around problem):逃避問題或困難,找到其他可以替 代解決的方式。 12. 備用(Just in case) :增加或刪除程式碼,但不影響程式的輸出結果,例 如刪除多餘的變數。 13. 修補(Tinkering):修改程式碼。 綜合上述的文獻當中,可以整理歸納出以下的除錯行為主要分成追蹤、修補、 測試、求助,以及放棄此五種行為。 1. 追蹤(Trace):以閱讀程式碼的方式來了解程式的運作情形,以及寫或 畫下程式碼的方式來了解程式的運作情形。 2. 修補(Tinkering):編寫程式碼或是修改程式碼。 3. 測試(Testing):利用資料或數據來測試程式的輸出是否正確。 4. 求助(Help) :使用偵錯工具(Debugger) 、使用資源如:工具書、課本、 講義,或是尋求他人協助。 5. 放棄(Stop):停止解決錯誤。 綜合此節文獻探討,學習程式設計的目標是能夠運用所學的程式語言來解決 問題,而程式設計者在面對編譯錯誤和執行階段錯誤,程式設計者怎麼自己找出 錯誤並修正錯誤,其除錯的行為正是需要深入研究並探討。所以如果能知道學生 的除錯行為,就能幫助教學者教導學生如何解決程式錯誤的問題。. 13.

(22) 第三節. VB 程式設計. 本節主要是探討程式語言與工具的影響,接著探討 VB 程式設計學習阻礙。. 壹、程式語言與工具的影響 學習程式設計其程式語言與環境也很重要, Garry 和 Marcos(2002)引述 提出不同的程式語言適合不同的認知特點,當然在教學上如果選用適當的程式語 言,不僅會提升教學品質,也會增進學生學習的動機與興趣。Ousterhout(1998) 把程式語言分成兩大類: 1.. 腳本式語言(Scripting language):如 Tcl、Visual Basic,在程式介面中 提供許多視覺化的工具,使用者只需拖曳物件與設定物件的屬性,使用 起來簡單容易。. 2.. 系統程式語言(System programming language):如 Pascal、C、C++、 Java,程式介面中撰寫程式碼偏向文字式,對程式初學者來說,腳本式 語言比系統程式語言學習來的容易許多,因為腳本式語言簡單的語法讓 學習更佳容易。. Garry 與 Marcos(2002)把程式語言分成四種: 1.. 程序式語言(Procedural):例如 COBOL。. 2.. 物件導向語言(Object Oriented):例如 C++、Java。. 3.. 視覺化語言(Visual):例如 Visual Basic。. 4.. 腳本式語言(Script):例如 HTML。. 在程式設計環境,提供一個可視化的介面,運用拖曳(drag-drop)的功能,可以 讓學生在學習程式語言的時候,不被語法和錯誤訊息分心(Powers et al., 2006)。 雖然台灣高中職的課綱並沒有指定使用哪一種程式語言教授程式設計。陳宏 煒(2003)研究提到 Visual Basic 為最多教師所採用的程式語言,其原因是教師 覺得學生比較容易學習且能引起學習興趣。高中資訊科技概論教科書均以 Visual 14.

(23) Basic 為主要的教材內容來教授程式設計,而高職的程式設計主要也是以 Visual Basic 為教材內容。. 貳、VB 程式設計學習困難 Martin(1999)研究發現學生在學習 Visual Basic 時候,比較偏向學習物件 的知識而忽略程式設計的概念,進而提出 Visual Basic 有太多物件屬性要學習, 這對於新手程式設計者來說,不是最好的教授程式設計的教學工具。陳明溥(2007) 提出使用複雜度較高的物件式程式設計工具(Visual Basic),在開始學習的時候 必須讓使用者熟練物件式工具,才能使初學者在學習活動中能有效運用,進而設 計任務。 Ko 等人(2004)研究指出初學者使用 Visual Basic.NET 程式介面的學習阻 礙,有以下六種阻礙: 1.. 設計的阻礙(design barriers):使用者無法設計出正常執行的程式,缺乏 程式設計基本的認知。. 2.. 選擇的阻礙(selection barriers):使用者無法選擇要使用哪些功能或元件 來設計程式,也不知如何使用,因為不知道這些介面或功能會有哪些作用, 缺乏對介面或功能的瞭解。. 3.. 協調的阻礙(coordination barriers) :使用者無法有效的連結物件與物件來 完成程式的執行,無法做有效的協調,但是大部分的使用者皆有達到有效 的假設。. 4.. 使用的阻礙(use barriers) :使用者知道要選擇哪些功能與元件來設計程 式,但是不知道如何使用,也不知道使用後的結果是如何。使用的阻礙包 含語法上的錯誤,例如使用者不知道如宣告陣列的初始值,就提出了一個 無效的假設,導致語法的誤用。. 5.. 瞭解的阻礙(understanding barriers):使用者知道如何使用元件來設計程. 15.

(24) 式,但是程式執行出來並不是使用者所預期的結果,這其中包含了編譯錯 誤(Compile-time errors)與執行錯誤(run-time errors) 。使用者在編譯錯 誤時無法瞭解程式編譯時所提供錯誤訊息的提示,所以不知道程式碼那邊 有出錯。在執行錯誤時,使用者無法預期程式的結果,或是使用者所預期 的結果並未執行。 6.. 訊息的阻礙(Information Barriers) :主要是瞭解是用者是否瞭解程式介面 的使用,例如使用者關掉程式設計的主要視窗,但不知道或不清楚要如何 把它開啟。使用者也不清楚系統提供的一些訊息或是提示,另外使用者也 不願意使用偵錯工具(debugger)來解決錯誤的問題。 由上述文獻可以得知,高中職教師多以 Visual Basic 為主要教授程式設計的. 工具,但其實不清楚學生在學習程式設計的過程中,是否有學習到程式設計的概 念與培養問題解決的能力,也不知道學生在面對程式錯誤或困難時,會怎麼解決 問題,所以從學生的程式設計的除錯過程,瞭解老師的程式設計教學給予學生是 否足夠程式設計知識或是策略讓他們進行除錯(Robins, Rountree, & Rountree, 2003) ,教師必須要瞭解學生在學習 Visual Basic 面對問題的時候如何解決,才能 幫助學生學習的更有效果。. 16.

(25) 第三章 研究方法 本研究採用問卷調查了解學生對程式設計除錯的態度及看法,並輔以訪談與 學生程式除錯過程觀察來瞭解學生的除錯行為。根據此研究目的,針對本研究的 研究設計、研究對象、研究工具、實施步驟及資料分析分節加以說明如下。. 第一節 研究設計 本研究探討學生的除錯行為,為了瞭解學生除錯的行為與除錯的態度想法, 以高職三年資料處理科學生為研究對象,研究主要是採用問卷調查方式進行,輔 以訪談與觀察學生除錯的過程。研究實施主要先以問卷調查參與學生除錯的行為, 再由研究者從中選取八位學生,輔以質性觀察學生除錯解題過程的方式,深入了 解學生除錯行為,事後以訪談來瞭解學生對於除錯的想法與意見。資料分析依據 問卷調查的結果以及觀察螢幕錄製結果,來瞭解學生如何除錯,然後再利用訪談 學生的除錯想法與意見,來相互驗證瞭解學生除錯行為。問卷發放的時間,運用 學生上完程式設計相關的課程後的下課時間讓學生填寫。而質性觀察的部分,是 運用學生課後的時間,進行除錯問題的活動並訪談,歷時三小時。. 第二節 研究對象 本研究是以台北市立某高職資料處理科高職三年級學生兩班共 72 人為研究 對象。所有研究對象皆修習過一學年的計算機概論與一學年的程式語言,皆具備 基本程式設計概念。另外八位觀察與訪談的研究對象,是由兩班級的程式設計授 課教師挑選,依學生前一學期的成績從級中選出兩名高成就、三名中成就、三名 低成就共八位學生。除了兩名高成就學生為學校培訓程式設計比賽的選手有利用 課餘時間練習程式設計,其他六名學生皆只有在課堂學習程式設計。. 17.

(26) 第三節 研究工具 依本研究之研究目的,為了更有效的蒐集資料以呈現研究結果,本研究資料 來源包含:程式設計問卷、除錯問題等相關資料。以下將詳細說明本研究之研究 工具。. 壹、程式設計問卷 本問卷編製的目的是要了解學生在除錯過程當中,解決錯誤的方式與行為。 調查問卷內容是參考 Murphy 等人(2008)擬定之除錯行為為依據,經資訊教育 專家討論修訂,從中選擇適合本研究的行為,由研究者根據研究需要編製而成。 問卷初擬完成後,邀請兩位高職電腦教師,針對問卷的適切性給予建議,並邀請 八位學生試答,再經與一位資訊教育專家討論修改後定稿(詳細內容如附錄一)。 問卷為封閉式問題總共 20 題,其內容分為三個部分簡述如下: 1. 除錯行為(9 題):學生除錯時發生的行為。 2. 除錯困難(6 題):學生除錯時遭遇的問題。 3. 除錯的態度(5 題):學生對於除錯的態度或想法。 問卷採用李克特氏五等量表方式填答,填答者依照題意最符合自己的想法, 非常同意、同意、普通、不同意、非常不同意。另外,有兩題開放式問題「我對 程式除錯的感想」與「我覺得除錯最困難的地方是?」,以了解學生對除錯的感 想。. 貳、除錯問題 本研究質性觀察會給予學生除錯問題,讓學生進行實際除錯活動,深入了解 學生實際除錯的過程。其除錯題目的編製是研究者參考李啟龍和俞冠廷(2008) 編著的「Visual Basic 2008 程式設計 16 堂特訓」,以及中華民國電腦技能基金會 (2009)編製「Visual Basic 2008 實力養成曁評量」等書籍,修改成適合本研究 18.

(27) 之除錯問題。其除錯問題中的錯誤是研究者依據(Spohrer & Soloway, 1986)編 製(如表 3-1) ,經資訊教育專家論修訂,以及兩位高職電腦教師給予建議,針對 題目的適切性,加以評定給予建議,再與資訊教育專家討論後,修訂出實驗時使 用的除錯問題(如表 3-2,詳細題目見附錄二)。. 表 3-1 各除錯問題屬性 內容. 問題. 基本概念 副程式 綜合. 三的倍數 交換變數值 速食店點餐. 變形  . 錯置  . 遺漏. 偽裝. . . . . 表 3-2 除錯問題之錯誤內容列表 題目 三的倍數 交換變數值 速食店點餐. 錯誤 遺漏按鈕物件程式碼、多餘指令敘述 呼叫副程式格式錯誤、傳址參數錯置 checkbox 控制物件格式錯誤、If 判斷運算式錯置、 遺漏按鈕物件、多餘變數. 叁、螢幕錄製軟體 本工具主要是以螢幕錄製的方式記錄學生程式除錯的過程,利用免費螢幕錄 製軟體 SCREEN2EXE 進行螢幕錄製(如圖 3-1) ,圖中紅框標示是螢幕錄製的畫 面,是以全螢幕的方式錄製。並根據學生的行為予以編碼和歸納進行分析,並供 與研究者後續分析資料與佐證。. 19.

(28) 圖 3-1 螢幕錄製軟體 20.

(29) 第四節 實施程序 本研究主要以問卷調查以及觀察學生除錯過程與學生訪談等方式進行,研究 實施步驟如圖 3-2 所示。. 實驗開始. 問卷施測(72位學生). 錄影 程式設計除錯實作(8位學生) 程式設計除錯實作. 螢幕錄製. 學生訪談(8位學生). 資料分析. 圖 3-2 研究實施步驟. 壹、 問卷施測 本研究的研究對象為資料處理科高職三年級學生,問卷發放的時間為三年級 學期中,學生上完程式設計相關課程後讓學生填寫,是為了讓學生在上課時已經 有程式設計課堂練習的實作,填寫問卷時較能符合平常學生除錯的行為,其問卷 填寫時間為下課時間十分鐘。. 21.

(30) 貳、 程式設計除錯實作 為了解學生之除錯行為,本研究挑選八位學生進行質性觀察,讓學生進行實 際除錯活動並訪談,每位學生給予三題需要除錯的程式設計問題。因研究者一人 無法兼顧八位學生一同進行質性觀察,因此由本所研究生三名為指導員予以協助。 進行方式:每個除錯問題歷時約三十分鐘,指導員五分鐘題目解說,給予學生二 十分鐘上機實作除錯問題,而其餘五分鐘為學生訪談部份。學生除錯過程利用螢 幕錄製軟體以全螢幕錄製,並架設錄影機對學生全程錄影。觀察員在學生除錯實 作時,會在旁邊協助器材架設與錄製,並且當學生有問題時給予學生協助。觀察 員在學生除錯實作結束後,記錄觀察學生除錯的心得,輔以研究者參考。. 叁、 學生訪談 八位學生除錯每完成每一題除錯問題後,會進行五分鐘至十分鐘不等錄音訪 談。訪談的內容約五題到八題不等,包含:是否有成功除錯題目中的錯誤、請簡 短敘述如何進行除錯的、是否有看錯誤清單來進行除錯、會先預先構思需要修改 的程式碼等等,以深入了解學生對程式除錯的想法,其訪談大綱詳細的內容見附 錄五。. 第五節 資料分析 本研究利用問卷蒐集資料,採用李克特氏五等量表方式填答,填答者依照題 意最符合自己的想法,非常同意、同意、普通、不同意、非常不同意,分別給予 5 分、4 分、3 分、2 分、1 分之計算分數。量表得分越高表示填答者越符合各題 敘述的程度,反之,得分越低表示填答者越不符合各題敘述的程度。所蒐集到的 資料利用 SPSS 統計軟體進行統計分析,其調查問卷的結果採描述性分析,以平 均數、次數分配、百分比為主要的方法。另外,質性觀察資料主要是分析螢幕錄 製的學生除錯的過程與學生訪談的內容,並根據學生的除錯行為予以編碼和歸納 22.

(31) 進行分析。以下針對學生除錯行為分析方法加以說明。 學生除錯行為分析分為以下三個部分: 1.. 分析螢幕錄製的資料 八位學生在解決除錯問題時,均以螢幕錄製學生除錯的過程,而研 究者針對螢幕錄製的資料輔以錄影資料,將學生除錯過程以記錄於除錯 紀錄表中(如附錄三)。而學生的除錯行為分成察看、測試、編輯、求 助、放棄、其他行為(見表 3-3) 。紀錄方式為觀察學生連續的除錯行為, 對照除錯行為編碼將其記錄下來(如附錄四)。. 2.. 分析學生訪談 將八位學生訪談編譯成為逐字稿,並依個案學生加以編碼,輔以驗 證歸納分析出的除錯行為。. 3.. 歸納學生除錯行為 由學生除錯的歷程歸納學生除錯行為是本研究探究的主要目的。將 除錯行為編碼與訪談資料逐項整理、分類與比較,並多次進行重複比較 與驗證,幫助研究者進行除錯行為分析時解釋研究結果。. 23.

(32) 表 3-3 除錯行為編碼 行為類別 1. 察看. 描述. 編碼. 閱讀題目. R1. 檢視程式碼. R2. 檢視表單設計. R3. 檢視物件屬性. R4. 檢視錯誤清單. R5. 閱讀提示訊息. R6. 在紙上畫記追蹤程式碼. R7. 執行程式. T1. 輸入資料測試輸出結果. T2. 修改程式碼. E1. 修改表單設計. E2. 修改物件屬性. E3. 使用偵錯工具. H1. 使用資源. H2. 尋求他人協助. H3. 5. 放棄. 停止解決錯誤. G1. 6. 其他. 無關的其他行為. O1. 2. 測試 3. 編輯. 4. 求助. 24.

(33) 第四章 結果與討論 本章報導學生程式設計問卷填答結果,並輔以八位學生除錯過程的觀察和訪 談資料,綜合分析高職學生程式除錯行為與對除錯的態度。. 第一節. 除錯行為. 本節依據問卷所得的結果,分別針對學生在除錯過程中的求助對象、除錯工 具的使用、修改錯誤情形等三個部份描述。扣除掉 6 份填答不完整之問卷,最後 得到 66 份有效問卷。以下的說明將問卷題目重新編號以助於描述的便利。. 壹、求助對象 問卷要求學生列出當程式發生錯誤時,他們會優先求助的三個優先對象。 分析時,以學生填寫前三項的優先次序分別依第一優先、第二優先、第三優先以 次數統計的方式來探討。如表 4-1 顯示六個選項的次數統計結果,求助最優先的 前三項為「找同學幫忙」 (59 次) 、 「找老師幫忙」 (49 次) 、 「參考教科書或講義」 (47 次),其中學生最優先求助的對象「找同學幫忙」(59 次)的次數為最高。 而選擇第一優先的選項以「找同學幫忙」 (26 次) 、 「參考教科書或講義」 (23 次) 為主要兩個選項,就結果的發現,當程式發生錯誤學生最常採取找同學幫忙、參 考教科書或講義來解決程式的錯誤。 另外,表 4-1 顯示第一優先與第二優先統計次數最低是「放棄解題」 (皆為 1 人),顯然在除錯過程中,學生不會遇到問題就先放棄,會求助其他方式來解決 問題,若尋求的幫助無法解決問題,就會停止解決問題。而選擇「其他」為第一 順序的八位學生,其填的答案為「自己想」(5 人)、「自己檢查」(3 人)皆說明 學生會自己先思考解決問題,再尋求協助。. 25.

(34) 表 4-1 學生除錯求助對象優先次序之次數統計 求助對象. 第一優先 第二優先 第三優先. 合計. 1. 找同學幫忙. 26. 26. 7. 59. 2. 找老師幫忙. 5. 22. 22. 49. 3. 參考教科書或講義. 23. 13. 11. 47. 4. 上網查詢資料. 3. 4. 9. 16. 5. 放棄解題. 1. 1. 17. 19. 6. 其他. 8. 0. 0. 8. 貳、除錯工具的使用 表 4-2 為學生使用除錯工具找到程式錯誤的分析。整體而言,六成以上 的學生指出他們使用 VB 的「錯誤清單」(非常同意 21%、同意 38%)、「波 浪狀底線標註」(非常同意 27%、同意 35%),以及「偵錯工具」(非常同意 18%、同意 48%)來找到程式錯誤的地方,其中以「偵錯工具」為學生最常使 用的方式。. 表 4-2 學生使用 VB 除錯工具的情形 非常 同意. 同意. 普通. 不同意. 非常 不同意. 平均. 1. 我常使用「錯誤清單」 的訊息來找到錯誤的地 21% 方. 38%. 29%. 8%. 5%. 3.64. 2. 我常使用有「波浪狀底 線」標註的程式碼來找到 錯誤的地方. 27%. 35%. 23%. 12%. 3%. 3.71. 3. 我常使用 VB 的「偵錯 工具」來找到錯誤的地方. 18%. 48%. 18%. 11%. 5%. 3.65. 除錯工具. VB 的「偵錯工具」包括「及時運算」、「逐步執行」,以及「設定中斷點」 等三項。表 4-3 顯示,有五成學生的表示常使用「及時運算」(第 1 題,非常同 意 17%、同意 36%),其他兩項則較低,約有三成學生常使用「逐步執行」(第 2 26.

(35) 題,非常同意 9%、同意 24%),不到兩成的學生使用「偵錯工具」為「設定中 斷點」(第 3 題,非常同意 5%、同意 12%)。雖然有約五成的學生指出他們會使 用「及時運算」找出程式錯誤,但觀察八位學生的除錯過程發現,學生都不清楚 debug.print 指令的意涵,訪談時也均「不知道」此指令或「老師沒有教」。顯然 學生在問卷的回答僅顯示他們曾用過「及時運算」視窗來觀看程式輸出結果,但 並未能夠以它來進行除錯。事實上,在整個觀察學生除錯的過程發現,八位學生 皆未使用「偵錯工具」進行除錯。而經由訪談得知僅有兩位學生使用過「偵錯工 具」 ,有些學生甚至以為「偵錯工具」指的就是「錯誤清單」 。以下為訪談之二例。. 研究者:那你知道什麼是偵錯工具嗎? 學生:偵錯工具…,應該就是它知道這個不能執行之後,它就跑不動了這樣。 研究者:那你知道就是這個……,就是即時運算、就是中斷點。 學生:不知道。. (訪談學生 8-1). 研究者:你有使用偵錯工具嗎? 學生:偵錯工具……? 研究者:嗯,你知道什麼是偵錯工具嗎? 學生:是點一下(錯誤清單的訊息)會跟你說錯的地方在哪裡 研究者:就是類似中斷點啊那些的。 學生:嗯,沒有。. (訪談學生 6-1). 27.

(36) 表 4-3 「偵錯工具」各項的使用情形 非常 同意. 同意. 普通. 不同意. 非常 不同意. 平均. 1. 我常使用「及時運算」 17% 來找出程式的錯誤. 36%. 27%. 11%. 9%. 3.41. 2. 我常使用「逐步執行」 9% 來找出程式的錯誤. 24%. 38%. 17%. 12%. 3.02. 3. 我常使用「設定中斷 點」來找出程式的錯誤. 12%. 38%. 26%. 20%. 2.56. 偵錯工具. 5%. 叁、除錯構思 表 4-4 顯示學生除錯構思的情形。大部分的學生表示「我直接修改程式碼, 邊修改邊構思」 (59%) ,或「我已經大概構思好擬修改的程式碼」 (38%) ,只有 3%的學生選擇「我已經全部構思好擬修改的程式碼」 ,再進行錯誤程式碼修改。 顯然學生仍比較習慣直接就進行程式碼編修,而非完整構思好後再進行修改。. 表 4-4. 學生修改錯誤程式碼前的構思情形. 問題. 次數. 百分比. 1. 我已經全部構思好擬修改的程式碼. 2. 3%. 2. 我已經大概構思好擬修改的程式碼. 25. 38%. 3. 我直接修改程式碼,邊修改邊構思. 39. 59%. 28.

(37) 第二節 除錯的態度 本節依據學生在問卷填答的情形,來分析學生對程式除錯的態度,以下 分別就學生除錯遭遇的問題、對除錯的看法兩個部分來進行探討。. 壹、除錯遭遇的問題 表 4-5 為學生除錯情形的分析,想要了解學生在除錯時,是否有甚麼困難的 地方。而為了瞭解學生填答的情況,將非常同意視為 5 分、同意為 4 分、普通為 3 分、不同意為 2 分、非常不同意為 1 分,統計的結果如表 4-6 所示。由第 1 題 顯示僅有兩成的學生(非常同意 5%、同意 15%)表示「看不懂錯誤清單中的訊 息」,亦可對應表 4-3 第 1 題有六成的學生利用錯誤清單中的訊息來找到程式錯 誤的地方。第 2 題、第 3 題顯示不到兩成的學生同意(第 2 題非常同意 3%、同 意 15%,第 3 題非常同意 2%、同意 17%),第 4 題有四成的學生認為「不知 道使用哪些資料來測試程式的執行結果」,顯然大部分的學生可以找到程式錯誤 在哪裡,以及知道如何修改程式錯誤,但是不知道使用哪些資料測試程式的執行 結果。另外,學生不認為程式的問題容易解決(第 1 題與第 2 題,學生同意皆不 到三成)。 在問卷的開放式問題中請學生指出「我覺得除錯最困難的地方是?」,整理 66 位學生的填答內容(參見附錄六),主要可以歸納出以下二種: 1. 不知道錯誤在哪裡(25 位) 2. 不知道如何修改錯誤(8 位) 故而學生覺得除錯最困難的就是找不出程式的錯誤,則更不用談要如何修改錯誤 了。另外,有少數學生提到看不懂錯誤清單上的訊息。. 29.

(38) 表 4-5 學生除錯遭遇問題的情形 除錯遭遇問題. 非常 同意. 同意. 普通. 不同意. 非常 不同意. 平均. 1. 我常看不懂「錯誤清 單」中的訊息. 5%. 15%. 39%. 24%. 17%. 2.67. 2. 我常找不到程式的錯 誤在哪裡. 3%. 15%. 35%. 30%. 17%. 2.58. 3. 我知道程式的錯誤在 哪裡,但是常不知道如何 修改錯誤. 2%. 17%. 29%. 33%. 20%. 2.47. 4. 我常不知道使用哪些 資料來測試程式的執行 結果. 9%. 33%. 36%. 17%. 5%. 3.26. 5. 我覺得程式「編譯錯 誤」的問題容易解決. 2%. 21%. 58%. 17%. 3%. 3.02. 6. 我覺得程式「執行結果 錯誤」的問題容易解決. 6%. 20%. 42%. 26%. 6%. 2.94. 貳、對除錯的看法 表 4-6 主要呈現是學生對於除錯的態度的填答情形,由第 2 題有八成的學生 (非常同意 50%、同意 32%)認同成功除錯後會非常高興,第 1 題只有兩成的 學生(非常同意 6%、同意 17%)喜歡除錯把除錯視為一種挑戰,因此可以知道 學生雖然沒有喜歡除錯,但成功除錯後會非常高興。第 3 題、第 4 題、第 5 題這 三題想要了解學生對於自己除錯技巧的態度,第 5 題有五成的學生(非常同意 12%、同意 39%)認同除錯技巧是由經驗累積而不是老師的教授,第 4 題有六 成的學生(非常同意 21%、同意 44%)認同除錯技巧部分是靠天分,由此得知 大部分的學生覺得除錯的技能是自己的經驗累積以及靠天分,並不是靠老師的教 授,亦可以從第 3 題僅不到三成的學生(非常同意 0%、同意 23%)認為自己的 除錯技巧不錯,所以大部份學生自評自己的除錯技能並未很好。. 30.

(39) 表 4-6 學生對除錯的看法 問題. 非常 同意. 同意. 普通. 不同意. 非常 不同意. 平均. 1. 我喜歡除錯,我認為它 是一項對自己的挑戰. 6%. 17%. 45%. 21%. 11%. 2.86. 2. 當成功除錯後,我會非 常高興. 50%. 32%. 17%. 0%. 2%. 4.29. 3. 我認為自己的除錯技 巧還不錯. 0%. 23%. 39%. 26%. 12%. 2.73. 21%. 44%. 29%. 3%. 3%. 3.77. 12%. 39%. 26%. 18%. 5%. 3.36. 4. 我認為除錯技巧有點 是靠天分 5. 我認為除錯技巧是由 經驗累積,而不是老師的 教授. 在問卷的開放式問題中請學生描述「我對程式除錯的感想」(詳細填答內容 見附錄六),可以歸納出以下幾種: 1.. 除錯成功很有成就感、很開心、很感動(23 位). 2.. 除錯很難(10 位). 3.. 除錯很麻煩(6 位). 第一項中有 14 位學生相同寫下除錯成功很有成就感,有 9 位學生寫下除錯很開 心、很感動,表示有 23 位學生對於成功除錯有正向的態度,亦對應到表 4-7 第 2 題有八成的學生認為除錯成功會非常高興,因此除錯成功是否對學生的學習心態 是有影響。另外問卷中有 10 位寫下除錯很難,有 6 位學生寫下除錯很麻煩,較 為負面的態度亦對應到表 4-7 第 1 題不到三成的學生喜歡除錯把除錯視為一種挑 戰。. 31.

(40) 第三節 除錯過程 觀察學生實際除錯過程中的螢幕錄製與錄影的資料為主,來分析學生除錯的 行為,從兩班 72 名學生中共抽取 8 名學生,給予三題含有錯誤的程式設計題目 進行除錯的活動,每題除錯時間為 20 分鐘。以下分別就學生整體除錯情形來探 討。 表 4-7 為八位學生除錯成功情形的統計。第一題除錯問題(三的倍數,詳見 附錄二)除了編號 3 的學生之外,其他學生皆有成功除錯;第二題除錯問題(交 換變數值,詳見附錄二)有三位學生(編號 2、編號 7、編號 8)成功除錯;第 三題除錯問題(速食店點餐,詳見附錄二)只有編號 2 的學生成功除錯。編號 2 的學生是三題除錯問題皆有成功除錯,而編號 3 的學生皆未成功除錯。以下分別 就此三題除錯問題來探討八位學生的除錯行為。. 表 4-7 學生除錯成功情形 學生 編號. 第一題 成功除錯. 第二題 成功除錯. 第三題 成功除錯. 1 2 3 4 5 6 7 8.   -. -. -.  - - - -.  - - - - - -.     .  . 32.

(41) 一、第一題除錯問題—三的倍數 圖 4-1 所示為程式編譯錯誤之畫面例,圖中所示為成是編譯錯誤之畫面例, 圖中紅框表示包含了編譯錯誤:遺漏物件按鈕的事件程序;執行錯誤:多餘指令 敘述。此題主要是基本概念,瞭解學生除錯是否會看錯誤清單找出錯誤,以及從 程式執行錯誤的結果找出錯誤。. 圖 4-1 除錯問題第一題(三的倍數)程式編譯畫面例. 分析八位學生修改程式的過程中可以歸納出以下幾種行為: 1. 察看錯誤清單訊息 八位學生修改程式碼過程中,皆出現修改「Dim a,b as integer」此行程式碼, 33.

(42) 重新宣告 a、b 變數,修改完後錯誤清單上的錯誤並未修正,其後馬上又復原程 式碼,顯然學生在修改錯誤時,會察看錯誤清單中顯示的訊息來修改程式碼,當 編輯完成後,錯誤並未解決便復原或繼續修改程式碼。 2. 學生以嘗試錯誤的方式修改程式碼 學生在修改在 For 迴圈 If 敘述的部份,「if i mod 3 <> 0 Then Continue For」 此行程式碼的意思是指當 i 不是 3 的倍數時就直接跳回至 for 迴圈,此行程式碼 是無錯誤的。而四位學生(編號 1、4、6、7)不理解「if i mod 3 <> 0 Then Continue For」此行指令,將此行程式碼修改為: 「if i mod 3 = 0 Then Continue For」(學生編號 1、4) 「if i mod 3 <> 0 Then Exit For」(學生編號 6、7) 亦可由下表 4-8 可知編號 3 學生除錯此題的過程(詳細行為觀察表請見附錄 四),當學生執行修改的程式碼後,發現程式輸出結果錯誤,又繼續修改此行程 式碼把 Continue For、Exit For 刪除,再次執行修改後的程式碼,亦從學生的除 錯行為觀察表可以發現,學生不瞭解程式碼的意思。. 34.

(43) 表 4-8 編號 3 學生除錯行為觀察表 時間. 行為. 編碼. 6:48. 察看程式碼. R2. 7:53. 編輯程式碼,剪下 continue For 程式碼 改成「if I mod 3 <> 0 then」. E1. 7:56. 開啟”記事本” ,貼上 continue For 程式碼. O1. 8:08. 編輯程式碼,修改「if I mod 3 <> 0 then」 改成「if I mod 3 <> 0 then i+1」. E1. 8:34. 編輯程式碼,寫入宣告 c 改成「Dim a,b,c as integer」. E1. 8:43. 編輯程式碼,在 if 敘述寫入 c=i+1. E1. 9:00. 察看程式碼. R2. 9:23. 修改「if I mod 3 <> 0 then i+1」. E1. 改成「if I mod 3 <> 0 then c= i+1」 9:25. 察看程式碼. R2. 9:49. 開啟”記事本”,複製 txtOutput.Text. O1. 9:57. 編輯程式碼,修改「if I mod 3 <> 0 then i+1」 改成「if I mod 3 <> 0 then i+1 and txtOutput.Text=””」. E1. 10:13 察看程式碼 11:48 編輯程式碼,修改「if I mod 3 <> 0 then i+1 and txtOutput.Text=””」. R2 E1. 改成「if I mod 3 <> 0 then txtOutput.Text=””」 12:03 察看程式碼 12:21 編輯程式碼,寫入 if 敘述 end if 程式碼. R2. 12:26 編輯程式碼,txtOutput.Text=””移至 if 敘述裡面 12:43 開啟”記事本”,複製 txtOutput.Text=txtOutput.Text. E1. 13:00 察看程式碼. R2. E1 O1. 3. 使用註解的功能,讓程式編譯時跳過錯誤的程式碼 編號 4 學生在已修改完編譯錯誤遇到執行錯誤時,利用註解的功能(如圖 4-2) ,讓程式暫不執行已註解的程式碼,再由程式的輸出結果來判斷是否要繼續 修改程式碼。. 35.

(44) 圖 4-2 編號 4 學生使用註解的功能. 4. 使用記事本的功能,以便能備忘程式碼 編號 3 學生修改過程中,會把程式碼複製至記事本,把記事本當成是備忘錄。 亦從修改的過程當中發現此位同學未能理解程式碼,一直試圖修改錯誤,但是在 修改的過程當中卻又增加了許多錯誤,導致此題未除錯成功。 經實際觀察發現,學生除錯過程會使用除錯工具中的「錯誤清單」的訊息找 出程式錯誤的地方,但對於錯誤訊息所代表的意思並非全然瞭解,就如同學生反 覆修改變數,但此行程式碼是無錯誤的,程式的主要的編譯錯誤是錯誤訊息 3 與 4 指出的「陳述式不可以出現在方法主體之外」,若學生知道此錯誤訊息所代 表的意思,就能找出遺漏物件按鈕的事件程序。另外當學生不理解語法的運用, 他們會以嘗試錯誤的方式修改程式碼,一邊嘗試修改程式碼,一邊觀察除錯清單 與執行結果的變化,在修改程式碼的過程中反而產生新的錯誤;或是學生在修改 過程會先試著刪除修改讓程式暫時無編譯錯誤可以執行,從觀察程式輸出的結果 再進行修改。而學生這兩種修改方式缺乏預完成程式的知識,容易發生在修改錯 誤的時候錯誤沒有減少反而增加新的錯誤,導致程式最後無法除錯成功。. 36.

(45) 二、第二題除錯問題—交換變數值 圖 4-3 所示為程式編譯錯誤之畫面例,主要是利用副程式「傳值呼叫」與「傳 址呼叫」,圖中紅框標示包含了編譯錯誤:呼叫副程式的語法指令;執行錯誤: 參數 Byref 的設定。二位學生(編號 2、編號 8)利用錯誤清單與提示訊息,編 輯修改程式碼與執行程式後,快速就找出副程式語法指令以及傳址參數設定的錯 誤。. 圖 4-3 除錯問題第二題(交換變數值)程式編譯畫面例 37.

(46) 四位學生(編號 1、編號 4、編號 5、編號 6),以為修改完有波浪狀底線標 註的程式碼「swap_by_value(i,j)」 、「swap_by_Address(i,j)」的編譯錯誤後,就以 為自己已經成功除錯而停止解題,並沒有仔細檢查程式是否正確執行成功(圖 4-4),其錯誤執行結果如圖 4-5 所見,並未解決參數 Byref 的設定的錯誤。. 圖 4-4 第二題正確執行結果. 圖 4-5 第二題錯誤執行結果 1. 編號 3 學生修改完上述波浪狀底線標註的程式碼後,執行程式時發現輸出結 果是不正確,並未修改 Byref 參數設定,而是修改變數的位置 「swap_by_Address(j,i)」讓輸出結果看起來很像正確的程式碼,其執行結果如圖 4-6 所見。由此得知,學生會利用其他替代的方法來讓輸出的結果看起來像正確 的執行結果,但是卻不是真正的解決錯誤。. 圖 4-6 第二題錯誤執行結果 2. 38.

(47) 三、第三題除錯問題—速食店點餐 圖 4-7 所示為程式編譯錯誤之畫面例,主要是想要了解學生除錯 VB 的物件 與物件屬性值的行為,包含了編譯錯誤:CheckBox 控制項設定(cbUPF.Checked、 cbUPD.Checked);執行錯誤:遺漏物件按鈕、if 敘述條件的錯誤。. 圖 4-7 除錯問題第三題(速食店點餐)程式編譯畫面例. 39.

(48) 在除錯的過程中,四位學生(編號 1、5、7、8)看到有波浪狀底線標註的 「cbUPF.Checked」、「cbUPD.Checked」就把此兩行刪除,讓程式可以執行之後 再修改,但這些學生因為刪除了這兩行程式碼,最後都沒有成功達到題目的要求。 二位學生(編號 3、編號 4)先註解這兩行有波浪狀底線標註的程式碼,讓程式 可以執行之後再進行修改。遺漏物件按鈕與 if 敘述條件的執行階段錯誤,八位 學生皆能夠解決,大部分學生皆表示解決表單設計的問題比解決程式碼錯誤容易 許多。 綜合以上所觀察到學生的除錯情形,當學生遇到編譯錯誤像是語法錯誤,或 是有波浪狀底線標註的程式碼時,會先試者刪除修改讓程式暫時無編譯錯誤,試 試看執行程式的結果,如以下的行為: 1. 把波浪狀底線標註的程式碼刪除,再復原其刪除的程式碼 2. 剪下、複製程式碼貼在應用程式「記事本」 3. 利用註解的功能把有波浪狀底線標註的程式碼註解 學生認為有錯誤的程式刪除修改、或是複製到「記事本」,或是利用註解的 功能,讓程式暫時無編譯錯誤可以執行程式,再察看程式執行輸出的結果,並從 輸出的結果來編輯修改程式碼,但如果程式輸出的結果不是學生所預期的結果, 學生就會復原剛剛刪除的程式碼,再重新編輯。而學生利用註解的功能或是「記 事本」的功能,當修改程式碼後若程式輸出不是預期的結果,學生就可以察看複 製在記事本上的程式碼或是註解起來的程式碼,察看初始的錯誤程式碼,再重新 思考如何修改程式碼,從以上的行為亦可得知學生較缺乏預完成程式的知識。. 40.

(49) 第五章 結論與建議 本研究旨在探究初學者程式除錯行為,以高職三年級學生兩班 72 人為研究 對象,了解學生程式除錯行為及對除錯態度。研究採用問卷調查法並輔以觀察與 訪談針對學生除錯行為進行分析,期能根據分析結果提出具體建議,以提供教師 參考,研究結論與建議分述如下。. 第一節 結論 根據第四章的結果本研究發現以下三項結論: 壹、 學生僅能倚賴編譯環境呈現的訊息來找到程式錯誤 由問卷調查中發現,學生進行除錯時,利用 VB 除錯工具如「錯誤清單」 、 「波 浪狀底線標註」程式碼來找到程式錯誤。經由觀察學生除錯過程中發現,此兩項 除錯工具是學生最常使用的除錯工具,亦從學生訪談中可得知此兩項除錯工具來 幫助他們找到程式錯誤,反而甚少使用「偵錯工具」來進行除錯,有些學生甚至 不知道如何使用。. 貳、 學生除錯知識不足 多數學生認為自己的除錯技巧不是很好,並認為除錯技巧是靠自己的天份與 經驗累積,而不是老師教授。由問卷調查中發現,學生除錯時都是邊思考邊修改 程式碼,鮮少學生是全部構思好才進行修改。而實際觀察發現,學生除錯時會以 嘗試錯誤的方式修改程式碼,和先修改刪除或是以註解的方式讓程式暫時無編譯 錯誤可以執行,從觀察程式執行的情況再進行修改,其修改方式表示學生缺乏除 錯知識中預完成程式的知識、除錯的方法,和程式錯誤的知識。. 41.

(50) 叁、 除錯成功可以帶給學生很大的成就感 學生通常不太喜歡除錯,覺得除錯很困難且麻煩,但在除錯成功後都會感到 成就感以及非常開心,所以成功除錯對學生學習心態是有正向影響,並且增加學 生的信心。. 第二節 建議 壹、 教學建議 一、加強除錯的教學 學生雖然不喜歡除錯,但在除錯成功後都會感到成就感以及非常開心。從問 卷開放式調查中發現學生認為除錯最困難是不知道錯誤在哪裡、不知道如何修改 錯誤,從研究中發現學生缺乏預完成程式的知識、除錯的方法,和程式錯誤的知 識,如果教師能藉由教學設計加強學生除錯的方法與知識,不僅能夠提升學生的 除錯技能,也能增加學生學習的成就感,亦可以增加他們勇於面對問題進而解決 問題,反而能增加他們學習的正向態度。. 貳、 對未來研究建議 一、增加學生樣本數,重複本研究 由於本研究採兩班做為受試研究對象,以量化統計輔以質性資料的分析,以 個案的方式觀察八位學生除錯過程,學生樣本數較少,本研究只歸納八位學生共 通性的除錯行為,並未深入比較高、中、低成就學生的除錯行為是否有不同,因 此建議未來的研究可以擴大學生的樣本數,並以質性資料如除錯行為觀察表深入 探討進行分析,更能完整分析學生除錯行為。. 二、應依程式設計的概念設計不同類型的除錯題目 本研究的除錯題目僅針對受試學生所學過的課程內容來設計,此範圍涵蓋變 42.

(51) 數、迴圈、判斷、副程式等內容,因除錯題目僅有三題,並非涵蓋所有的程式概 念,未來研究可以增加陣列、遞迴等更具深度的內容,或者考慮設計不同的程式 概念為獨立的除錯題目,研究是否會有不同的除錯行為,以全面瞭解學生除錯的 情形。. 43.

(52) 44.

(53) 參考文獻 中華民國電腦技能基金會(2009) 。Visual Basic 2008 實力養成曁評量。台北市: 碁峰資訊。 尹玫君(1991) 。電腦程式設計能力與認知能力相關之研究。臺南師院學報,24。 李啟龍和俞冠廷(2008) 。Visual Basic 2008 程式設計 16 堂特訓。台北市:文魁 資訊股份有限公司。 李進益(2003)。影響高(中)職資訊科學生學習滿意度因素之研究(未出版之 碩士論文)。國立彰化師範大學,彰化市。 沈碧麗(2005) 。高職電腦教師教學信念之個案研究(未出版之碩士論文) 。國立 臺灣師範大學,臺北市。 張春興(2007)。教育心理學。台北市:東華出版社。 教育部技職司(2010)。職業學校群科課程綱要。臺北:教育部。 教育部國教司(2010)。普通高級中學課程綱要。臺北:教育部。 陳宏煒(2003) 。高中電腦課程實施現況調查(未出版之碩士論文) 。國立臺灣師 範大學,臺北市。 陳明溥(2007)。程式語言課程之教學模式與學習工具對初學者學習成效與學習 態度之影響。師大學報:科學教育類,52,1-21。 Ahmadzadeh, M., Elliman, D., & Higgins, C. (2005). An analysis of patterns of debugging among novice computer science students. SIGCSE Bulletin, 37(3), 84-88. doi: 10.1145/1151954.1067472 Bayman, P., & Mayer, R. E. (1988). Using conceptual models to teach BASIC computer programming. Journal of Educational Psychology, 80(3), 291-298. Bonar, J., & Soloway, E. (1985). Preprogramming knowledge: a major source of misconceptions in novice programmers. Human-Computer Interaction, 1(2), 133-161. 45.

(54) Chmiel, R., & Loui, M. C. (2004). Debugging: from novice to expert. SIGCSE Bulletin, 36(1), 17-21. Decasse, M., & Emde, A. M. (1988). A review of automated debugging systems: knowledge, strategies and techniques. Proceedings of the 10th International Conference on Software engineering, 162-171, Singapore. Ellinger, H. (2003). A nature sense of algorithm: Children should learn computer programming as a basic skill. Retrieved Febuary 13, 2009, from http://hunter.ellinger.org/education/ProgrammingForChildren.htm. Fitzgerald, S., Lewandowski, G., McCauley, R., Murphy, L., Simon, B., Thomas, L., & Zander, C. (2008). Debugging: Finding, Fixing and Flailing, a Multi-Institutional Study of Novice Debuggers. Computer Science Education, 18(2), 93-116. Gal-Ezer, J., & Harel, D. (1998). What (else) should CS educators know? Communications of the ACM, 41(9), 77-84. Garry, L. W., & Marcos, P. S. (2002). A theory of the relationship between cognitive requirements of computer programming languages and programmers' cognitive characteristics. Journal of Information Systems Education, 13(1), 59. Gugerty, L., & Olson, G. (1986). Debugging by skilled and novice programmers. ACM SIGCHI Bulletin, 17(4), 171-174. Hartmann, W., Nievergelt, J., & Reichert, R. (2001). Kara, finite state machines, and the case for programming as part of general education. Proceedings of the 2001 IEEE Symposia on Human-Centric Computing Languages and Environments, 135-141, Stresa, Italy. Hughes, M. C., Jadud, M. C., & Rodrigo, M. M. T. (2010). String formatting considered harmful for novice programmers. Computer Science Education, 20(3), 201-228. doi: 10.1080/08993408.2010.507335 46.

參考文獻

相關文件

Based on a sample of 98 sixth-grade students from a primary school in Changhua County, this study applies the K-means cluster analysis to explore the index factors of the

In order to serve the fore-mentioned purpose, this research is based on a related questionnaire that extracts 525 high school students as the object for the study, and carries out

This research tries to understand the current situation of supplementary education of junior high school in Taichung City and investigate the learning factors and

The objective of this research was to investigate the major factors for choose Vocational College from Taiwanese Vocational High School students, and to identify any differences

The purpose of the study aims at discussing the important factors of affecting junior high school students in aboriginal areas in terms of learning mathematics.. The research

It aims to understand the authentic English learning adjustment of junior high school students in remote area and to compare the difference between the family background and

In this study, Technology Acceptance Model (TAM 2) is employed to explore the relationships among the constructs of the model and website usage behaviors to investigate

The purpose of this study was to investigate the current situation of multicultural literacy and intercultural sensitivity of junior high school teachers in Taichung