亚洲国产福利在线一二三观看_精品国产伦一区二区三区欲臀_国产a∨视频精品视频护士_精品八戒人妻少妇av

江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
圖解法解閱讀程序?qū)懡Y(jié)果題一則

圖解法解閱讀程序?qū)懡Y(jié)果題一則——順答yiyibushe提問

                                       曹蘇群 http://caosuqun.bokee.com

題目(By yiyibushe):

Dim x As Integer, y As Integer

Private Sub form_click()

    Dim a As Integer, b As Integer

    a = 5: b = 3

    Call sub1(a, b)

    Print x, y

End Sub

Private Sub sub1(ByVal m As Integer, n As Integer)

    Dim y As Integer

    x = m + n: y = m - n

    m = fun1(x, y)

    n = fun1(y, x)

End Sub

Private Function fun1(a As Integer, b As Integer)

    x = a + b: y = a - b

    Print x, y

    fun1 = x + y

End Function

解答:

  本題主要考察過程調(diào)用、參數(shù)傳遞以及變量作用域等知識點,對于此類題型,建議使用圖解法來解。

  由第一句:Dim x As Integer, y As Integer 知,xy為模塊變量,可以被這三個過程所訪問;sub1過程中,有:Dim y As Integer,此處y為過程級變量,因此,在sub1過程中,訪問的是過程級變量y而非模塊變量y;而在fun1中訪問的y是模塊變量y而非過程級變量y!

  為此,我們可以圖解如下:

    1 將模塊變量用單列的圖來表示,以表示可以為該模塊中各個過程所訪問,而將過程級變量圖示限定在對應過程中。

    2 留意參數(shù)傳遞方式,若按地址傳遞,則形參和實參圖示時指向同一內(nèi)存單元,若按值傳遞,則形參和實參圖示時各有各的內(nèi)存單元,僅僅復制值而已。

  給出如下圖解圖示:

 圖解法

 

  圖中藍色線條說明該內(nèi)存單元均指向sub1中過程級變量y;綠色線條說明該內(nèi)存單元均指向模塊變量x;紅色塊表示第一次輸出結(jié)果,即第一次調(diào)用fun1執(zhí)行Print x, y;黃色塊表示第二次輸出結(jié)果,即第二次調(diào)用fun1執(zhí)行Print x, y;最后一次輸出結(jié)果,即form_click中執(zhí)行Print x, y恰好與黃色塊一樣。

  請按照執(zhí)行流程,對照這個圖,仔細推敲