999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

巧設問題情境 提升編程糾錯能力

2021-07-11 01:43:41王聲光
中小學信息技術教育 2021年6期

王聲光

【摘 要】本文闡述了VB上機編程過程中的常見錯誤,主要包括編譯錯誤、運行錯誤和邏輯錯誤。對于不同的錯誤類型,提出相應的解決辦法,并結合具體程序調試教學,詳細介紹添加斷點、單步執行、跟蹤變量的方法在調試程序時的操作步驟,希望對提高學生的糾錯能力和程序設計水平有較大的幫助。

【關鍵詞】VB程序;程序調試;錯誤處理

【中圖分類號】G434 【文獻標識碼】A

【論文編號】1671-7384(2021)06-060-04

問題的提出

在《高中信息科技》(華師大版教材)第二冊的教學中,學生不僅要進行基礎算法理論的學習,還要進行上機編程實踐,驗證算法設計的正確性。學生在上機過程中,出現程序錯誤是難免的,無論怎樣精心地設計算法,在編程時都很難做到一次就運行正確。在編程過程中,不怕程序報錯,就怕程序結果不對但不報錯。為了解決這個問題,在教學過程中,要注重培養學生的程序調試能力,使其掌握程序調試的相關方法。學生通過不斷地編程實踐,提高程序設計的自信心和解決實際問題的能力。

編程中常見的錯誤分類

1.編譯錯誤

編譯錯誤又分為兩種,一種是VB集成開發環境自動檢查出的語法錯誤。當用戶在輸入代碼時,發現程序存在輸入錯誤,如語句缺少運算符、語句沒輸入完整、遺漏關鍵字等,編譯器會彈出一個窗口提示,告知出錯原因,出錯代碼會變成紅色字體顯示。例如,在if語句中遺漏了then,在換行時就會彈出錯誤提示:缺少Then或GoTo。另一種是單擊“啟動”按鈕后,系統在編譯時檢查出來的錯誤。程序編寫完成后,編譯器會先編譯程序,檢查程序中是否有錯誤,如單詞拼寫錯誤,函數缺少參數,if語句結束時遺漏了endif。for語句結束時遺漏了next語句等。

2.運行錯誤

運行錯誤是指在編譯通過后,運行時發生的錯誤。這類錯誤一般是由代碼在執行過程中遇到了不可執行的操作引起的,如溢出錯誤、類型不匹配、下標越界、試圖打開一個不存在的文件等。當遇到運行錯誤時,系統也會彈出一個提示框,顯示錯誤原因。同時,在彈出框中還會有四個按鈕,分別是“繼續”“結束”“調試”“幫助”。當用戶單擊提示框上的“調試”按鈕時,系統會將出錯代碼以黃底黑字突出顯示。

3.邏輯錯誤

邏輯錯誤是指編譯和運行都正常,沒有提示錯誤,但是運行沒有結果或者結果和預期不一致,這說明程序中存在邏輯錯誤。邏輯錯誤不容易被發現,需要用戶自己去排查,所以查找錯誤語句就比較困難,一般可能的原因有運算符使用不正確、語句中前后使用的變量不一致、語句前后的次序不對、循環語句的初值或終值不正確等。邏輯錯誤是這三類錯誤中最難排查的,需要借助斷點調試來查找錯誤原因。

不同錯誤的應對方法

1.編譯錯誤和運行錯誤的應對方法

當遇到編譯錯誤時,彈出框上有“確定”和“幫助”兩個按鈕,單擊“確定”按鈕,出錯的語句會自動選中,認真檢查選中的語句就能找到錯誤原因。如輸入語句,學生經常寫成a=imputbox(“”),在執行時編譯器會彈出提示:編譯錯誤,子程序或函數未定義,單擊“確定”按鈕后,imputbox單詞會被選中,仔細檢查發現是單詞拼寫錯誤,修改后程序執行正確。

當遇到彈出框上有“調試”按鈕時,說明是運行錯誤,此時要單擊“調試”按鈕,定位到錯誤語句所在的行,根據提示的錯誤原因,修改程序即可。如在累加或累乘的算法中,經常會出現“溢出”錯誤,主要原因是計算的結果超過了變量所能存放的最大值,只需要修改變量類型即可。對于運行錯誤,需要學生在平時遇到錯誤時多積累,遇到看不懂的錯誤時多提問,再遇到時就能輕松解決了。

2.邏輯錯誤的應對方法

對于邏輯錯誤,無法輕松地定位到錯誤語句所在的行,在排查時要借助斷點調試,單步執行語句,跟蹤變量值的變化,來檢查程序中的錯誤。通過添加斷點,可以中斷程序的運行,具體使用斷點進行調試的方法如下。

第一步,插入斷點。在需要設置斷點的語句左側灰色區域單擊鼠標左鍵或者按下鍵盤上的F9鍵,此時語句前面有一個紅色圓圈,整條語句呈紅底白字的突出顯示狀態,再次單擊紅色圓圈,就可以取消斷點。一般斷點是加在可能出錯的語句上,加一個斷點即可。

第二步,添加監視。通過監視窗口,可以顯示當前程序執行過程中變量的值。單擊菜單欄中的“調試”,添加監視,在彈出的對話框中輸入變量名或者表達式,即可以打開監視窗口。如果程序執行過程中,監視窗口隱藏起來了,也可以通過視圖菜單,監視窗口會顯示隱藏的監視界面。

第三步,單步執行程序。單擊運行菜單下的“啟動”按鈕,程序就會執行到斷點語句停下來,然后選擇調試菜單下的單步執行或者按鍵盤上的F8鍵,即可單步執行程序,單步執行后,執行點會移動到下一行。每執行一行語句,在監視窗口查看變量當前的值,檢查程序中的錯誤。

案例分析

雖然在平時的上機練習中,當學生遇到程序錯誤時,解釋過當前程序出錯的原因及解決的辦法,但是對于如何解決邏輯錯誤,卻很少涉及。筆者在經典算法實例講完之后,以平時學生上傳的作業為例,挑選了一些典型的錯誤程序,帶領學生一起查錯誤,調試程序,修改代碼,整理和歸納程序調試的方法。

1.活動1—— 計算快遞費

問題情境:放暑假時,小明利用順豐快遞將自己本學期的書籍寄回家,目前的收費標準是上海本地1kg以內收費12元,超過1kg的部分,每1Kg收費2元,輸入書籍的重量,計算應付快遞費。程序代碼如表1所示,程序共有多處錯誤,請運行程序,找出錯誤語句并改正。

學生1:點擊啟動按鈕之后,系統彈出編譯錯誤,必選參數。同時inputBox單詞被選中,檢查發現,inputbox()是輸入函數,在括號中缺少了雙引號,加上雙引號就可以了。繼續執行程序,系統彈出第2個錯誤提示,else 沒有if。程序中else語句會被選中,初步看else是和if語句匹配的,出錯了說明沒有匹配成功。仔細閱讀程序,發現if語句單獨寫成了一行,此時的if語句是單分支結構,else不能與if進行匹配,而雙分支結構的語句格式是then后面的語句要換行寫,所以在then后面敲一下回車,后面的語句換行寫就可以了。

在上面的程序中,其在運行時出現了兩個編譯錯誤,分別是“必選參數”“else沒有if”。這些錯誤在執行程序時,都會有錯誤提示,根據提示定位錯誤行,修改語句即可。

2.活動2—— 求三位數中所有的水仙花數

具體程序如表2所示,程序中有多處錯誤,先運行程序,再修改錯誤。

學生2:嘗試運行程序,發現沒有輸出結果,也沒有任何的錯誤提示,初步檢查代碼,并沒有發現什么錯誤,這時該如何修改呢?

這就是我們常說的邏輯錯誤,可以用斷點調試的方法來排查。第一步是添加斷點,在a=x/100這一行前面添加斷點,然后添加監視,監視變量a,b,c,i的值,再單步執行語句。當i=100時,執行循環體,分別計算變量的值。if語句判斷條件不滿足,i的值加1,i=101,繼續進入循環判斷,再次執行循環體,在監視窗口很方便地看到當前a,b,c,i的值,如圖1所示。程序運行到這里,閱讀代碼,思考程序中可能存在的問題。

學生3:通過觀察變量a,b,c,i值的變化,發現了兩個問題,一個是第二次執行循環體時,i=102,說明執行一次循環,i的值加了2次,for循環中省略了步長step,默認的步長為1,不需要在循環體中加上i=i+1這條語句,否則就會跳過了所有對奇數數據的判斷,在枚舉時就會遺漏可能的結果,修改的方法是把循環體中的i=i+1去掉。另一個問題是變量a應該是存放三位數百位上的值,當i=102時,a的值應該是1,而不是1.02,說明a=i/100此處應使用整除運算,應該加上取整函數int()或者改用整除運算符。

學生4:發現還有另外一個問題,變量a是求三位數百位上的值,用的是整除運算,變量b是求三位數十位上的值,應該也用整除運算,所以應該將b=i/10 mod 10修改為b=i\10 mod 10或者b=int(i/10) mod 10。

通過斷點調試,跟蹤變量,可以清楚地看到變量值的變化,這有助于我們排查錯誤。對于循環結構的程序,有時循環體執行一次,跟蹤變量后就能發現問題,有時要多次反復執行循環體,才能檢查出錯誤語句。當找到錯誤后,修改好程序,再執行時可以去掉斷點,看是否能得到預期的結果。

通過課堂教學實踐,總結上機編程過程中的常見問題。當遇到程序出錯時,主要分兩類:報錯和不報錯,如圖2所示。當程序報錯時,根據錯誤原因不同又分為編譯錯誤和運行錯誤,此時要認真閱讀錯誤提示,根據錯誤提示定位到錯誤語句所在的行,再去修改程序。如果程序沒有報錯,但是沒有結果,說明此時是邏輯錯誤,需要通過斷點調試的方法來排查錯誤語句,再修改程序。

結束語

本文介紹了VB上機編程過程中的常見錯誤類型,不同類型錯誤的調試方法,并以具體的教學實踐為例,闡述了如何使用添加斷點、單步執行、跟蹤變量來調試程序,修改錯誤。掌握這些方法,對提高程序設計能力有較大的幫助。除此之外,在一開始的上機練習中,幫助學生做好語句書寫的規范,讓學生養成良好的編程習慣也同樣重要。例如,在分支結構或循環結構的語句中,采用縮進的語句格式,如if和else中間的語句進行縮進,for語句的循環體也是以縮進的方式來書寫,這樣在閱讀程序時能快速厘清程序的框架結構,更容易地找到程序中的錯誤。

程序調試不是一件容易的事,僅僅掌握這些方法還是不夠的,還需要在上機實踐過程中不斷地積累,不斷地總結經驗,才能快速地提高VB程序設計水平,寫出高質量的程序。

主站蜘蛛池模板: AV在线天堂进入| 四虎亚洲国产成人久久精品| 54pao国产成人免费视频| 欧洲免费精品视频在线| 中文字幕欧美日韩高清| 国产精品香蕉| 五月婷婷导航| 九九九九热精品视频| 97在线碰| 五月婷婷综合色| 亚洲资源在线视频| 国产成人亚洲毛片| 日韩少妇激情一区二区| 日韩欧美一区在线观看| 97se亚洲| 99热免费在线| 手机在线免费不卡一区二| 成人综合久久综合| 国产成人一区免费观看| 蜜桃视频一区二区| 香蕉伊思人视频| 久热这里只有精品6| 黄色网页在线播放| 久久semm亚洲国产| 国产精品lululu在线观看| 国产主播喷水| 女人天堂av免费| 日韩精品欧美国产在线| 国产女人18水真多毛片18精品| 久久久久无码精品| 国产福利拍拍拍| 2020国产在线视精品在| 亚洲Av激情网五月天| 国产亚洲欧美在线中文bt天堂| 欧美全免费aaaaaa特黄在线| 国产在线98福利播放视频免费| 怡春院欧美一区二区三区免费| 亚洲第一视频区| 欧美三级视频网站| www.youjizz.com久久| 大陆国产精品视频| 国内精品视频| 国产成人综合亚洲网址| 99热精品久久| 国产精品手机在线播放| 亚洲成A人V欧美综合| 99re在线免费视频| 日本久久久久久免费网络| 亚洲第一区在线| 国产精品久久久久鬼色| 亚洲精品桃花岛av在线| 国产H片无码不卡在线视频| AV天堂资源福利在线观看| 在线观看国产黄色| 五月婷婷综合网| 免费无码又爽又刺激高| 丁香综合在线| 中文字幕在线一区二区在线| 国产91丝袜在线播放动漫 | 91成人精品视频| 国产成人永久免费视频| 亚洲免费三区| 国产在线精品人成导航| 久久精品国产电影| 国产亚洲美日韩AV中文字幕无码成人| 久久久久无码国产精品不卡| 国产女人喷水视频| 亚洲综合久久成人AV| 成人午夜免费观看| 免费看一级毛片波多结衣| 色悠久久综合| 亚洲一区毛片| 国产精品流白浆在线观看| 国产香蕉97碰碰视频VA碰碰看| 女人18一级毛片免费观看| 久久精品无码一区二区日韩免费| 国产精品亚洲αv天堂无码| 国产高清毛片| 久热re国产手机在线观看| 呦女亚洲一区精品| 国产精品林美惠子在线播放| 亚洲午夜福利精品无码|