版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
開(kāi)始VF語(yǔ)言程序設(shè)計(jì)侯真慰電子與計(jì)算機(jī)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系基礎(chǔ)教研室2010.02上幾次課內(nèi)容的復(fù)習(xí)一、單邊分支
命令格式:IF〈邏輯表達(dá)式〉〈命令語(yǔ)句1〉……分支體
ENDIF
功能:若邏輯表達(dá)式值為“.T.”,執(zhí)行命令語(yǔ)句分支體序列;否則,程序繼續(xù)運(yùn)行ENDIF以后的語(yǔ)句。條件分支體YESNO
程序流程圖條件YESNO分支體N-S流程圖二、雙邊分支
命令格式:IF〈邏輯表達(dá)式〉〈命令語(yǔ)句〉……分支體1ELSE
〈命令語(yǔ)句〉……分支體2ENDIF
功能:若邏輯表達(dá)式值為“.T.”,執(zhí)行命令分支體1語(yǔ)句序列;否則,執(zhí)行命令分支體2語(yǔ)句序列。然后程序繼續(xù)運(yùn)行ENDIF以后的語(yǔ)句。條件分支體1YESNO
程序流程圖分支體2條件YESNO分支體1N-S流程圖分支體2條件分支函數(shù)命令格式:IIF(〈邏輯表達(dá)式〉,〈表達(dá)式1〉,〈表達(dá)式2〉)功能:若邏輯表達(dá)式值為“.T.”,則返回表達(dá)式1
的值,否則返回表達(dá)式2
的值返回值:字符、日期、邏輯值或數(shù)值三、多重分支
命令格式:DOCASECASE〈邏輯表達(dá)式1〉
分支體1
CASE〈邏輯表達(dá)式2〉
分支體2…………CASE〈邏輯表達(dá)式N〉
分支體NOTHERWISE
分支體N+1ENDCASE
功能:若邏輯表達(dá)式1值為“.T.”,執(zhí)行命令分支體1語(yǔ)句序列;邏輯表達(dá)式2值為“.T.”,執(zhí)行命令分支體2語(yǔ)句序列;……;若前面的邏輯表達(dá)式值均為“.F.”,就執(zhí)行命令分支體N+1,然后程序繼續(xù)運(yùn)行ENDCASE
以后的語(yǔ)句。條件1分支體1YN
程序流程圖分支體2條件N條件2分支體N分支體N+1ENDCASE后的語(yǔ)句NNYY條件1YN分支體
1N-S流程圖分支體
2YYNN分支體N分支體N+1條件2條件NN第三節(jié)
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
循環(huán)結(jié)構(gòu)是用于描述重復(fù)執(zhí)行的操作。它利用指定條件的當(dāng)前值來(lái)控制程序中某一部分命令序列的重復(fù)執(zhí)行操作,從而達(dá)到自動(dòng)的、按條件確定的重復(fù)操作的目的。循環(huán)結(jié)構(gòu)三要素
循環(huán)控制變量的初值
循環(huán)的執(zhí)行條件---(控制變量的終值)使循環(huán)趨于結(jié)束的語(yǔ)句
FOR
循環(huán)
DOWHILE
循環(huán)
SCAN
循環(huán)VF中有三種循環(huán)結(jié)構(gòu)語(yǔ)句:一、FOR循環(huán)(計(jì)數(shù)型循環(huán))命令格式:
FOR〈循環(huán)變量〉=〈初值〉TO〈終值〉[STEP〈步長(zhǎng)〉]
循環(huán)體命令語(yǔ)句
ENDFOR|NEXTFOR〈循環(huán)變量〉=〈初值〉TO〈終值〉[STEP〈步長(zhǎng)〉]
循環(huán)體命令語(yǔ)句循環(huán)變量未超越終值循環(huán)體命令語(yǔ)句ENDFORENDFOR后的命令NY初值循環(huán)變量計(jì)算初值終值步長(zhǎng)值循環(huán)變量
+
步長(zhǎng)
循環(huán)變量CLEARSETTALKOFF?“程序:計(jì)算1+2+3+4+...+N的值”INPUT“請(qǐng)輸入N的值”TONBB=0FORAA=1TONBB=BB+AAENDFOR?“1+2+3+4+...+N的值為”,BBSETTALKONRETURN
輸入N的值BB=0FORAA=1TON
循環(huán)體命令
BB=BB+AA
輸出累加和BB例:計(jì)算1+2+3+4+...+N的值分析:0+1+2+3+4+...+N被加數(shù)加數(shù)
BBAA結(jié)果驗(yàn)證的方法----圖表法總結(jié)出的規(guī)律:需要重復(fù)(循環(huán))的操作:
BB=BB+AAAA=AA+1(1N)三要素:
1循環(huán)變量AA的初值:
12循環(huán)的執(zhí)行條件:AA<=N3使循環(huán)趨于結(jié)束的語(yǔ)句:AA=AA+1二、DOWHILE循環(huán)(條件循環(huán))命令格式:DOWHILE〈邏輯表達(dá)式〉
循環(huán)命令語(yǔ)句組
ENDDO
邏輯表達(dá)式(條件)值為真
循環(huán)體命令語(yǔ)句
邏輯表達(dá)式循環(huán)體命令語(yǔ)句ENDDOENDDO后的命令NY功能:系統(tǒng)執(zhí)行到該語(yǔ)句時(shí),首先判斷循環(huán)起始語(yǔ)句中<條件表達(dá)式>的值是否為真,當(dāng)其值為真時(shí)執(zhí)行循環(huán)體;其值為假時(shí),退出循環(huán)而執(zhí)行循環(huán)終端語(yǔ)句的后續(xù)語(yǔ)句。CLEARSETTALKOFF?“計(jì)算1+2+3+4+...+N的值”
INPUT“請(qǐng)輸入N的值”
TON
BB=0AA=1DOWHILEAA〈=N
BB=BB+AAAA=AA+1ENDDO?“1+2+3+4+...+N的值為”,BB
SETTALKONRETURN
輸入N的值BB=0AA=1滿足AA〈=N循環(huán)體命令
BB=BB+AAAA=AA+1輸出累加和BB例:計(jì)算1+2+3+4+...+N的值分析:0+1+2+3+4+...+N被加數(shù)加數(shù)
BBAA總結(jié)出的規(guī)律:需要重復(fù)(循環(huán))的操作:
BB=BB+AAAA=AA+1(1N)三要素:
1循環(huán)變量AA的初值:
12循環(huán)的執(zhí)行條件:AA<=N3使循環(huán)趨于結(jié)束的語(yǔ)句:AA=AA+1
CLEARSETTALKOFFUSE學(xué)生
DOWHILE.NOT.EOF()IF性別=”男”
DISPLAYENDIFSKIPENDDOUSESETTALKONRETURN
例
循環(huán)在數(shù)據(jù)表中的應(yīng)用:逐條顯示在《學(xué)生表》中性別為“男”的學(xué)生的所有記錄內(nèi)容。
打開(kāi)學(xué)生表滿足.NOT.EOF()性別=”男”YNDISPLAYSKIP關(guān)閉學(xué)生表分析:逐條操作的命令循環(huán)結(jié)構(gòu)(沒(méi)到庫(kù)尾就一直工作)顯示一條記錄內(nèi)容的命令
DISPLAY性別為“男”的條件
性別=”男”總結(jié)出的規(guī)律:需要重復(fù)(循環(huán))的操作:
判斷性別=”男”
DISPLAYSKIP三要素:
1循環(huán)變量的初值:.T.
2循環(huán)的執(zhí)行條件:.NOT.EOF()=.T.
3使循環(huán)趨于結(jié)束的語(yǔ)句:SKIPh:\vf07課件\vf課件舊\親朋好友錄入模塊.prg**********************************************程序名稱:親朋好友錄入模塊.PRG*功能:錄入模塊*********************************************DOWHILE循環(huán)在數(shù)據(jù)表錄入中的應(yīng)用USEh:\vf07課件\vf課件舊\親朋好友錄1.dbf錄入否="Y"DOWHILE
錄入否="Y"
APPENDBLANK@6,16SAY
“親友情況錄入欄”
@10,10SAY
“請(qǐng)輸入親友的姓名”
GET
姓名
@12,10SAY
“請(qǐng)輸入親友的年齡”
GET
年齡
@14,10SAY
“請(qǐng)輸入親友的生日”
GET
生日
@16,10SAY
“請(qǐng)輸入親友是否黨員”
GET
黨員否
@18,10SAY
“請(qǐng)輸入親友的身高”
GET
身高
@28,20SAY"是否錄入新數(shù)據(jù)(Y/N)?"GET
錄入否
READENDDOUSEh:\vf07課件\vf課件舊\親朋好友錄1.dbfAPPENDBLANK@6,16SAY
“親友情況錄入欄”
@10,10SAY
“請(qǐng)輸入親友的姓名”
GET
姓名
@12,10SAY
“請(qǐng)輸入親友的年齡”
GET
年齡
@14,10SAY
“請(qǐng)輸入親友的生日”
GET
生日
@16,10SAY
“請(qǐng)輸入親友是否黨員”
GET
黨員否
@18,10SAY
“請(qǐng)輸入親友的身高”
GET
身高
READ循環(huán)變量未超越終值命令組ENDFORENDFOR后的命令NY循環(huán)變量
+
步長(zhǎng)
循環(huán)變量邏輯表達(dá)式ENDDOENDDO后的命令NY命令組兩種循環(huán)的工作比較DOWHILE循環(huán)FOR循環(huán)LOOPEXIT語(yǔ)句功能示意LOOP語(yǔ)句:強(qiáng)行終止循環(huán),返回到循環(huán)開(kāi)始語(yǔ)句。無(wú)條件循環(huán)命令循環(huán)變量未超越終值命令組ENDFORENDFOR后的命令NY循環(huán)變量
+
步長(zhǎng)循環(huán)變量LOOP邏輯表達(dá)式ENDDOENDDO后的命令NY命令組LOOPLOOPEXIT語(yǔ)句功能示意EXIT語(yǔ)句:強(qiáng)行停止循環(huán),跳出到循環(huán)后的語(yǔ)句。無(wú)條件結(jié)束循環(huán)命令循環(huán)變量未超越終值命令組ENDFORENDFOR后的命令NY循環(huán)變量
+
步長(zhǎng)循環(huán)變量EXIT邏輯表達(dá)式ENDDOENDDO后的命令NY命令組EXIT例編程顯示學(xué)生表中除“李寧”以外的所有記錄??偨Y(jié)出的規(guī)律:需要重復(fù)(循環(huán))的操作:
判斷姓名=”李寧”
則SKIP和LOOPDISPLAYSKIP三要素:
1循環(huán)變量的初值:.T.
2循環(huán)的執(zhí)行條件:.NOT.EOF()=.T.
3使循環(huán)趨于結(jié)束的語(yǔ)句:SKIP分析:逐條操作的命令循環(huán)結(jié)構(gòu)(沒(méi)到庫(kù)尾就一直工作)顯示一條記錄內(nèi)容的命令
DISPLAY除“李寧”以外的條件的反條件
姓名=“李寧”CLEARSETTALKOFFUSE學(xué)生
DOWHILE.NOT.EOF()
IF姓名=”李寧”
SKIP
LOOPENDIFDISPLAYSKIPENDDOUSESETTALKONRETURN
打開(kāi)學(xué)生表滿足.NOT.EOF()姓名=”李寧”YNSKIPLOOPDISPLAYSKIP關(guān)閉學(xué)生表
書(shū)中P144例9.5
用了一個(gè)永真循環(huán),注意循環(huán)跳出的方法。永真循環(huán)跳出的唯一方法:EXITEXIT
必須存在于循環(huán)結(jié)構(gòu)中的條件結(jié)構(gòu)中三、SCAN循環(huán)(指針型循環(huán))SCAN循環(huán)是專為操作數(shù)據(jù)表記錄而設(shè)計(jì)的循環(huán)。命令格式:
SCAN[<范圍>][FOR<邏輯表達(dá)式>]
循環(huán)體命令行序列
ENDSCAN功能:該語(yǔ)句在指定的范圍內(nèi),用數(shù)據(jù)記錄指針來(lái)控制循環(huán)次數(shù)。執(zhí)行語(yǔ)句時(shí),首先判斷函數(shù)EOF()的值,若其值為“真”,則結(jié)束循環(huán);否則,結(jié)合(條件表達(dá)式1)或(條件表達(dá)式2),執(zhí)行(循環(huán)體命令行序列),記錄指針移到指定的范圍和條件內(nèi)的下一條記錄,重新判斷函數(shù)EOF()的值,直到函數(shù)EOF()的值為真時(shí)結(jié)束循環(huán)。SCAN[<范圍>][FOR<邏輯表達(dá)式>]
循環(huán)體命令在范圍內(nèi)命令組初始記錄指針ENDSCAN后的命令NYLOOPEXIT滿足FOR條件滿足WHILE條件YYNN記錄指針增1CLEARSETTALKOFFUSE學(xué)生SCANFOR性別=“男”
DISPLAYENDSCANUSESETTALKONRETURN例用SCAN語(yǔ)句逐條顯示在《學(xué)生表》中性別為“男”的學(xué)生的所有記錄內(nèi)容。P147例9.8總結(jié)出的規(guī)律:需要重復(fù)(循環(huán))的操作:
判斷性別=”男”
DISPLAY三要素:
1循環(huán)變量的初值:指針指向庫(kù)頭
2循環(huán)的執(zhí)行條件:性別=”男”
且未到庫(kù)尾
3使循環(huán)趨于結(jié)束的語(yǔ)句:隱含的SKIP分析:逐條操作的命令循環(huán)結(jié)構(gòu)SCAN[ALL]顯示一條記錄內(nèi)容的命令
DISPLAY性別為“男”的條件
FOR性別=”男”CLEARSETTALKOFF預(yù)查姓名=""@5,5SAY"請(qǐng)輸入要查找的親朋姓名"GET預(yù)查姓名READUSEi:\foxpro\親朋好友錄.dbfSCANALLFOR姓名=預(yù)查姓名
DISPLAYENDSCANUSESETTALKONRETURN程序:按條件查找記錄.PRG三種循環(huán)的功能比較DOWHILEFORSCAN循環(huán)的嵌套問(wèn)題
多重循環(huán)即循環(huán)的嵌套,是在一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體中又包含另一個(gè)循環(huán)。我們稱外層循環(huán)為外循環(huán),被包含的循環(huán)為內(nèi)循環(huán)。嵌套層數(shù)一般沒(méi)有限制,但內(nèi)循環(huán)的循環(huán)體必須完全包含在外循環(huán)的循環(huán)體中,不能相互交叉。正確的嵌套關(guān)系如下:
DOWHILE<條件表達(dá)式1>
<語(yǔ)句序列11>DOWHILE<條件表達(dá)式2>
<語(yǔ)句序列21>DOWHILE<條件表達(dá)式3>
<語(yǔ)句序列3>ENDDO
<語(yǔ)句行序列22>ENDDO
<語(yǔ)句行序列12>ENDDO*********************************************程序名稱:九九表.PRG*功能:展示利用FOR語(yǔ)句循環(huán)輸出九九表********************************************1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81分析1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=16┇┇┇1~9行第?行:1~i列第3行第3列行乘數(shù)列:被乘數(shù)12341234clearsettalkoffFOR被乘數(shù)=1TO9
列數(shù)=(被乘數(shù)-1)*9FOR乘數(shù)=
1TO被乘數(shù)
行數(shù)=乘數(shù)
@行數(shù),列數(shù)
SAYSTR(被乘數(shù),1)+"X"+STR(乘數(shù),1)+"="+LTRIM(STR(被乘數(shù)*乘數(shù)))ENDFORENDFORsettalkonreturnfor(被乘數(shù)=1TO9)for(乘數(shù)=1TO被乘數(shù)
)輸出被乘數(shù)*乘數(shù)=x第五節(jié)子程序、過(guò)程和函數(shù)
結(jié)構(gòu)化程序設(shè)計(jì)方法要求將一個(gè)大的系統(tǒng)分解成若干個(gè)子系統(tǒng),每個(gè)子系統(tǒng)就構(gòu)成一個(gè)程序模塊。模塊是一個(gè)相對(duì)獨(dú)立的程序段,它可以為其他模塊所調(diào)用,也可以去調(diào)用其他模塊。將一個(gè)應(yīng)用程序劃分成一個(gè)個(gè)功能相對(duì)簡(jiǎn)單、單一的模塊程序,不僅有利于程序的開(kāi)發(fā),也有利于程序的閱讀和維護(hù)。VFP模塊化在具體實(shí)現(xiàn)上提供三種形式,它們是子程序、過(guò)程和函數(shù)。主程序與子程序調(diào)用關(guān)系示意圖
一、子程序
子程序也叫外部過(guò)程,是以程序文件(.PRG)的形式單獨(dú)存儲(chǔ)在磁盤(pán)上的。子程序只需錄入一次,就可反復(fù)被調(diào)用執(zhí)行。
1.子程序的結(jié)構(gòu)在VFP中,子程序的結(jié)構(gòu)與一般的程序文件一樣,可以用MODIFYCOMMAND命令來(lái)建立、修改、和存盤(pán),擴(kuò)展名也默認(rèn)為.PRG。
【命令格式】
RETURN[TOMASTER|TO
程序文件名|表達(dá)式]
【命令功能】該命令中止一個(gè)程序、過(guò)程、或用戶自定義函數(shù)的執(zhí)行,返回上一級(jí)調(diào)用程序、最高級(jí)調(diào)用程序、另外一個(gè)程序或命令窗口?!菊Z(yǔ)句說(shuō)明】(1)通常程序執(zhí)行到RETURN時(shí),會(huì)自動(dòng)返回到上級(jí)調(diào)用程序調(diào)用語(yǔ)句的下一條語(yǔ)句繼續(xù)執(zhí)行。如果是在最高一級(jí)主程序中,則返回命令窗口。(2)選用TOMASTER
子句時(shí),則返回最高一級(jí)調(diào)用程序,即在命令窗口下,調(diào)用的第一個(gè)主程序。(3)TO程序文件名表示程序?qū)⑥D(zhuǎn)向到指定的程序。(4)如選用表達(dá)式,表示將表達(dá)式的值返回調(diào)用程序,通常用于自定義函數(shù)。(5)在程序最后,如果沒(méi)有RETURN命令,則程序運(yùn)行完畢后,將自動(dòng)默認(rèn)執(zhí)行一個(gè)RETURN命令,但過(guò)程文件除外。2.子程序的調(diào)用:【命令格式】
DO<程序文件名>|<過(guò)程名>[WITH
參數(shù)表]【命令功能】執(zhí)行以<程序文件名>或<過(guò)程名>為名的過(guò)程?!久钫f(shuō)明】WITH參數(shù)表子句用來(lái)指定傳遞到程序或過(guò)程的參數(shù),在參數(shù)表中列出的參數(shù)可以是表達(dá)式、內(nèi)存變量、常量、字段名或用戶自定義函數(shù),各參數(shù)間用逗號(hào)分隔。
【例】
*
MAIN.PRG******
SETTALKOFF
?”正在執(zhí)行主程序”
DOSUB1
SETTALKON
*SUB1.PRG******
?”正在執(zhí)行SUB1”
RETURN【例】利用子程序方法求M!/(N!*(M-N)!)(M>N)
*main.prg
****子程序sub1.prg*INPUT"請(qǐng)輸入M:"TOm
s=1INPUT"請(qǐng)輸入N:"TOnFORi=1TOxs=0s=s*ix=mENDFORDOsub1
RETURNss2=sx=nDOsub1s3=sx=m-nDOsub1s4=ss1=s2/(s3*s4)?s1
過(guò)程和函數(shù)也都是功能上相對(duì)完整和獨(dú)立的程序單元,并沒(méi)有本質(zhì)上的不同,一般的劃分方法:有返回值的稱為函數(shù),沒(méi)有返回值的稱為過(guò)程。引入過(guò)程和函數(shù)的目的有三點(diǎn):
1、模塊化程序設(shè)計(jì)模塊是一個(gè)功能相對(duì)較為完整和獨(dú)立的小的程序單元,可以單獨(dú)的設(shè)計(jì)、調(diào)試和管理。2、復(fù)用性可被多次重復(fù)調(diào)用3、可讀性二、過(guò)程和函數(shù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年增資協(xié)議合同簽訂流程
- 2025年倉(cāng)儲(chǔ)貨物出借協(xié)議
- 2025年圣誕節(jié)裝飾協(xié)議
- 2025年商業(yè)責(zé)任不足額保險(xiǎn)條款設(shè)定
- 二零二五版木屑生物質(zhì)顆粒燃料研發(fā)與推廣合同4篇
- 二零二五年度木工行業(yè)技術(shù)標(biāo)準(zhǔn)制定合作協(xié)議3篇
- 二零二五年度汽車抵押貸款購(gòu)車二手車過(guò)戶合同
- 二零二五年度科技創(chuàng)業(yè)項(xiàng)目股權(quán)眾籌委托投資合同
- 二零二五年度車輛綠色出行補(bǔ)貼購(gòu)買(mǎi)合同
- 二零二五年度經(jīng)典實(shí)習(xí)合同(法律事務(wù)實(shí)習(xí))
- 機(jī)電安裝工程安全培訓(xùn)
- 洗浴部前臺(tái)收銀員崗位職責(zé)
- 2024年輔警考試公基常識(shí)300題(附解析)
- GB/T 43650-2024野生動(dòng)物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請(qǐng)表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
評(píng)論
0/150
提交評(píng)論