VFP程序設(shè)計基礎(chǔ)_第1頁
VFP程序設(shè)計基礎(chǔ)_第2頁
VFP程序設(shè)計基礎(chǔ)_第3頁
VFP程序設(shè)計基礎(chǔ)_第4頁
VFP程序設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 VFP面向結(jié)構(gòu)程序設(shè)計基礎(chǔ)旌德職教中心旌德職教中心陳俊友陳俊友20152015年年1111月月1 簡單的輸入/輸出命令l1.1 INPUT命令:輸入表達式命令l格式lINPUT TO l功能l命令等待用戶從鍵盤輸入數(shù)據(jù)后按回車鍵確認l字符表達式為提示信息l輸入的數(shù)據(jù)可以是常量、變量、表達式,但不能不輸入數(shù)據(jù)直接按回車l除N型數(shù)據(jù)之外,在輸入不同的數(shù)據(jù)類型數(shù)據(jù)時要加定界符,如李明、.T.、.F.、2005-10-28輸入半徑,求圓的面積Set talk Off &關(guān)閉對話模式Clear &清屏INPUT 請輸入圓的半徑R TO RS=3.1415926*R*R? 圓的面積為S=

2、+Str(s)Return Set TALK ON注:當(dāng)執(zhí)行程序時,首先在屏幕上顯示”請輸入圓的半徑R ” ,并等待用戶輸入數(shù)據(jù)(直接輸入,如2),用戶輸入完數(shù)據(jù),并回車,程序才可以執(zhí)行并顯示執(zhí)行結(jié)果(圓的面積為S=12.5663704)1.2 ACCEPT命令:輸入字符串命令l格式lACCEPT TO l功能l命令等待用戶從鍵盤輸入字符串l命令只能接收字符串,輸入字符串不需要加定界符,否則,系統(tǒng)會把定界符作為字符串的一部分l不輸入任何內(nèi)容按回車鍵,則把空串賦給指定的內(nèi)存變量輸入半徑,求圓的面積Set talk Off &關(guān)閉對話模式Clear &清屏ACCEPT 請輸入圓的半

3、徑R TO RS=3.1415926*VAL(R)*VAL(R)? 圓的面積為S=+Str(s)Return Set TALK ON注:當(dāng)執(zhí)行程序時,首先在屏幕上顯示”請輸入圓的半徑R ” ,并等待用戶輸入數(shù)據(jù)(直接輸入,如2),用戶輸入完數(shù)據(jù),并回車,程序才可以執(zhí)行并顯示執(zhí)行結(jié)果(圓的面積為S=12.5663704)1.3 WAIT命令:輸入單個字符命令l格式lWAIT TO WINDOW TIMEOUT 時間l功能l顯示字符表達式的值作為提示信息,暫停程序的執(zhí)行,直到用戶按任意鍵或單擊鼠標時繼續(xù)程序的執(zhí)行;缺省,則顯示默認的提示信息“按任意鍵繼續(xù)”l保存用戶鍵入的字符,類型為字符型lWIN

4、DOW子句會在系統(tǒng)窗口出現(xiàn)一個WAIT提示窗口lTIMEOUT子句用來設(shè)定等待時間(秒數(shù))。如果在等待時間里用戶沒有按鍵,系統(tǒng)將不再等待。l示例lWAIT 輸入有誤,請重新輸入 Window TIMEOUT 5Accept、input、wait之間的區(qū)別:lwait命令只能輸入一個字符, accept命令可以輸入一個字符串, input命令可以輸入各種類型的表達式。因此, wait命令和Accept命令中的變量一定是C型變量,而input命令中的變量類型由輸入的表達式的值的數(shù)據(jù)類型決定。l使用wait命令輸入數(shù)據(jù)時,只需輸入一個字符,不需要按回車鍵,而使用accept命令和input命令輸入數(shù)

5、據(jù)時,需要按回車鍵表示輸入結(jié)束。l使用wait命令和accept命令輸入C型數(shù)據(jù)時,不需要加定界符,而使用input命令輸入C型數(shù)據(jù)時,需要加定界符。laccept命令和input命令只能在屏幕的當(dāng)前光標下一行開始顯示數(shù)據(jù),而wait命令既可在屏幕上顯示數(shù)據(jù),也可以在系統(tǒng)窗口中顯示數(shù)據(jù)。 因此, wait命令常用于輸入單字符和顯示信息;accept命令常用于輸入字符串;input命令常用于輸入其他類型的數(shù)據(jù)。舉例:l例1:輸入學(xué)生的學(xué)號,保存到變量XH中ACCEPT ”請輸入學(xué)號:請輸入學(xué)號:” TO XH當(dāng)程序執(zhí)行時,首先在屏幕上顯示”請輸入學(xué)號:” ,并等待用戶輸入“學(xué)號”數(shù)據(jù)” (直接輸

6、入,不加定界符,如20040001),用戶輸入完數(shù)據(jù),并回車,程序才可以執(zhí)行并顯示執(zhí)行結(jié)果。l例2 :輸入學(xué)生的入學(xué)成績,保存到變量CJ中INPUT ”請輸入入學(xué)成績:請輸入入學(xué)成績:” TO CJ當(dāng)程序執(zhí)行時,首先在屏幕上顯示”請輸入入學(xué)成績:” ,并等待用戶輸入“入學(xué)成績”數(shù)據(jù)(直接輸入,如89),用戶輸入完數(shù)據(jù),并回車,程序才可以執(zhí)行并顯示執(zhí)行結(jié)果。 輸入學(xué)生的學(xué)號,保存到變量XH中INPUT ”請輸入學(xué)號:請輸入學(xué)號:” TO CJ當(dāng)程序執(zhí)行時,首先在屏幕上顯示”請輸入學(xué)號:” ,并等待用戶輸入“學(xué)號”數(shù)據(jù)(加定界符輸入,如“20040001”),用戶輸入完數(shù)據(jù),并回車,程序才可以執(zhí)行

7、并顯示執(zhí)行結(jié)果。舉例:l例3: 要要求用戶選擇輸入字符Y或NlWait“是否繼續(xù)(Y/N)?”TO XZ WINDOW當(dāng)程序執(zhí)行時,首先在系統(tǒng)窗口顯示提示窗口”是否繼續(xù)(Y/N)?” ,并等待用戶輸入字符Y或字符N,用戶輸完,程序才開始執(zhí)行。否則無限等待下去,直到用戶按鍵為止。 顯示“正在處理數(shù)據(jù),請稍候”,并等待2秒Wait“正在處理數(shù)據(jù),請稍候” WINDOW TIMEOUT 2當(dāng)程序執(zhí)行時,首先在系統(tǒng)窗口顯示提示窗口”正在處理數(shù)據(jù),請稍候” ,并等待用戶2秒時間。如果在等待時間里用戶沒有按鍵,系統(tǒng)將不再等待。2格式輸入/輸出語句l2.1格式輸入語句l格式l , Say GET l可以是多

8、個語句lREADl功能lVFP等待用戶輸入一個或多個值輸入半徑,求圓的面積R=0 &指定變量的數(shù)據(jù)類型和初值 10,10 SAY 請輸入圓的半徑: GET RREADS=3.1415926*R*R 12,10 SAY 圓的面積為:+str(s)注:當(dāng)執(zhí)行程序時,首先在屏幕上顯示”請輸入圓的半徑R ” ,將R=0顯示于其后等待用戶重新輸入數(shù)據(jù)(如輸入2,將原值0改成2),用戶輸入完數(shù)據(jù),并回車,程序的執(zhí)行結(jié)果(圓的面積為S=12.5663704)在第12行的第10列顯示。2.2格式輸出語句l順序輸出語句l格式? | ? ?表示換行輸出?表示不換行輸出,緊接著上一個輸出語句輸出。l示例?

9、2*3? Hello,World!“l(fā)輸出消息框語句l格式messagebox(提示信息)l功能:在VFP窗口出現(xiàn)一個內(nèi)容為“提示信息”的消息框l示例messagebox(“數(shù)據(jù)錯誤,請重新輸入”) l格式輸出語句l格式 , SAY l示例 10,10 Say 2*3 12,10 Say Hello,World!測試行坐標與列坐標函數(shù)l測試行坐標函數(shù)lROW()l返回當(dāng)前光標的行坐標l測試列坐標函數(shù)lCOL()l返回當(dāng)前光標的列坐標3程序運行環(huán)境設(shè)置命令l1、CLEAR ALL:功能:清除用戶自定義的內(nèi)存變量l2、SET TALK ON|OFF:設(shè)置會話狀態(tài)功能:設(shè)置是否顯示某些命令執(zhí)行的結(jié)果

10、。說明:程序的開頭不顯示,程序結(jié)束時顯示。 它們在程序中成對出現(xiàn)l3、SET SAFETY ON|OFF功能:設(shè)置刪除文件時是否顯示提示信息。說明:它們在程序中也是成對出現(xiàn)的。4幾個特殊命令l(1)CANCEL:終止程序運行,清除所有的局部變量,返回命令窗口;l(2) CLEAR:清屏命令,清除屏幕上的顯示信息l(3) RETURN:結(jié)束當(dāng)前程序的執(zhí)行,返回到調(diào)用它的上級程序,若無上級程序則返回到命令窗口;5 結(jié)構(gòu)化程序l結(jié)構(gòu)化程序由順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)組成l 順序結(jié)構(gòu):程序執(zhí)行順序是根據(jù)程序中語句的書寫順序l 分支結(jié)構(gòu):程序執(zhí)行順序是根據(jù)條件的成立與否,選擇執(zhí)行不同的程序

11、語句l 循環(huán)結(jié)構(gòu):程序執(zhí)行順序是在條件成立時反復(fù)執(zhí)行某段程序語句l由三種基本結(jié)構(gòu)構(gòu)成的程序,可以處理任何復(fù)雜的問題Visual FoxPro程序的組成部分l(1)程序的注釋部分l一般用于說明程序的功能、文件名等需要說明的有關(guān)信息。l(2)程序運行環(huán)境的設(shè)置及初始化部分l(3)數(shù)據(jù)處理部分l包括三個部分:提供原始數(shù)據(jù)部分、數(shù)據(jù)處理部分、輸出結(jié)果部分l這部分是程序核心部分l(4)控制返回部分l它控制程序返回到調(diào)用該程序的調(diào)用處。引例l從鍵盤上輸入一個正數(shù)為半徑,求圓周長和圓面積*求圓周長和面積GetCircleArea.PRG程序的注釋部分CLEAR程序運行環(huán)境的設(shè)置SET TALK OFF程序運

12、行環(huán)境的設(shè)置開始INPUT 半徑= TO R初始化部分L=2*PI()*RS=PI()*R*R? 圓周長=,L? 圓面積=,SSET TALK ON 程序運行環(huán)境的設(shè)置結(jié)束RETURN 控制返回部分數(shù)據(jù)處理部分5.1 順序結(jié)構(gòu)l按語句排列順序執(zhí)行,是三種結(jié)構(gòu)中最基本、最簡單的結(jié)構(gòu)語句1語句2語句3求圓周長和圓面積程序l從鍵盤上輸入一個正數(shù)為半徑,求圓周長和圓面積*求圓周長和面積GetCircleArea.PRG&注釋語句CLEAR&清屏語句SET TALK OFF&系統(tǒng)參數(shù)設(shè)置語句INPUT 半徑= TO R&輸入圓半徑值L=2*PI()*R&計算圓周長

13、S=PI()*R*R&計算圓面積? 圓周長=,L&顯示圓周長值? 圓面積=,S&顯示圓面積值SET TALK ON&恢復(fù)參數(shù)設(shè)置語句RETURN&返回語句求任意三角形的周長和面積l輸入三角形三邊長a,b,c,計算周長和面積l周長計算公式L=a+b+cl面積計算公式求任意三角形的周長和面積程序Set talk OffClearINPUT 請輸入邊長請輸入邊長a= to aINPUT 請輸入邊長請輸入邊長b= to bINPUT 請輸入邊長請輸入邊長c= to cL=a+b+cD=(a+b+c)/2S=sqrt(d*(d-a)*(d-b)*(d-c)? 三角

14、形的周長三角形的周長L=+str(L)? 三角形的面積三角形的面積S=+str(S)SET TALK ON輸入姓名查詢學(xué)生信息use d:陳俊友數(shù)據(jù)庫xsdaaccept 請輸入學(xué)生姓名: to namelocate for 姓名=namedisplayuse5.2 分支結(jié)構(gòu)1、單分支語句:IFENDIF語句l格式:IF &(表示選擇結(jié)構(gòu)開始) ENDIF &(表示選擇結(jié)構(gòu)結(jié)束)l程序執(zhí)行流程:程序執(zhí)行到單分支選擇結(jié)構(gòu)時,首先判斷IF后面給定條件是否成立,成立,則先執(zhí)行語句序列,再執(zhí)行ENDIF后面的語句;否則,不執(zhí)行語句序列,直接執(zhí)行ENDIF后面的語句2、雙分支結(jié)構(gòu):IFE

15、LSEENDIF語句IF ELSE ENDIF雙分支選擇結(jié)構(gòu)說明l語句功能:判斷給定的條件是否成立。成立,則執(zhí)行語句序列1;否則執(zhí)行語句序列2。 l(1)ELSE是一個可選項。當(dāng)ELSE子句缺省時,如果條件不成立,將不執(zhí)行任何語句。直接轉(zhuǎn)向ENDIF后的下一條語句。l(2)IF和ENDIF必須成對出現(xiàn),IF是本結(jié)構(gòu)的入口,ENDIF是本結(jié)構(gòu)的出口。求圓周長和圓面積程序l當(dāng)輸入半徑大于零時,計算圓周長和圓面積,否則顯示半徑值不能小于等于零的提示信息。CLEARSET TALK OFFINPUT 半徑= TO RIF R0L=2*PI()*RS=PI()*R*R? 圓周長=,L? 圓面積=,SEL

16、SE ? 半徑值不能小于等于零ENDIFSET TALK On求任意三角形的周長和面積程序Set talk OffClearINPUT 請輸入邊長請輸入邊長a= to aINPUT 請輸入邊長請輸入邊長b= to bINPUT 請輸入邊長請輸入邊長c= to cIF A+B=C OR B+C=A OR A+C=B or a=0 or b=0 or c=0Wait 輸入的邊長不能組成三角形輸入的邊長不能組成三角形return endifd=(a+b+c)/2S=sqrt(d*(d-a)*(d-b)*(d-c)? 三角形的周長三角形的周長L=+str(d*2)? 三角形的面積三角形的面積S=+st

17、r(S)SET TALK ON求二元一次方程的根l輸入二元一次方程系數(shù)a,b,c,計算二元一次方程根l計算公式如下:分支語句嵌套:條件語句可以嵌套,但不能出現(xiàn)交叉。在嵌套時,為了使程序清晰、易于閱讀,可按縮進格式書寫。 IF IF ENDIFELSE IF ELSEENDIFENDIF求 X、Y、Z 三個數(shù)中的最大值INPUT 輸入X= TO XINPUT 輸入Y= TO YINPUT 輸入Z= TO ZIF X=Y IF X=Z MAX=X ELSE MAX=Z ENDIFELSE IF Y=Z MAX=Y ELSE MAX=Z ENDIFENDIF? MAX3、多分支語句結(jié)構(gòu):DO CAS

18、EENDCASE語句 DO CASE CASE CASE CASE OTHERWISE ENDCASE多分支語句結(jié)構(gòu)說明:程序執(zhí)行到多分支選擇結(jié)構(gòu)時,首先檢查第1個CASE后面的“條件1”,如果條件成立,則先執(zhí)行“語句序列1”,再執(zhí)行ENDCASE的后續(xù)語句。否則檢查第2個CASE后面的“條件2”,如果條件成立,則先執(zhí)行“語句序列2”,再執(zhí)行ENDCASE的后續(xù)語句。如此進行下去。如果所有的CASE后面的條件都不成立,當(dāng)有OTHERWISE選項時,執(zhí)行對應(yīng)的“語句序列”,然后再執(zhí)行ENDCASE的后續(xù)語句,如果沒有OTHERWISE選項時,直接執(zhí)行ENDCASE的后續(xù)語句。輸入成績,判斷成績等

19、級SET TALK OFFCLEARINPUT 請輸入成績:請輸入成績: to StudScoreDo Case case StudScore=90StudLevel=優(yōu)秀優(yōu)秀case StudScore=80StudLevel=良好良好case StudScore=70StudLevel=中等中等case StudScore=60StudLevel=及格及格OtherwiseStudLevel=不及格不及格endcase?成績等級為成績等級為:+StudLevelReturnSET TALK ON5.3 循環(huán)結(jié)構(gòu)l定義:根據(jù)條件或計數(shù)要求重復(fù)執(zhí)行一段代碼l種類:1基于計數(shù)的循環(huán):FOR EN

20、DFOR2不知重復(fù)次數(shù)的循環(huán):DO WHILE ENDDO3數(shù)據(jù)表記錄循環(huán):SCAN ENDSCANFOR ENDFOR語句l語法FOR = TO STEP ENDFOR|NEXTl功能l重復(fù)執(zhí)行,直到的值大于l執(zhí)行次數(shù)=ABS(循環(huán)終止值-循環(huán)起始值)/步長+1執(zhí)行過程計算1+2+3+100 的和S=0FOR i=1 TO 100 S=S+iNEXT? 1+2+3+100=,S求n!ClearSet talk offinput 請輸入所求的階乘數(shù): to NS=1for i=1 to NS=S*inext?str(N)+!=+ltrim(str(S)Set Talk ONDO WHILE E

21、NDDO語句DO WHILE LOOP EXIT ENDDO功能說明l 如果第一次判斷條件時,條件即為假,則循環(huán)體一次都不執(zhí)行。l 如果循環(huán)體包含LOOP命令,那么當(dāng)遇到LOOP時,就結(jié)束循環(huán)體的本次執(zhí)行,不再執(zhí)行其后面的語句,而是轉(zhuǎn)回DO WHILE處重新判斷條件。l 如果循環(huán)體包含EXIT命令,那么當(dāng)遇到EXIT時,就結(jié)束該語句的執(zhí)行,轉(zhuǎn)去執(zhí)行ENDDO后面的語句。l 通常LOOP或EXIT出現(xiàn)在循環(huán)體內(nèi)嵌套的選擇語句中,根據(jù)條件來決定是LOOP回去,還是EXIT出去。 LOOP、EXIT命令介紹lLOOP命令:終止本次循環(huán),使程序再次檢查是否滿足條件,以決定是否進行下一次循環(huán)。lEXIT

22、命令:結(jié)束循環(huán),使程序執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。注:1、這兩條命令只能在循環(huán)體內(nèi)部使用。通常安排在選擇結(jié)構(gòu)中,實現(xiàn)滿足某種條件就終止循環(huán)或結(jié)束循環(huán)的功能。 2、當(dāng)使用DO WHILE循環(huán)在表中查找記錄循環(huán)條件為永真(即無限循環(huán))時,通常在循環(huán)體內(nèi)使用EXIT命令在用戶不想繼續(xù)查找時退出循環(huán)。如:DO WHILE .T.計算1+2+3+100S=0i=1DO WHILE i=100S=S+ii=i+1ENDDO? 1+2+3+.+100=,SWhile示例l計算連續(xù)自然數(shù)之和,并且顯示和剛大于1000的最后一個自然數(shù)lSn=1+2+3+4+NSTORE 0 TO S,NDO WHILE S=100

23、0N=N+1S=S+NENDDO? NWhile示例&顯示性別為男的學(xué)生信息USE StudInfoDO WHILE .NOT.EOF() IF StudSex=男 DISPLAYENDIF SKIPENDDOUSE數(shù)據(jù)表記錄循環(huán)l語句格式語句格式Scan For 條件條件 (又稱循環(huán)體)(又稱循環(huán)體)EndScanl功能功能lSCAN為循環(huán)起始語句,為循環(huán)起始語句,ENDCAN為循環(huán)結(jié)束語句。為循環(huán)結(jié)束語句。l本語句對范圍內(nèi)滿足條件的記錄執(zhí)行本語句對范圍內(nèi)滿足條件的記錄執(zhí)行。默。默認范圍值為認范圍值為ALL。 lFOR:只有符合條件的記錄才進行操作:只有符合條件的記錄才進行操作SCAN-ENDSCAN執(zhí)行過程l執(zhí)行SCAN語句時,記錄指針自動、依次地在當(dāng)前表的指定范圍內(nèi)滿足條件的記錄上移動,對每一條記錄執(zhí)行循環(huán)體內(nèi)的命令,搜索完范圍內(nèi)最后一條記錄后,SCAN語句執(zhí)行完畢。 l對當(dāng)前數(shù)據(jù)表中指定范圍內(nèi)符合條件的記錄,執(zhí)行。l:指定作用范圍,缺省指數(shù)據(jù)表內(nèi)的所有記錄。 SCAN-ENDSCAN示例USE StudInfo SCAN FOR StudSex=男 DISPLAY ENDSCANUSEUSE StudStudInfo SCAN FOR StudNo=

溫馨提示

  • 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

提交評論