电竞比分网-中国电竞赛事及体育赛事平台

分享

計算機技術(shù)基礎(chǔ)(第九章 過程 )

 図糴帑簤屸璺 2019-07-11

計算機技術(shù)基礎(chǔ)(VB)






學習內(nèi)容
 
 
第一節(jié) Function過程
第一節(jié) Function過程
必修
開啟
通過
點擊進入
第二節(jié) Sub過程
第二節(jié) Sub過程
必修
開啟
通過
點擊進入
第三節(jié) 過程的嵌套
第三節(jié) 過程的嵌套
必修
開啟
通過
點擊進入
第四節(jié) 參數(shù)的傳遞
第四節(jié) 參數(shù)的傳遞
必修
開啟
通過
點擊進入
第五節(jié) 代碼模塊
第五節(jié) 代碼模塊
必修
開啟
通過
點擊進入
第六節(jié) 變量的作用域與生存期
第六節(jié) 變量的作用域與生存期
必修
開啟
通過
點擊進入
本章小結(jié)
本章小結(jié)
必修
開啟
通過
點擊進入
視頻講解1
視頻講解1
必修
開啟
通過
點擊進入
視頻講解2
視頻講解2
必修
開啟
通過
點擊進入
視頻講解3
視頻講解3
必修
開啟
通過
點擊進入
視頻講解4
視頻講解4
必修
開啟
通過
點擊進入


第一節(jié) Function過程
一、Function過程的定義

    1.Function過程的格式

    [Public|Private][Static]Function<函數(shù)過程名>
              ([<形參表>])[As<類型>]
       [ <語句組>]
       [ <函數(shù)過程名>=<表達式>]
       [Exit Function] 
       [ <語句組>]
       [ <函數(shù)過程名>=<表達式>]
   End Function

    2.說明

    (1)Public:缺省值。使用Public時表示所有模塊的所有其他過程都可以調(diào)用該Function過程。

    (2)Private:使用Private時表示只有本模塊中的其他過程才可以調(diào)用該Function過程。

    (3)Static:使用Static時表示將過程中的所有局部變量說明為靜態(tài)變量。

    (4)<函數(shù)過程名>:Function過程的名稱,遵循變量的命名規(guī)則。

    (5)<形參表>:表示在調(diào)用時要傳遞給Function過程的參數(shù)變量列表。多個變量之間用逗號隔開。

       <形參表> <形參表>格式:

         [ByVal|ByRef]<變量名>[( )][As<類型>]

         ByVal:表示該參數(shù)按值傳遞。

         ByRef:缺省值。表示該參數(shù)按地址傳遞。

    <變量名>     <變量名>:遵循變量命名規(guī)則的任何變量名或數(shù)組名。

         (?。寒攨?shù)為數(shù)組時使用。

    (6)As<類型>:聲明函數(shù)值的類型。

    (7)Exit Function語句:從Function過程中退出。

    (8)Function過程通過賦值語句:

       <函數(shù)過程名> <函數(shù)過程名>=<表達式>

      將函數(shù)的返回值賦給<函數(shù)過程名>。

    (9)Function過程的定義不能嵌套。

    Function過程的建立:

      直接在代碼窗口中輸入。

      在代碼窗口:工具→添加過程。

    【例9-1】編寫一個計算n!的Function過程。

    Function Fact(N As Integer) As Long
    Dim I As Integer,F As Long
    F=1     'F用于保存階乘值 
    For I=1 To N 
      F=F*I 
    Next I 
    Fact=F    '給函數(shù)過程名賦值 
   End Function

    【例9-2】編寫一個Function過程,計算下面表達式的值。

    

    Function F(X,Y,Z)

     F=Sqr(Abs(X^3+Y^3+Z^3))

    End Function

二、Function過程的調(diào)用

    直接在表達式中調(diào)用。

    格式:<函數(shù)過程名>([<實參表>])

    <實參表> <實參表>:常量、變量或表達式,各參數(shù)之間用逗號分隔。如果是數(shù)組,在數(shù)組名之后必須跟一對空括號。

    【例9-3】利用Function過程計算階乘,求組合數(shù)。設(shè)計界面如下圖。

    

    '定義求階乘的函數(shù)Fact
   Function Fact(n As Integer) As Double
    Dim F As Double,i As Integer 
    F=1 
    For i=1 To n 
     F=F*i 
    Next i 
    Fact=F 
   End Function 
   Private Sub Command1_Click()'=按鈕的事件過程 
     Dim m As Integer,n As Integer,c As Double 
     m=Val(Text1.Text) 
     n=Val(Text2.Text) 
     c=Fact(m)/(Fact(n)*(Fact(m-n)))   '調(diào)用Fact 
     Text3.Text=Trim(Str(c)) 
   End Sub

    【例9-4】編寫Function過程求最大公約數(shù),并通過命令按鈕的單擊事件過程調(diào)用該函數(shù)過程。

    

   Function hcf(m As Integer,n As Integer)As Integer
   Dim r As Integer
   r=m Mod n 
   Do While r <>0
    m=n 
    n=r 
    r=m Mod n 
   Loop 
   hcf=n 
  End Function 
  Private Sub Command1_Click() 
   Dim m As Integer,n As Integer 
   m=Val(Text1.Text): n=Val(Text2.Text) 
   Label3.Caption=Str(hcf(m,n)) 
  End Sub

    【例9-5】編寫一個Function過程,返回指定個數(shù)的字符串,字符串以A開始,例如,當指定個數(shù)5時,函數(shù)返回字符串"ABCDE"。運行時單擊按鈕調(diào)用該函數(shù)過程,實現(xiàn)在窗體上按指定的行數(shù)輸出如下圖所示的圖形。

    

   'CreateStr函數(shù)返回N個字符 
   Private Function CreateStr(N As Integer) 
    Dim TmpStr As String,I As Integer 
    TmpStr= ""
    'StrAsc用于保存字符的ASCII碼 
    StrAsc=Asc( "A")–1
    For I=1 To N 
     StrAsc=StrAsc+1 '生成下一個字符的ASCII碼 
     TmpStr=TmpStr  & Space(1) & Chr(StrAsc) 
    Next I 
    CreateStr=TmpStr 
   End Function 
   '“輸出圖形”按鈕的Click事件過程 
   Private Sub Command1_Click() 
    Dim N As Integer,I As Integer 
    '指定圖形的行數(shù) 
    N=Val(InputBox( "圖形的行數(shù)","請輸入","5")) 
    Cls 
    Print 
   For I=1 To N 
    Print Tab(2*I);         '輸出左半部分 
    Print CreateStr(2*N-2*I+1); 
    Print Spc(4);          '左右兩部分的間隔 
    Print CreateStr(2*I-1);       '輸出右半部分 
   Print 
  Next I 
End Sub



第二節(jié) Sub過程
一、Sub過程的定義

    1.Sub過程的格式

    [Private|Public][Static]Sub<過程名>[(<形參表>)]
     [<語句組>]
     [Exit Sub] 
     [ <語句組>]
   End Sub

    2.說明

    (1)Exit Sub用于退出Sub過程。

    (2)<過程名> <過程名>不具有值的意義,在Sub過程中不能給<過程名>賦值,也不能給<過程名>定義類型。

    (3)Sub過程通過<形參表>中的參數(shù)返回值。

    (4)Sub過程的建立方法與Function過程的建立方法相同。

    【例9-6】編寫計算n!的Sub過程。

    分析:參數(shù)表中應(yīng)有一個參數(shù)n,還應(yīng)有另一個參數(shù)F用來返回階乘值。 
    Sub Fact(N As Integer,F As Long) 
    Dim I As Integer 
      F=1 
    For I=1 To N 
      F=F*I 
    Next I 
   End Sub

    【例9-7】編寫Sub過程,打印以下圖形。

    分析:打印以上圖形,不需要返回值,因此無需引入?yún)?shù)。

    Sub a() 
    For i=1 To 6
     Print Tab(7-i); 
     For j=1 To 2* i-1 
      Print "*"; 
     Next j 
     Print 
    Next i 
  End Sub

    

    【例9-8】編寫Sub過程,求三個數(shù)中的最大數(shù)和最小數(shù)。

    分析:首先要設(shè)置三個參數(shù),如x、y、z,用于接收三個原始數(shù)據(jù),另外引入兩個參數(shù)max和min,用于返回最大和最小數(shù)。

    Sub s(x,y,z,max,min) 
     max=x
     min=x 
     If y >max Then max=y
     If y <min Then min=y
     If z >max Then max=z
     If z <min Then min=z
   End Sub

二、Sub過程的調(diào)用

      格式一:Call<過程名>[(<實參表>)]

      格式二:<過程名>[<實參表>]

    說明:

    (1)<過程名>:要調(diào)用的Sub過程名;

    (2)<實參表>:可以是常量、變量或表達式,各參數(shù)之間用逗號分隔。如果是數(shù)組參數(shù),則要在數(shù)組名之后跟一對空括號。

    (3)用Call語句調(diào)用一個Sub過程時,如果過程本身沒有參數(shù),則省略<實參表>和括號。

    (4)格式二省略了Call關(guān)鍵字,同時<實參表>兩邊也不能帶括號。

    【例9-9】將求組合數(shù)一題改成用Sub過程實現(xiàn)

   Sub Fact(N As Integer,F As Long) 
    Dim I As Integer
    F=1 
    For I=1 To N 
     F=F*I 
    Next I 
   End Sub 
   Private Sub Command1_Click() 
    Dim M As Integer,N As Integer 
    Dim f1 As Long,f2 As Long,f3 As Long 
    M=Val(Text1.Text):N=Val(Text2.Text) 
    Call Fact(M,f1):Call Fact(N,f2):Call Fact(M-N,f3) 
    Text3.Text=Trim(Str(f1/(f2*f3))) 
   End Sub

    【例9-10】編寫一個Sub過程,計算K個數(shù)的和,即1+2+…+K,并通過命令按鈕的單擊事件調(diào)用該過程計算S=1+(1+2)+(1+2+3)+…+(1+2+…+N)。

    分析:編寫一個Sub過程計算1+2+…+K,

    設(shè)參數(shù)K、S,參數(shù)S用于返回該和值。

   Sub A1(K As Integer,S As Integer) 
   S=0
   For J=1 To K 
    S=S+J 
   Next J 
  End Sub 
   Private Sub Command1_Click() 
     Dim N As Integer,S1 As Integer,I As Integer 
     N=Val(Text1.Text) 
     For I=1 To N 
      '調(diào)用過程A1求1+2+…+I,和值返回到S1中 
     Call A1(I,S1) 
     Sum=Sum+S1 
    Next I 
    Text2.Text=Sum 
   End Sub



第三節(jié) 過程的嵌套

    在一個過程執(zhí)行期間又調(diào)用另一個過程,稱為過程的嵌套調(diào)用。

    




第四節(jié) 參數(shù)的傳遞

    調(diào)用過程與被調(diào)用過程之間的一種數(shù)據(jù)通訊方法。

    數(shù)據(jù)的傳遞可以是單向的,也可以是雙向的。

一、形參和實參

    形參:出現(xiàn)在Sub或Function語句中。

    實參:出現(xiàn)在調(diào)用程序中。

    例如,定義如下一個過程:

      Sub SubTest(n As Integer,Sum As Single)

       …

      End Sub

    調(diào)用語句:

    

    說明:

    在傳遞參數(shù)時,形參表與實參表中對應(yīng)參數(shù)個數(shù)、類型、位置順序必須一一對應(yīng)。

    形參表中的參數(shù)可以是:

    除固定長度字符串之外的合法變量名、數(shù)組名()

    實參表中的參數(shù)可以是:常量、變量、表達式、數(shù)組名()

    形參與實參的結(jié)合有兩種方式:

    按值傳遞和按地址傳遞。

二、按值傳遞和按地址傳遞

    1.按值傳遞

      實參把其值傳遞給形參而不傳遞實參的地址。

      數(shù)據(jù)的傳遞是單向的。

    (1)當實參為常量或表達式時,數(shù)據(jù)傳遞總是單向的。

      例如:Call SubTest(10,1+2)
         Sub SubTest(n As Integer,Sum As Single)

    (2)實參是變量時,要實現(xiàn)按值傳遞需要在形參之前通過關(guān)鍵字ByVal來實現(xiàn)。

      例如:Sub SS(ByVal X,ByVal Y,ByVal Z) 
           X=X+1:Y=Y+1:Z=Z+1
        End Sub 
        Private Sub Command1_Click() 
          A=1:B=2:C=3 
          Call SS(A,B,C) 
          Print A,B,C 
       End Sub

    運行時,單擊命令按鈕在窗體上打?。?/p>

    1        2        3

    2.按地址傳遞

    指將實參的地址傳給形參,使形參和實參具有相同的地址,即形參與實參共享同一存儲單元。

    (1)當實參為變量或數(shù)組時,形參使用關(guān)鍵字ByRef定義(或省略)表示要按地址傳遞。

    (2)當參數(shù)是數(shù)組時,數(shù)組名之后必須使用一對空的圓括號。

    按地址傳遞可以實現(xiàn)調(diào)用過程與子過程之間數(shù)據(jù)的雙向傳遞。

    例:Sub SS(ByRef X,ByRef Y,ByRef Z) 
      X=X+1: Y=Y+1: Z=Z+1
     End Sub 
     Private Sub Command1_Click() 
      A=1:B=2:C=3 
      Call SS(A,B,C) 
      PrintA,B,C 
    End Sub

    

    運行時,單擊命令按鈕在窗體上打?。?/p>

    2      3     4

    【例9-11】編寫一個計算乘冪的Function過程,用來計算x的y次冪,其中y>0。單擊窗體時調(diào)用該過程打印51、52、53、54、55的值。

    Function Power(x As Single,ByVal y As Integer) 
    Dim result As Single
    result=1 
    Do While y >0
      result=result*x 
      y=y-1 
    Loop 
    Power=result 
   End Function 
   Private Sub Form_Click() 
    Dim i As Integer 
    For i=1 To 5 
     Print Power(5,i) 
    Next i 
   End Sub

    思考:如果取消過程Power中參數(shù)y前的關(guān)鍵字ByVal,則會出現(xiàn)什么情況?



第五節(jié) 代碼模塊

    VB應(yīng)用程序由三種模塊組成:

      窗體模塊(Form)(文件擴展名.frm)

      標準模塊(Module)(文件擴展名.bas)

      類模塊(Class)(文件擴展名.cls)

    

一、窗體模塊

    包含: 事件過程

        通用過程

        通用聲明

二、標準模塊

    不對應(yīng)于某個窗體、完全是純代碼。

    包含: 全局常量、變量、全局過程

        標準模塊級常量、變量、通用過程

        注:不能包含事件過程

    添加:工程→添加模塊→選“新建”標簽→打開“添加模塊”對話框

三、類模塊

    在類模塊中編寫代碼建立新對象。

四、過程的作用域

      過程的建立位置不同,允許被訪問的范圍也不同。

      作用域:模塊級、全局級

    1.模塊級過程:在過程前如果加Private關(guān)鍵字,則這種過程只能被其所在的模塊中的其他過程所調(diào)用。

    2.全局過程:在過程前如果加Public關(guān)鍵字(或省略),則這種過程可以被其他模塊中的過程所調(diào)用。

    3.過程的作用域:見P156

    例:設(shè)窗體Form1中有按鈕:Command1、Command2

    

    設(shè)窗體Form2中有按鈕:Command1、Command2

      Private Sub Command1_Click()

    





第六節(jié) 變量的作用域與生存期

    變量的作用域:指變量的有效范圍。

    變量的生存期:指變量的作用時間。

一、變量的作用域

    將變量分為:局部變量

          模塊級變量

          全局變量

    

    1.局部變量

      聲明

      不聲明

      Dim A As Integer  'A每次執(zhí)行過程時被初始化

      Static C As Single  'C在應(yīng)用程序執(zhí)行期間保持不變

      作用范圍

      僅在聲明的過程中起作用

      其他過程中即使有同名變量,也不是指同一變量。

    例:

    

    2.模塊級變量

      聲明

        在模塊的通用聲明段中用以下方法聲明的變量。

        Private   '在模塊運行時被初始化

         Dim    '在模塊運行時被初始化

      作用范圍

        在該模塊的所有過程中都起作用

        其他模塊不能訪問這些變量

    3.全局變量

    聲明

      在模塊的通用聲明段中用以下方法聲明的變量

       Public  '應(yīng)用程序運行時被初始化

       作用范圍:應(yīng)用程序的所有過程

    

    

二、變量的生存期

    靜態(tài)變量:在應(yīng)用程序執(zhí)行期間保留不變

    動態(tài)變量:在所在的模塊(過程)運行時被初始化

    Static Sub SS1()  '局部變量I,S為靜態(tài)變量 
    For I=1 To 10
     S=S+I 
    Next I 
    Print S 
   End Sub 
   Private Sub Command1_Click() 
    Call SS1 
    Call SS1 
   End Sub

    

    例:

    





本章小結(jié)

    1.函數(shù)過程的定義和調(diào)用

    定義:

    [Public|Private][Static]Function <函數(shù)名>[(<形參表>)][As<類型>]
     ……
     [函數(shù)=表達式] 
     …… 
   End Function

    形參表:變量、數(shù)組名()

    調(diào)用:函數(shù)名(<實參表>)

       出現(xiàn)在表達式可以出現(xiàn)的位置

    2.Sub過程的定義和調(diào)用

    定義:

    [Private|Public][Static]Sub<過程名>([<形參表>]) 
     ……
   End Sub

    調(diào)用:

    (1)Call<過程名>([<實參表>])

    (2)<過程名> <過程名>[<實參表>]

    注意:Sub過程調(diào)用與函數(shù)過程定義與調(diào)用的區(qū)別

    3.過程之間的參數(shù)傳遞

    按值傳送:實際參數(shù)為常數(shù)、表達式、ByVal 變量

    按地址傳送:實際參數(shù)變量、ByRef 變量、數(shù)組名()

    4.過程的作用域

      模塊級過程;全局級過程

    5.變量的作用域

      局部變量;模塊級變量;全局變量

    6.變量的生

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多