




已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九課 面向過程程序設(shè)計(jì)基礎(chǔ) 1 本章要點(diǎn) VisualFoxPro的工作方式程序文件的建立與編輯程序文件的調(diào)用程序的基本結(jié)構(gòu)常用的交互輸入語(yǔ)句分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)過程與過程文件程序設(shè)計(jì)實(shí)例程序設(shè)計(jì)的一般問題程序調(diào)試工具 2 VFP提供了三種工作方式 即命令方式 菜單方式和程序文件方式 程序設(shè)計(jì)包括結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì) 1VFP編程基礎(chǔ) 命令方式 在 命令 窗口中 可以操作命令完成對(duì)數(shù)據(jù)庫(kù)的操作 系統(tǒng)環(huán)境的設(shè)置和建立 運(yùn)行命令文件 菜單方式 通過系統(tǒng)菜單提供的菜單選項(xiàng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 對(duì)系統(tǒng)環(huán)境進(jìn)行設(shè)置以及建立 運(yùn)行命令文件 程序文件方式 程序文件 簡(jiǎn)稱程序 也叫命令文件 在VisualFoxPro環(huán)境下 利用程序文件方式進(jìn)行數(shù)據(jù)庫(kù)管理 是通過程序文件編輯工具 將對(duì)數(shù)據(jù)庫(kù)操作的命令和對(duì)系統(tǒng)環(huán)境進(jìn)行設(shè)置的命令 集中在一個(gè)以 PRG 為擴(kuò)展名的程序文件中 然后再通過菜單方式或命令方式運(yùn)行該程序文件 3 創(chuàng)建 維護(hù) 調(diào)試程序 用菜單方式創(chuàng)建 運(yùn)行程序1 啟動(dòng)VFP 選擇 文件 菜單 再選擇 新建 2 在彈出的 新建 對(duì)話框中 選擇 程序 項(xiàng) 點(diǎn)擊 新建文件 3 在彈出的 程序1 prg 窗口中 點(diǎn)擊 保存 按鈕 4 存盤完畢后 點(diǎn)擊工具欄上的 運(yùn)行 按鈕 在VFP主窗口中就可以顯示程序運(yùn)行的結(jié)果 用菜單方式打開 修改程序1 啟動(dòng)VFP 選擇 文件 菜單 再選擇 打開 在彈出的 打開 對(duì)話框進(jìn)行操作 4 程序是指示VFP執(zhí)行的一系列指令集合 把各種不同的命令 函數(shù) 匯集在一起 形成一個(gè)VFP的程序文件 prg 1 程序文件的建立與修改 命令格式 MODIFYCOMMAND 功能 打開文本編輯窗口 用來建立或修改程序文件 程序文件的擴(kuò)展名為 PRG MODIFYCOMMAND學(xué)生 打開或新建學(xué)生 PRGMODIFYCOMMAND 打開編輯窗口文件名 工程1 PRG 1VFP編程基礎(chǔ) 2 程序文件的執(zhí)行 DO說明 DO命令默認(rèn)運(yùn)行 PRG程序 如果要運(yùn)行的是 PRG程序 DO命令中的文件名只需取文件主名 要運(yùn)行其它程序 文件名中需包括擴(kuò)展名 DO學(xué)生 注意 沒有createcommand命令 5 1VFP編程基礎(chǔ) 3 一個(gè)程序文件的基本構(gòu)成程序由若干條程序行組成 每一程序行由一條語(yǔ)句或命令組成 每一行都以鍵結(jié)束 程序可開始或行后可加注釋 4 程序書寫規(guī)則命令分行 應(yīng)在一行終了時(shí)鍵入續(xù)行符 然后按回車鍵 命令注釋 注釋行以符號(hào) 開頭 命令后也可添加注釋 這種注釋以符號(hào) 開頭 6 1VFP編程基礎(chǔ) 5 程序基本結(jié)構(gòu) 順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu)6 程序末尾可加結(jié)束語(yǔ)句 如 cancel return quit等Return命令能使程序執(zhí)行結(jié)束并返回到調(diào)用它的上級(jí)程序繼續(xù)執(zhí)行 若無上級(jí)程序則返回到命令窗口 return命令允許缺省 Cancel命令能使程序運(yùn)行終止 清除程序的私有變量并返回到命令窗口 Quit命令與文件菜單的退出命令功能相同 使用quit命令正常退出 就不會(huì)出現(xiàn)數(shù)據(jù)丟失或打開的文件被破壞等情況 還會(huì)自動(dòng)刪去磁盤中的臨時(shí)文件 程序終止運(yùn)行后將返回到WINDOWS 7 例 用程序方式顯示表student中的全部數(shù)據(jù)并邏輯刪除第2條記錄 1 在命令窗口鍵入modifycommandp1 prg 并回車 2 在命令程序編輯窗口依次輸入下列命令usestudentbrowsedeleterecord2return3 按CTRL W鍵保存程序4 在命令窗口輸入DOP1并回車執(zhí)行該程序 1VFP編程基礎(chǔ) 8 1 1輸入語(yǔ)句 p2 prg 一 ACCEPT TOAccept 輸入姓名 toxm只能接收字符型數(shù)據(jù) 輸入時(shí)不必加定界符如果指定的變量不存在 創(chuàng)建該變量 提示信息 省略則不顯示 usestudentaccept 請(qǐng)輸入記錄號(hào) tohb val h gobdelebrowusereturn 9 二 INPUT TO可輸入數(shù)值型 字符型 邏輯型或日期型數(shù)據(jù) 字符型數(shù)據(jù)要加定界符 先表達(dá)式值 再賦內(nèi)存變量 其它與ACCEPT相同input 輸入要查詢的基本工資 togzclearuset1exclusiveinput 請(qǐng)輸入出生日期 tobdaydisplayallfor出生日期 bdayreturn非格式化輸出語(yǔ)句 10 2VFP程序的基本結(jié)構(gòu) VisualFoxPro系統(tǒng)的程序有兩個(gè)特點(diǎn) 一是程序控制流模式 由順序 選擇 循環(huán)三種基本結(jié)構(gòu)構(gòu)成 二是面向?qū)ο罂梢暬慕Y(jié)構(gòu)程序模塊 在每個(gè)模塊的內(nèi)部也是由程序控制流組成 常見的控制結(jié)構(gòu)如下 1 順序結(jié)構(gòu) 2 選擇結(jié)構(gòu) 3 循環(huán)結(jié)構(gòu)4 過程結(jié)構(gòu) 在許多應(yīng)用程序中 有一些程序段需要反復(fù)執(zhí)行多次 可將其與嵌入它的程序分開 形成獨(dú)立的程序序列 待使用時(shí)再調(diào)入程序中 11 2 1順序結(jié)構(gòu)程序設(shè)計(jì) 順序結(jié)構(gòu)是在程序執(zhí)行時(shí) 根據(jù)程序中語(yǔ)句的書寫順序依次執(zhí)行的命令序列 例 雞兔共籠 已知雞兔的總頭數(shù)為h 總腳數(shù)為f 求雞兔各多少只 算法 X 4h f 2Y f 2h 2程序 clearINPUT h TOhINPUT f TOfx 4 h f 2y f 2 h 2 共有雞 x 共有兔 yreturn 順序結(jié)構(gòu)程序設(shè)計(jì) 12 例 按基本入學(xué)成績(jī)查詢學(xué)生情況clear 清除屏幕上的所有顯示內(nèi)容 光標(biāo)回到屏幕坐上角 accept 請(qǐng)輸入文件名 tof1use f1 宏替換input 輸入要查詢?nèi)雽W(xué)成績(jī) tochjlistfor入學(xué)成績(jī) chjreturn 順序結(jié)構(gòu)程序設(shè)計(jì) 2 2順序結(jié)構(gòu)程序設(shè)計(jì) 13 2 3選擇結(jié)構(gòu) 選擇結(jié)構(gòu)選擇結(jié)構(gòu)又稱為分支程序結(jié)構(gòu) 是指在程序執(zhí)行過程中 根據(jù)一定的條件判斷來確定程序走向的一種程序結(jié)構(gòu) 選擇結(jié)構(gòu)一般分為單向選擇 雙向選擇和多向選擇三種格式 1 單向選擇語(yǔ)句格式 IFENDIF 分支程序設(shè)計(jì) 功能 當(dāng)條件表達(dá)式的值為真時(shí) 執(zhí)行 否則執(zhí)行ENDIF后面的語(yǔ)句 14 例 修改student表中的數(shù)據(jù) 將姓名為 申強(qiáng) 的專業(yè)由 新聞 改為 外貿(mào) xz USEstudentLOCATFOR姓名 申強(qiáng) iffound dispreplace專業(yè)with 外貿(mào) dispendifusereturn 15 2 雙向選擇語(yǔ)句格式 IFELSEENDIF功能 系統(tǒng)執(zhí)行該語(yǔ)句時(shí) 首先判斷條件表達(dá)式的值 若為真 則執(zhí)行 然后執(zhí)行ENDIF后的語(yǔ)句 若為假 則執(zhí)行 然后執(zhí)行ENDIF后的語(yǔ)句 說明 1F ELSE和ENDIF必須配對(duì)使用 且這三條子句應(yīng)各占一行 和中可以嵌套IF語(yǔ)句 16 If else endif 例 clearinput 請(qǐng)輸入x值 toxifx 0y x 1elsey 1 xendif 輸出y值 y xz2 輸入兩個(gè)數(shù)a b 將值較大的存入變量c中 并輸出 17 例 在表worker中查找名為 李華 的記錄 如果找到把該記錄加上刪除標(biāo)記 沒有找到則顯示 查無此人 提示信息 xz3 clearuseworkerexclusivelocateallfor姓名 李華 ifnoteof deletedisplayelse 查無此人 endifusereturn 18 3 多向選擇語(yǔ)句格式 DOcaseCase后的 若所有的的值均為假 則執(zhí)行OTHERWISE后面的語(yǔ)句序列 19 例 將百分制成績(jī)轉(zhuǎn)化成分?jǐn)?shù)等級(jí) xz4 ClearInput 請(qǐng)輸入學(xué)生成績(jī) ToCjDoCaseCaseCj 90 And Cj 80 And Cj 70 And Cj 60 And Cj 69 及格 CaseCj 60 不及格 Otherwise 輸入的成績(jī)不符合條件 EndcaseReturn 20 小結(jié) 1 If endif和doCase endcase必須配對(duì)使用 doCase與第一個(gè)case之間不應(yīng)有任何命令 2 可以是各種表達(dá)式或函數(shù)的組合 其值必須是邏輯值 3 可以由一個(gè)或多個(gè)命令組成 可以是條件控制語(yǔ)句組成的嵌套結(jié)構(gòu) 4 DoCase endcase命令 每次最多只能執(zhí)行一個(gè) 在多個(gè)case的值為真時(shí) 只執(zhí)行第一個(gè)值為真的 然后執(zhí)行Endcase的后面的第一條命令 21 在順序結(jié)構(gòu)和選擇結(jié)構(gòu)的程序中 每條語(yǔ)句只執(zhí)行一次 如果要反復(fù)執(zhí)行一個(gè)程序段 則要使用循環(huán)結(jié)構(gòu)程序設(shè)計(jì) VFP提供了三種循環(huán)語(yǔ)句 DoWhile EnddoFor EndforScan Endscan 程序控制流模式 順序結(jié)構(gòu) 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 9 2 3程序的基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 22 9 2 3程序的基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 在順序結(jié)構(gòu)和選擇結(jié)構(gòu)的程序中 每條語(yǔ)句最多只執(zhí)行一次 如果要反復(fù)執(zhí)行一段程序 則要使用循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 23 程序控制流模式 順序結(jié)構(gòu) 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 23 n 0s T Dowhiles T n n 1 現(xiàn)在圈數(shù)是 nIFn 3S F 累了ENDIFEnddo 你可以休息了 9 2 3程序的基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 開始跑步 你可以休息了 1 2 0 24 3 24 思考 循環(huán)體內(nèi)若沒有n n 1 會(huì)怎樣 什么時(shí)候結(jié)束呀 累死我了 開始跑步 25 0 注意 對(duì)跑步者來說 就是要跑無數(shù)圈 對(duì)于程序而言 若循環(huán)條件一直成立 則循環(huán)體部分執(zhí)行無數(shù)次 即 死循環(huán) 循環(huán)體循環(huán)條件 9 2 3程序的基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 25 語(yǔ)句格式1 DoWhile 循環(huán)體 EnddoDOWHILE與ENDDO必須配對(duì) 成為 循環(huán)體 執(zhí)行時(shí) 判斷是否成立 若條件成立就執(zhí)行循環(huán)體部分 否則就跳出循環(huán)語(yǔ)句 轉(zhuǎn)到ENDDO后執(zhí)行 1 Dowhile enddo 26 Dowhile enddo 求1 2 n的和放入變量s中 定義 i 1 s 0循環(huán)條件 i n循環(huán)體語(yǔ)句 s s ii i 1 27 Dowhile enddo input 請(qǐng)輸入n的值 toni 1s 0dowhilei ns s ii i 1enddo 1 2 3 n的和為 s 求1 2 n的和放入變量s中 編程求n s 1 s s i 編程求s 1 2 3 n xh1 prg 28 input 請(qǐng)輸入n的值 toni 1m 0s 1dowhilei ns s im m si i 1enddo 1 2 3 n 的和為 s 求1 2 3 n 將結(jié)果存入變量s中 29 2 For循環(huán) 計(jì)數(shù)循環(huán) 2 語(yǔ)句格式 For To step Loop 語(yǔ)句序列2 Exit 語(yǔ)句序列3 Endfor Next 功能 將循環(huán)變量賦初值 判斷循環(huán)變量的值是否超過終值 若超過終值則跳出循環(huán) 執(zhí)行ENDFOR后面的語(yǔ)句 否則執(zhí)行循環(huán)體內(nèi)的語(yǔ)句序列 當(dāng)遇到ENDFOR子句時(shí) 返回FOR語(yǔ)句 并將循環(huán)變量加上步長(zhǎng)再一次與循環(huán)終值比較 如此重復(fù)執(zhí)行 直到循環(huán)變量的值超過循環(huán)終值 30 求1 2 n的和 input 請(qǐng)輸入n的值 tons 0fori 1tonstep1s s iendfor 1 2 3 n的和為 sreturn 求s n 31 編寫程序 計(jì)算n 并將結(jié)果存入變量s中 s 1Input 輸入n的值 tonfori 1to10step1s s iendfor s 步長(zhǎng)是1Step可以省略 32 說明 當(dāng)省略步長(zhǎng)值時(shí) 系統(tǒng)默認(rèn)步長(zhǎng)為1 當(dāng)初值小于終值時(shí) 步長(zhǎng)值為正值 當(dāng)初值大于終值時(shí) 步長(zhǎng)值為負(fù)值 步長(zhǎng)值不能為0 否則造成死循環(huán) 在循環(huán)體內(nèi)不要隨便改變循環(huán)變量的值 否則會(huì)引起循環(huán)次數(shù)發(fā)生改變 LOOP 和 EXIT 語(yǔ)句的功能和用法與條件循環(huán)中該語(yǔ)句的功能和用法相同 33 Dowhile enddo 例 修改表文件內(nèi)容USEsalDOWHILE NOT EOF 判斷是否到文件尾DOCASEcase工資 1000repl工資with150case工資 3000repl工資with工資 80case工資 5000repl工資with工資 50case工資 7000repl工資with工資 30ENDCASEskipENDDOReturn 34 語(yǔ)句格式2 DoWhile Loop Exit Enddo若執(zhí)行循環(huán)體部時(shí)遇到loop語(yǔ)句 則直接返回執(zhí)行do語(yǔ)句 并測(cè)試條件以決定是否繼續(xù)循環(huán) 若執(zhí)行循環(huán)體部時(shí)遇到exit語(yǔ)句 則不執(zhí)行下面的循環(huán)體語(yǔ)句序列 直接跳出循環(huán) 執(zhí)行enddo后面的語(yǔ)句 35 例 根據(jù)用戶輸入的記錄號(hào)在worker表中查詢記錄 并顯示記錄的內(nèi)容 USEworkerCounttondowhile T input 請(qǐng)輸入記錄號(hào) 0表示退出 toidocasecasein 記錄號(hào)太大 loopothergoidisplayendcaseenddocancel 36 3 庫(kù)文件掃描循環(huán)語(yǔ)句格式 Scan for while Loop Exit Endscan功能 在當(dāng)前打開的數(shù)據(jù)庫(kù)文件中按條件指定記錄 若條件滿足 則執(zhí)行循環(huán)體內(nèi)的語(yǔ)句序列 否則跳出循環(huán) 執(zhí)行ENDSCAN后面的語(yǔ)句 說明 該語(yǔ)句可方便地對(duì)當(dāng)前庫(kù)文件中所有滿足條件的記錄進(jìn)行處理 避免了在循環(huán)體內(nèi)重復(fù)執(zhí)行庫(kù)文件查詢等命令 LOOP 和 EXIT 語(yǔ)句的功能和用法與條件循環(huán)中該語(yǔ)句的功能和用法相同 3 庫(kù)文件掃描循環(huán) 37 例 查詢sal表文件中基本工資大于2000元的所有姓劉的職工信息 usesalexclusiveclearscanallfor工資 2000ifsubstr 姓名 1 2 劉 displayendifendscanusecancel 38 例 用SCAN型循環(huán) 統(tǒng)計(jì)sal表中工資超過3000元的人數(shù)Clearrc 0UseSalScanAllFor工資 3000rc rc 1Endscan 工資在3000元以上的人數(shù)為 rcUseReturn 39 例編程計(jì)算s 1 2 90 并求1 90之間的奇數(shù)之和 Store0Toi s tDoWhilei 90i i 1s s iIfint i 2 i 2 或i 2 0loopendift t ienddo 1 2 90 s 1 90之間的奇數(shù)和為 t 40 小結(jié) DoWhile和EndDo For和EndFor Scan和EndScan必須配對(duì)使用 2 可以是任何VFP命令或語(yǔ)句 也可以是循環(huán)語(yǔ)句 即可以為多重循環(huán) 3 應(yīng)是數(shù)值型的內(nèi)存變量或數(shù)組元素 4 Exit和Loop命令嵌入在循環(huán)體內(nèi) 可以改變循環(huán)次數(shù) 但是不能單獨(dú)使用 5 在各種循環(huán)語(yǔ)句的循環(huán)體中可以插入LOOP和EXIT語(yǔ)句 前者能使執(zhí)行轉(zhuǎn)向循環(huán)語(yǔ)句頭部繼續(xù)循環(huán) 后者則用來立即退出循環(huán) 轉(zhuǎn)去執(zhí)行ENDDO ENDFOR或ENDSCAN后面的語(yǔ)句 41 3子程序 子程序在程序設(shè)計(jì)中 常把重復(fù)書寫的一段程序獨(dú)立設(shè)計(jì) 這種具有相對(duì)獨(dú)立性和通用性的程序段稱為子程序 子程序能被程序多次調(diào)用 調(diào)用子程序的程序稱為主程序 使用子程序設(shè)計(jì) 大大簡(jiǎn)化程序設(shè)計(jì)和調(diào)試過程 使程序結(jié)構(gòu)化 即模塊化 子程序?qū)嵸|(zhì)也是一個(gè)獨(dú)立的程序文件 以 prg為擴(kuò)展名 應(yīng)以獨(dú)立的程序文件存放在磁盤上 其設(shè)計(jì)與建立一般的程序文件的方法一樣 42 2 子程序的建立與調(diào)用DO說明 從指定的磁盤中 調(diào)出所指子程序并立即執(zhí)行 該子程序若不在當(dāng)前文件夾下 必須指明路徑 子程序的擴(kuò)展名 prg一般省略不寫 該子程序執(zhí)行完后 由其本身的RETURN語(yǔ)句控制返回調(diào)用它的主程序中去 主程序調(diào)用子程序 子程序又可調(diào)用另一個(gè)子程序 但子程序不可調(diào)用主程序 43 看一個(gè)簡(jiǎn)單的參數(shù)傳遞的例子 主程序 MAIN0 PRG input 輸入p值 topDOsub0WITHp PRETURN子程序 SRSJ0 PRG PARAMETERSCC C CRETURN 44 子程序調(diào)用過程中的數(shù)據(jù)傳送為了使數(shù)據(jù)能夠共享 在程序調(diào)用過程中 子程序和主程序之間應(yīng)有數(shù)據(jù)的傳遞 稱為參數(shù)傳遞 參數(shù)傳遞是主程序在調(diào)用子程序時(shí)發(fā)送數(shù)據(jù)而子程序接受數(shù)據(jù)的過程 主程序可以用 with 向子程序傳遞參數(shù) DOWITH說明 調(diào)用子程序 用向子程序傳遞參數(shù) 使用內(nèi)存變量作參數(shù)時(shí) 可把被執(zhí)行的子程序的參數(shù)新值帶回 在子程序中的第一條語(yǔ)句中用下面的命令接受傳遞過來的參數(shù) 格式 PARAMETERS當(dāng)用參數(shù)調(diào)用命令時(shí) 被調(diào)用的子程序的第一語(yǔ)句必須PARAMETERS語(yǔ)句 45 參數(shù)傳遞的進(jìn)一步說明 中的參數(shù)應(yīng)與中的參數(shù)一一對(duì)應(yīng) 即參數(shù)個(gè)數(shù) 數(shù)據(jù)類型都要一致 但名稱可以不同 中的實(shí)參可以是常量 變量或表達(dá)式 但中的形參只能是變量 若實(shí)參是常量則數(shù)據(jù)不能回傳 若實(shí)參是表達(dá)式則將表達(dá)式對(duì)應(yīng)的值傳遞給子程序 無論是實(shí)參還是形參都不能是字段變量 需要傳遞字段變量的值時(shí) 可先賦值給一內(nèi)存變量 46 主程序 MAIN1 PRG input 英語(yǔ)成績(jī) topinput 數(shù)學(xué)成績(jī) toqinput 計(jì)算機(jī)成績(jī) toka 0DOSRSJ1WITHP Q K a ARETURN子程序 SRSJ1 PRG PARAMETERSC D E aa E C D 3RETURN 47 4局部變量和全局變量 局部變量是指只能在說明它的程序及被它調(diào)用的下屬各級(jí)子程序中使用的內(nèi)存變量 全局變量是指在所有程序模塊中 都可以引用及修改的變量 甚至在命令窗口也可以引用 全局變量的定義 PUBLIC說明 內(nèi)存變量為全局變量 內(nèi)存變量必須在說明為全局變量之后 再賦值 全局變量可在主程序或子程序中定義 也可在命令窗口中定義 48 主程序MAIN3 PRGPUBLICi Ji 1J 0DOSUB3 i i J J K K 在MAIN3 PRG中的值 CANCEL子程序SUB3 PRGi i 2J i 1K i J i i J J K K 在SUB3 PRG中值 RETURN在上兩個(gè)程序中存在一個(gè)錯(cuò)誤 可究竟錯(cuò)在在那里 49 再看下面的兩個(gè)程序吧 主程序main4 PrgPublicI jI 1J 0DoSub4 I i j j k k 在main4 Prg中的值 Cancel子程序sub4 PrgPublicKI i 2J i 1K i j I i j j k k 在sub4 Prg中值 Return 50 1VFP程序 再改動(dòng)一下上面二個(gè)程序主程序MAIN5 PRG publicI ji 1J 0DOSUB1 i i J J K K 在MAIN5 PRG中的值 CANCEL子程序SUB5 PRGPUBLICKi i 2J i 1K i J i i J J K K 在SUB5 PRG中值 RETURN這說明了什么問題 在主程序中定義的局部變量在其子程序中都有效 因?yàn)閕 j沒有使用public定義 所以i j只能是局部變量 但這樣就有一個(gè)問題 在主程序中建立的一個(gè)局部變量n 不小心在子程序也建立了一個(gè)同名的變量n 那么在調(diào)用子程序時(shí) 就會(huì)改變主程序中變量n的值 有什么辦法解決主程序和子程序中變量重名的問題呢 51 我們可以采用定義私有變量的方法 定義格式為 private功能 指定中的變量為本程序模塊中的私有變量 說明 私有變量也是局部變量 這些局部變量?jī)H在定義它的程序中及該程序調(diào)用的子程序中起作用 并把同名的全局變量或上層模塊中定義同名變量隱藏起來 52 下例中表現(xiàn)了私有變量的作用 主程序MAIN4 PRGi 1J 0k 1doSUB4 i i J J K K 在MAIN1 PRG中的值 cancel子程序SUB4 PRGprivateKi i 2J i 1K i J i i J J K K 在SUB1 PRG中值 53 過程與自定義函數(shù)1 過程 過程文件的概念在調(diào)用多個(gè)子程序時(shí) 運(yùn)行速度下降 且打開的文件數(shù)也受限制 將多個(gè)子程序組合起來 組成一個(gè)過程文件 提高程序運(yùn)行效率 過程文件中的每個(gè)子程序稱為一個(gè)過程 一個(gè)過程也是一個(gè)程序文件 其后綴為 PRG 一個(gè)過程文件中可以包含多個(gè)過程 54 建立 格式格式 Procedure Parameters ReturnProcedure Parameters Return 說明 過程文件中的每個(gè)過程不再是一個(gè)單獨(dú)的命令文件 而是這個(gè)過程文件中的一個(gè)程序段 55 過程rsglgc Prg中的內(nèi)容 子程序1 ProcSub1AppeReturn 子程序2 ProcSub2ClearInput 請(qǐng)輸入要修改記錄的職工號(hào) ToZghLocaFor職工號(hào) zghEditReturn 56 5過程文件的調(diào)用 打開過程文件 SetProcedureTo調(diào)用過程 DoWith關(guān)閉過程文件 SetProcedureTo或CloseProcedure說明 調(diào)用一個(gè)過程前必須將過程文件打開 任何一個(gè)時(shí)刻只能打開一個(gè)過程文件 當(dāng)打開另一個(gè)過程文件時(shí) 原先打開的過程文件將自動(dòng)關(guān)閉 57 例如 主程序mainproc prg如下 clearsetproceduretosubprocn 23m 9result 0doaddm n result resultdosubn m result resultdomulm n result resultcloseprocedurereturn 例如 過程文件subproc prg如下 procedureaddparaa b cc a breturnproceduresubparaa b cc a breturnproceduremulparaa b cc a breturn 58 6自定義函數(shù) 格式 function parameters return調(diào)用方式 說明 自定義函數(shù)與子程序概念基本相同 但其執(zhí)行結(jié)束后必須要返回一個(gè)函數(shù)值 自定義函數(shù)不能與系統(tǒng)函數(shù)和內(nèi)存變量重名 59 函數(shù)的使用 1 將函數(shù)作為一個(gè)獨(dú)立的文件主程序main prgclearsetdefaulttod input 請(qǐng)輸入第一條邊的長(zhǎng)度 toainput 請(qǐng)輸入第二條邊的長(zhǎng)度 tobinput 請(qǐng)輸入第三條邊的長(zhǎng)度 tocresult mj a b c 面積為 resultreturn 計(jì)算三角形面積的自定義函數(shù) mj prgParaA b cP a b c 2S sqrt p p a p b p c ReturnS 60 2 將函數(shù)作為主程序中的一個(gè)程序段 主程序main prgclearinput 請(qǐng)輸入第一條邊的長(zhǎng)度 toainput 請(qǐng)輸入第二條邊的長(zhǎng)度 tobinput 請(qǐng)輸入第三條邊的長(zhǎng)度 tocresult mj a b c 面積為 resultreturnfunctionmjparaa b cp a b c 2s sqrt p p a p b p c returns 61 文本輸出語(yǔ)句格式 textendtext功能 在屏幕上原樣顯示text和e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物流車輛維修配件供應(yīng)合同
- 2025年度新型建筑材料應(yīng)用示范工程售后服務(wù)保障書
- 2025年激光影像輸出膠片項(xiàng)目合作計(jì)劃書
- 2025年度國(guó)際物流公司項(xiàng)目總監(jiān)聘用合同模板3篇
- 優(yōu)化幼兒園教研學(xué)期工作計(jì)劃的管理與執(zhí)行
- 客戶化需求對(duì)倉(cāng)庫(kù)的影響計(jì)劃
- 建立規(guī)范的接待標(biāo)準(zhǔn)與流程計(jì)劃
- 社區(qū)養(yǎng)老服務(wù)體系的完善計(jì)劃
- 班主任我們永遠(yuǎn)的信仰計(jì)劃
- 2025年飼料及寵物食品項(xiàng)目建議書
- 駱駝祥子 故事情節(jié)
- 馬克思主義宗教觀課件
- 語(yǔ)文版九年級(jí)下冊(cè)課外閱讀練習(xí)
- 【課件】第11課+美術(shù)的曙光-史前與早期文明的美術(shù)+課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- 高中化學(xué)人教版一輪復(fù)習(xí)-晶體結(jié)構(gòu)與性質(zhì)(復(fù)習(xí)課件)
- GB/T 22919.3-2008水產(chǎn)配合飼料第3部分:鱸魚配合飼料
- 船舶涂裝課件
- 【薪酬】國(guó)有企業(yè)中長(zhǎng)期股權(quán)激勵(lì)課件
- 《新聞攝影教程(第五版)》第三章 新聞攝影工作者的職責(zé)與素養(yǎng)
- 學(xué)前兒童行為觀察第一章觀察概述課件
- 化學(xué)品防范說明編碼
評(píng)論
0/150
提交評(píng)論