一区二区国产高清视频在线_真人性做爰A片免费_强伦人妻BD在线电影_亚洲熟妇无码AV_免费人成视频在线观看网站_亚洲欧美精品午睡沙发_在线观看无码的免费网站_中文字幕无码A片久久_日韩欧美国产一区精品_久久精品女人天堂av

重慶醫(yī)科大學(xué)論壇

 找回密碼
 注冊(開放注冊)
搜索
查看: 3262|回復(fù): 0
打印 上一主題 下一主題

[計算機(jī)類] “三步逐過程法”解二級VB上機(jī)改錯題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2006-8-19 15:42:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、改錯題解法現(xiàn)狀
  許多同學(xué)為了掌握解決改錯題的技巧和方法,一方面著重熟練VB集成開發(fā)環(huán)境中調(diào)試工具的使用,另一方面歸納總結(jié)了近幾年來二級考試改錯題中涉及到的錯誤類型。這些對于提高應(yīng)試能力無疑是有幫助的。但是在實際考試中,他們也發(fā)現(xiàn),解答改錯題的方法淪為逐一去猜測錯誤類型,然后按模式來套解。毫無疑問,這一解法效率慢,正確率不高,而且即便正確解答出來,也有一種僥幸的感覺。之所以如此,根本的原因在于沒有抓住具體題目算法邏輯特征這一主線,因而單純的總結(jié)錯誤類型的意義也就不大了。
  為此,我們可以采用一種比較完善的改錯題解法——“三步逐過程法”。
  二、“三步逐過程法”解法說明
  “三步逐過程法”核心是把握題目算法邏輯特征,按照“從整體到部分,再由部分到整體”的思路排查錯誤,調(diào)試程序,具體步驟可分為三步:
  步驟一:把握題意,泛讀程序,分析程序組成和各過程的功能;
  步驟二:從通用過程入手, 逐過程輸入并逐過程調(diào)試;
  步驟三:輸入并調(diào)試事件過程,完成對各通用過程調(diào)用和組裝。
  下面,我們結(jié)合一道改錯題來具體說明每個步驟中的方法和技巧。
  三、“三步逐過程法”解改錯題舉例
  以江蘇省二級VB上機(jī)考試中的一道考題為例。
  已知下面程序的功能是找出2000以內(nèi)這樣的正整數(shù)N: 它的不同值的因子(包括1和N在內(nèi))之和是一個素數(shù)。 例如: 16: 1+2+4+8+16=31(下圖為程序正確執(zhí)行時的畫面)。

  含有錯誤的源程序如下:
  Option Explicit
  Option Base 1
  Private Sub Command1_Click()
  Dim I As Integer, K As Integer, Sum As Integer
  Sum = 0
  For I = 2 To 2000
  Call Fctor(I, Sum)
  If Prime(Sum) Then
  K = K + 1
  Text1 = Text1.Text & Str(I) & " "
  If K Mod 5 = 0 Then Text1 = Text1 & Chr(13) & Chr(10)
  End If
  Next I
  End Sub
  Private Sub Fctor(N As Integer, S As Integer)
  Dim I As Integer, J As Integer
  Do While I < N
  If N Mod I = 0 Then
  S = S + I
  End If
  I = I + 1
  Loop
  End Sub
  Private Function Prime(N As Integer) As Boolean
  Dim m As Integer
  For m = 2 To Sqr(N)
  If N Mod m = 0 Then Exit Sub
  Next m
  Prime = True
  End Function
  “三步逐過程法”解題步驟:
  步驟一:把握題意,泛讀程序,分析程序組成和各過程的功能;
  顯然,該程序的組成如下圖所示:

  那么,我們?nèi)绾畏治龀龈鱾過程的功能呢?
  核心技巧是從輸出語句著手, 逆向推導(dǎo), 分析各變量的含義, 進(jìn)而根據(jù)過程的輸入?yún)?shù)及其輸出或者反饋, 分析出此過程的功能。
  1.   標(biāo)記出輸出語句
  輸出語句有兩句:
  (1)、Text1 = Text1.Text & Str(I) & " "
  (2)、If K Mod 5 = 0 Then Text1 = Text1 & Chr(13) & Chr(10)
  2.   逆向推導(dǎo),分析各變量的含義
  對于輸出語句(1),顯然是將符合條件的數(shù)I顯示到文本框。而根據(jù)題意,符合條件的數(shù)必須滿足:2000以內(nèi)和因子和為素數(shù)兩個條件,因此,我們從語句(1)逆向推導(dǎo),我們知道I是由2到2000的循環(huán)變量,并且只有滿足Prime(Sum)為True的才能顯示到文本框,因此,我們知道Sum應(yīng)該是I的因子和;對于輸出語句(2),后半句的功能是為了實現(xiàn)回車和換行,結(jié)合K Mod 5=0以及逆向找出的K=K+1,我們知道,K的功能是為了控制輸出按照每5個換行進(jìn)行。
  3.   分析過程功能
  對于語句Call Fctor(I,Sum),由于此時的I為2到2000的循環(huán)變量,Sum為I的因子和,因此我們可以判定Fctor的功能是求I的因子和,并將該和賦給Sum變量;根據(jù)Prime(Sum),我們可以判定Prime的功能是對Sum值進(jìn)行是否是素數(shù)的判定,如果是,則返回True,否則返回False.
  步驟二: 從通用過程入手, 逐過程輸入并逐過程調(diào)試。
  核心技巧是將通用過程輸入后, 根據(jù)步驟一中分析出的各過程的功能,用含有具體參數(shù)值的過程調(diào)用語句來調(diào)試過程, 即: 給定確定的輸入, 看有無準(zhǔn)確的輸出或者反饋。
  那么如何構(gòu)造含有具體參數(shù)值的過程調(diào)用語句呢?
  對于Function過程,由于有輸入?yún)?shù)和返回值,因此比較好構(gòu)造調(diào)用調(diào)試語句。譬如,對于Prime過程,由步驟一中我們已經(jīng)知道其作用是用于判斷輸入?yún)?shù)是否為素數(shù),如果為素數(shù)則返回True,否則返回False.因此我們可以構(gòu)造:
  Print Prime(7);Prime(10)
  為此,我們只要在窗體上放置一個按鈕Command1,在Command1_Click中輸入Print Prime(7);Prime(10)即可,若輸出為“True False”,則該過程正確。如此操作,調(diào)試結(jié)果為:

  由此,我們將Exit Sub修改為Exit Function,運行正確。
  對于Sub過程,其沒有返回值,因此該過程的反饋信息將可以通過兩種方式得到,一種是直接在Sub中使用輸出語句顯示運行結(jié)果;一種是利用按地址傳遞的參數(shù)將反饋信息由被改變的實參帶出。對于Fctor(N,S)過程,根據(jù)步驟一,知其功能是,求N的因子和并由S帶出。為此,首先,我們根據(jù)給定的可以設(shè)定N為16.
  1.輸入Prime過程, 用print prime(7),prime(10)來調(diào)試;
  2. 輸入fctor過程, 用
  dim s as integer
  call fctor(16,s)
  print s
  來調(diào)試。
  步驟三: 對于事件過程, 若代碼較長, 則逐程序塊輸入并調(diào)試(程序塊通常以循環(huán)來區(qū)分)
  核心技巧: 在事件過程中, 將完成對通用過程的調(diào)用組裝, 因此特別留意以下三點:
  循環(huán):注意循環(huán)變量的初值、終值和步長以及累積量的初值。
  數(shù)組:元素從0開始還是從1開始。
  過程:注意參數(shù)傳遞(Byval、 ByRef),返回值類型,調(diào)用形式,具體的說包括:
  1. 實參與形參類型是否一致。
  2. 參數(shù)傳遞方法(ByVal與ByRef)是否正確
  3. 循環(huán)調(diào)用時, 同一變量調(diào)用前后值有無干涉,具體體現(xiàn)在: 前值沒有清空遺留在后值中或者動態(tài)數(shù)組元素未清空等, 此時錯誤表現(xiàn)在: 清空語句放置位置不對。
  四、總結(jié):
  1. 思維過程是微觀到宏觀
  體現(xiàn)在: 由題意及變量含義推斷過程作用; 逐過程輸入調(diào)試后再進(jìn)行事件工程中的調(diào)用和組裝;
  2. 在調(diào)試通用過程時, 應(yīng)用了數(shù)學(xué)中的特殊值法;
  3. 在組裝事件過程時, 應(yīng)用了工程中的經(jīng)驗法。
轉(zhuǎn)貼自:http://www.hljcre.com/news_view.asp?id=274
您需要登錄后才可以回帖 登錄 | 注冊(開放注冊)

本版積分規(guī)則

手機(jī)訪問本頁請
掃描左邊二維碼
本網(wǎng)站聲明
本網(wǎng)站所有內(nèi)容為網(wǎng)友上傳,若存在版權(quán)問題或是相關(guān)責(zé)任請聯(lián)系站長!
站長電話:0898-66661599    站長聯(lián)系QQ:12726567   
站長微信:hainanok
請掃描右邊二維碼
www.myujob.com

小黑屋|手機(jī)版|Archiver|重慶醫(yī)科大學(xué)論壇 ( 瓊ICP備10001196號-2 )

GMT+8, 2025-11-19 05:04 , Processed in 0.394985 second(s), 14 queries .

Powered by 校園招聘信息

© 2001-2020 重慶醫(yī)科大學(xué)論壇校園招聘

快速回復(fù) 返回頂部 返回列表