計算機基礎(chǔ)與Visual Basic程序設(shè)計(第二版)第九章 過程_第1頁
計算機基礎(chǔ)與Visual Basic程序設(shè)計(第二版)第九章 過程_第2頁
計算機基礎(chǔ)與Visual Basic程序設(shè)計(第二版)第九章 過程_第3頁
計算機基礎(chǔ)與Visual Basic程序設(shè)計(第二版)第九章 過程_第4頁
計算機基礎(chǔ)與Visual Basic程序設(shè)計(第二版)第九章 過程_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1 第 9章 過 程與函數(shù) 2 過程的定義 : 在設(shè)計一個規(guī)模較大、復(fù)雜程度較高的程序時,往往根據(jù)需要按功能 將程序分解成若干個相對獨立的部分 ,然后對每個部分分別編寫一段程序,這些程序段稱為 過程。 過程是構(gòu)成程序邏輯部件的基本單位 ,將程序分割成較小的邏輯部件可以簡化程序設(shè)計任務(wù),結(jié)構(gòu)化設(shè)計就是建立在這個思路之上。 每個過程完成一個具有特定目的的任務(wù)。 3 過程 函數(shù) 內(nèi)部函數(shù)(如: ) ) 通用函數(shù)(自定義函數(shù) 事件過程 通用過程(自定義過程 窗體事件過程(如: )) 控件事件過程(如 :)) 事件過程 是對 發(fā)生的事件 進行處理的程序段 通用過程和通用函數(shù) 是由用戶根據(jù)自己的需要定義和編寫 的、可供事件過程多次調(diào)用的程序段 它們都不直接與特定的事件相關(guān)聯(lián) 4 通用過程( 程 是指 以規(guī)定語法結(jié)構(gòu)組織的 、 可以被重復(fù)調(diào)用的 、 具有特定功能的 、 相對獨立的 程序段。 與任何特定的事件過程相關(guān)聯(lián),只能由別的過程調(diào)用 1、 聲明 程 (定義 ) 聲明 程 就是在 窗體或標(biāo)準模塊 的代碼窗口編寫一個能實現(xiàn)預(yù)期功能的語句塊。 聲明 過程名 () 過程體 注意: 程名無值,無類型。 5 說明: 1、 每個通用過程都有一個 過程名 (由用戶自己指定,規(guī)定同變量名), 同一模塊中過程名不得重復(fù)。 2、 過程前加上 缺省,則該過程為 全局級過程 , 可以被應(yīng)用程序的所有窗體模塊或標(biāo)準模塊中的過程調(diào)用(在窗體中定義,調(diào)用時應(yīng)加窗體名) 。 3、 過程前加上 則該過程為 模塊級過程 ,只有在聲明它的模塊中才可以調(diào)用此過程。 4、 在過程名前加上 表明該過程的變量都是靜態(tài)變量。 5、 形參列表 是傳遞到過程中的變量名 (多個時用“ ,”分隔 ),它指明了調(diào)用時傳遞給過程的參數(shù)的類型和個數(shù) . 過程可以有參數(shù),也可以不帶任何參數(shù)。根據(jù)需要而定 格式為: 量名 ( ) 據(jù)類型 , 示按值傳遞; 示按地址傳遞 6、過程內(nèi)不能再定義過程,過程定義也不能寫在事件過程內(nèi) 6 如: x y x=x+100 y=y*6 x,y 7、 建立通用過程可以使用以下兩種方法: “工具” ”添加過程” 在標(biāo)準模塊或窗體模塊中, 直接輸入通用過程的代碼。 8、子過程名不返回值,只能通過形式參數(shù)與調(diào)用語句通信 9、過程體中的 示強制退出過程返回 7 2、調(diào)用 程 要執(zhí)行一個過程 , 必須調(diào)用該過程 。 調(diào)用的方法為: 方法 1 使用 格式: 過程名 (實參列表 ) 方法 2. 將過程名作為語句使用 : 格式: 過程名 特點: 程的調(diào)用 是一句獨立的語句。 例:要調(diào)用前面的 可以使用下面兩種方式: a , b) 或 a , b 主過程 過程 1 程 1 過程 2 程 2 用的本質(zhì):轉(zhuǎn)入被調(diào)用過程去執(zhí)行 ,完成后返回 8 說明: 1、使用 數(shù)必須放在括號內(nèi),如沒有參數(shù),括號可省略 2、用過程名調(diào)用時,過程名后不能加括號,若有參數(shù),參數(shù)與過程名間用空格隔開 3、參數(shù)表:在調(diào)用語句中的參數(shù)稱為實際參數(shù)(簡稱實參),實參可以是變量、常量、數(shù)組或表達式,參數(shù)間用逗號隔開 4、 可以直接調(diào)用本模塊中聲明的過程或 標(biāo)準模塊中聲明的全局過程; 5、 當(dāng)定義的過程重名時,調(diào)用過程時,過程名前應(yīng)加模塊名修飾; 6、 如果要調(diào)用 窗體模塊 中聲明的 全局過程, 調(diào)用時過程名前 應(yīng)加窗體名。 9 程 與 程 的主要區(qū)別是: 程 可通過函數(shù)名返回一個值到調(diào)用的過程 1、 聲明 程(函數(shù)定義) 格式: 函數(shù)過程名 () = 返回值語句 意: 在函數(shù)體內(nèi),函數(shù)名可以當(dāng)變量名使用,函數(shù)的返回值就是通過對函數(shù)名的賦值語句來實現(xiàn)的。即函數(shù)值通過函數(shù)名返回。 函數(shù)體中的 函數(shù)過程需要返回的值的類型由 設(shè)置 。 程(自定義函數(shù)) 函數(shù)體 10 2、 調(diào)用 程 程的調(diào)用 , 與標(biāo)準函數(shù) ( 內(nèi)部函數(shù) ) 相同 。 通常用在表達式中 格式: 函數(shù)名 () 特點: 不能獨立成為語句,必須參加表達式的運算。 如 1: 下面是已知直角三角形兩直角邊的值,計算斜邊的函數(shù)。 as as as *A+B*B) ) a=: b= a , b) 1 例 2: 將前面的兩個 x y z s s = (x + y + z) / 2 s - x) * (s - y) * (s - z) * s) a#, b#, c#, s#, a = : b = c = If a + b c b + c a c + a b 面積 =; a, b, c) ) 無參數(shù)時,括號不能省略 f 2 過程中參數(shù)的傳送 不同模塊(過程)之間數(shù)據(jù)的傳遞方式: 通過全局變量實現(xiàn)各過程中共享數(shù)據(jù) (即在 “通用”部份 定義的變量,由該模塊所有過程 共享 ) 通過過程調(diào)用實參與形參的結(jié)合實現(xiàn) 按值傳遞 (單向傳遞 ) 按地址傳遞 (雙向傳遞 ) 13 的參數(shù)稱為 形式參數(shù) ( 形參 ) , 在程序中調(diào)用 稱為實際參數(shù) ( 實參 ) 。 在調(diào)用過程時 , 就是 把 “ 實參 ” 依次 按位置 傳遞給被調(diào)用過程的 “ 形參 ” , 然后執(zhí)行被調(diào)用過程中的語句 。 參數(shù)傳遞時相當(dāng)于給變量賦初值 。 如: x, y) m n 參數(shù)傳遞有兩種模式: 按值傳遞 與 按址傳遞 14 按值傳遞 就是將 實參的值 傳送給被調(diào)用過程中的 形參 。 即:系統(tǒng)把實參復(fù)制一份傳送給形參。 這樣, 被調(diào)用的過程如果改變了形參的值,也不會改變實參的值。 在 值方式的標(biāo)志為: 在形參前加上 這種傳遞方式 是一種單向的數(shù)據(jù)傳遞 , 即調(diào)用時只能由實參的值傳遞給形參,調(diào)用結(jié)束不能由形參將操作結(jié)果返回給實參 。 實參可以是常數(shù)、變量或表達式。 1、 按值傳遞 15 例: 寫出下列程序的運行結(jié)果 x as y as x=x+100 y=y*6 “x=“;x.”y=“;y a%,b% a=10:b=20 a,b “a=“;a,”b=“;b 值: X=110 y=120 a=10 b=20 16 2、 按址傳遞 變量的引用 傳址方式是將實參在內(nèi)存的地址傳遞給形參 , 也就是實參 、形參公用內(nèi)存的 “ 地址 ” 。 在 按址傳遞數(shù)據(jù)是在形參前加上 默認方式 ) 。 這種傳遞方式 是一種雙向的數(shù)據(jù)傳遞 ,即調(diào)用時實參將值傳遞給形參;調(diào)用結(jié)束由形參將操作結(jié)果返回給實參。當(dāng)用傳址方式時, 實參只能是變量、數(shù)組名,不能是常數(shù)、表達式。 修改前例題 再寫其運行結(jié)果 17 x as y as x=x+100 y=y*6 “x=“;x.”y=“;y a%,b% a=10:b=20 a,b “a=“;a,”b=“;b 址: X=110 y=120 a=110 b=120 18 3、 數(shù)組作過程的參數(shù) 數(shù)組作參數(shù)是通過傳地址方式傳送 。 在傳送數(shù)組時 , 除遵守參數(shù)傳送的一般規(guī)則外 , 還應(yīng)注意以下幾點: 1 為了把一個數(shù)組的全部元素傳送給一個過程 , 應(yīng)將數(shù)組名分別寫入形參表中 , 并略去數(shù)組的上下界 , 但括號不能省略 。 a() As 中形參 “ a( )”即為數(shù)組 。 19 2 被調(diào)過程可通過 下界 。 3 當(dāng)用數(shù)組作形參時 , 對應(yīng)的實參必須也是數(shù)組 , 且類型一致 。 4 實參和形參結(jié)合是按地址傳遞 , 即形參數(shù)組和實參數(shù)組共用一段內(nèi)存單元 。 例如:定義了實參數(shù)組 b(1 ), 給它們賦了值 , 調(diào)用函數(shù)過程的形式如下: b( ) 或 b() ) 實參數(shù)組后面的括號可以省略,但為便于閱讀,建議一般不要省略為好。 3、 數(shù)組作過程的參數(shù) 20 調(diào)用時形參數(shù)組 共用一段內(nèi)存單元 , 如圖 6 因此在 過程中改變數(shù)組 也就相當(dāng)于改變了實參數(shù)組 當(dāng)調(diào)用結(jié)束時 , 形參數(shù)組 b(1) b(2) b(3) b(4) b(5) b(6) b(7) b(8) a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) 參數(shù)為數(shù)組時虛實結(jié)合示意圖 3、 數(shù)組作過程的參數(shù) 21 可選參數(shù)和可變參數(shù) 1、 可選參數(shù) 在過程的形參列表中加入 就可以指定過程的參數(shù)為可選的。如果指定了可選參數(shù),則 參數(shù)表中此參數(shù)后面的其它參數(shù)也必是可選的 ,并且要用 例 6: 求兩個數(shù)的和的函數(shù)過程。 函數(shù)過程: s f 2 事件過程: a b c im s a = 10: b = 20 a, b) ; a = 10: b = 20: c = 30 a, b, c) ; )檢測可選參數(shù)是否被省略 23 2、 不定數(shù)量的參數(shù)(可變參數(shù)) 一般說來,過程調(diào)用中的參數(shù)個數(shù)應(yīng)等于過程說明的參數(shù)個數(shù)。 在傳遞參數(shù)時, 如果要求參數(shù)的數(shù)目可以變化 ,則在函數(shù)過程或 參前可加 不能與 連用) 指明。 格式如下: 程名 ( 其他參數(shù) , ( ) ) 24 s( ), a%, b c d s = , 2, 3, 4, 5) ; s(0), s(2), s(4) ) a = 1000: b = 10000: c = 100: d = 10 ; a, b, c, d ) p() ) as or p) p) p(5 窗體參數(shù) 形參定義格式 : 形參名 調(diào)用時實參 : 必須為某個窗體名稱 控件參數(shù) : 形參定義格式 : 形參名 調(diào)用時實參 : 可為任意一個控件對象 26 過程的嵌套和遞歸 1、 過程的嵌套 在程序中調(diào)用一子過程 , 而在子過程中又調(diào)用另外的子過程 , 這種程序結(jié)構(gòu)稱為 過程的嵌套 。 過程的嵌套調(diào)用執(zhí)行過程如 下圖: 27 2、 過程的遞歸調(diào)用 用自身的結(jié)構(gòu)來描述自身,稱遞歸。例如,對階乘的定義: )!2()1()!1()!1(!遞歸 直接調(diào)用自己稱為直接遞歸調(diào)用 間接調(diào)用自己稱為間接遞歸調(diào)用 過程的嵌套和遞歸調(diào)用 28 n f n = 1 1 n * n - 1) f )=”; ) 序的遞歸過程: 29 說明: 遞歸處理分遞推和回歸兩個過程 , 如上圖所示 。 當(dāng)一個大問題能夠分解成同類型的小問題 ,且問題 規(guī)模在逐漸減小 ,才適合用遞歸解決 . 使用遞歸算法必須要滿足以下的遞歸條件: ( 1)存在遞歸結(jié)束條件及結(jié)束時的值; ( 2)能用遞歸形式表示,且遞歸向終止條件發(fā)展。 30 變量的作用域 根據(jù)變量的作用域,變量分為 局部 ( 過程級 )變量、 窗體 / 模塊 變量和 全局 變量 局部 變量 在過程中用 存在于過程中 用 義的變量稱為動態(tài)變量 ,生存期為過程的一次調(diào)用 . 用 生存期為整個應(yīng)用程序的執(zhí)行期間 (重點掌握 ,舉例 ) 窗體 / 模塊 變量 塊中的所有過程都可使用 全局 變量 以在所有模塊中使用 31 s i 0 i = 1 i) i x s s = s + x s 行時單擊窗體 , 程序輸出結(jié)果為 : 32 能 能 變量名前加窗體 名 不能 不能 被其他模塊 存取 能 能 不能 被本模塊的其他過程存取 通用聲明 通用聲明 過程中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論