亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        從錯(cuò)誤中學(xué)習(xí):計(jì)算機(jī)程序設(shè)計(jì)課程改革實(shí)踐

        2018-01-27 05:58:53
        計(jì)算機(jī)教育 2017年12期
        關(guān)鍵詞:程序設(shè)計(jì)編程錯(cuò)誤

        陳 娟

        (國防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南長(zhǎng)沙410073)

        1 編程能力培養(yǎng)需要“錯(cuò)誤”

        編程能力的培養(yǎng)一直被認(rèn)為是程序設(shè)計(jì)課程的重要內(nèi)容之一。2013年底,美國前總統(tǒng)奧巴馬呼吁每個(gè)美國人都要學(xué)習(xí)編程,為此還專門錄制了一段視頻,呼吁全民寫代碼,在全美引起了不小的反響[1]。奧巴馬的講話中提到“學(xué)習(xí)編程技能不僅對(duì)你的未來有重要的意義,它對(duì)于美國國家的未來也非常重要”。2013年12月,美國科技界最大的新聞之一是code.org發(fā)起的“編程一小時(shí)”活動(dòng)[2]??梢?,美國政府及社會(huì)各界對(duì)程序設(shè)計(jì)的重視程度非常高,關(guān)注范圍也非常廣。

        我國對(duì)程序設(shè)計(jì)課程的教學(xué)改革也十分重視,十分關(guān)注學(xué)生實(shí)際編程能力的提高,并將此作為課程改革的重要目標(biāo)之一,且目前已經(jīng)取得了不錯(cuò)的效果。盡管如此,程序設(shè)計(jì)課程的實(shí)踐能力培養(yǎng)仍然會(huì)遇到諸多新問題和新挑戰(zhàn)。其中,學(xué)生在編程過程中的自我查錯(cuò)與自我糾錯(cuò)能力、教師對(duì)各種錯(cuò)誤案例的分類與整理能力、教學(xué)活動(dòng)中對(duì)于錯(cuò)誤案例的使用和作用發(fā)揮程度等,都從很大程度上影響了學(xué)生編程能力的進(jìn)一步提高。

        2014年,ACM計(jì)算機(jī)教育杰出貢獻(xiàn)獎(jiǎng)獲得者RobertM.Panoff博士在SIGCSE2014大會(huì)所作的主題報(bào)告中提出一個(gè)鮮明觀點(diǎn):“Right Answer=WrongAnswer+Corrections”(正確答案=錯(cuò)誤答案+更正)[3]。由此可以看出,錯(cuò)誤對(duì)于找到正確答案的重要性。該觀點(diǎn)在教材方面也有相關(guān)書籍可以參考,如《C陷阱與缺陷》[4]《品悟C——拋棄C程序設(shè)計(jì)中的謬誤與惡習(xí)》[5]等。《C陷阱與缺陷》一書從詞法分析、語法語義、連接、庫函數(shù)、預(yù)處理器、可移植性缺陷等方面分析了C語言編程中可能遇到的問題,最后給出一些具有實(shí)用價(jià)值的建議。

        在程序設(shè)計(jì)教學(xué)中,雖然我們已經(jīng)意識(shí)到編程錯(cuò)誤的重要性,但是仍然缺乏系統(tǒng)的分析與研究以及教學(xué)實(shí)踐,如錯(cuò)誤產(chǎn)生的理論基礎(chǔ)是什么、錯(cuò)誤的產(chǎn)生、錯(cuò)誤的分類與更正方法、錯(cuò)誤的避免方法、錯(cuò)誤案例的搜集與分類方法、錯(cuò)誤與編程能力培養(yǎng)之間的關(guān)系等。研究這些問題,有助于提高程序設(shè)計(jì)課程的教學(xué)理論水平以及開展編程實(shí)踐活動(dòng)的水平,有助于真正提高學(xué)生的編程能力。

        2 國內(nèi)外相關(guān)教學(xué)改革

        2.1 國外相關(guān)教學(xué)改革現(xiàn)狀

        國際上,計(jì)算機(jī)教育領(lǐng)域的廣大教育研究者長(zhǎng)期關(guān)注著程序設(shè)計(jì)中的編程錯(cuò)誤。20世紀(jì)70年代就出現(xiàn)了關(guān)于編程錯(cuò)誤的相關(guān)研究。文獻(xiàn)[6]對(duì)程序員所犯的錯(cuò)誤給出了系統(tǒng)化的描述,通過對(duì)42名編程員的數(shù)據(jù)搜集,洞悉各種編程錯(cuò)誤的關(guān)聯(lián)及重要性,其研究中所關(guān)心的問題包括程序員易犯的錯(cuò)誤類型、如何找到并更正錯(cuò)誤、不同的編程語言之間是否有差異、編程經(jīng)驗(yàn)對(duì)程序員犯錯(cuò)有什么影響等。

        ACM計(jì)算機(jī)科學(xué)教育大會(huì)是ACMSIGCSE的旗艦會(huì)議,是計(jì)算機(jī)教育領(lǐng)域的國際頂級(jí)會(huì)議。以SIGCSE2017為例,就有多項(xiàng)與幫助學(xué)生識(shí)別編程錯(cuò)誤相關(guān)的教學(xué)研究,如肯特州立大學(xué)開發(fā)了一個(gè)工具[7]幫助C語言的初學(xué)者學(xué)習(xí)編程,對(duì)于錯(cuò)誤的類別進(jìn)行了區(qū)分,包括編譯器能夠識(shí)別的語法錯(cuò)誤和編譯器不能識(shí)別的語法錯(cuò)誤。研究者主要關(guān)心以下3個(gè)問題:對(duì)于學(xué)生來說,什么錯(cuò)誤是最難定位的、學(xué)生需要花多長(zhǎng)時(shí)間找到并修正錯(cuò)誤以及學(xué)生修正錯(cuò)誤的效果如何。為了回答上述問題,研究者收集了以下數(shù)據(jù):識(shí)別出的和遺漏的錯(cuò)誤類型、定位錯(cuò)誤所需要的時(shí)間、學(xué)生是否具備將錯(cuò)誤與錯(cuò)誤類型相關(guān)聯(lián)的能力以及修正錯(cuò)誤所花費(fèi)的時(shí)間。

        美國艾柏林基督大學(xué)的RaymondPettit等人[8]改善了編譯器錯(cuò)誤消息的準(zhǔn)確度,使得學(xué)生更容易理解錯(cuò)誤,并且更有效地更正錯(cuò)誤;同時(shí),他們關(guān)注學(xué)生連續(xù)提交相同編譯錯(cuò)誤的次數(shù)是否降低,希望以此證明他們方法的有效性。

        2005年,英國肯特大學(xué)的MatthewC.Jadud[9]在面向?qū)ο缶幊痰膶?dǎo)論課中,關(guān)注了學(xué)生使用BlueJ編程環(huán)境開發(fā)Java語言時(shí)的編譯出錯(cuò)情況,并給出最易犯的錯(cuò)誤列表,用以改進(jìn)之后版本的BlueJ開發(fā)環(huán)境。他們發(fā)現(xiàn),在出現(xiàn)的1926個(gè)錯(cuò)誤中,共會(huì)遇到42個(gè)不同的錯(cuò)誤,其中5個(gè)錯(cuò)誤的出錯(cuò)次數(shù)高達(dá)58%。

        日本九州大學(xué)信息科學(xué)與電子工程系開發(fā)了一個(gè)教學(xué)系統(tǒng),本科生在學(xué)習(xí)C語言時(shí)可以用它定位錯(cuò)誤并找到解決方案。該教學(xué)系統(tǒng)有兩類日志:C語言編程錯(cuò)誤日志和BookLooper閱讀日志。一旦錯(cuò)誤發(fā)生,系統(tǒng)將分析BookLooper中最常被訪問的頁來提供相關(guān)材料;系統(tǒng)會(huì)為教師生成一份反饋,以幫助教師對(duì)材料進(jìn)行補(bǔ)充。研究者對(duì)錯(cuò)誤進(jìn)行分類,將常見錯(cuò)誤分成了26類,類別信息也連同錯(cuò)誤日志一起被增加。

        調(diào)錯(cuò)系統(tǒng)與錯(cuò)誤定位緊密相關(guān),文獻(xiàn)[10]中提出教學(xué)生debugging的教學(xué)方法。

        2.2 國內(nèi)相關(guān)教學(xué)改革現(xiàn)狀

        近幾年,國內(nèi)針對(duì)程序設(shè)計(jì)課程也展開了多種多樣的改革,如將基于翻轉(zhuǎn)課堂的創(chuàng)客式課堂教學(xué)模式應(yīng)用在程序設(shè)計(jì)課程群中,提高學(xué)生的學(xué)習(xí)能力和創(chuàng)新能力[11];通過將任務(wù)項(xiàng)目驅(qū)動(dòng)的教學(xué)模式引入程序設(shè)計(jì)課程教學(xué)中,提出以培養(yǎng)學(xué)生計(jì)算思維能力和程序設(shè)計(jì)能力為目標(biāo)的教改思路與方法[12];對(duì)高級(jí)語言程序設(shè)計(jì)課程進(jìn)行慕課建設(shè)[13-14]等。

        3 編程錯(cuò)誤的產(chǎn)生與編程能力培養(yǎng)實(shí)踐

        3.1 編程錯(cuò)誤的產(chǎn)生與避免

        在編程過程中,無論是邏輯錯(cuò)誤,還是運(yùn)行錯(cuò)誤,又或者是概念理解錯(cuò)誤,都與人類認(rèn)知密切相關(guān)。根據(jù)人類錯(cuò)誤理論[15],人類認(rèn)知過程分為3個(gè)階段:planningstage(計(jì)劃階段)、storage stage(存儲(chǔ)階段)和executionstage(執(zhí)行階段)。錯(cuò)誤根據(jù)人類認(rèn)知過程而分為3類:slips(鍵入錯(cuò)誤)、lapses(判斷錯(cuò)誤)和mistakes(錯(cuò)誤)。鍵入錯(cuò)誤通常發(fā)生在執(zhí)行階段,是由于不正確地執(zhí)行一個(gè)預(yù)定義動(dòng)作而產(chǎn)生的;判斷錯(cuò)誤通常發(fā)生在存儲(chǔ)階段,是由于疏忽一個(gè)已存儲(chǔ)的預(yù)定義動(dòng)作而產(chǎn)生的;發(fā)生在執(zhí)行階段的mistakes(錯(cuò)誤),是指設(shè)定的計(jì)劃并不適合于達(dá)到期望的目標(biāo)。

        C語言程序設(shè)計(jì)學(xué)習(xí)過程中的錯(cuò)誤有多種分類方法,常見的錯(cuò)誤分類方法是將編程錯(cuò)誤分為3類:編譯錯(cuò)誤、邏輯錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤。編譯錯(cuò)誤是指違反構(gòu)成語言規(guī)則的錯(cuò)誤,通常包括未聲明變量或函數(shù)錯(cuò)誤、變量類型錯(cuò)誤、標(biāo)點(diǎn)及符號(hào)錯(cuò)誤等,如缺少分號(hào)、缺少左(右)花括號(hào)、左右括號(hào)不匹配等;由于編譯錯(cuò)誤會(huì)妨礙程序執(zhí)行,因此所有的編譯錯(cuò)誤都必須在程序運(yùn)行之前被更正。邏輯錯(cuò)誤是指運(yùn)行結(jié)果不是期望的結(jié)果,但是也不會(huì)報(bào)錯(cuò)的錯(cuò)誤,常見的邏輯錯(cuò)誤包括未初始化變量、用賦值號(hào)代替邏輯相等符號(hào)進(jìn)行邏輯判斷、switch語句中缺少break語句、在不需要使用分號(hào)的地方使用分號(hào)等。運(yùn)行時(shí)錯(cuò)誤是指在程序運(yùn)行時(shí)發(fā)生的錯(cuò)誤,常見的運(yùn)行時(shí)錯(cuò)誤包括數(shù)組邊界錯(cuò)誤、內(nèi)存溢出、用零做除數(shù)、未初始化指針錯(cuò)誤、返回對(duì)局部?jī)?nèi)存的引用等。

        我們根據(jù)問題求解過程的大致先后順序,將錯(cuò)誤產(chǎn)生的原因歸為以下5類:①不進(jìn)行自頂向下的問題分解,對(duì)于復(fù)雜問題直接進(jìn)行代碼編寫;②代碼的模塊化設(shè)計(jì)不佳,模塊之間的接口不清晰;③不遵循命名規(guī)則和通用的編程風(fēng)格;④代碼測(cè)試不完善;⑤不進(jìn)行調(diào)試或存在不良調(diào)試習(xí)慣。我們分別對(duì)每類錯(cuò)誤進(jìn)行解釋,并給出避免方法。

        第1類錯(cuò)誤是由于沒有進(jìn)行自頂向下的問題分解所產(chǎn)生的。對(duì)此,我們采取的避免措施包括以下3個(gè)方面:①要求學(xué)生學(xué)會(huì)自頂向下的問題分解方法,目的是建立“自頂向下、逐步求精”的思維方式,自頂向下的設(shè)計(jì)過程包括系統(tǒng)概要設(shè)計(jì)和子系統(tǒng)的逐步精化;②只有完成所有子系統(tǒng)的設(shè)計(jì)時(shí),才能開始具體的編碼實(shí)現(xiàn)工作,在此之前只能進(jìn)行子系統(tǒng)的功能設(shè)計(jì);③在編寫具體代碼時(shí),要求先寫主程序,主程序由系統(tǒng)概要設(shè)計(jì)時(shí)確定的所有功能子程序所構(gòu)成,通常調(diào)用了各個(gè)功能子程序,編寫完主程序之后再依據(jù)每個(gè)子程序的功能進(jìn)行代碼編寫。

        第2類錯(cuò)誤是由于代碼的模塊化設(shè)計(jì)結(jié)構(gòu)不清晰所造成的。避免措施包括:①學(xué)會(huì)從邏輯意義上進(jìn)行模塊化設(shè)計(jì),而非簡(jiǎn)單物理意義上的代碼分割;②必須學(xué)會(huì)定義和使用函數(shù),定義一個(gè)函數(shù)包括函數(shù)的輸入?yún)?shù)和返回值;③編寫盡可能簡(jiǎn)單的函數(shù),每個(gè)函數(shù)只完成一個(gè)功能,避免出現(xiàn)很長(zhǎng)的函數(shù),因?yàn)閷?duì)于初學(xué)者而言,適當(dāng)限定每個(gè)函數(shù)的長(zhǎng)度有利于養(yǎng)成良好的編程習(xí)慣;④為了盡量避免或減少模塊銜接部分產(chǎn)生的錯(cuò)誤,要重點(diǎn)注意不同模塊訪問公共數(shù)據(jù)結(jié)構(gòu)時(shí)可能出現(xiàn)的干擾,以及不同模塊之間使用相同局部變量名所引發(fā)的沖突和錯(cuò)誤。

        第3類錯(cuò)誤是由于命名規(guī)則和編程風(fēng)格不好所導(dǎo)致的。避免措施包括:①變量命名要有意義,且命名風(fēng)格盡量保持一致;②注意變量的命名長(zhǎng)度;③編碼盡量規(guī)范,注意縮進(jìn);④養(yǎng)成編寫注釋的習(xí)慣,以下位置一般需編寫注釋,如整個(gè)程序的開始、關(guān)鍵變量的含義、每個(gè)子程序模塊的功能描述和輸入輸出參數(shù)說明;⑤編寫程序的說明文檔,如標(biāo)注整個(gè)程序的文件結(jié)構(gòu)、版本及日志文件、主要程序功能、輸入數(shù)據(jù)集構(gòu)成、可能的輸出樣例等。

        第4類錯(cuò)誤是由于代碼測(cè)試不完整所造成的。這類錯(cuò)誤可以通過單元測(cè)試和集成測(cè)試盡可能予以避免。①單元測(cè)試是指編寫足夠多的單元測(cè)試用例,對(duì)每個(gè)模塊進(jìn)行功能性和完整性測(cè)試;單元測(cè)試要注意測(cè)試用例的完整性,盡可能覆蓋所有的執(zhí)行分支,數(shù)據(jù)要覆蓋所有可能的范圍,如正數(shù)、負(fù)數(shù)、零等;特殊元素的測(cè)試,如零;注意數(shù)組邊界情況的測(cè)試、指針訪問空間的有效性、申請(qǐng)的臨時(shí)空間是否及時(shí)回收等。②集成測(cè)試是指對(duì)組裝在一起的多個(gè)模塊進(jìn)行測(cè)試,常用的集成測(cè)試方法包括非漸增式測(cè)試和漸增式測(cè)試。

        5類錯(cuò)誤的分類及避免方法如圖1所示。

        3.2 基于錯(cuò)誤案例的編程能力培養(yǎng)

        3.2 .1錯(cuò)誤案例搜集與分類

        錯(cuò)誤案例的搜集與分類須分別從學(xué)生、教師和教輔的角度進(jìn)行考慮。

        1)如何指導(dǎo)學(xué)生進(jìn)行錯(cuò)誤的搜集和分類?

        (1)要求學(xué)生對(duì)自己在課堂上出現(xiàn)的疑問、犯的錯(cuò)誤以及教師的解答進(jìn)行記錄,并每周匯總一次給教輔,同時(shí)將出現(xiàn)的錯(cuò)誤與可能的知識(shí)點(diǎn)進(jìn)行關(guān)聯(lián),在教師的指導(dǎo)下進(jìn)行關(guān)聯(lián)式學(xué)習(xí),避免以后犯類似錯(cuò)誤。

        (2)要求學(xué)生對(duì)教師在課堂上的提問及展開的討論進(jìn)行記錄和整理,包括提問的內(nèi)容、相關(guān)代碼、學(xué)生的回答、出現(xiàn)的錯(cuò)誤、調(diào)試方法、調(diào)試演示過程、相關(guān)調(diào)試技巧和正確解答。

        圖15 類編程錯(cuò)誤的避免手段

        圖2 編程錯(cuò)誤與編程能力培養(yǎng)之間的關(guān)系

        (3)要求學(xué)生對(duì)習(xí)題課上的疑問和解決方案進(jìn)行記錄和整理,包括所用機(jī)器的結(jié)構(gòu)、體系結(jié)構(gòu)、編程環(huán)境、調(diào)試選項(xiàng)等。

        (4)對(duì)課后作業(yè)中出現(xiàn)的各種錯(cuò)誤進(jìn)行記錄和整理,還包括開展的Project項(xiàng)目中出現(xiàn)的各種錯(cuò)誤、不當(dāng)?shù)娜罩疚臋n記錄、bug調(diào)試錯(cuò)誤記錄等。

        2)教師如何進(jìn)行錯(cuò)誤的搜集和分類?

        ③應(yīng)堅(jiān)持骨干工程與配套工程相匹配。骨干水利工程的良性運(yùn)行,離不開配套工程的輔佐,田間配套工程是農(nóng)田灌溉的“最后一公里”。應(yīng)加強(qiáng)大中型灌區(qū)田間配套工程的建設(shè),確保與骨干工程建設(shè)的同步和匹配,以保證工程整體效益的充分發(fā)揮。

        (1)對(duì)錯(cuò)誤問題的設(shè)計(jì)及課堂提問情況進(jìn)行記錄。教師根據(jù)記錄的錯(cuò)誤日志文件,進(jìn)行錯(cuò)誤案例設(shè)計(jì),并將這些錯(cuò)誤案例穿插在課堂講解中,提問并記錄學(xué)生解答情況,以檢測(cè)教學(xué)效果。

        (2)對(duì)課堂上學(xué)生的提問以及回答情況進(jìn)行記錄,同時(shí)將典型錯(cuò)誤與相關(guān)知識(shí)點(diǎn)關(guān)聯(lián),采用聯(lián)想式教學(xué)衍生出與此類似的新問題。

        (3)對(duì)在線答疑時(shí)學(xué)生提問及回答情況進(jìn)行記錄。在線答疑與課堂提問有所不同,課堂上所提出的問題中,有一部分是學(xué)生在學(xué)習(xí)新概念時(shí)沒能理解的問題,這類問題通常比較直接;在線答疑的問題有時(shí)并不直接,通常是學(xué)生經(jīng)過反復(fù)思考或長(zhǎng)時(shí)間編程、調(diào)試仍然未能解決的問題,這往往也是比較典型的錯(cuò)誤,還有可能涉及其他相關(guān)知識(shí),對(duì)這類問題的記錄要注意保留學(xué)生的出錯(cuò)“現(xiàn)場(chǎng)”,同時(shí)注意跟蹤學(xué)生今后是否還會(huì)犯類似的錯(cuò)誤。

        3)教輔如何輔助教師進(jìn)行錯(cuò)誤的搜集和分類?

        (1)教輔協(xié)助教師對(duì)提交的錯(cuò)誤進(jìn)行分類和整理,包括按照章節(jié)知識(shí)點(diǎn)進(jìn)行錯(cuò)誤整理,以便教師在下一次教學(xué)中設(shè)計(jì)新的錯(cuò)誤案例;對(duì)學(xué)生所犯錯(cuò)誤的次數(shù)和頻率進(jìn)行分類,幫助教師設(shè)計(jì)錯(cuò)誤案例。

        (2)教輔協(xié)助教師對(duì)學(xué)生的學(xué)習(xí)程度進(jìn)行分級(jí),并對(duì)不同程度的學(xué)生錯(cuò)誤進(jìn)行歸類,及時(shí)發(fā)布給學(xué)生,同時(shí)選擇性地進(jìn)行課堂講解。

        3.2 .2編程錯(cuò)誤分析與編程能力培養(yǎng)

        根據(jù)解決問題的過程步驟,我們將編程能力分為4級(jí),從上到下依次是對(duì)一個(gè)問題的抽象能力、進(jìn)行模塊化分解的能力、進(jìn)行子模塊功能定義的能力和實(shí)際編寫代碼的能力。如圖2所示,我們給出這4級(jí)編程能力與編程錯(cuò)誤之間的關(guān)聯(lián)。其中,右邊一列代表5類錯(cuò)誤,和圖1中的5類錯(cuò)誤相吻合;雙向箭頭代表這5類錯(cuò)誤與4級(jí)編程能力之間的關(guān)聯(lián)性;左邊一列列出4級(jí)編程能力,用單項(xiàng)箭頭表明問題求解過程中的時(shí)間段。

        越往上層的編程能力的缺失或不足,所犯的錯(cuò)誤越難糾正或者糾正的代價(jià)越大,因?yàn)檫@種錯(cuò)誤對(duì)于代碼的影響來說可能是根本的、致命的。這類編程能力的培養(yǎng)有時(shí)需要學(xué)習(xí)其他相關(guān)計(jì)算機(jī)課程,如數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)等,以培養(yǎng)學(xué)生的問題抽象能力和問題分解能力。目前的程序設(shè)計(jì)課程往往比較缺乏對(duì)問題分解能力的培養(yǎng)和鍛煉,極大地影響了學(xué)生編寫大型程序,且使得學(xué)生無法高效完成代碼的合作編寫。

        越往下層的編程能力的缺失或不足,使得所犯的錯(cuò)誤相對(duì)比較集中和明確,容易識(shí)別和糾正,這類錯(cuò)誤通常與編程習(xí)慣的養(yǎng)成有關(guān),規(guī)范性的東西較多,在教學(xué)過程中比較容易掌控。對(duì)于這類錯(cuò)誤,目前教學(xué)中比較注重命名規(guī)則和編程風(fēng)格的規(guī)范以及調(diào)試方法,但是往往容易忽略調(diào)試習(xí)慣的養(yǎng)成、高級(jí)調(diào)試技巧的掌握以及代碼測(cè)試的作用,這也影響學(xué)生自我查錯(cuò)能力的鍛煉以及編寫大型軟件時(shí)提高全面代碼測(cè)試能力。

        4 實(shí)踐效果及反饋

        通過兩個(gè)學(xué)期的實(shí)踐,學(xué)生普遍反映自己編程能力的提高比較明顯,具體體現(xiàn)在3方面:①問題分解能力得到提高,掌握了基本的問題分解方法和技巧,學(xué)會(huì)了如何將一個(gè)問題劃分為多個(gè)子問題;②子模塊功能定義能力提高,能夠從邏輯意義上將一個(gè)問題劃分成多個(gè)子模塊,并用函數(shù)定義每一個(gè)子模塊的功能,清楚函數(shù)的參數(shù)設(shè)置方法及參數(shù)作用域,學(xué)會(huì)了如何調(diào)用函數(shù)進(jìn)行復(fù)雜問題求解;③程序查錯(cuò)及調(diào)試能力提高,絕大部分學(xué)生可以根據(jù)基本的編譯錯(cuò)誤提示快速糾正語法錯(cuò)誤,大部分學(xué)生能夠通過調(diào)試、跟蹤代碼的執(zhí)行過程查找語義錯(cuò)誤,部分學(xué)生掌握了通過斷點(diǎn)設(shè)置方法和條件斷點(diǎn)的設(shè)置查找運(yùn)行時(shí)錯(cuò)誤。

        5 結(jié)語

        編程能力培養(yǎng)離不開編程錯(cuò)誤案例的分析與避免方法,對(duì)此國內(nèi)外程序設(shè)計(jì)課程教學(xué)研究者均有認(rèn)同,并在錯(cuò)誤識(shí)別、錯(cuò)誤定位與分析、輔助工具等方面作出大量研究。編程錯(cuò)誤產(chǎn)生的原因多種多樣,我們從問題求解過程的角度發(fā)現(xiàn)錯(cuò)誤產(chǎn)生的原因主要有5類,并將這5類編程錯(cuò)誤與編程能力之間進(jìn)行了關(guān)聯(lián),給出了一些錯(cuò)誤避免方法和建議。

        [1]優(yōu)酷.奧巴馬呼吁每個(gè)美國人都學(xué)習(xí)編程[EB/OL].[2017-08-02].http://v.youku.com/v_show/id_XNjQ2MzAxODky.html.

        [2]編程一小時(shí)[EB/OL].[2017-08-02].https://code.org/learn.

        [3]PanoffRM.Computationalthinkingforall:Thepowerandtheperil[C]//Proceedingsofthe45thAC MtechnicalSymposiumon ComputerScienceEducation(SIGCSE'14).NewYork:ACM,2014:1-2.

        [4]凱尼格.C陷阱與缺陷[M].高巍,譯.北京:人民郵電出版社,2008.

        [5]薛非.品悟C:拋棄C程序設(shè)計(jì)中的謬誤與惡習(xí)[M].北京:清華大學(xué)出版社,2012.

        [6] Youngs E A. Human errors in programming[J]. International Journal of Man-Machine Studies, 1974, 6(3): 361-376.

        [7] Alqadi B S, Maletic J I. An empirical study of debugging patterns among novices programmers[C]//Proceedings of the 2017 ACMSIGCSE Technical Symposium on Computer Science Education(SIGCSE’17). New York: ACM, 2017: 15-20.

        [8] Pettit R, Homer J, Gee R. Do enhanced compiler error messages help students: Results inconclusive[C]//Proceedings of the 2017ACM SIGCSE Technical Symposium on Computer Science Education(SIGCSE’17). New York: ACM, 2017: 465-470.

        [9] Jadud M C. A first look at novice compilation behavior using blueJ[J]. Computer Science Education, 2005, 15(1): 25-40.

        [10] Lewis C M, Gregg C. How do you teach debugging: Resources and strategies for better student debugging[C]//Proceedings of the2016 ACM SIGCSE Technical Symposium on Computer Science Education(SIGCSE’16). New York: ACM, 2016: 706.

        [11] 陳晉音, 俞山青, 毛國紅, 等. 程序設(shè)計(jì)課程群的創(chuàng)客式課堂教學(xué)模式探究[J]. 計(jì)算機(jī)教育,2017(1): 80-83.

        [12] 郭銀章, 王麗芳. 基于項(xiàng)目任務(wù)驅(qū)動(dòng)的C語言程序設(shè)計(jì)課程教學(xué)改革與實(shí)踐[J]. 計(jì)算機(jī)教育, 2017(2): 41-44.

        [13] 陳娟, 張長(zhǎng)海, 鄧春燕, 等. 高級(jí)語言程序設(shè)計(jì)課程的慕課建設(shè)與思考[J]. 計(jì)算機(jī)教育, 2017(1): 9-13.

        [14] 鄭莉. “C++語言程序設(shè)計(jì)”慕課的設(shè)計(jì)[J]. 計(jì)算機(jī)教育, 2015(23): 120-122.

        [15] Reason J. Human error[M]. Cambridge: Cambridge University Press, 1990: 1-296.

        猜你喜歡
        程序設(shè)計(jì)編程錯(cuò)誤
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        在錯(cuò)誤中成長(zhǎng)
        基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
        從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
        電子制作(2019年9期)2019-05-30 09:42:04
        高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
        PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
        不犯同樣錯(cuò)誤
        国产在线一区二区三区av| 色综合久久网| 午夜精品久久久久久久无码| 亚洲色无码国产精品网站可下载| 国产成人+亚洲欧洲+综合| 午夜国产精品视频免费看电影| 免费在线观看草逼视频| 亚洲二区三区在线播放| 精品老熟女一区二区三区在线| 日本精品一区二区三区福利视频| 三年片大全在线观看免费观看大全| 成 人 网 站 免 费 av| 国产精品无码mv在线观看| 性色国产成人久久久精品二区三区| 国产黄色av一区二区三区| 欧美牲交a欧美牲交aⅴ免费真| 国产成人综合久久精品免费| 在线你懂| 精品国产一品二品三品| 精品嫩模福利一区二区蜜臀| 麻豆亚洲av熟女国产一区二| 熟女人妻在线视频| 在线国产视频精品视频| 国产自拍在线视频观看| 少妇激情一区二区三区99| 国产精品嫩草99av在线| 亚洲精品无码国模| 国产一区二区三区视频免费在线| 一区二区三区四区黄色av网站| 国内精品久久久久影院优| 男受被做哭激烈娇喘gv视频| 久久这里有精品国产电影网| 中文字幕亚洲综合久久久| 国产亚洲av无码av男人的天堂| 亚洲成av人片在线观看麦芽| 青草网在线观看| 人妖系列在线免费观看| 亚洲性无码av中文字幕| 久久国产劲暴∨内射| 丰满人妻无套中出中文字幕| 91精品福利一区二区三区|