版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大綱要求:(1)1、程序文件的建立與運(yùn)行;2、程序文件中常用的命令:輸入類、輸出類、注釋命令,中止程序執(zhí)行命令等。3、程序的三種基本結(jié)構(gòu):
1)順序結(jié)構(gòu);
2)選擇結(jié)構(gòu):IF…ELSE…ENDIF及其嵌套;
DOCASE…ENDCASE;3)循環(huán)結(jié)構(gòu):DOWHILE…ENDDO
及其嵌套;第八章VFP程序設(shè)計(jì)基礎(chǔ)
大綱要求:
4、多模塊程序:
1)子程序設(shè)計(jì)與調(diào)用;
2)自定義函數(shù)與過(guò)程;
3)變量作用域;5、代碼式菜單設(shè)計(jì)。6、程序的調(diào)試方法。第八章程序設(shè)計(jì)基礎(chǔ)
程序的三種基本結(jié)構(gòu)
結(jié)構(gòu)化程序設(shè)計(jì)方法中,所有程序只能由三種結(jié)構(gòu)構(gòu)成:順序結(jié)構(gòu):程序的流程是簡(jiǎn)單、順序的,從第一條語(yǔ)句順序地執(zhí)行到結(jié)束或返回語(yǔ)句。選擇結(jié)構(gòu):程序執(zhí)行中,根據(jù)某些條件的不同,可以有選擇地執(zhí)行不同的語(yǔ)句部分。循環(huán)結(jié)構(gòu):程序執(zhí)行中,可以根據(jù)某些條件是否成立,而重復(fù)執(zhí)行某些程序語(yǔ)句。程序的三種基本結(jié)構(gòu)程序的基本構(gòu)成開(kāi)始部分:注釋與說(shuō)明、初始化程序部分:輸入、處理、輸出結(jié)束部分:恢復(fù)環(huán)境,程序結(jié)束的命令*TEST2.PRGUSE學(xué)生管理!學(xué)生
ACCE'輸入姓名:'TOXMLOCAFOR學(xué)生.姓名=XMDISPUSE&&初始化,打開(kāi)表&&處理&&恢復(fù)、結(jié)束*TEST4.PRG關(guān)聯(lián)查詢學(xué)生選課成績(jī)&&初始化部分CLEA&&清屏SELE1&&選擇1號(hào)工作區(qū)USE選課
ALIASXK&&打開(kāi)選課表SETORDERTOTAGXHASELE2USE學(xué)生ALIASXSSETRELATO學(xué)號(hào)INTOXK&&建立關(guān)聯(lián)
&&執(zhí)行部分ACCE“請(qǐng)輸入姓名:”
TOXM&&交互式輸入姓名LOCAFOR姓名=ALLTRIM(XM)&&查詢?姓名,XK.課程號(hào),XK.成績(jī)
&&顯示&&恢復(fù)部分CLEAALL&&關(guān)閉表,清變量程序的三種基本結(jié)構(gòu)【例】已知雞兔的頭數(shù)為16,腳數(shù)為40,求雞、兔數(shù)目。*雞兔同籠問(wèn)題;
CLEAH=16F=40X=(4*H–F)/2Y=(F–2*H)/2?’共有雞’,X?’共有兔’,YCANCEL&&處理部分&&初始化部分&&輸出與結(jié)束部分程序的三種基本結(jié)構(gòu)2、選擇結(jié)構(gòu)
根據(jù)某邏輯表達(dá)式的值,判斷與決定程序的走向。分為:?jiǎn)畏种А㈦p分支、多分支三種。1)單分支結(jié)構(gòu)
IF<條件>
語(yǔ)句序列
ENDIF執(zhí)行方式:當(dāng)條件為真時(shí),執(zhí)行語(yǔ)句序列,否則直接執(zhí)行ENDIF后的語(yǔ)句。條件語(yǔ)句序列.T.ENDIF后的語(yǔ)句單選擇結(jié)構(gòu)流程圖程序的三種基本結(jié)構(gòu)1)單分支結(jié)構(gòu)【例】輸出兩數(shù)X,Y中大的一個(gè)(IF…ENDIF)
INPUT‘輸入X’TOXINPUT‘輸入Y’TOYS=XIFY>XS=Yendif
?Scancel.T..F.Y>X輸入X輸入YS=Y結(jié)束輸出SS=X輸入47輸出7輸入52輸出5程序的三種基本結(jié)構(gòu)2、選擇結(jié)構(gòu)2)雙分支結(jié)構(gòu)
IF<條件><語(yǔ)句序列1>ELSE<語(yǔ)句序列2>ENDIF執(zhí)行方式:當(dāng)條件為真時(shí),執(zhí)行語(yǔ)句序列1,否則執(zhí)行語(yǔ)句序列2。任何情況下,兩個(gè)序列中只會(huì)有一個(gè)被執(zhí)行。雙選擇結(jié)構(gòu)流程圖條件語(yǔ)句序列1語(yǔ)句序列2.T..F.ENDIF后的語(yǔ)句程序的三種基本結(jié)構(gòu).T..F.Y>X輸入X輸入Y結(jié)束輸出YS=X輸出X2)雙分支結(jié)構(gòu)【例】輸出兩數(shù)X,Y中大的一個(gè)(IF…ELSE…ENDIF)
INPUT‘輸入X’TOXINPUT‘輸入Y’TOYIFX>Y?Xelse?Yendifcancel輸入47輸出7輸入52輸出5程序的三種基本結(jié)構(gòu).T..F.總分>=650打開(kāi)表輸入姓名到XM關(guān)閉表并結(jié)束輸出‘Y’查詢XM輸出‘N’【例】判斷某同學(xué)是否可以獲得獎(jiǎng)學(xué)金(入??偡?gt;=650)
CLEAUSE學(xué)生
ACCE‘學(xué)生姓名:’
TOXMLOCAFOR姓名=XMIF入校總分>=650?姓名+‘可以獲得。’
ELSE?姓名+‘不能獲得?!?/p>
ENDIFUSECANC可以獲得不能程序的三種基本結(jié)構(gòu)【例】輸入并判斷某年是否是閏年。分析:1)定義變量輸入量:Y年份;2)數(shù)學(xué)模型與算法:
閏年的計(jì)算方法:(1)年份能被4整除但不能被100整除;或:(2)年份能被400整除;邏輯表達(dá)式:中間變量(L型)TJ=MOD(Y,4)=0ANDMOD(Y,100)!=0ORMOD(Y,400)=0算法:(1)輸入年份;INPUT‘輸入年份’TOY(2)判斷是否閏年,并輸出結(jié)果;程序的三種基本結(jié)構(gòu)程序:CLEAINPUT‘輸入年:’TOYTJ=MOD(Y,4)=0ANDMOD(Y,100)!=0;ORMOD(Y,400)=0IFTJ?Y,’是閏年’ELSE?Y,’不是閏年’ENDIFCANC條件?‘是閏年’?‘不是’.T..F.結(jié)束輸入年份計(jì)算條件程序的三種基本結(jié)構(gòu)3)多分支結(jié)構(gòu)格式:
DOCASECASE條件1
語(yǔ)句序列1CASE條件2
語(yǔ)句序列2…..CASE條件n
語(yǔ)句序列nOTHERWISE
語(yǔ)句序列
ENDCASE條件1條件2條件nOTHERWISE語(yǔ)句序列1語(yǔ)句序列2語(yǔ)句序列N語(yǔ)句序列ENDCASE后面語(yǔ)句.T..F.F.程序的三種基本結(jié)構(gòu)注意:1、每次至多只執(zhí)行一個(gè)語(yǔ)句序列。2、從DOCASE入口,滿足哪個(gè)條件就執(zhí)行對(duì)應(yīng)語(yǔ)句序列,并立即跳出CASE結(jié)構(gòu)。3、各條件是互斥的,如:語(yǔ)句序列n的執(zhí)行條件是:不滿足條件1、條件2、…條件n-1,但滿足條件n。4、若所有條件都不滿足,則執(zhí)行OTHERWISE后的語(yǔ)句序列,OTHERWISE可以省略,5、注意結(jié)構(gòu)的完整性。條件1條件2條件nOTHERWISE語(yǔ)句序列1語(yǔ)句序列2語(yǔ)句序列N語(yǔ)句序列ENDCASE后面語(yǔ)句.T..F.F.程序的三種基本結(jié)構(gòu)SETTALKOFFINPUTTOXDOCASECASEX>0Y=1&&x>0CASEX=0Y=0&&!X>0.and.x=0OTHERWISEY=-1&&!X>0.and.!x=0ENDCASE?“Y=”,YCANCEL【例】求Y(X)的值。1(X>0)Y=0(X=0)-1(X<0)【例】根據(jù)選課表中成績(jī)判斷該生成績(jī)屬于優(yōu)、良、合格、不合格;分析:基本步驟如下:
1、打開(kāi)表;
2、輸入姓名,查詢成績(jī);
3、根據(jù)成績(jī)n判斷等級(jí)nj;對(duì)本步驟:用docase…endcase
解決將成績(jī)變量n的值域(<60,60-79,80-89,90以上)從值域的一端向另一端依次劃分(此處從左到右):0n<60n<80608090100n<90n<100由于每一步都是對(duì)前一步的否定,所以只需要
<0n<60n<80608090100n<90n<100Use選課Acce‘輸入姓名’toxmLocafor姓名=xmN=成績(jī)Docasecasen<60
nj=‘不合格’
casen<80
nj=‘合格’
casen<90
nj=‘良’
otherwise
nj=‘優(yōu)’Endcase?xm,’同學(xué)的成績(jī)’,n??‘等級(jí)為:’,njUseCanc0其它n>=60608090100n>=80n>=90Use選課Acce‘輸入姓名’toxmLocafor姓名=xmN=成績(jī)Docasecasen>=90
nj=‘優(yōu)’
casen>=80
nj=‘良’
casen>=60
nj=‘合格’
otherwise
nj=‘不合格’Endcase?xm,’同學(xué)的成績(jī):’,n??‘等級(jí)為:’,njUseCanc右端向左端依次劃分:讀程序:分析下面的一個(gè)程序:Docasecase計(jì)算機(jī)<60?“不及格”
case計(jì)算機(jī)>=60?‘及格’
case計(jì)算機(jī)>=70?“中”
case計(jì)算機(jī)>=80?‘良’
case計(jì)算機(jī)>=90?‘優(yōu)’Endcase
問(wèn)題:1、若輸入計(jì)算機(jī)=75,輸出什么?2、若輸入85、95,分別輸入什么?3、若有錯(cuò),錯(cuò)在何處?如何修改?0n<606080901003、循環(huán)結(jié)構(gòu)
在程序的執(zhí)行過(guò)程中,某些語(yǔ)句需要多次重復(fù)執(zhí)行,控制這些語(yǔ)句反復(fù)執(zhí)行的結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)?!纠坑?jì)算1+2+3+4+……+100,可以是:
S=1+2+3+4+5+6……..
無(wú)法寫(xiě)下
或:S=0S=S+1S=S+2…………..S=S+100
共計(jì)100句實(shí)質(zhì)上,這100句形式上基本相同??梢詺w結(jié)為
S=S+i(i=1,2,…100)程序的三種基本結(jié)構(gòu)3、循環(huán)結(jié)構(gòu)
DOWHILE<條件><語(yǔ)句序列>ENDDO
1)首先判斷條件是否成立,當(dāng)條件為真時(shí),執(zhí)行語(yǔ)句序列,否則執(zhí)行ENDDO后面的語(yǔ)句。
2)每次執(zhí)行完語(yǔ)句序列,都回到循環(huán)結(jié)構(gòu)首部,再次判斷條件是否成立,只要條件為真,則一直循環(huán)。
3)只要某次判斷條件為假,立即結(jié)束循環(huán),執(zhí)行ENDDO后面的語(yǔ)句。
4)因此,循環(huán)體有可能一次也不執(zhí)行.F..T.條件語(yǔ)句序列ENDDO后面的語(yǔ)句程序的三種基本結(jié)構(gòu)基本結(jié)構(gòu)示例:計(jì)算1到100的平方和。分析:
1、用變量S裝結(jié)果,初值為02、人工執(zhí)行的過(guò)程是:
S=0步數(shù)KS=S+1*11S=S+2*22…………..S=S+100*100100引進(jìn)一個(gè)數(shù)值型變量K計(jì)算步數(shù),則上述每一步:
1)S=S+K*K2)K=K+1直到K>100
為止。因此,可以寫(xiě)成循環(huán)結(jié)構(gòu):循環(huán)條件為:
K<=100循環(huán)體為:
S=S+K
K=K+1.F..T.K<=100S=S+K*KK=K+1ENDDO后面的語(yǔ)句S=0K=1問(wèn)題:在?S處K的值是多少?.F..T.K<=100S=S+K*KK=K+1ENDDO后面的語(yǔ)句S=0K=1循環(huán)初值循環(huán)體循環(huán)條件基本結(jié)構(gòu)示例:計(jì)算1到100的平方和。命令序列:S=0K=1DOWHILEK<=100ENDDOS=S+K*KK=K+1?SRETU
在數(shù)據(jù)庫(kù)應(yīng)用中,循環(huán)往往用于逐條處理記錄,此時(shí):LOCAFOR條件GOTOP循環(huán)體語(yǔ)句是:SKIP處理每條滿足條件的記錄CONTINUE或循環(huán)條件是:(只處理滿足條件的記錄)循環(huán)的初始語(yǔ)句是:(處理全部記錄)DOWHILNOTEOF()ENDDO循環(huán)的初始語(yǔ)句是:循環(huán)條件是:DOWHILNOTEOF()循環(huán)體語(yǔ)句是:處理每條記錄ENDDO統(tǒng)計(jì)XSQK.DBF表中入??偡衷?*分以上的學(xué)生人數(shù)
USE學(xué)生情況表
STN=0INPUT"請(qǐng)輸入要統(tǒng)計(jì)學(xué)生人數(shù)的分?jǐn)?shù)點(diǎn):"TOSCDOWHILENOTEOF()IF入學(xué)總分>=SCSTN=STN+1ENDIFSKIPENDDO?"學(xué)生入學(xué)總分在"+STR(SC,3)+"以上者的人數(shù)是:"+STR(STN,2)USERETURNlocafor入學(xué)總分>=SCDOWHILENOTEOF()
STN=STN+1
contENDDO
USE學(xué)生
LOCAFOR入??偡?gt;=580DOWHILEnoteof()DISPCONTINUEENDDO?’結(jié)束’
USECANCEL初始語(yǔ)句循環(huán)條件循環(huán)體
【例】顯示學(xué)生表中總分高于580分的學(xué)生記錄;如果表中沒(méi)有總分高于580的記錄,則循環(huán)一次也不會(huì)執(zhí)行。帶LOOP和EXIT的循環(huán)
DOWHILE<條件><語(yǔ)句序列1>[LOOP]<語(yǔ)句序列2>[EXIT]<語(yǔ)句序列3>ENDDO1)當(dāng)執(zhí)行到LOOP語(yǔ)句時(shí),將跳過(guò)循環(huán)體中后續(xù)語(yǔ)句,直接回到循環(huán)首部。2)當(dāng)執(zhí)行到EXIT語(yǔ)句時(shí),立即結(jié)束循環(huán),執(zhí)行ENDDO后面的語(yǔ)句。條件.F..T.循環(huán)體ENDDO后面的語(yǔ)句LOOPEXIT
USE學(xué)生
gotopDOWHILEnoteof()if入??偡?lt;580skiploop
endifDISPskipENDDOUSECANCEL初始語(yǔ)句循環(huán)條件循環(huán)體【例】顯示學(xué)生表中總分高于580分的學(xué)生記錄;如果本記錄總分低于580,則跳過(guò),回到循環(huán)首部,繼續(xù)下一條。
USE學(xué)生
counttonDOWHILE.T.input‘輸入記錄號(hào)’toidocasecasei<=0exitcasei>n?’記錄號(hào)超界’
Othergoi
disp
endcaseENDDOUSE另類循環(huán):死循環(huán)——dowhile.t.
死循環(huán)一般用于交互式輸入或菜單選單程序中,能夠無(wú)限循環(huán)執(zhí)行,直到滿足某條件為止。所以,死循環(huán)中必然有分支判斷語(yǔ)句,并包含EXIT語(yǔ)句,以便滿足某條件時(shí),強(qiáng)行退出循環(huán),轉(zhuǎn)而執(zhí)行ENDDO后面的語(yǔ)句。計(jì)數(shù)循環(huán)FOR……..ENDFOR|NEXT格式:
FOR<循環(huán)變量>=<循環(huán)初值>TO<循環(huán)終值>[STEP<步長(zhǎng)>]ENDFOR|NEXT[<循環(huán)變量>]【例】fori=1to10……endforfori=10to0step-1……Nextifori=1to10?inext同樣地,循環(huán)中可以有LOOP和EXIT。2、計(jì)數(shù)循環(huán)FOR…ENDFOR循環(huán)變量<=終值.T.循環(huán)體循環(huán)變量+STEP循環(huán)變量=初值.F.ENDFOR后面的語(yǔ)句1)循環(huán)變量賦初值;2)檢查循環(huán)變量是否超過(guò)終值否則,跳出循環(huán)若未超過(guò),則進(jìn)入循環(huán)3)執(zhí)行循環(huán)體4)當(dāng)執(zhí)行到ENDFOR或NEXT時(shí),循環(huán)變量=循環(huán)變量+步長(zhǎng)回到循環(huán)首部,繼續(xù)第2)步。【例】計(jì)算1到100的和。K<=100.T.S=s+kK=k+1K=1.F.?‘s=’,s循環(huán)初值為:S=0K=1循環(huán)條件為:K<=100循環(huán)體為:S=S+KK=K+1s=0forK=1to100step1s=s+kendfor?’s=‘,scancel相比之下,F(xiàn)OR循環(huán)更簡(jiǎn)潔一些。.F..T.K<=100S=S+KK=K+1ENDDO后面的語(yǔ)句S=0K=1循環(huán)初值循環(huán)體循環(huán)條件回顧用DOWHILE……ENDDO解題:
命令序列:S=0K=1DOWHILEK<=100ENDDOS=S+KK=K+1?SRETU【例】計(jì)算n的階乘。Fac=1Input‘請(qǐng)輸入n的值:’tonFork=1tonfac=fac*kNext?str(n,5)+‘!=’+str(fac,5)CancelFac=1Input‘請(qǐng)輸入n的值:’tonK=1Dowhilek<=nfac=fac*kk=k+1enddo?str(n,5)+‘!=’+str(fac,5)Cancel方法二:用dowhile循環(huán)方法一:用for循環(huán)循環(huán)初值為:K=1循環(huán)體為:
S=S*K循環(huán)條件為:
K<=100K=K+13、表文件掃描循環(huán)SCAN
SCAN[<范圍>][FOR<條件>][WHILE<條件>]<語(yǔ)句序列1>ENDSCAN當(dāng)無(wú)FOR時(shí),等價(jià)于:GOTOP(或到范圍的第一條記錄)DOWHILE.NOT.EOF()<語(yǔ)句序列>SKIPENDDO當(dāng)有FOR時(shí):等價(jià)于:LOCAFOR/WHILE<條件>DOWHILE.NOT.EOF()<語(yǔ)句序列>CONTINUEENDDO3、表文件掃描循環(huán)SCAN
USE學(xué)生
scanfor入??偡?lt;580
DISPENDSCANUSECANCEL
USE學(xué)生
gotop
locafor入??偡?gt;=580DOWHILEnoteof()
dispcontinueENDDOUSECANCEL4、多重循環(huán)
(嵌套循環(huán)結(jié)構(gòu))
【例】
DOWHILE<條件1><語(yǔ)句序列1>forj=1tok<語(yǔ)句序列2>fori=1tom<語(yǔ)句序列31>
ENDforfori=1ton<語(yǔ)句序列32>
ENDfor
ENDforENDDO第一層循環(huán)(外層循環(huán))第二層循環(huán)并列第三層循環(huán)(內(nèi)循環(huán))
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版工程清包合同:工程設(shè)計(jì)變更與施工方案調(diào)整
- 2024某企業(yè)與咨詢公司之間的管理咨詢服務(wù)合同
- 2025年度香菇食品產(chǎn)品線擴(kuò)展與市場(chǎng)拓展合同3篇
- 二零二五版智慧交通系統(tǒng)開(kāi)發(fā)與技術(shù)支持協(xié)議2篇
- 二零二五版二手房買賣合同公證與節(jié)能環(huán)保改造服務(wù)協(xié)議2篇
- 2025年度跨國(guó)企業(yè)集團(tuán)財(cái)務(wù)合并報(bào)表編制合同3篇
- 2024年銷售代理協(xié)議(意向)3篇
- 個(gè)性化活動(dòng)策劃方案協(xié)議2024規(guī)格版A版
- 2024版地暖安裝工程承包合同書(shū)
- 2024版企業(yè)業(yè)務(wù)外包人員協(xié)議模板版B版
- 前列腺增生藥物治療
- 人工智能知識(shí)圖譜(歸納導(dǎo)圖)
- 滴滴補(bǔ)貼方案
- 民宿建筑設(shè)計(jì)方案
- 干部基本信息審核認(rèn)定表
- 2023年11月外交學(xué)院(中國(guó)外交培訓(xùn)學(xué)院)2024年度公開(kāi)招聘24名工作人員筆試歷年高頻考點(diǎn)-難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
- 春節(jié)行車安全常識(shí)普及
- 電機(jī)維護(hù)保養(yǎng)專題培訓(xùn)課件
- 汽車租賃行業(yè)利潤(rùn)分析
- 春節(jié)拜年的由來(lái)習(xí)俗來(lái)歷故事
- 2021火災(zāi)高危單位消防安全評(píng)估導(dǎo)則
評(píng)論
0/150
提交評(píng)論