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

對VB中過程調用的分析與探討

2008-12-31 00:00:00程學云
電腦知識與技術 2008年19期

摘要:過程調用是Visual Basic中重要的知識點,是學生不易理解的一個環節。提出了對過程調用正確有效分析的方法,并就按地址傳遞參數中學生較易混淆的問題進行了分析。

關鍵詞:Sub過程;Function過程;過程調用

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)19-30056-02

Analysis and Discussion on Procedure Call in VB

CHENG Xue-yun, XU Hui

(School of Computer Science and Technology, Nantong University, Nantong 226019, China)

Abstract: Procedure call is an important knowledge point in Visual Basic(VB), and it not easily understood by students. A right and efficient method uesed to analyze procedure call is proposed, and two easily confused examples which pass the parameters by address are discussed in detail.

Key words: Sub procedure; Funciton procedure; procedure call

1 引言

VB采用面向對象的可視化操作窗口,功能強大,應用廣泛,相對其他面向對象的編程語言(如VC++等)容易學。在編程中,往往根據需要按功能將程序分解成若干個相對獨立的部分,然后對每個部分分別編寫一段程序,稱之為過程。等級考試中要求學生掌握的過程主要有事件過程、Sub過程和Function過程。Sub過程不返回值,Function過程必須由函數名返回一個值,Sub過程和Function過程必須在事件過程或其他過程中顯式調用,否則過程代碼永遠不會被執行。過程調用是VB教學中的重點和難點,在文獻[2-3]中,對過程調用中的參數傳遞進行了仔細地分析,對不同的參數傳遞方式進行了比較,也給出了分析的一般方法,但在實際求解中,如果涉及的問題比較復雜時,該方法還是比較容易出錯,為此根據平時的教學總結,提出了一種分析過程調用的圖示法,可清楚地反映調用過程。

2 過程調用及分析方法

每當調用一個Sub過程或Function過程時,VB就將程序的返回地址(斷點)、參數以及局部變量等壓入棧內。被調用的過程運行結束后,VB將回收存放變量和參數的??臻g,然后返回主調程序的斷點繼續程序的運行[4]。

在調用過程時,主調過程的實參以一定的形式傳遞給被調過程的形參,完成實參與形參的結合,然后執行被調過程體。經被調過程處理后,又將所得結果返回給主調過程。VB中,參數的傳遞有傳值和傳址兩種形式。

2.1 傳值方式

當調用一個過程時,將實參的值復制給形參,實參與形參斷開聯系。過程調用結束時,形參占用的存儲單元被釋放,因此對形參的任何操作都不會影響到實參。傳值方式是“單向”的,形參的值不能返回給實參。

2.2.傳址方式

當調用一個過程時,將實參的地址傳遞給形參,即過程接受的是實參變量的地址。因此在被調過程中對形參的任何操作都變成了對相應實參的操作,實參的值會隨著形參的改變而改變,這種傳遞是“雙向”的。

2.3 分析方法

在教學中,通過總結給出了如下對過程調用的分析方法:從左到右依次列舉出調用關系,在每個過程中,列舉出涉及到的變量(將函數名也作為一個變量)。如果是按址傳遞的變量在對應的形參上用括號標注相應的實參,過程調用結束時及時將實參的值返回;如果是靜態變量標注上(static),下次調用時記得保留上次調用結束時的值。

例1 下列程序運行后輸出的結果是:

Option Explicit

Private Sub Command1_Click()

Dim i As Integer, j As Integer

Dim k As Integer

i = 10

j = 4

k = i+funk(i,j) (1)

Print i,j,k

End Sub

Private Function funk(A as Integer, B as Integer) As Integer

A = A+B

B = B-2

funk = A+B

End Function

運行后得到的結果是14 2 26,通過該方法能簡潔明了地得到正確結果。同時也說明在k=i+funk(i,j)中前一個i的值還是調用funk(i,j)前的值10,在學生的分析中是較容易出錯的一個地方。這是因為在算術表達式中是按照從左到右的求解次序,先求出第一個i的值10,然后調用funk(i,j)得到16,和為26,但調用結束后i的值發生了變化。如果將(1)處改為 k=funk(i,j)+i,則后一個i的值會隨前一個i的變化而變化。

3 特例分析

在實際問題中,過程調用的形式比較復雜,針對不同的問題分析的思路也不盡相同,所以要求學生在學習中要靈活掌握過程調用的本質,從根本上掌握分析的方法。將上例中的(1)處的調用語句改為k =funk(i, funk(i,j)),得到例2,其分析如表2。

表2 例2的分析過程

運行后得到的結果是30 2 44。在程序中對于k=funk(i,funk(i,j))語句,前一個i受到后一個i的影響,第一次調用括號內的funk(i,j)后i的值為14,第二次調用funk函數時,第一個實參的值變為14,過程調用中變量在棧中的分配如表3所示。

假設實參i、j的地址分別為1000、1002,對函數funk(i,funk(i,j))調用時,首先將形參A入棧,因為是按址傳遞,所以棧中存放的是實參i的地址1000,然后調用括號內的funk(i,j)函數,再次將形參A入棧,還是實參i的地址1000,將B也入棧,存放的是實參j的地址1002。Funk(i,j)調用結束后,雖然1010和1012單元被釋放,但是1000單元的內容被改變,所以funk(i,funk(i,j))中第一個i值跟著改變。

這兩個示例看似區別不大,但學生對第一個i是否變化在分析過程中特別容易混淆,所以在實際問題中要從根本上理解調用的過程。

4 結束語

本文介紹了過程調用分析的方法,針對過程調用中按址傳遞、靜態變量、同名變量、遞歸調用、調用層次比較深等一些棘手的問題,該方法能清楚地反映各變量的變化,得到正確的結果。同時通過兩個相似例題的分析,闡述了調用的執行流程,根本上解答了學生較易混淆的問題。

參考文獻:

[1] 羅朝盛,余文芳,余平. Visual Basic 6.0程序設計教程[M]. 人民郵電出版社,2005.

[2] 陳鳳云, 白振興. 過程調用中參數傳遞方式的分析[J]. 現代電子技術,2003(7):55-57.

[3] 肖捷, 祝庚, 肖振新. VB過程調用中參數傳遞的深入分析[J]. 計算機與現代化,2007(10):91-93.

[4] 牛又奇, 孫建國. 新編Visual Basic程序設計教程[M]. 蘇州大學出版社,2008.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 欧美日韩午夜| 天天色综网| 99精品在线视频观看| 91精品国产91久久久久久三级| 青草娱乐极品免费视频| 青青草国产免费国产| 福利一区在线| 福利国产在线| 毛片在线播放a| 亚洲天堂在线视频| AV片亚洲国产男人的天堂| 在线亚洲精品自拍| 国产人成在线观看| 91香蕉国产亚洲一二三区| 国产在线91在线电影| 国产原创自拍不卡第一页| 亚洲天堂高清| 国产噜噜在线视频观看| 黄色网址免费在线| 9999在线视频| 国产成人三级| 伊人成人在线| 国产精品免费电影| 日韩欧美国产中文| 2020精品极品国产色在线观看 | 免费亚洲成人| 成人亚洲国产| 亚洲国产系列| 9啪在线视频| 亚洲国产日韩视频观看| 国产乱人乱偷精品视频a人人澡| jizz国产在线| www.精品视频| 超碰aⅴ人人做人人爽欧美 | a免费毛片在线播放| 夜夜操国产| 亚洲精品中文字幕午夜| 无码国内精品人妻少妇蜜桃视频| 欧美精品在线免费| 中文字幕在线视频免费| 91免费片| 99这里只有精品免费视频| 污网站免费在线观看| 亚洲免费人成影院| 婷婷在线网站| 国产 在线视频无码| 国产亚卅精品无码| 亚洲成a人片在线观看88| 在线不卡免费视频| 美女啪啪无遮挡| 免费看av在线网站网址| 91精品人妻一区二区| 成人精品在线观看| P尤物久久99国产综合精品| 精品国产一区二区三区在线观看 | 成人日韩欧美| 日韩乱码免费一区二区三区| 都市激情亚洲综合久久| 欧洲高清无码在线| 日韩精品欧美国产在线| 久久动漫精品| 国产小视频在线高清播放| 国产精品一区二区国产主播| 在线看AV天堂| 亚洲人成日本在线观看| 国产成人精品高清不卡在线| 国产区网址| 亚洲精品无码抽插日韩| 国产高清又黄又嫩的免费视频网站| 欧美日韩一区二区在线播放| 日本色综合网| 国产亚洲精品97在线观看| 亚洲综合欧美在线一区在线播放| 麻豆精品在线视频| 蜜桃视频一区| 久久精品国产免费观看频道| 久久狠狠色噜噜狠狠狠狠97视色| 国产精品久久久久久影院| 精品伊人久久久久7777人| 综合久久久久久久综合网| 国产精品香蕉| AV老司机AV天堂|