粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件_第1頁
粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件_第2頁
粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件_第3頁
粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件_第4頁
粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

程序調(diào)試的方法程序調(diào)試的方法1程序調(diào)試的主要任務(wù):查找程序的錯誤和排除錯誤主要內(nèi)容:VB程序中的錯誤類型程序工作模式程序調(diào)試錯誤處理程序調(diào)試的主要任務(wù):查找程序的錯誤和排除錯誤2錯誤的類型:編譯錯誤,邏輯錯誤和運行錯誤1.編譯錯誤編譯錯誤是指在程序編譯過程中出現(xiàn)的錯誤。通常是由于不正確書寫代碼而產(chǎn)生的。例:關(guān)鍵字寫錯,遺漏標(biāo)點符號,括號不匹配等,較為容易。VB提供了自動語法檢查功能,能指出并顯示這些錯誤,幫助用戶糾正語法錯誤。例子:Foort=1To100錯誤的類型:32.運行錯誤

運行時的錯誤是指應(yīng)用程序在運行期間執(zhí)行了非法操作所發(fā)生的錯誤。例:除法運算中除數(shù)為零,訪問文件時文件夾或文件找不到等。這種錯誤只有在程序運行時才能被發(fā)現(xiàn)。舉例(“下標(biāo)越界”):PrivateSubForm_Load()

DimD(20)AsInteger,kAsInteger

Fork=1To30

D(k)=k*K

Nextk

EndSub2.運行錯誤

運行時的錯誤是指應(yīng)用程序在運行期間43.邏輯錯誤

邏輯錯誤使程序運行時得不到預(yù)期的結(jié)果。這種程序沒有語法錯誤,也能運行,但卻得不到正確的結(jié)果。例:在一個算術(shù)表達式中,把乘號“*”寫成了加號“+”,條件語句的條件寫錯,循環(huán)次數(shù)計算錯誤等

3.邏輯錯誤

邏輯錯誤使程序運行時得不到預(yù)期的結(jié)5例如,要求10,若采用:

PrivateSubForm_Load()

DimtAsInteger

Fori=1To10

t=t*i

Nexti

Show:Printt

EndSub

運行程序時輸出的結(jié)果是0通常,調(diào)試程序過程中所花的大部分時間和精力都在邏輯錯誤上例如,要求10,若采用:

Private6程序工作模式:設(shè)計模式、運行模式和中斷模式1.設(shè)計模式

在設(shè)計模式下,可以建立應(yīng)用程序的用戶界面,設(shè)置控件的屬性,編寫程序代碼等程序工作模式:72.運行模式

在運行模式下,可以測試程序的運行結(jié)果,可以與應(yīng)用程序?qū)υ?,還可以查看程序代碼,但不能修改程序3.中斷模式

在中斷模式下,可以利用各種調(diào)試手段檢查或更改某些變量或表達式的值,或者在斷點附近單步執(zhí)行程序,以便發(fā)現(xiàn)錯誤或改正錯誤2.運行模式

在運行模式下,可以測試程序的運行結(jié)果8

進入中斷模式的方法:

(1)在代碼中插入Stop語句;

(2)在代碼窗口中設(shè)置斷點(用菜單命令);

(3)在代碼窗口中設(shè)置斷點(鼠標(biāo)操作);

(4)在程序運行時強制“中斷”;

(5)當(dāng)程序運行出現(xiàn)錯誤。

當(dāng)檢查調(diào)試通過后,需要清除斷點進入中斷模式的方法:

(1)在代碼9粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件10使用“調(diào)試”菜單或“調(diào)試”工具欄

1.切換斷點

“切換斷點”按鈕用來設(shè)置斷點2.逐語句

VB允許逐條語句執(zhí)行程序,每執(zhí)行一條語句后就返回中斷模式。

如果執(zhí)行的是過程調(diào)用的代碼(如Call),“逐語句”操作也會跟蹤到被調(diào)過程中繼續(xù)一條語句一條語句的執(zhí)行

使用“調(diào)試”菜單或“調(diào)試”工具欄

1.113.逐過程逐過程執(zhí)行是以整個函數(shù)或過程為一個整體,一次執(zhí)行。逐過程與逐語句一樣,能夠一條語句一條語句地執(zhí)行代碼。把被調(diào)用的函數(shù)或過程當(dāng)作一個語句來看待。4.跳出

單擊“調(diào)試”工具欄上的“跳出”按鈕,則VB將連續(xù)執(zhí)行完該過程的其余部分,返回調(diào)用過程的下一條語句并回復(fù)中斷模式。3.逐過程12

5.本地窗口

顯示當(dāng)前過程中所有變量和活動窗體的所有屬性值

Me代表當(dāng)前窗體;單擊“+”號或“-”號6.立即窗口

可以檢查某個屬性或者變量的值,也可以對表達式求值,或為變量或?qū)傩再x值等7.監(jiān)視窗口

對用戶定義的表達式進行監(jiān)視

5.本地窗口13

例1計算t=0.1+0.2+0.3+……+0.9+1

編寫的程序代碼如下:

PrivateSubForm_Load()ShowDimtAsSingle,iAsSinglet=0Fori=0.1To1Step0.1t=t+iNextiPrint"總和:";tEndSub

運行結(jié)果為:總和:4.5

這不是正確的答案,正確結(jié)果應(yīng)是5.5例1計算t=0.1+0.2+0.3+14

1.在代碼窗口中設(shè)置斷點。為了了解循環(huán)過程中變量i和t的變化情況,可在語句t=t+i

處設(shè)置斷點。

1.在代碼窗口中設(shè)置斷點。為了了解循環(huán)15

2.重新運行程序。程序在斷點處中斷運行,進入中斷模式

2.重新運行程序。程序在斷點處中斷運行,進入中斷模式16

3.單擊“調(diào)試”工具欄上的“本地窗口”按鈕,利用本地窗口來監(jiān)視過程中各量及屬性值的變化情況3.單擊“調(diào)試”工具欄上的“本地窗口”174.單擊“調(diào)試”工具欄上的“逐語句”按鈕,讓程序單步執(zhí)行?!氨镜卮翱凇睍@示出程序中所用變量的當(dāng)前值

5.連續(xù)單擊“逐語句”按鈕,使程序在For語句循環(huán)執(zhí)行9次,此時本地窗口顯示的變量值如圖所示

4.單擊“調(diào)試”工具欄上的“逐語句”按鈕,讓程序單步18

6.再次單擊“逐語句”按鈕。程序不再繼續(xù)循環(huán),而是退出循環(huán),去執(zhí)行Nexti下一個的Print語句。

可以發(fā)現(xiàn)上述循環(huán)語句只是循環(huán)9次。本來應(yīng)該循環(huán)10次,但由于小數(shù)點在機器內(nèi)存儲和處理會發(fā)生微小誤差,當(dāng)執(zhí)行到第9次循環(huán)時,循環(huán)變量i的值為0.9000001,再加上步長值0.1時,已經(jīng)超過1,往下就不再執(zhí)行循環(huán)體了。所以實際上才循環(huán)9次,即只計算0.1+0.2+0.3+…+0.9(=4.5)6.再次單擊“逐語句”按鈕。程序不19

當(dāng)步長值為小數(shù)時,為了防止丟失循環(huán)次數(shù),可將終值適當(dāng)增加,一般是加上步長值的一半,例如:

Fori=0.1To1.05Step0.1

調(diào)試程序往往比寫程序更難當(dāng)步長值為小數(shù)時,為了防止丟失循環(huán)20

由于應(yīng)用環(huán)境等的改變,有時程序還會出現(xiàn)錯誤。例如文件未找到等。這類“運行時錯誤”并非致命的錯誤。

對于這些可預(yù)見的錯誤,可以利用VB的錯誤處理程序捕獲它,對其進行適當(dāng)?shù)奶幚?,并使程序繼續(xù)執(zhí)行。這樣就能夠使開發(fā)的軟件具有更強的適應(yīng)性。由于應(yīng)用環(huán)境等的改變,有時程序還會21錯誤處理的步驟:

(1)利用Err對象記錄錯誤的類型、出錯原因等。

(2)強制轉(zhuǎn)移到用戶自編的“錯誤處理程序段”的入口。

(3)在“錯誤處理程序段”內(nèi),根據(jù)具體錯誤進行處理,如果問題有解決方法,則在處理后返回原程序某處繼續(xù)執(zhí)行,否則,停止程序執(zhí)行錯誤處理的步驟:22退出錯誤處理語句(Resume)

當(dāng)指定的錯誤處理完成后,應(yīng)該控制程序返回到合適的位置繼續(xù)執(zhí)行。返回語句Resume有三種用法:

(1)Resume[0]:程序返回到出錯語句處繼續(xù)執(zhí)行。

(2)ResumeNext:程序返回到出錯語句的下一語句。

(3)Resume標(biāo)號:程序返回到標(biāo)號處繼續(xù)執(zhí)行。退出錯誤處理語句(Resume)23輸入某個數(shù),求該數(shù)的平方根。當(dāng)用戶輸入負(fù)數(shù)時,使用OnError...Resume進行處理PrivateSubForm_Load()DimxAsSingle,yAsSingle,iAsStringOnErrorGoTo

errln'以下出錯時轉(zhuǎn)移到errlnShow:i=""‘i

為實數(shù)標(biāo)記x=Val(InputBox("請輸入一個數(shù)"))y=Sqr(x)Printy;i:ExitSub‘顯示及退出過程errln:'標(biāo)號IfErr.Number=5Then'本錯誤的錯誤碼為5x=-x'轉(zhuǎn)換為正數(shù)

i="i"'復(fù)數(shù)標(biāo)記Resume'返回Else'其他錯誤處理MsgBox("錯誤發(fā)生在"&Err.Source&",代碼為"&_

Err.Number&",即"&Err.Description)EndEndIfEndSub錯誤處理程序示例輸入某個數(shù),求該數(shù)的平方根。錯誤處理程序示例24

程序運行時,當(dāng)用戶輸入一個正數(shù)時,則顯示出該數(shù)的平方根;如果輸入的是一個負(fù)數(shù),則因求負(fù)數(shù)的平方根(通過函數(shù)Sqr())而出錯,此時會跳轉(zhuǎn)到錯誤處理程序段。在錯誤處理程序段中,先判斷錯誤碼,若是5(即發(fā)生求負(fù)數(shù)的平方根的錯誤),則將該負(fù)數(shù)轉(zhuǎn)換為正數(shù),設(shè)置復(fù)數(shù)標(biāo)記,然后執(zhí)行Resume語句返回到原出錯處繼續(xù)執(zhí)行。如果發(fā)生的不是錯誤5,則顯示有關(guān)信息后強制結(jié)束程序運行時,當(dāng)用戶輸入一個正數(shù)時,則顯示25常見錯誤1.使用中文標(biāo)點符號系統(tǒng)產(chǎn)生“無效字符”,紅色表示2.字母和數(shù)字形狀相似如’1’和’l’,’0’和’o’3.對象名稱(Name)寫錯4.對象屬性名、方法名或標(biāo)準(zhǔn)函數(shù)名寫錯盡量使用自動列出成員功常見錯誤1.使用中文標(biāo)點符號265.無意形成控件數(shù)組建立控件時小心使用復(fù)制、粘貼功能6.打開工程時找不到對應(yīng)文件保存文件時先保存窗體文件(.frm),再保存工程文件(.vbp),注意路徑常見錯誤5.無意形成控件數(shù)組常見錯誤27謝謝!謝謝!28程序調(diào)試的方法程序調(diào)試的方法29程序調(diào)試的主要任務(wù):查找程序的錯誤和排除錯誤主要內(nèi)容:VB程序中的錯誤類型程序工作模式程序調(diào)試錯誤處理程序調(diào)試的主要任務(wù):查找程序的錯誤和排除錯誤30錯誤的類型:編譯錯誤,邏輯錯誤和運行錯誤1.編譯錯誤編譯錯誤是指在程序編譯過程中出現(xiàn)的錯誤。通常是由于不正確書寫代碼而產(chǎn)生的。例:關(guān)鍵字寫錯,遺漏標(biāo)點符號,括號不匹配等,較為容易。VB提供了自動語法檢查功能,能指出并顯示這些錯誤,幫助用戶糾正語法錯誤。例子:Foort=1To100錯誤的類型:312.運行錯誤

運行時的錯誤是指應(yīng)用程序在運行期間執(zhí)行了非法操作所發(fā)生的錯誤。例:除法運算中除數(shù)為零,訪問文件時文件夾或文件找不到等。這種錯誤只有在程序運行時才能被發(fā)現(xiàn)。舉例(“下標(biāo)越界”):PrivateSubForm_Load()

DimD(20)AsInteger,kAsInteger

Fork=1To30

D(k)=k*K

Nextk

EndSub2.運行錯誤

運行時的錯誤是指應(yīng)用程序在運行期間323.邏輯錯誤

邏輯錯誤使程序運行時得不到預(yù)期的結(jié)果。這種程序沒有語法錯誤,也能運行,但卻得不到正確的結(jié)果。例:在一個算術(shù)表達式中,把乘號“*”寫成了加號“+”,條件語句的條件寫錯,循環(huán)次數(shù)計算錯誤等

3.邏輯錯誤

邏輯錯誤使程序運行時得不到預(yù)期的結(jié)33例如,要求10,若采用:

PrivateSubForm_Load()

DimtAsInteger

Fori=1To10

t=t*i

Nexti

Show:Printt

EndSub

運行程序時輸出的結(jié)果是0通常,調(diào)試程序過程中所花的大部分時間和精力都在邏輯錯誤上例如,要求10,若采用:

Private34程序工作模式:設(shè)計模式、運行模式和中斷模式1.設(shè)計模式

在設(shè)計模式下,可以建立應(yīng)用程序的用戶界面,設(shè)置控件的屬性,編寫程序代碼等程序工作模式:352.運行模式

在運行模式下,可以測試程序的運行結(jié)果,可以與應(yīng)用程序?qū)υ挘€可以查看程序代碼,但不能修改程序3.中斷模式

在中斷模式下,可以利用各種調(diào)試手段檢查或更改某些變量或表達式的值,或者在斷點附近單步執(zhí)行程序,以便發(fā)現(xiàn)錯誤或改正錯誤2.運行模式

在運行模式下,可以測試程序的運行結(jié)果36

進入中斷模式的方法:

(1)在代碼中插入Stop語句;

(2)在代碼窗口中設(shè)置斷點(用菜單命令);

(3)在代碼窗口中設(shè)置斷點(鼠標(biāo)操作);

(4)在程序運行時強制“中斷”;

(5)當(dāng)程序運行出現(xiàn)錯誤。

當(dāng)檢查調(diào)試通過后,需要清除斷點進入中斷模式的方法:

(1)在代碼37粵教版高中信息技術(shù)選修1算法與程序設(shè)計:程序調(diào)試的方法課件38使用“調(diào)試”菜單或“調(diào)試”工具欄

1.切換斷點

“切換斷點”按鈕用來設(shè)置斷點2.逐語句

VB允許逐條語句執(zhí)行程序,每執(zhí)行一條語句后就返回中斷模式。

如果執(zhí)行的是過程調(diào)用的代碼(如Call),“逐語句”操作也會跟蹤到被調(diào)過程中繼續(xù)一條語句一條語句的執(zhí)行

使用“調(diào)試”菜單或“調(diào)試”工具欄

1.393.逐過程逐過程執(zhí)行是以整個函數(shù)或過程為一個整體,一次執(zhí)行。逐過程與逐語句一樣,能夠一條語句一條語句地執(zhí)行代碼。把被調(diào)用的函數(shù)或過程當(dāng)作一個語句來看待。4.跳出

單擊“調(diào)試”工具欄上的“跳出”按鈕,則VB將連續(xù)執(zhí)行完該過程的其余部分,返回調(diào)用過程的下一條語句并回復(fù)中斷模式。3.逐過程40

5.本地窗口

顯示當(dāng)前過程中所有變量和活動窗體的所有屬性值

Me代表當(dāng)前窗體;單擊“+”號或“-”號6.立即窗口

可以檢查某個屬性或者變量的值,也可以對表達式求值,或為變量或?qū)傩再x值等7.監(jiān)視窗口

對用戶定義的表達式進行監(jiān)視

5.本地窗口41

例1計算t=0.1+0.2+0.3+……+0.9+1

編寫的程序代碼如下:

PrivateSubForm_Load()ShowDimtAsSingle,iAsSinglet=0Fori=0.1To1Step0.1t=t+iNextiPrint"總和:";tEndSub

運行結(jié)果為:總和:4.5

這不是正確的答案,正確結(jié)果應(yīng)是5.5例1計算t=0.1+0.2+0.3+42

1.在代碼窗口中設(shè)置斷點。為了了解循環(huán)過程中變量i和t的變化情況,可在語句t=t+i

處設(shè)置斷點。

1.在代碼窗口中設(shè)置斷點。為了了解循環(huán)43

2.重新運行程序。程序在斷點處中斷運行,進入中斷模式

2.重新運行程序。程序在斷點處中斷運行,進入中斷模式44

3.單擊“調(diào)試”工具欄上的“本地窗口”按鈕,利用本地窗口來監(jiān)視過程中各量及屬性值的變化情況3.單擊“調(diào)試”工具欄上的“本地窗口”454.單擊“調(diào)試”工具欄上的“逐語句”按鈕,讓程序單步執(zhí)行?!氨镜卮翱凇睍@示出程序中所用變量的當(dāng)前值

5.連續(xù)單擊“逐語句”按鈕,使程序在For語句循環(huán)執(zhí)行9次,此時本地窗口顯示的變量值如圖所示

4.單擊“調(diào)試”工具欄上的“逐語句”按鈕,讓程序單步46

6.再次單擊“逐語句”按鈕。程序不再繼續(xù)循環(huán),而是退出循環(huán),去執(zhí)行Nexti下一個的Print語句。

可以發(fā)現(xiàn)上述循環(huán)語句只是循環(huán)9次。本來應(yīng)該循環(huán)10次,但由于小數(shù)點在機器內(nèi)存儲和處理會發(fā)生微小誤差,當(dāng)執(zhí)行到第9次循環(huán)時,循環(huán)變量i的值為0.9000001,再加上步長值0.1時,已經(jīng)超過1,往下就不再執(zhí)行循環(huán)體了。所以實際上才循環(huán)9次,即只計算0.1+0.2+0.3+…+0.9(=4.5)6.再次單擊“逐語句”按鈕。程序不47

當(dāng)步長值為小數(shù)時,為了防止丟失循環(huán)次數(shù),可將終值適當(dāng)增加,一般是加上步長值的一半,例如:

Fori=0.1To1.05Step0.1

調(diào)試程序往往比寫程序更難當(dāng)步長值為小數(shù)時,為了防止丟失循環(huán)48

由于應(yīng)用環(huán)境等的改變,有時程序還會出現(xiàn)錯誤。例如文件未找到等。這類“運行時錯誤”并非致命的錯誤。

對于這些可預(yù)見的錯誤,可以利用VB的錯誤處理程序捕獲它,對其進行適當(dāng)?shù)奶幚?,并使程序繼續(xù)執(zhí)行。這樣就能夠使開發(fā)的軟件具有更強的適應(yīng)性。由于應(yīng)用環(huán)境等的改變,有時程序還會49錯誤處理的步驟:

(1)利用Err對象記錄錯誤的類型、出錯原因等。

(2)強制轉(zhuǎn)移到用戶自編的“錯誤處理程序段”的入口。

(3)在“錯誤處理程序段”內(nèi),根據(jù)具體錯誤進行處理,如果問題有解決方法,則在處理后返回原程序某處繼續(xù)執(zhí)行,否則,停止程序執(zhí)行錯誤處理的步驟:50退出錯誤處理語句(Resume)

當(dāng)指定的錯誤處理完成后,應(yīng)該控制程序返回到合適的位置繼續(xù)執(zhí)行。返回語句Resume有三種用法:

(1)Resume[0]:程序返回到出錯語句處繼續(xù)執(zhí)行。

(2)ResumeNext:程序返回到出錯語句的下一語句。

(3)Resume標(biāo)號:程序返回到標(biāo)號處繼續(xù)執(zhí)行。退出錯誤處理語句(Resume)51輸入某個數(shù),求該數(shù)的平方根。當(dāng)用戶輸入負(fù)數(shù)時,使用OnError...Resume進行處理PrivateSubForm_Load()DimxAsSingle,yAsSingle,iAsStringOnErrorGoTo

errln'以下出錯時轉(zhuǎn)移到errlnShow:i=""‘i

為實數(shù)標(biāo)記x=Val(InputBox("請輸入一個數(shù)"))y=Sqr(x)Printy;i:ExitSub‘顯示及退出過程errln:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論