




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/1/31VisualFoxPro6.0程序設(shè)計(jì)12023/1/31VisualFoxPro6.0程序設(shè)計(jì)17.1VFP6程序設(shè)計(jì)初步7.2VFP6程序的基本結(jié)構(gòu)7.3多模塊程序7.4程序調(diào)試小結(jié)返回退出第7章VFP6程序設(shè)計(jì)基礎(chǔ)2023/1/31VisualFoxPro6.0程序設(shè)計(jì)22023/1/31VisualFoxPro6.0程序設(shè)計(jì)2一、VFP6程序設(shè)計(jì)基本概念
二、VFP6程序設(shè)計(jì)基本操作
三、程序中常用的簡(jiǎn)單語(yǔ)句返回退出7.1VFP6程序設(shè)計(jì)初步2023/1/31VisualFoxPro6.0程序設(shè)計(jì)32023/1/31VisualFoxPro6.0程序設(shè)計(jì)3
VFP6支持過(guò)程化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)兩種程序設(shè)計(jì)與開(kāi)發(fā)的類(lèi)型。下面是一個(gè)完整的VFP過(guò)程化程序。*功能說(shuō)明:求圓形的面積。*文件名:CH7001.PRGCLEARSETTALKOFFINPUT"請(qǐng)輸入圓的半徑,半徑="TORS=PI()*R*R?"半徑為"+ALLTRIM(STR(R))+"的圓,面積=",SSETTALKonRETURN一、VFP6程序設(shè)計(jì)基本概念2023/1/31VisualFoxPro6.0程序設(shè)計(jì)42023/1/31VisualFoxPro6.0程序設(shè)計(jì)4(1)一個(gè)命令行內(nèi)只能寫(xiě)一條命令,命令行的長(zhǎng)度不得超過(guò)2048個(gè)字符,以回車(chē)鍵結(jié)束。(2)一個(gè)命令行可以由若干個(gè)物理行組成。換行的方法有兩種:一種是在物理行的末尾加符號(hào)“;”,表示下一行輸入的內(nèi)容是本行的繼續(xù);另一種是系統(tǒng)自動(dòng)換行.(3)為便于閱讀,可以按一定的格式輸入程序。1、從形式上看,滿足下列規(guī)則:2、從功能上看,程序分為三個(gè)部分:第一部分是程序的說(shuō)明部分。說(shuō)明程序的功能、文件名等有關(guān)信息。第二部分是進(jìn)行數(shù)據(jù)處理的部分。包括三個(gè)部分:提供原始數(shù)據(jù)部分、數(shù)據(jù)處理部分、輸出結(jié)果部分。第三部分是程序的控制返回部分??刂瞥绦蚍祷氐秸{(diào)用該程序的調(diào)用處。返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)62023/1/31VisualFoxPro6.0程序設(shè)計(jì)6
VFP程序文件是一個(gè)ASCII文本文件,因而可用各類(lèi)編輯工具來(lái)建立。在VFP系統(tǒng)中有三種簡(jiǎn)易方法來(lái)建立:(1)命令方式。(2)菜單方式。(3)項(xiàng)目管理器方式二、VFP6程序設(shè)計(jì)基本操作
1、程序文件的建立和修改2023/1/31VisualFoxPro6.0程序設(shè)計(jì)72023/1/31VisualFoxPro6.0程序設(shè)計(jì)7格式:MODIFYCOMMAND[<文件名>/?]
功能:打開(kāi)文本編輯窗口,編寫(xiě)程序代碼。參數(shù)描述:1、<文件名>:可選項(xiàng),指定打開(kāi)或創(chuàng)建的程序文件名。若不指定擴(kuò)展名,自動(dòng)指定.PRG為擴(kuò)展名2、文件名支持含有“*”和“?”通配符的文件。名稱(chēng)與這個(gè)匹配的每一個(gè)文件都在編輯窗口中打開(kāi)。3、若省略文件名,將給打開(kāi)的編輯窗口賦一個(gè)初始名稱(chēng)“程序1.PRG”。4、?:顯示“打開(kāi)”對(duì)話框??梢詮闹羞x擇一個(gè)已有程序或輸入要?jiǎng)?chuàng)建的新程序名。命令方式:2023/1/31VisualFoxPro6.0程序設(shè)計(jì)82023/1/31VisualFoxPro6.0程序設(shè)計(jì)8運(yùn)行的程序有:命令方式、菜單方式、項(xiàng)目管理器方式命令方式:
DO<程序文件名>
系統(tǒng)會(huì)假定它具有.PRG的擴(kuò)展名。例如:要運(yùn)行上例中編輯的程序,可以在命令窗口中輸入:
DOCH7001然后按回車(chē)鍵執(zhí)行。2、運(yùn)行程序返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)92023/1/31VisualFoxPro6.0程序設(shè)計(jì)9格式:WAIT[<提示信息>][TO<內(nèi)存變量名>]功能:暫停正在運(yùn)行的程序,等待用戶輸入一個(gè)字符或單擊鼠標(biāo)為止。說(shuō)明:1、若選擇TO<內(nèi)存變量名>子句,將輸入的單個(gè)字符存入指定的內(nèi)存變量。2、若選擇<提示信息>子句,執(zhí)行此命令時(shí),屏幕上將顯示提示信息,否則,屏幕上將顯示“按任意鍵繼續(xù)…”
WAIT語(yǔ)句主要用于下列兩種情況。
(1)暫停程序的運(yùn)行,以便觀察程序的運(yùn)行情況。(2)根據(jù)實(shí)際情況輸入某個(gè)字符,以控制程序的執(zhí)行流程。比如,在應(yīng)用程序中進(jìn)行“Y/N”選擇中。三、程序中常用的簡(jiǎn)單語(yǔ)句(命令)
1、交互式輸入命令
(1)輸入一個(gè)字符語(yǔ)句2023/1/31VisualFoxPro6.0程序設(shè)計(jì)102023/1/31VisualFoxPro6.0程序設(shè)計(jì)10格式:ACCEPT[<提示信息>]TO<內(nèi)存變量名>
功能:從鍵盤(pán)上接收的字符串?dāng)?shù)據(jù)存入指定的內(nèi)存變量中。參數(shù)描述:[<提示信息>]:指定提示信息字符串。在VFP中,提示文本的字體與VFP主窗口的字體相同。但輸入的字符數(shù)據(jù)用9磅字體(FoxFont)顯示。[<內(nèi)存變量名>]:指定存儲(chǔ)字符數(shù)據(jù)的內(nèi)存變量或數(shù)組元素(2)字符接收語(yǔ)句
2023/1/31VisualFoxPro6.0程序設(shè)計(jì)112023/1/31VisualFoxPro6.0程序設(shè)計(jì)11【例7-2】試編程完成下述功能:從鍵盤(pán)隨機(jī)輸入某個(gè)表的文件名,要求打開(kāi)并顯示此表的內(nèi)容。命令:MODIFYCOMMANDch7002*CH7002.PRGCLEARsetdefaulttoH:\vfpsy\ch7SETTALKOFFACCEPT"請(qǐng)輸入表文件名"TOFileNameUSE(FileName)LISTUSESETTALKonRETURN說(shuō)明:程序中第四句使用了宏代換函數(shù),這是由于FileName本身不是文件名,而其內(nèi)容才是文件名。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)122023/1/31VisualFoxPro6.0程序設(shè)計(jì)12格式:INPUT[<提示信息>]TO<內(nèi)存變量名>功能:用于接收從鍵盤(pán)上輸入的表達(dá)式,并將計(jì)算結(jié)果存入指定的內(nèi)存變量或數(shù)組元素中。參數(shù)描述:[<提示信息>]:提示信息,提示用戶輸入數(shù)據(jù)。[<內(nèi)存變量名>]:指定一個(gè)內(nèi)存變量或數(shù)組元素。說(shuō)明:INPUT語(yǔ)句與ACCEPT語(yǔ)句的區(qū)別是:ACCEPT命令只能接收字符串,而INPUT語(yǔ)句可以接收任意類(lèi)型的VFP表達(dá)式;ACCEPT語(yǔ)句不要使用字符型定界符,而INPUT語(yǔ)句必須用定界符括起來(lái)。(3)通用數(shù)據(jù)接收命令2023/1/31VisualFoxPro6.0程序設(shè)計(jì)132023/1/3113【例7-3】試編程完成下列功能。從鍵盤(pán)上隨機(jī)輸入一個(gè)正數(shù),以此數(shù)為半徑,求圓面積和球體積,并輸出結(jié)果。程序如下:*CH7003.PRGCLEARSETTALKOFFINPUT"半徑="TORS=PI()*R*RV=4/3*PI()*R**3?"圓面積=",S?"球體積=",VSETTALKonRETURN在命令窗口中執(zhí)行:DOCH5003屏幕顯示半徑=10輸入10后按Enter鍵顯示結(jié)果圓面積=314.16球體積=4188.7902052、非格式輸出語(yǔ)句(1)“?”輸出語(yǔ)句格式:?<表達(dá)式>
格式:??<表達(dá)式>
功能:將內(nèi)容輸出到光標(biāo)所在行的下一行起始處。(2)“??”輸出語(yǔ)句功能:本次輸出內(nèi)容接在上次輸出同一行后面。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)15(3)文本顯示命令格式:TEXT <文本字符串>ENDTEXT功能:將<文本字符串>原樣輸出。這條命令通常是用于程序中對(duì)用戶說(shuō)明某些問(wèn)題。*ch7004.prgsettalkoffcleartext**********************************1、錄入數(shù)據(jù)2、刪除數(shù)據(jù)**3、修改數(shù)據(jù)4、查詢**5、請(qǐng)輸入(1~4)**********************************endtextwait"按任意鍵繼續(xù)eeeeee"windowstimeout5return例7-4:CH7004.PRG2023/1/31VisualFoxPro6.0程序設(shè)計(jì)172023/1/31VisualFoxPro6.0程序設(shè)計(jì)17格式:@<行號(hào),列號(hào)>SAY<提示信息>get<變量>read
功能:在指定位置輸出提示信息并接受鍵盤(pán)輸入,同時(shí)賦值給get后面的變量。說(shuō)明:①get子句的變量名必須事先定義。②必須有read語(yǔ)句激活get變量才能編輯,一個(gè)read可激活多個(gè)get變量。3、格式化輸出命令例5:ch7005.prg*ch7005.prgsettalkoffsetcenturyonclearuseI:\vfpsy\CH3\職工input"請(qǐng)輸入記錄號(hào)"tongon@3,5say"職工號(hào):"get職工號(hào)@3,33say"姓名:"get姓名@3,61say照片@5,15say"出生日期:"get出生日期*@5,39say"工資:"get工資@7,15say"職稱(chēng):"get職稱(chēng)@9,15say"簡(jiǎn)歷:"get簡(jiǎn)歷readusesettalkon4、messagebox函數(shù)功能:格式1僅顯示一個(gè)自定義對(duì)話框;格式2除格式1的功能外,還將函數(shù)的返回值送到內(nèi)存變量中,以便根據(jù)返回值決定程序執(zhí)行情況。格式一:messagebox(<信息內(nèi)容>[,<對(duì)話框類(lèi)型>[對(duì)話框標(biāo)題>]])格式二:變量=messagebox(<信息內(nèi)容>[,<對(duì)話框類(lèi)型>[對(duì)話框標(biāo)題>]])MESSAGEBOX()函數(shù)說(shuō)明
(1)、設(shè)置圖標(biāo)值圖標(biāo)16紅色叉號(hào)32問(wèn)號(hào)48感嘆號(hào)64字母i如果又想要圖標(biāo),又想要“是”、“否”兩個(gè)按鈕,可以按照如下的方式去做?messagebox("是否真的要退出系統(tǒng)?",32+4,"提示信息")(2)、設(shè)置按鈕屬性值對(duì)話框按鈕屬性0僅有一個(gè)“確定”按鈕。1有“確定”和“取消”按鈕。2有“終止”、“重試”、“忽略”按鈕。3有“是”、“否”和“取消”按鈕。4有“是”和“否”按鈕。5有“重試”和“取消”按鈕。(3)、設(shè)置默認(rèn)按鈕值默認(rèn)按鈕0第一個(gè)按鈕。256第二個(gè)按鈕。512第三個(gè)按鈕。比如:messagebox(“是否退出系統(tǒng)?”,32+4“提示”messagebox(“是否退出系統(tǒng)?”,4+32+256,“提示”)messagebox(''是否退出系統(tǒng)?'',4+32+256,''注意'')如果設(shè)的數(shù)大于按鈕的數(shù),比如設(shè)為512,但只有兩個(gè)按鈕,則隱含還是第一個(gè)按鈕。(4)函數(shù)將返回值在對(duì)話框中按了不同的鍵,鍵值對(duì)應(yīng)如下:值鍵1確定2取消3終止4重試5忽略6是7否注:圖標(biāo)、按鈕和默認(rèn)按鈕次序可隨意。5、常用環(huán)境設(shè)置命令(p134)6、輔助語(yǔ)句(1)清屏格式:clear(2)中止程序功能:清除整個(gè)屏幕信息功能:結(jié)束程序運(yùn)行(3)退出命令功能:關(guān)閉程序,退出VFP系統(tǒng)格式:cancel格式:quit2023/1/31VisualFoxPro6.0程序設(shè)計(jì)262023/1/31VisualFoxPro6.0程序設(shè)計(jì)26格式一:NOTE/*<注釋字符串>格式二:&&<注釋字符串>
說(shuō)明:1、NOTE或*是用于整行注釋的,它必須寫(xiě)在每一個(gè)注釋行的開(kāi)頭;2、&&命令是用于注釋一行的部分內(nèi)容的,它可以寫(xiě)在行中(命令的尾部、注釋信息的頭部),這是程序中唯一可以在一個(gè)邏輯行寫(xiě)二個(gè)語(yǔ)句的命令。
返回(5)注釋命令(4)返回命令功能:結(jié)束當(dāng)前程序執(zhí)行,返回到調(diào)用它的上一級(jí)程序或命令窗口。tomaster是返回到主程序。格式:return[tomaster]2023/1/31VisualFoxPro6.0程序設(shè)計(jì)272023/1/31VisualFoxPro6.0程序設(shè)計(jì)27一、順序結(jié)構(gòu)三、循環(huán)結(jié)構(gòu)返回退出二、選擇結(jié)構(gòu)7.2VFP6程序的基本結(jié)構(gòu)
VFP的程序結(jié)構(gòu)可以分為三種:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
2023/1/31VisualFoxPro6.0程序設(shè)計(jì)28一、順序結(jié)構(gòu)例7-6在學(xué)生情況表中按學(xué)號(hào)查找記錄。(如:2012006)*ch7006.prgsettalkoffclearaccept"請(qǐng)輸入欲查詢學(xué)生的學(xué)號(hào):"toxhuseg:\vfpsy\ch7\學(xué)生情況表locatefor學(xué)號(hào)=xhdisplayusesettalkonreturn返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)292023/1/31VisualFoxPro6.0程序設(shè)計(jì)29【例7-7】假設(shè)某單位有很多員工,并且要給月工資高于或等于1000元的員工增加5%的工資,給月工資低于1000元的員工增加10%的工資。
*CH7007.PRGSETTALKOFFUse工資表SCAN IF月工資>=1000 REPLACE月工資WITH月工資*(1+5%)ELSE REPLACE月工資WITH月工資*(1+10%) ENDIFENDSCANbrowse SETTALKonRETURN二、選擇結(jié)構(gòu)2023/1/31VisualFoxPro6.0程序設(shè)計(jì)302023/1/31VisualFoxPro6.0程序設(shè)計(jì)30條件分支根據(jù)條件的計(jì)算結(jié)果執(zhí)行不同的操作。條件分支結(jié)構(gòu)邏輯流程圖:入口條件判斷真假語(yǔ)句序列1出口語(yǔ)句序列2格式:IF<條件表達(dá)式> <語(yǔ)句序列1> [ELSE <語(yǔ)句序列2>] ENDIF1、單(雙)向選擇語(yǔ)句2023/1/31VisualFoxPro6.0程序設(shè)計(jì)312023/1/31VisualFoxPro6.0程序設(shè)計(jì)31格式:DOCASECASE<條件表達(dá)式1> <語(yǔ)句序列1>[CASE<條件表達(dá)式2> <語(yǔ)句序列2> …CASE<條件表達(dá)式N> <語(yǔ)句序列N>][OTHERWISE <語(yǔ)句序列N+1>]ENDCASE
功能描述:VFP在執(zhí)行這條多條件選擇命令時(shí),按命令行中寫(xiě)出的條件表達(dá)式的順序逐條檢查<條件表達(dá)式>,當(dāng)遇到第一個(gè)結(jié)果為“真”的<條件表達(dá)式>時(shí),就執(zhí)行它后面的語(yǔ)句序列。直到遇到下一個(gè)CASE或OTHERWISE或ENDCASE,然后再?gòu)腅NDCASE語(yǔ)句后的第一條命令開(kāi)始繼續(xù)執(zhí)行其它命令。(與C語(yǔ)言不一樣,C要break)2、多條件選擇語(yǔ)句2023/1/31VisualFoxPro6.0程序設(shè)計(jì)322023/1/31VisualFoxPro6.0程序設(shè)計(jì)32【例7-8】有3個(gè)表文件:”xsda1.dbf,課程表.dbf,成績(jī)表.dbf”用戶通過(guò)排序代號(hào)選擇,分別根據(jù)所選課程對(duì)“成績(jī)表.dbf
”
中相應(yīng)的成績(jī)進(jìn)行排序,并生成排序表文件,顯示相應(yīng)的記錄。settalkoffclearsetdefaulttoD:\CH3use課程表wait"請(qǐng)輸入排序代號(hào):"todhkch=left(課程號(hào),3)+dhdocasecasedh="1"select成績(jī)表.學(xué)號(hào),姓名,成績(jī)C語(yǔ)言程序設(shè)計(jì)fromxsda1,成績(jī)表,課程表;wherexsda1.學(xué)號(hào)=成績(jī)表.學(xué)號(hào).and.成績(jī)表.課程號(hào)=kch.and.課程表.課程號(hào)=成績(jī)表.課程號(hào)orderby3intodbfpx1casedh="2"select成績(jī)表.學(xué)號(hào),姓名,成績(jī)VB程序設(shè)計(jì)基礎(chǔ)fromxsda1,成績(jī)表,課程表;wherexsda1.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)and成績(jī)表.課程號(hào)=kchand課程表.課程號(hào)=成績(jī)表.課程號(hào)orderby3intodbfpx2casedh="3"select成績(jī)表.學(xué)號(hào),姓名,成績(jī)access數(shù)據(jù)庫(kù)fromxsda1,成績(jī)表,課程表;wherexsda1.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)and成績(jī)表.課程號(hào)=kchand課程表.課程號(hào)=成績(jī)表.課程號(hào)orderby3intodbfpx3endcaseifval(dh)>=1andval(dh)<=3usepx&dhlistendifsettalkoncloseallcancel返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)342023/1/31VisualFoxPro6.0程序設(shè)計(jì)34
VFP的循環(huán)命令有三類(lèi):基于條件的循環(huán)、基于計(jì)數(shù)的循環(huán)和基于表的循環(huán)。1、基于條件的循環(huán):DOWHILE命令
格式:DOWHILE<條件表達(dá)式> [<語(yǔ)句序列>] [EXIT] [LOOP] ENDDO參數(shù)描述:<條件表達(dá)式>:值為“真”,就執(zhí)行命令集[<語(yǔ)句序列>][LOOP]:終止本次循環(huán)。[EXIT]:終止循環(huán)。
LOOP
EXIT可以放在DOWHILE和ENDDO之間的任何位置。三、循環(huán)語(yǔ)句2023/1/31VisualFoxPro6.0程序設(shè)計(jì)352023/1/31VisualFoxPro6.0程序設(shè)計(jì)35【例7-9】計(jì)算連續(xù)自然數(shù)之和,并且顯示剛大于1000的最后一個(gè)自然數(shù)。STORE0TOAA,BBDOWHILEAA<=1000 BB=BB+1 AA=AA+BBENDDO?BB結(jié)果顯示為45?!纠?-10】輸入學(xué)生姓名來(lái)顯示表中的相應(yīng)記錄。若要繼續(xù)查詢,則輸入Y或y,否則跳出循環(huán)。SettalkoffSetdefaulttoI:\vfpsy\CH7Use學(xué)生情況表yn="Y"Dowhileupper(yn)="Y"ClearAccept"請(qǐng)輸入姓名"toxmDisplayfor姓名=xmwait"是否繼續(xù)查詢?(y/n)"toynEnddoCloseallSettalkonreturn2023/1/31VisualFoxPro6.0程序設(shè)計(jì)372023/1/31VisualFoxPro6.0程序設(shè)計(jì)37【例7-11】求連續(xù)N個(gè)不是7的倍數(shù)的自然數(shù)之和,當(dāng)和是101的倍數(shù)時(shí)顯示最后的自然數(shù)和它們的和。STORE0TOAA,BB&&定義二個(gè)變量,用以保存累加值和累加數(shù)DOWHILE.T. BB=BB+1 IFMOD(BB,7)=0&&判斷BB是否為7的倍數(shù)
LOOP&&如果BB是7的倍數(shù)則返回去將BB再加1 ENDIF AA=AA+BB&&將BB不是7的倍數(shù)的連續(xù)自然數(shù)累加求和
IFMOD(AA,101)=0&&判斷AA是否是101的倍數(shù)
EXIT&&如果AA是101的倍數(shù),則結(jié)束程序的循環(huán)
ENDIFENDDO?BB,AA屏幕顯示結(jié)果為207和18483。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)382023/1/31格式:SCAN[<范圍>][FOR<條件>][WHILE<條件>] [<語(yǔ)句序列>] [LOOP] [EXIT] ENDSCAN參數(shù)描述:[<范圍>]:默認(rèn)范圍為ALL。[FOR<條件>]:
[WHILE<條件>]:
[<語(yǔ)句序列>]:指定要執(zhí)行的VFP命令集。[LOOP]:[EXIT]:ENDSCAN:標(biāo)志SCAN過(guò)程的結(jié)束。2、基于表的循環(huán)命令2023/1/31VisualFoxPro6.0程序設(shè)計(jì)392023/1/31VisualFoxPro6.0程序設(shè)計(jì)39【例5-12】逐條顯示STUDENT表中男生的情況。USESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSE或者使用下列代碼:
USESTUDENTSCAN IF性別#”男”
LOOP ENDIFDISP WAITENDSCANUSEUSESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSE或者使用下列代碼:
USESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSEUSESTUDENTSCAN IF性別#”男”
LOOP ENDIFDISP WAITENDSCANUSE或者使用下列代碼:
USESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSEUSESTUDENTSCAN IF性別#”男”
LOOP ENDIFDISP WAITENDSCANUSE或者使用下列代碼:
USESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSEUSESTUDENTSCAN IF性別#”男”
LOOP ENDIFDISP WAITENDSCANUSE或者使用下列代碼:
USESTUDENTSCANFOR性別=”男”
DISP WAITENDSCANUSEUSESTUDENTSCAN IF性別#”男”
LOOP ENDIFDISP WAITENDSCANUSE或者使用下列代碼:
【例7-13】有“學(xué)生、課程、成績(jī)”3個(gè)表,找出“vfp6.0程序設(shè)計(jì)基礎(chǔ)”最高分,并輸出學(xué)號(hào)、成績(jī)。clearsetdefaulttoI:\CH3use課程表locatefor課程名="VFP程序設(shè)計(jì)基礎(chǔ)"kch=課程號(hào)use成績(jī)表locatefor課程號(hào)=kchxh=學(xué)號(hào)cj=成績(jī)scanfor課程號(hào)=kchifcj<成績(jī)xh=學(xué)號(hào)cj=成績(jī)endifendscan?"學(xué)號(hào):",xh,"成績(jī):",cj*closeallcancel2023/1/31VisualFoxPro6.0程序設(shè)計(jì)412023/1/31VisualFoxPro6.0程序設(shè)計(jì)41格式:FOR<內(nèi)存變量>=<初始值>TO<終值>[STEP<步長(zhǎng)>] <語(yǔ)句序列> [EXIT] [LOOP] ENDFOR/NEXT
參數(shù)描述:<內(nèi)存變量>:指定作為計(jì)數(shù)器的內(nèi)存變量或數(shù)組元素。<初始值>TO<終值>:
[STEP<步長(zhǎng)>]:是計(jì)數(shù)器遞增或遞減的步長(zhǎng)。如果<步長(zhǎng)>是負(fù)值,則計(jì)數(shù)器遞減;如果省略STEP子句,計(jì)數(shù)器每次遞增1。EXIT]:[LOOP]:3、基于計(jì)數(shù)的循環(huán):FOR命令2023/1/31VisualFoxPro6.0程序設(shè)計(jì)422023/1/31VisualFoxPro6.0程序設(shè)計(jì)42【例7-14】計(jì)算1到100之間的偶數(shù)和AA=0FORII=2TO100STEP2 AA=AA+IIENDFOR?AA屏幕顯示為:25504、循環(huán)嵌套【例7-15】打“九九乘法表”settalkoffcleari=1dowhilei<=9?""j=1dowhilej<=i??str(i,1)+"*"+str(j,1)+"="+str(i*j,2)+""j=j+1enddoi=i+1enddosettalkonreturn返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)442023/1/31VisualFoxPro6.0程序設(shè)計(jì)44一、子程序和過(guò)程返回退出二、參數(shù)傳遞7.3多模塊程序
VFP的模塊有三種:子程序、過(guò)程和函數(shù)。三、過(guò)程文件四、自定義函數(shù)
2023/1/31VisualFoxPro6.0程序設(shè)計(jì)452023/1/31VisualFoxPro6.0程序設(shè)計(jì)45
子程序或過(guò)程的編寫(xiě)和修改方式與一般的程序一樣,最后一個(gè)語(yǔ)句必須是返回語(yǔ)句(RETURN)。調(diào)用過(guò)程的程序是主程序、子程序或過(guò)程,調(diào)用是DO命令:格式:DO<過(guò)程名>[WITH<參數(shù)表>]
功能:執(zhí)行過(guò)程名所指定的子程序。參數(shù)描述:
①WITH用于主程序和子程序間參數(shù)的傳遞。②若該命令從命令窗口中發(fā)出,則執(zhí)行后仍返回到命令窗口③子程序可以嵌套調(diào)用,但不得超過(guò)128層。一、子程序和過(guò)程
1、子程序和過(guò)程的調(diào)用2023/1/31VisualFoxPro6.0程序設(shè)計(jì)462023/1/31VisualFoxPro6.0程序設(shè)計(jì)46格式:RETURN[<表達(dá)式>/TOMASTER/TO<過(guò)程名>]
功能:將程序控制權(quán)返回給調(diào)用程序。參數(shù)描述:[<表達(dá)式>]:把表達(dá)式的值返回給調(diào)用程序。[TOMASTER]:將控制權(quán)返回給最高層的調(diào)用程序。[TO<過(guò)程名>]:將控制權(quán)返回給指定的過(guò)程。說(shuō)明:當(dāng)執(zhí)行RETURN命令時(shí),VFP釋放PRIVATE(專(zhuān)用)類(lèi)型的內(nèi)存變量。但是,如果省略RETURN命令,一個(gè)隱含的RETURN命令也將被執(zhí)行。
2、子程序或過(guò)程的返回語(yǔ)句2023/1/31VisualFoxPro6.0程序設(shè)計(jì)472023/1/31VisualFoxPro6.0程序設(shè)計(jì)47子程序或過(guò)程調(diào)用及返回示意圖
【例7-16】對(duì)學(xué)生表進(jìn)行查詢和刪除。*main.prgsettalkoffUSEXSDA1dowhile.T.CLEARtext
(1)查詢(2)刪除(3)退出
endtextaccept"輸入選擇號(hào)(1~3):"togn
ifgn=[3]exitelsedosub&gn&&調(diào)用子程序endif
enddo
usereturn*sub1.prgclearaccept"輸入待查詢姓名:"TOxmscanfor姓名=xmdispwait"請(qǐng)等待!"timeout3endscanReturn
*sub2.prgclearaccept"輸入待刪除記錄的學(xué)號(hào):"TOxhscanfor姓名=xhdeleteendscanpackreturn
以一個(gè)獨(dú)立的文件形式存在返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)50二、參數(shù)傳遞
1、內(nèi)存變量的作用域內(nèi)存變量的作用范圍稱(chēng)為內(nèi)存變量作用域。內(nèi)存變量的初值默認(rèn)為邏輯F。內(nèi)存變量按作用域分為三類(lèi):全局、私有和本地變量。(1)全局變量。能夠在各級(jí)程序段中使用的變量。用前要加以說(shuō)明:格式1:
public<內(nèi)存變量表>格式2:public[array]數(shù)組1(數(shù)值1[,數(shù)值2)……功能:說(shuō)明<內(nèi)存變量>中的內(nèi)存變量或者數(shù)組為全局變量并賦初值F。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)51(2)本地(局部)變量只能在建立它的模塊中使用,不能在上層和下層模塊中使用。格式1:
local<內(nèi)存變量表>格式2:
localall[like<通配符>|except<通配符>]格式3:local[array]數(shù)組1(數(shù)值1[,數(shù)值2])……功能:建立本地內(nèi)存變量,并賦初值F。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)52(3)私有變量只能在建立它的模塊中和下級(jí)各層模塊中使用。格式1:
private<內(nèi)存變量表>格式2:
privateall[like<通配符>|except<通配符>]功能:聲明私有變量,隱藏上層模塊定義的同名變量。一旦當(dāng)前模塊程序運(yùn)行結(jié)束返回上層模塊時(shí),那些被隱藏的內(nèi)存變量就自動(dòng)恢復(fù)有效性。2023/1/31VisualFoxPro6.0程序設(shè)計(jì)532、參數(shù)傳遞
主程序中的數(shù)據(jù)傳遞給子程序(過(guò)程),子程序(過(guò)程)處理的結(jié)果返回給主程序。(1)調(diào)用程序傳遞參數(shù)格式1:
do<程序名>|<過(guò)程名>with<實(shí)際參數(shù)表>格式2:
<程序名>|<過(guò)程名>with<實(shí)際參數(shù)表>(2)被調(diào)用程序接收參數(shù)格式:parameters|lparameters<形式參數(shù)表>功能說(shuō)明:<實(shí)際參數(shù)表>中的變量按順序?qū)?yīng)傳遞給<形式參數(shù)表>的變量。形參表中的變量個(gè)數(shù)不得少于實(shí)參表中的變量個(gè)數(shù)。【例7-17】*main.prgClearsetdefaulttoI:\Stor50tox1,x2Setudfparmstovalue&&設(shè)置按值傳遞Dosub1withx1,(x2)?x1,x2*Sub1.prgParametersa,bA=a+5B=b+3?a,breturn返回2023/1/31VisualFoxPro6.0程序設(shè)計(jì)552023/1/31VisualFoxPro6.0程序設(shè)計(jì)55將若干個(gè)過(guò)程按一定的規(guī)定放在一個(gè)大文件中,這個(gè)文件稱(chēng)為過(guò)程文件。1、過(guò)程文件的建立命令格式與建立程序文件一樣:格式:MODIFYCOMMAND<過(guò)程文件名>
過(guò)程文件的格式要求每個(gè)過(guò)程文件的開(kāi)頭必須用下列語(yǔ)句:
格式:PROCEDURE<過(guò)程名>
功能:標(biāo)明是一個(gè)過(guò)程。參數(shù)描述:<過(guò)程名>:指定過(guò)程名稱(chēng)。命名方法與文件名的命名方法相同。三、過(guò)程文件2023/1/31VisualFoxPro6.0程序設(shè)計(jì)562023/1/31VisualFoxPro6.0程序設(shè)計(jì)56過(guò)程文件的內(nèi)容如下:
PROCEDURE<過(guò)程名1><語(yǔ)句序列1>RETURNPROCEDURE<過(guò)程名2><語(yǔ)句序列2>RETURN……PROCEDURE<過(guò)程名N><語(yǔ)句序列N>RETURN說(shuō)明:1、一個(gè)過(guò)程文件可以包含多個(gè)過(guò)程。2、在同一個(gè)過(guò)程文件中不允許出現(xiàn)相同的過(guò)程名。3、一個(gè)過(guò)程文件中最多允許包含128個(gè)過(guò)程。
2023/1/31VisualFoxPro6.0程序設(shè)計(jì)572023/1/31VisualFoxPro6.0程序設(shè)計(jì)57過(guò)程文件和表文件一樣,都是在先打開(kāi)后才能使用。①過(guò)程文件的打開(kāi)命令
格式:SETPROCEDURETO<過(guò)程文件名>
功能:在調(diào)用前,在主程序中先打開(kāi)過(guò)程文件,即將所有過(guò)程都調(diào)入內(nèi)存。當(dāng)過(guò)程文件不再用時(shí)應(yīng)將其關(guān)閉,以節(jié)省內(nèi)存空間。系統(tǒng)允許打開(kāi)一個(gè)過(guò)程文件。當(dāng)打開(kāi)另一個(gè)過(guò)程文件時(shí),先已打開(kāi)的過(guò)程文件系統(tǒng)會(huì)自動(dòng)將其關(guān)閉。2、過(guò)程文件的調(diào)用2023/1/31VisualFoxPro6.0程序設(shè)計(jì)58【例7-18】將計(jì)算圓面積、長(zhǎng)方形面積、階乘編為三個(gè)過(guò)程,放在一個(gè)過(guò)程文件(ch70018sub.PRG)中,由主程序ch70018main調(diào)用。*ch70012mainCLEARSETTALKOFFPublicr,l,w,mSETPROCEDURETOch70018subInput"輸入圓的半徑:"toRDoPROGRAM1Input"輸入長(zhǎng):"tolInput"輸入寬:"towDoPROGRAM2Input"輸入整數(shù):"tomDoPROGRAM3CloseprocedureSettalkoncancel2023/1/31VisualFoxPro6.0程序設(shè)計(jì)592023/1/31VisualFoxPro6.0程序設(shè)計(jì)59*ch70018subPROCEDUREPROGRAM1S=PI()*R^2?"半徑為"+ALLTRIM(STR(R))+"的圓的面積為:",SRETURNPROCEDUREPROGRAM2S=l*w?"長(zhǎng)為"+ALLTRIM(STR(L))+"寬為"+ALLTRIM(STR(W))+"的長(zhǎng)方形的面積為:",SRETURNPROCEDUREPROGRAM3N=1T=1DOWHILEN<=m T=T*N N=N+1ENDDO ?"值為"+ALLTRIM(STR(R))+"的階乘為:",TRETURN2023/1/31VisualFoxPro6.0程序設(shè)計(jì)602023/1/31VisualFoxPro6.0程序設(shè)計(jì)60
在過(guò)程中不但可以調(diào)用另外一個(gè)過(guò)程,而且還可以調(diào)用自己,這就叫遞歸調(diào)用?!纠?-19】求一個(gè)30以內(nèi)的自然數(shù)的階乘。
*MYMAIN.PRGSETTALKOFFSETPROCEDURETOMYSUBINPUT“請(qǐng)輸入一個(gè)30以內(nèi)的正整數(shù):”TONUMBERII=1DOMYSUBWITHNUMBER,IICLOSEPROCEDURESETTALKonRETURN
*MYSUB.PRGPROCEDUREMYSUBPARAMETERSMM,NNIFMM>1 DOMYSUBWITHMM-1,NN&&遞歸調(diào)用。請(qǐng)注意同下一句的次序
NN=NN*MM&&計(jì)算乘積。ENDIF?STR(MM,2)+”!=”+STR(NN,10)RETURN3、遞歸調(diào)用2023/1/31VisualFoxPro6.0程序設(shè)計(jì)614、過(guò)程文件的關(guān)閉格式1:setprocedureto格式2:
closeprocedure功能:格式1、2關(guān)閉所有打開(kāi)的過(guò)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 足球比賽中的團(tuán)隊(duì)溝通與協(xié)作執(zhí)行
- 食品安全科技培訓(xùn)教程學(xué)校食堂專(zhuān)業(yè)篇
- 懷化市洪江市2025屆三年級(jí)數(shù)學(xué)第二學(xué)期期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 肺水腫治療護(hù)理方法
- 課題開(kāi)題報(bào)告:大學(xué)生全程化就業(yè)指導(dǎo)課程體系研究
- 課題開(kāi)題報(bào)告:超常兒童早期教育追蹤研究
- 課題開(kāi)題報(bào)告:不同類(lèi)型學(xué)校辦學(xué)效益評(píng)價(jià)研究
- 非金屬硫化物企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 醇酯型無(wú)苯無(wú)酮油墨企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 二零二五年度智能機(jī)器人生產(chǎn)加工合作協(xié)議
- 博覽會(huì)展位裝修及布展投標(biāo)方案技術(shù)標(biāo)
- 顧客提問(wèn)的問(wèn)題100條
- 肝膿腫教學(xué)查房課件
- 跳繩之雙腳跳教案
- 拇外翻護(hù)理課件
- 六年級(jí)英語(yǔ)教學(xué)隨筆5篇
- 物資管理工作流程圖
- 讀書(shū)分享交流會(huì)《從一到無(wú)窮大》課件
- 蘇教版六年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)計(jì)劃及全冊(cè)教案
- 醫(yī)療器械可用性工程文檔
- GB/T 24475-2023電梯遠(yuǎn)程報(bào)警系統(tǒng)
評(píng)論
0/150
提交評(píng)論