李夏君
編寫程序和調試程序是計算機專業(yè)學生必須掌握的兩種能力。然而,大部分學生認為調試程序比編寫程序更為困難,即使經過一個學期時間的學習,能力沒有提高,對調試程序不感興趣。另一方面,作為計算機專業(yè)程序的教師,如果在課程前期沒有夯實調試程序的基礎,沒有培養(yǎng)好調試程序的興趣,到了課程后期,講課會事倍功半,無法順利進展下去。筆者是一位計算機專業(yè)傳授程序課的教師,在第一線工作多年,下文筆者從實際出發(fā),通過對編程語言C#、中職學生特征和調試程序現狀的分析,使用培養(yǎng)興趣、明確規(guī)范、將錯誤分類和營造氣氛、潛移默化的方法,以提高中職計算機專業(yè)學生的程序調試能力。
一、編程語言的特點
C#是微軟公司發(fā)布的一種面向對象的、運行于NET Framework 之上的高級程序語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性,例如沒有宏以及不允許多重繼承。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。為了讓學生進入編程世界,熟悉編程的環(huán)境,我們采用C#語言來進行教學。教學目的是通過C#的學習,讓學生掌握程序編寫和調試的基本步驟,提高學生編寫和調試程序的能力。
二、中職學生特征
中職學生來自全省各個地區(qū)的初中應屆或往屆畢業(yè)生,學生生理特征是處于青春期,情緒不穩(wěn)定,情感波動大。學習特征是知識基礎薄弱,邏輯思維弱,缺乏學習動機,沒有系統(tǒng)的學習習慣和學習方法。人際特征是各自為政,團隊合作意愿不強,缺乏團隊合作精神。能力特征是解決問題意愿不高,解決問題能力不足。
三、計算機學生調試程序現狀
1.缺乏調試程序的興趣,采用應付了事的敷衍態(tài)度
由于數學和英語基礎不扎實,學生對調試程序不感興趣,具體表現在:不愿意思考,作業(yè)直接抄寫教案上的代碼;程序調試遇到問題,不主動解決,先尋找老師和同學幫忙。這樣的后果是:無法吃透知識,甚至連數據庫、表、和基本的變量名稱沒有改為自己所創(chuàng)建的對象名稱,知識只是重復的操作,而無法形成有效的積累。同時,由于大量抄襲老師的代碼,在調試過程中容易出現這類名稱轉換錯誤。這樣不但打擊學生學習的興趣,無助于學生的學習,也占用老師上課時間,增加老師上課的勞動量。根據筆者的調查問卷和平時的課堂觀察,這樣的錯誤占40%。
2.沒有良好的程序調試習慣
例如,沒有使用對齊和縮進,體現程序邏輯結構和層次;對語句和函數,不會使用注釋,這樣作者意圖不明;不會用斷點;變量命名只求簡單,忽略意義,如a=b+c和sum=score_b+score_c相比,明顯后者比前者更能顧名思義;遇到問題,沒有由大化小,把程序分為一個個函數來調試,這樣一團亂麻,難以解決。這種情況發(fā)生的前提是課時緊張,同時大部分教師缺乏一線工作經驗,課堂重在知識傳授和技能訓練,而忽略調試規(guī)范的引入和強化。學生沒有規(guī)范意識,沒有合理的格式,代碼容易打錯而不容易發(fā)現。由于沒有良好的編程習慣而出現的錯誤,占全部錯誤的20~30%。
3.獨立完成和解決問題的能力不強
由于存在懶惰和畏難的情緒,學生在有問題的時候,除了詢問教師和同學,沒有查書或者上網查資料習慣。導致教師課堂上一人要面對數十人學生,既要講課又要輔導,力不從心。由于時間緊張和心力交瘁,教師無法做好調試錯誤的整理、歸納和分類,學生一而再,再而三在錯誤代碼的漩渦打轉,無法突破,最后不得不放棄學習。
四、解決問題思路和方法分析
眾所周知,調試程序比編寫程序難度還要大。面對錯綜復雜的代碼,優(yōu)秀程序員要善于從中找到錯誤并改正。對教學而言,調試程序不但讓學生掌握編程知識和技能,還可以培養(yǎng)學生的觀察力和專注力,提高學生解決問題的能力。教師可以從學生和課程特點來鍛煉學生調試程序的能力。
1.興趣是最好的老師
我國教育學家孔子曾經說過,“知之者不如好之者,好之者不如樂之者”。當我們對一門科目產生了興趣之后,自然會學得有動力。根據調查,學生對網上購物非常感興趣,經常利用手機或電腦登陸網上商城購物。因此,課程第一節(jié)課,筆者以一個自己開發(fā)網上商城網站為例子,給學生展示網上商城貨物的增加、刪除和修改,意在培養(yǎng)學生興趣。設置程序改錯積分卡,積分高者可以免考,促使學習從量變到質變。設置程序糾錯問答環(huán)節(jié),以游戲方式讓學生體會學習的樂趣。
2.講課前期強調編程規(guī)范,打好基礎
正所謂“磨刀不誤砍柴工”,良好的習慣和規(guī)范有利于我們長期的學習。因此,以下是筆者歸納出來必須要傳授的三類編程規(guī)范:
第一類規(guī)范:環(huán)境設置,包括粘貼時調整縮進、將類型的左大括號置于新行、將方法的左大括號置于新行、將匿名方法的左大括號置于新行、將控制塊的左大括號置于新行、將“else”置于新行、將“catch”置于新行、將“finally”置于新行、復選框去掉。
第二類規(guī)范:命名規(guī)范。要注意通用性,同時變量命名,包括全局變量、靜態(tài)變量、常量、函數和控件,還有表字段和Web文件目錄結構命名。變量名必須以字母開頭,只能由字母、數字和下劃線組成,而不能包含空格、標點符號、運算符等其它符號;不能與C#中的關鍵字名稱相同;不能與C#中的庫函數名稱相同。
第三類規(guī)范:注釋規(guī)范。重點是(1)在文件的頭部標明文件的作者,完成時間,它所完成的主要功能。(2)程序有過改動后,要寫上修改人、時間、簡單原因說明列表。
3.將常見的錯誤歸納分類,進行講解
第一種分類方法:將錯誤產生結果展示,可以分為:數據庫鏈接出錯、變量賦值有錯、sql語句有錯、公共標簽有錯漏等,從結果回溯原因,引起學生的反思。
第二種分類方法:將錯誤產生原因展示,可以分為:標點符號未配對和錯漏、變量名與值沒有配對、命令執(zhí)行場合不對,從行為導出結果,直截了當。
無論是哪種方法,目的都是通過練習提高學生調試程序能力,增強學生學習信心,減輕學生學習畏難心理。
4.營造氣氛,潛移默化,讓學生從適應調試到愛上調試
編寫程序是世界發(fā)展的趨勢,連美國總統(tǒng)奧巴馬都曾宣稱世界上的所有人都應該學習編程,而他自己以身作則,成為美國首位編寫計算機程序的總統(tǒng)?;ヂ?lián)網發(fā)展至今,已經在各行各業(yè)發(fā)揮著作用。未來世界需要大量編程人員,同時,編程也成為未來人類的基本能力之一。老師在課堂上慢慢滲透,讓學生慢慢體會生活中的編程。同時,改變教學方式,教學流程不單單是老師—學生的單線操作,可以讓學習好的學生擔任老師小助手,幫助和帶動同學進行學習。這樣,減輕老師負擔之余,還可以增強學生的責任感和團伙合作能力。
五、總結
只要編程,程序難免有錯,就需要去調試。調試的時間有時數倍于程序編寫的時間。程序調試是一個有序的過程,需要很多技巧。只要掌握調試技巧,最終可以使程序正常運行,得到正確的結果。
責任編輯 何麗華