亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        對(duì)VB中過(guò)程調(diào)用的分析與探討

        2008-12-31 00:00:00程學(xué)云
        電腦知識(shí)與技術(shù) 2008年19期

        摘要:過(guò)程調(diào)用是Visual Basic中重要的知識(shí)點(diǎn),是學(xué)生不易理解的一個(gè)環(huán)節(jié)。提出了對(duì)過(guò)程調(diào)用正確有效分析的方法,并就按地址傳遞參數(shù)中學(xué)生較易混淆的問(wèn)題進(jìn)行了分析。

        關(guān)鍵詞:Sub過(guò)程;Function過(guò)程;過(guò)程調(diào)用

        中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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采用面向?qū)ο蟮目梢暬僮鞔翱?,功能?qiáng)大,應(yīng)用廣泛,相對(duì)其他面向?qū)ο蟮木幊陶Z(yǔ)言(如VC++等)容易學(xué)。在編程中,往往根據(jù)需要按功能將程序分解成若干個(gè)相對(duì)獨(dú)立的部分,然后對(duì)每個(gè)部分分別編寫(xiě)一段程序,稱之為過(guò)程。等級(jí)考試中要求學(xué)生掌握的過(guò)程主要有事件過(guò)程、Sub過(guò)程和Function過(guò)程。Sub過(guò)程不返回值,F(xiàn)unction過(guò)程必須由函數(shù)名返回一個(gè)值,Sub過(guò)程和Function過(guò)程必須在事件過(guò)程或其他過(guò)程中顯式調(diào)用,否則過(guò)程代碼永遠(yuǎn)不會(huì)被執(zhí)行。過(guò)程調(diào)用是VB教學(xué)中的重點(diǎn)和難點(diǎn),在文獻(xiàn)[2-3]中,對(duì)過(guò)程調(diào)用中的參數(shù)傳遞進(jìn)行了仔細(xì)地分析,對(duì)不同的參數(shù)傳遞方式進(jìn)行了比較,也給出了分析的一般方法,但在實(shí)際求解中,如果涉及的問(wèn)題比較復(fù)雜時(shí),該方法還是比較容易出錯(cuò),為此根據(jù)平時(shí)的教學(xué)總結(jié),提出了一種分析過(guò)程調(diào)用的圖示法,可清楚地反映調(diào)用過(guò)程。

        2 過(guò)程調(diào)用及分析方法

        每當(dāng)調(diào)用一個(gè)Sub過(guò)程或Function過(guò)程時(shí),VB就將程序的返回地址(斷點(diǎn))、參數(shù)以及局部變量等壓入棧內(nèi)。被調(diào)用的過(guò)程運(yùn)行結(jié)束后,VB將回收存放變量和參數(shù)的??臻g,然后返回主調(diào)程序的斷點(diǎn)繼續(xù)程序的運(yùn)行[4]。

        在調(diào)用過(guò)程時(shí),主調(diào)過(guò)程的實(shí)參以一定的形式傳遞給被調(diào)過(guò)程的形參,完成實(shí)參與形參的結(jié)合,然后執(zhí)行被調(diào)過(guò)程體。經(jīng)被調(diào)過(guò)程處理后,又將所得結(jié)果返回給主調(diào)過(guò)程。VB中,參數(shù)的傳遞有傳值和傳址兩種形式。

        2.1 傳值方式

        當(dāng)調(diào)用一個(gè)過(guò)程時(shí),將實(shí)參的值復(fù)制給形參,實(shí)參與形參斷開(kāi)聯(lián)系。過(guò)程調(diào)用結(jié)束時(shí),形參占用的存儲(chǔ)單元被釋放,因此對(duì)形參的任何操作都不會(huì)影響到實(shí)參。傳值方式是“單向”的,形參的值不能返回給實(shí)參。

        2.2.傳址方式

        當(dāng)調(diào)用一個(gè)過(guò)程時(shí),將實(shí)參的地址傳遞給形參,即過(guò)程接受的是實(shí)參變量的地址。因此在被調(diào)過(guò)程中對(duì)形參的任何操作都變成了對(duì)相應(yīng)實(shí)參的操作,實(shí)參的值會(huì)隨著形參的改變而改變,這種傳遞是“雙向”的。

        2.3 分析方法

        在教學(xué)中,通過(guò)總結(jié)給出了如下對(duì)過(guò)程調(diào)用的分析方法:從左到右依次列舉出調(diào)用關(guān)系,在每個(gè)過(guò)程中,列舉出涉及到的變量(將函數(shù)名也作為一個(gè)變量)。如果是按址傳遞的變量在對(duì)應(yīng)的形參上用括號(hào)標(biāo)注相應(yīng)的實(shí)參,過(guò)程調(diào)用結(jié)束時(shí)及時(shí)將實(shí)參的值返回;如果是靜態(tài)變量標(biāo)注上(static),下次調(diào)用時(shí)記得保留上次調(diào)用結(jié)束時(shí)的值。

        例1 下列程序運(yùn)行后輸出的結(jié)果是:

        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

        運(yùn)行后得到的結(jié)果是14 2 26,通過(guò)該方法能簡(jiǎn)潔明了地得到正確結(jié)果。同時(shí)也說(shuō)明在k=i+funk(i,j)中前一個(gè)i的值還是調(diào)用funk(i,j)前的值10,在學(xué)生的分析中是較容易出錯(cuò)的一個(gè)地方。這是因?yàn)樵谒阈g(shù)表達(dá)式中是按照從左到右的求解次序,先求出第一個(gè)i的值10,然后調(diào)用funk(i,j)得到16,和為26,但調(diào)用結(jié)束后i的值發(fā)生了變化。如果將(1)處改為 k=funk(i,j)+i,則后一個(gè)i的值會(huì)隨前一個(gè)i的變化而變化。

        3 特例分析

        在實(shí)際問(wèn)題中,過(guò)程調(diào)用的形式比較復(fù)雜,針對(duì)不同的問(wèn)題分析的思路也不盡相同,所以要求學(xué)生在學(xué)習(xí)中要靈活掌握過(guò)程調(diào)用的本質(zhì),從根本上掌握分析的方法。將上例中的(1)處的調(diào)用語(yǔ)句改為k =funk(i, funk(i,j)),得到例2,其分析如表2。

        表2 例2的分析過(guò)程

        運(yùn)行后得到的結(jié)果是30 2 44。在程序中對(duì)于k=funk(i,funk(i,j))語(yǔ)句,前一個(gè)i受到后一個(gè)i的影響,第一次調(diào)用括號(hào)內(nèi)的funk(i,j)后i的值為14,第二次調(diào)用funk函數(shù)時(shí),第一個(gè)實(shí)參的值變?yōu)?4,過(guò)程調(diào)用中變量在棧中的分配如表3所示。

        假設(shè)實(shí)參i、j的地址分別為1000、1002,對(duì)函數(shù)funk(i,funk(i,j))調(diào)用時(shí),首先將形參A入棧,因?yàn)槭前粗穫鬟f,所以棧中存放的是實(shí)參i的地址1000,然后調(diào)用括號(hào)內(nèi)的funk(i,j)函數(shù),再次將形參A入棧,還是實(shí)參i的地址1000,將B也入棧,存放的是實(shí)參j的地址1002。Funk(i,j)調(diào)用結(jié)束后,雖然1010和1012單元被釋放,但是1000單元的內(nèi)容被改變,所以funk(i,funk(i,j))中第一個(gè)i值跟著改變。

        這兩個(gè)示例看似區(qū)別不大,但學(xué)生對(duì)第一個(gè)i是否變化在分析過(guò)程中特別容易混淆,所以在實(shí)際問(wèn)題中要從根本上理解調(diào)用的過(guò)程。

        4 結(jié)束語(yǔ)

        本文介紹了過(guò)程調(diào)用分析的方法,針對(duì)過(guò)程調(diào)用中按址傳遞、靜態(tài)變量、同名變量、遞歸調(diào)用、調(diào)用層次比較深等一些棘手的問(wèn)題,該方法能清楚地反映各變量的變化,得到正確的結(jié)果。同時(shí)通過(guò)兩個(gè)相似例題的分析,闡述了調(diào)用的執(zhí)行流程,根本上解答了學(xué)生較易混淆的問(wèn)題。

        參考文獻(xiàn):

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

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

        [3] 肖捷, 祝庚, 肖振新. VB過(guò)程調(diào)用中參數(shù)傳遞的深入分析[J]. 計(jì)算機(jī)與現(xiàn)代化,2007(10):91-93.

        [4] 牛又奇, 孫建國(guó). 新編Visual Basic程序設(shè)計(jì)教程[M]. 蘇州大學(xué)出版社,2008.

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文

        日韩人妻免费一区二区三区| 五月天激情婷婷婷久久| 国产人成午夜免电影观看 | 国产99久久精品一区| 一区二区三区日本伦理| 妇女bbbb插插插视频| AV无码最在线播放| 中文字幕麻豆一区二区| 国产一区二区三区最新地址| 亚洲av精品一区二区三区| av人摸人人人澡人人超碰小说| 97无码人妻一区二区三区蜜臀| 成人免费av高清在线| 欧美日韩亚洲中文字幕二区| 中文字幕无码精品亚洲资源网久久| 精品系列无码一区二区三区| 手机免费高清在线观看av| 久久久亚洲精品一区二区三区| 亚洲国产精品久久久久久久| 亚洲av伊人久久综合性色| 国产成人高清在线观看视频| a级毛片100部免费观看| 手机在线精品视频| 精品日本免费观看一区二区三区| 四虎永久在线精品免费一区二区 | 国产猛烈高潮尖叫视频免费| 98久9在线 | 免费| 亚洲高清国产品国语在线观看| 视频国产自拍在线观看| 蜜桃一区二区三区| 激情婷婷六月| 国产一区二区av在线观看| 黑人大群体交免费视频| 猫咪免费人成网站在线观看| 久久精品综合国产二区| 日本熟女人妻一区二区| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲综合中文字幕乱码在线| 日日噜噜夜夜久久密挑| 九九在线中文字幕无码| 国产精品后入内射日本在线观看|