程序計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指_第1頁
程序計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指_第2頁
程序計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指_第3頁
程序計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指_第4頁
程序計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、n 程序:計算機能夠分析執(zhí)行的命令集合,或者手是具有一定功能的指令的集合。 (指令:需要計算機執(zhí)行的每個步驟) 例:求a=3,b=2,c=5 求a+b-c=? 程序test.prg 代碼如下: l a=3 b=2 c=5 x=a+b-c ?x 以上文件為一個簡單的順序結(jié)構(gòu)的程序文件 二、程序設(shè)計方法 結(jié)構(gòu)化程序設(shè)計(模塊化)  P129 機構(gòu)程序設(shè)計思想是一種面向過程的概念,它是把一個實際問題分成兩部分,即數(shù)據(jù)和過程。 面向?qū)ο蟮某绦蛟O(shè)計   設(shè)計思想是:將要加以研究的事、物、概念等都稱為對象(Object),以對象作為最基本的元素,以對象作為分析問題、解決問題的核心,這就

2、是面向?qū)ο蟮某绦蛟O(shè)計方法。n 三、程序的三大分支結(jié)構(gòu) 順序、分支(單分支、雙向分支、多路分支)、循環(huán)(單循環(huán)、多循環(huán))u IF 語句 DO CASE Do While For SCANu ENDIF ENDCASE ENDDO ENDFOR ENDSCAN 四、算法和流程圖 n 算法的概念:做某件事的方法。完成某個任務(wù)的方法 例如:樂山到成都怎么去? 流程圖:用圖表來描述算法的圖。常見分為:ANSI 和 N-S 圖 參看書:P131n 例 設(shè)某教學(xué)班有n個學(xué)生,求該班學(xué)生的計算機課平均成績。 算法分析:設(shè)用變量Sum來存放n個學(xué)生的計算機課成績之和。進行數(shù)據(jù)的累加之前,將變量Sum清0(因為在

3、沒有進行相加時,它們的和肯定為0,這個操作實際上就是我們頭腦中認為理所當然的東西,然而計算機不知道這個“理所當然”的東西,所以我們必須把這個步驟給寫出來)。用變量num作為計數(shù)器來記錄累加的次數(shù)。將學(xué)生的成績輸入到變量m中(每次輸入一個),逐個將每個學(xué)生的成績加到變量Sum中,每加一次,計數(shù)器num的內(nèi)容也相應(yīng)增加1,這樣的過程重復(fù)進行,直到計數(shù)器的內(nèi)容大于n。最后將變量Sum中的內(nèi)容除以n即得到全班同學(xué)計算機課程的平均成績,將平均成績放入變量mean中,最后輸出mean的內(nèi)容。 算法描述:(1)學(xué)生人數(shù)n。(2)0 sum。 (3)1 num。 (4)學(xué)生成績 m。 (5)sum+m sum

4、。  (6)如果num<n,則num+1 num,返回第4)步。 (7)如果num=n,則sum/n mean。 (8)輸出平均成績mean。 從上述例子中可以看出,算法中每個步驟的含義清楚,步驟執(zhí)行的次數(shù)確定。 ANSI流程圖P131 ANSI流程圖的特點是:容易使用,程序流向清晰,但控制結(jié)構(gòu)的作用域不太明確。 ANSI流程圖使用的符號和含義如圖所示;P132 (2)N-S圖 N-S圖的特點是:功能域(特別是控制結(jié)構(gòu)的作用域)明確;不允許任意的轉(zhuǎn)移控制;容易確定局部和全局數(shù)據(jù)的作用范圍;嵌套關(guān)系清晰,容易表示模塊的層次結(jié)構(gòu)。 N-S圖表示結(jié)構(gòu)的程序設(shè)計基本符號,如圖所示 P1

5、32 第二節(jié) 程序文件的建立、編輯與運行 程序的擴展名:PRG 實質(zhì):文本文件(ASCII編碼) 執(zhí)行時,會產(chǎn)生編譯文件FXP后讓計算機執(zhí)行。程序的編寫: MODI COMM 程序名.PRG (.PRG可省) 文件 => 新建 => 程序 建立項目管理器 => 新建程序 其它可編輯文本的軟件: 記事本寫字板WORD其它程序編輯器 注意: 希望編寫程序之前事先設(shè)置好默認目錄(set defa to ) 然后我們編寫的程序就會自動存儲在那個目錄中。 例如:set defa to d:ksu modi comm Test (相當于是:modi comm. D:kstest

6、.prg)l 程序的運行l(wèi) DO 盤符路徑程序名 程序文件的編譯運行 (略)l 程序舉例l 例1:顯示出所有入??偡衷?80分及以上的同學(xué)信息l clearl close alll use 學(xué)生l locate for 入??偡?gt;=580l do while .not. eof()n dispn continun wait '按任意鍵繼續(xù)'l enddol ?'結(jié)束'l close alll cancell 講書上P137 例4.5、例4.6n 第三節(jié) 程序中常用的命令 輸入命令 賦值命令 P138u STORE <表達式> TO &

7、lt;內(nèi)存變量名> <內(nèi)存變量>=<表達式>u 書上例4.8交互式輸入命令(注意:輸入數(shù)據(jù)是在程序執(zhí)行的時候 ) P139u INPUT 提示信息 TO <內(nèi)存變量> u ACCEPT 提示信息 TO <內(nèi)存變量> u WAIT 提示信息 TO <內(nèi)存變量> TIMEOUT <等待時間> n 注意:wait 輸入的是一個字符(C型) u Input 和 Accept 的區(qū)別: n Input 適用于全部類型內(nèi)存變量,輸入時需要加定界符 u Accept只適用于C型,并且C型不加定界符 u 說明: 提示信息是C型, 它

8、會在屏幕上原樣輸出 . Input和accept在編寫程序時語句都一樣,只是執(zhí)行程序(do)時,輸入的東西不同u 書上例4.9, 例4.10l 下面請看程序?qū)嵗簂 例2:輸入a、b、c的值,對2ax+b=c 求 x的值。 l Clearl Input “現(xiàn)在計算2ax+b=c,請輸入a的值:” to al Input “請輸入b的值:” to bl Input “請輸入c的值:” to cl x=(c-b)/(2*a)l ?x的值為:,x &&比較使用? x的值為:+str(x,3)有何區(qū)別l returnl 例3、刪除學(xué)生.dbf中的指定記錄 l clear l close

9、 all l use 學(xué)生 l list l input “請輸入您想刪除的記錄號: ” to x l dele reco x l wait “你想徹底刪除這條記錄嗎?(y/n)” to ask l if ask=Y or ask=y l pack l endif l list l close all l 例4:完成查詢功能:在學(xué)生.dbf中查找某個同學(xué)信息。l clearl close alll use 學(xué)生l index on 姓名 to xml accept “請輸入要查詢?nèi)说男彰骸?to namel seek namel if found()n displ else n ?對不起,沒

10、有找到此人l endifl close alll returnl 請思考:如果換成input,輸入的時候該怎么輸入?l 請參看書上例題8-8和8-9 書143頁l 注意區(qū)分交換方式和程序方式:有的命令可以在兩種狀態(tài)下執(zhí)行(例如:剛才的輸入命令),但有些命令只能在程序方式下執(zhí)行(例如:循環(huán)語句)l 格式輸入輸出:詳見P140格式 l 常用方法:方法一 行,列 say 表達式l 方法二 行,列 say 提示信息 get 內(nèi)存變量n n READ u 方法三 行,列 say 提示信息 get 內(nèi)存變量 default常量u 說明:內(nèi)存變量必須先賦初值才能使用,否則就必須使用defaultl 參數(shù)賦初

11、值。輸入的值類型應(yīng)該于初值類型相同。l 如果沒有read則表示只顯示內(nèi)容,不輸入值。l 參看書上P141頁的4.11例題n 二、輸出命令 1、?和? 說明:? 表示換行輸出? ?表示在光標位置開始顯示輸出 2、行,列 say 表達式 說明:行和列都可以是表達式,常??梢允褂煤瘮?shù)ROW( ) 和 COL( ) ROW( )表示返回當前行的行號 COL( )表示返回當前列的列號 看下面的例題: 例5:循環(huán)輸入值l clearl dime xh(10)l store 0 to xhl 10,10 say '請輸入數(shù)字:' get xh(1) l i=2l do while i<

12、=10n row()+1,10 say '請輸入數(shù)字:' get xh(i) n i=i+1l enddol readl list memo like xhl 三、其他程序運行命令 終止程序執(zhí)行命令 u CANCEL 、QUIT 和 RETURN u QUIT: 退出程序運行并且退出 Visual Foxpro u CANCEL : 退出程序運行 u RETURN: 返回上級程序調(diào)用點,如果是主程序就表示退出程序 l 主程序可缺省此命令返回(結(jié)束),即默認使用了return n 注意:上述命令執(zhí)行完后都會自動clear memory . l 但是如果有數(shù)據(jù)庫和表打開不會自動關(guān)閉

13、,所以使用數(shù)據(jù)庫l 和表后在程序結(jié)束時我們常常需要加命令: close all n 清屏命令 u CLEAR n 注釋命令NOTE 、* 和 &&n 注釋的含義:程序員對程序語句功能的說明,執(zhí)行程序的時候不執(zhí)行注釋中的內(nèi)容,注釋只起到一個對語句說明的目的。一般復(fù)雜程序中應(yīng)有30%以上的注釋。l TEXT語句:原樣輸出(參考書143例4.15)n 四、 系統(tǒng)設(shè)置命令 設(shè)置會話狀態(tài) SET TALK ON/OFF 設(shè)置跟蹤狀態(tài) SET ECHO ON/OFF 設(shè)置打印狀態(tài) SET PRINTER ON/OFF 設(shè)置定向輸出狀態(tài) SET DEVICE TO SCREEN 設(shè)

14、置精確比較狀態(tài) SET EXACT TO ON/OFF設(shè)置日期格式 SET DATE ANSI 色繪制系統(tǒng)提供的保護狀態(tài) SET SAFETY ON/OFF 設(shè)置刪除記錄標記狀態(tài) SET DELETED ON/OFF 程序的基本結(jié)構(gòu)l 順序結(jié)構(gòu) P137 順序結(jié)構(gòu)在執(zhí)行的時候是從上到下依此執(zhí)行的。語句可以是我們上節(jié)所講語句,也可以是以前學(xué)習(xí)的命令。 例6:求圓的面積(公式S=R2) CLEAR INPUT “請輸入半徑R的值:” TO R S=3.1416*R*R ?”圓面積為:”,S CANCEL  二、分支結(jié)構(gòu) P147 IF語句

15、 n (1)單向選擇: IF 條件 雙向選擇: IF 條件 l 執(zhí)行語句 執(zhí)行語句 u ENDIF ELSE n 執(zhí)行語句 u ENDIF u 雙向選擇分支 n 例7:求任意一個數(shù)值的絕對值 n CLEAR n SET TALK OFF n INPUT “請輸入數(shù)值:” TO N n IF N>0 n N=N n ELSE n N=-N n ENDIF n ?”|N|的絕對值為:”,N n CANCEL n 例8:用戶輸入數(shù)據(jù)表文件名,判斷它存在否,如果存在則打開數(shù)據(jù)表文件并顯示表中的全部記錄 n clear n accept '請輸入數(shù)據(jù)庫文件名:' to heng &

16、amp;&想想為什么不用input n if file(heng+'.dbf') &&了解file()的使用方法 n use &heng &&想想這兒為什么要用&代換 u list u else u ?'sorry,文件不存在:( ' n endif l close all &&關(guān)閉所有打開的表,如果不涉及多工作區(qū),可以只使用usel canceln (3)IF語句的嵌套 例9:將用戶輸入的小寫英文字母轉(zhuǎn)化成大寫l CLEAR n ACCEPT “請輸入1個字母:” TO STR1 n IF

17、 STR1>=a AND STR1<=z u STR1=UPPER(STR1) u ?SPACE(40)+STR1 n ELSE u IF STR1>=A AND STR1<=Z u ?SPACE(40)+STR1 u ELSE u ?您輸入的不是英文字母 u ENDIF n ENDIF n canceln 例10:判斷輸入數(shù)字的奇偶性 n CLEAR n SET TALK OFF n INPUT “請輸入整數(shù):” TO N n IF N>0 u IF N%2=0 n ?STR(N,4)+”是偶數(shù)” n ELSE n ?STR(N,4)+”是奇數(shù)” n ENDIF

18、 n ELSE n ?”請輸入大于0的正整數(shù)” n ENDIF n CANCEL l 多項選擇 DO CASE l CASE <條件表達式1> l <命令序列1> l CASE <條件表達式2> l <命令序列2> l OTHERWISE . 其它情況 n <命令序列> n ENDCASE l 說明:OTHERWISE 可以沒有. l 例11:判斷A、B的大小 n CLEAR n INPUT “請輸入A的值:” TO A n INPUT “請輸入B的值:” TO B n DO CASE u CASE A>B l ?”A 大于B”

19、 u CASE A<B u ?”A 小于B” u CASE A=B n ?”A等于B” n ENDCASE n 例12:郵局負責(zé)郵購小物品規(guī)則如下:50公里及以內(nèi)收取額外金額5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。 n CLEAR n INPUT “請輸入您想郵購物品的路程(公里數(shù)): ” TO X n DO CASE u CASE X<=50 l Y=5 u CASE X>50 AND X<=100 l Y=10 u CASE X>100 AND X<=200 l Y=20 u CA

20、SE X>200 AND X<=500 l Y=40 u OTHERWISE n Y=50 n ENDCASE l ?對不起, 您需要付款: ,Y,元人民幣 l 另外,參看書上例題4.24 和4.25n 三、循環(huán)結(jié)構(gòu) P151l 條件循環(huán) n DO WHILE 條件 u 語句序列 u LOOP u 語句序列 u EXIT u 語句序列 u ENDDO n 要退出循環(huán),需要條件為假的時候(條件=.F.時) n 說明:(1) LOOP和EXIT 命令一般放在IF條件中,也可以出現(xiàn)在循環(huán)體內(nèi)的任何位置。若執(zhí)行循環(huán)體時遇到LOOP命令,則直接返回執(zhí)行DO命令,測試條件以決定是否繼續(xù)循環(huán)。若

21、遇到EXIT命令,則不執(zhí)行下面的命令序列,直接跳出循環(huán),執(zhí)行ENDDO后面的命令。 n (2)條件表達式的值確定了循環(huán)是否繼續(xù),當條件表達式的值始終為真(即永真循環(huán)),則應(yīng)使用EXIT命令來控制循環(huán)結(jié)束 n 例13:將字符“歡迎進入樂山師范學(xué)院”從屏幕的頂部移至底部 n CLEAR n CH=“歡迎進入樂山師范學(xué)院” n N=1 n DO WHILE N<=23 n N,26 SAY SPACE(60) n N+1,26 SAY CH u T=INKEY(0.2)&&等待0.2秒 u N=N+1 n ENDDO n cancel n 注:INKEY (<數(shù)值表達式&

22、gt;) n 功能:等待用戶按鍵或鼠標輸入,等待時間由數(shù)值表達式確定(單位為秒)返回由按鍵而產(chǎn)生的一個整數(shù)值. u DO WHILE 語句和IF語句的嵌套 n 例14:實現(xiàn)顯示出全部的男生 n CLEAR n CLOSE ALL n USE 學(xué)生 n DO WHILE NOT EOF() u IF 性別=男 n DISP u ENDIF u SKIP n ENDDO n CLOSE ALL n LOOP循環(huán)實例 n 例15:選擇修改記錄n CLOSE ALL n CLEAR n USE 學(xué)生 n DO WHILE NOT EOF() n DISP n WAIT 你想修改本記錄嗎?(Y/N):

23、TO X n IF X=N OR X=n u SKIP n LOOP n ENDIF n EDIT n SKIP n ENDDO n ? “記錄修改完成”n CLOSE ALL n 程序執(zhí)行到WAIT語句后,如果用戶輸入的是N或n,那么就LOOP n (也就跳過本次循環(huán),不執(zhí)行后面的EDIT) u 永真循環(huán) n DO WHILE .T. DO WHILE .T. n IF Y>0 IF Y>0 u EXIT QUIT n ENDIF ENDIF n ENDDO ENDDO n 如果Y>0,則退出本循環(huán) 如果Y>0,則退出程序,退出VF n DO WHILE .T. DO

24、 WHILE .T. n IF Y>0 IF Y>0 u RETURN CANCEL n ENDIF ENDIF n ENDDO ENDDO n 如果Y>0,則退出程序返回上層 如果Y>0,則退出程序,回到VF中 l 計數(shù)循環(huán) n FOR 循環(huán)變量=初值 TO 終值 STEP 步長 u 語句序列 n ENDFOR n 說明: (1)當省略步長值時,系統(tǒng)默認步長值為1.當初值小于終止值時,步長值為正值,當初值大于終值時,步長值為負值.步長值不能為0,否則會造成死循環(huán). u (2)可在循環(huán)體內(nèi)嵌入LOOP和EXIT命令,功能和用法與條件循環(huán)中該命令的用法相同. 例16:求1

25、100的和 n SUM=0 n FOR I=1 TO 100 n SUM=SUM+I n ENDFOR n ?1100的總和為:,SUM n 使用DO WHILE 實現(xiàn): n SUM=0 n I=1 n DO WHILE I<101 n SUM=SUM+I n I=I+1 n ENDDO n ?1100的總和為:,SUM u FOR和IF語句嵌套 n 例17;求1到N之間能被3整除的數(shù)的和 n CLEAR n M=0 n INPUT “請輸入N的值:” TO N n FOR X=1 TO N u IF MOD(X,3)=0 n M=M+X n ENDIF n ENDFOR n ?” 1到

26、N之間能被3整除的數(shù)的和為:”,M n RETURN l 庫文件掃描循環(huán): n SCAN 范圍 FOR/WHILE 條件l 語句序列n ENDSCANl 另外:若語句中有QUIT、EXIT、RETURN、CANCEL 等命令也可以退出l 例如:l DO WHILE .T. DO WHILE .T. u IF Y>0 IF Y>0u EXIT QUITu ENDIF ENDIFl ENDDO ENDDOl 如果Y>0,則退出本循環(huán) 如果Y>0,則退出程序,退出VFl DO WHILE .T. DO WHILE .T.u IF Y>0 IF Y>0u RETUR

27、N CANCELu ENDIF ENDIFl ENDDO ENDDOl 如果Y>0,則退出程序返回上層 如果Y>0,則退出程序,回到VF中l(wèi) 例18:三種方法實現(xiàn)顯示出全部的男生。l 使用DO WHILE 循環(huán) :l CLEARl CLOSE ALLl USE 學(xué)生l DO WHILE NOT EOF()n IF 性別=男u DISPn ENDIFn SKIPl ENDDOl CLOSE ALLl 使用FOR 循環(huán) :l CLEARl CLOSE ALLl USE 學(xué)生l COUNT TO Xl GO TOPl FOR I=1 TO Xu IF 性別=男u DISPu ENDIFu

28、 SKIPl ENDFORl CLOSE ALLl 使用SCAN循環(huán) :l CLEARl CLOSE ALLl USE 學(xué)生l SCAN FOR 性別=男u DISPl ENDSCANl CLOSE ALLl 另外:請看LOOP語句的使用方法:退出本次循環(huán)l 例19:l CLOSE ALLl CLEARl USE 學(xué)生l DO WHILE NOT EOF()u DISP u WAIT 你想修改本記錄嗎?(Y/N): TO Xu IF X=N OR X=nu SKIPl LOOPu ENDIFu EDITu SKIPl ENDDOl CLOSE ALLl 程序執(zhí)行到WAIT語句后,如果用戶輸入的

29、是N或n,那么就LOOPl (也就跳過本次循環(huán),不執(zhí)行后面的EDIT)l 上述語句LOOP、EXIT、RETURN、CANCEL、QUIT等也可以在后面講的其它循環(huán)語句中使用。l 例20:通過鍵盤輸入三角形的邊長,若邊長正確,立即在屏幕上顯示三角形的面積,若邊長不正確,重新輸入邊長,若輸入的邊長中任意一邊為0則程序立即結(jié)束。l CLEARl ?”現(xiàn)在計算三角型的面積,如果想退出程序請輸入0?!眑 DO WHILE .T.n INPUT “請輸入邊長a:” TO An INPUT “請輸入邊長b:” TO Bn INPUT “請輸入邊長c:” TO Cn IF A=0 OR B=0 OR C=0

30、u ?結(jié)束u RETURNn ENDIFn IF A+B<=C OR A+C<=B OR B+C<=Au ?錯誤的三角型,請重新輸入!u LOOPn ENDIFn S=(A+B+C)/2n AREA=SQRT(S*(S-A)*(S-B)*(S-C)n ?該三角型的面積是:,areal ENDDOl 例21:有下列表:book(書名 C(20),作者 C(8),出版日期 D,內(nèi)容簡介 M)編寫程序:查詢關(guān)于 foxpro 的圖書.l USE BOOKl LOCATE FOR foxpro $ 書名l IF ! FOUND()n ?沒有關(guān)于foxpro的圖書l ELSEu DO

31、WHILE ! EOF()u CLEARu ?書名,作者,出版日期u ?內(nèi)容介紹u WAIT “是否繼續(xù)查找?(Y/N)” TO Mu IF M$nNl EXITu ENDIFu CONTINUEu ENDDOu ?”全部顯示完成”l ENDIFl 例22: 找出2-100之間所有的質(zhì)數(shù)l 算法研究:l FOR I=1 TO 100u 如果此數(shù)是質(zhì)數(shù)u 顯示這個數(shù)l ENDFORl 判斷一個數(shù)是不是質(zhì)數(shù),應(yīng)該看它是否能被其它數(shù)整除.l 當一個數(shù)I , 從I從2到 SQRT(X) 都沒有數(shù)能被整除,那么它就是 .l FOR J=2 TO INT(SQRT(I)u IF I MOD J=0u EX

32、ITu ENDIFl ENDFORl IF J> INT(SQRT(I)l ?I,是質(zhì)數(shù)l ENDIFl 特別: 2是個質(zhì)數(shù).l 綜上所敘述: 完成程序為:l CLEARl ? 2是質(zhì)數(shù)l FOR I=3 TO 100n FOR J=2 TO INT(SQRT(I)u IF MOD(I,J)=0l EXITu ENDIFn ENDFORn IF J> INT(SQRT(I)u ?I,是質(zhì)數(shù)n ENDIFl ENDFORl 例題23:l 查詢所有入校總分在570以上的人.l CLEARl CLOSE ALLl USE 學(xué)生l SCAN FOR 入校總分>570l DISPl E

33、NDSCANl CLOSE ALLl 例24 : 用戶可以循環(huán)輸入并查找入??偡?直到輸入的是負數(shù)就退出.l CLEARl CLOSE ALLl USE 學(xué)生l INPUT “請輸入你要查找的入校總分,輸入負數(shù)則退出: ” TO Xl DO WHILE X>=0u SCAN FOR 入校總分=Xu dispu ENDSCANu INPUT “請輸入你要查找的入校總分: ” TO Xl ENDDOl 實驗:循環(huán)插入新記錄,并輸入數(shù)據(jù)。答案見210.41.166.233中省等級考試輔導(dǎo)資料:VF程序部分。l 例25:現(xiàn)有表STUDENT.DBF和學(xué)生成績.DBF ,編寫程序,對兩張表建立關(guān)聯(lián)

34、, 用戶可以循環(huán)查詢: 輸入某個同學(xué)的姓名后,該程序能夠修改關(guān)于他所選課程的分數(shù). (此題僅理解)l 其中STUDENT.DBF信息如下:l (學(xué)號 C(6), 姓名 C(8),性別 C(2),出生日期 D,高考成績 N(6,1)l 學(xué)生成績.DBF信息如下:l (學(xué)號 C(6),課程號 C(3),分數(shù) N(2)l 思路: 先建立好關(guān)聯(lián), 因為STUDENT對學(xué)生成績是一對多的關(guān)系,所有最好將STUDENT做子表,就不用SET SKIP TO命令了. 然后通過STUDENT中的姓名獲得學(xué)號,再在表學(xué)生成績.dbf中進行查找和課程分數(shù)的修改.l CLEARl CLOSE ALLl SELE 2l

35、 USE STUDENTl INDEX ON 學(xué)號 TAG XHl SELE 1l USE 學(xué)生成績l SET RELA TO 學(xué)號 INTO B &&建立關(guān)聯(lián),學(xué)生成績作為父表l DO WHILE .T.n ACCEPT “請輸入你想查詢的人姓名” TO NAMEn SELE 2n LOCATE FOR 姓名=NAME &&先在表STUDENT中查找姓名n IF FOUND()l NUM=學(xué)號 &&獲得姓名對應(yīng)的學(xué)號l SELE 1 &&轉(zhuǎn)換到表學(xué)生成績中l(wèi) LOCATE FOR 學(xué)號=NUM &&根據(jù)剛才姓名對

36、應(yīng)的學(xué)l &&學(xué)生成績中循環(huán)找,因為一個學(xué)生可能有幾個課程成績l DO WHILE NOT EOF()l 4,8 SAY 學(xué)號 l 4,20 SAY B.姓名 l 4,34 SAY 課程號 l 6,10 SAY 分數(shù) GET 分數(shù)l READl CLEARl CONTINUEl ENDDOu ELSEu ?SORRY , NO FIND . n ENDIFu WAIT “你想繼續(xù)查詢修改數(shù)據(jù)嗎?(Y/N): ” TO ASKu IF ASK=n OR ASK=Nu CLEARu LIST 學(xué)號,B.姓名,課程號,分數(shù)u CLOSE ALLu CANCELu ENDIFu CLE

37、ARl ENDDOl 多重循環(huán) n 輸入n的值,求1+1/2!+1/3!+1/4!+.+1/n! ( 階乘 n!=1*2*3*4.*(n-1)*n ) n CLEAR n SUM=0 n MUL=1 n INPUT "請輸入n的值: " TO N n FOR i=1 TO N u FOR j=1 TO i u MUL=MUL*J u ENDFOR u SUM= SUM+1/MUL n ENDFOR n ?'求得的總和為: ',SUM l 數(shù)組應(yīng)用l 數(shù)組的定義 P161n DIMENTION 數(shù)組名(數(shù)值表達式1,數(shù)組表達式2.)定義后單元默認值為.F. n

38、 二、一維數(shù)組 n 定義一個一維數(shù)組:dime a(10) -定義一個10數(shù)組,且所有單元默認值為.F.2、賦值:例如: a=''a(1)=20 a(3)=2002/09/23a(7)=.T.循環(huán)賦值:dime a(10)i=1do while i<=10input '請輸入數(shù):' to a(i)i=i+1enddo或者是:for i=1 to 10input '請輸入數(shù):' to a(i) endfor3、顯示值:for i=1 to 10?a(i)endfor使用do while大家思考方法2:list m

39、emo like an 三、二維數(shù)組 n 例如:dime s(5,4)1、賦值:例如: s=0s(3,4)=.t.s(12)='xixi' . 相當于 s(3,4)='xixi'2、循環(huán)賦值for i=1 to 5for j=1 to 4input '輸入值:' to a(i,j)endforendfor3、顯示值:for i=1 to 5for j=1 to 4 ?a(i,j)+space(2)endforendfor n 四、例題 n 輸入10 個數(shù),將它們按照從大到小的順序排列算法研究:方法1:連續(xù)的兩兩比較方法2:將每個數(shù)和最后

40、一個數(shù)比較cleardime a(10)?'輸入10個數(shù): 'for i=1 to 10input "請輸入: " to a(i)endforfor i=1 to 9for j=1 to iif a(j)>a(i+1)t=a(i+1)a(i+1)=a(j)a(j)=tendifendforendforlist memo like al 子程序、過程與自定義函數(shù)l 子程序 P168n 子程序的概念n 具有相對獨立性和通用性的程序段。子程序能被別的程序多次調(diào)用,調(diào)用子程序的程序稱為主程序或調(diào)用程序。n 子程序的建立與調(diào)用 n 建立子程序的方法與建立一般程序

41、的方法相同,但在子程序適當位置要加上返回命令(RETURN),使主程序在調(diào)用子程序后能返回到調(diào)用命令后的第一條可執(zhí)行命令。n 返回命令:RETURN<表達式>TO <程序文件名>TO MASTERn 其中:TO <程序文件名>:返回指定程序文件u TO MASTER:返回到第一級主程序n 調(diào)用命令:DO <子程序文件名>n 子程序的嵌套P169n 主程序調(diào)用子程序,子程序又調(diào)用子程序,這樣形成一種嵌套的調(diào)用方式。在子程序的嵌套中,一定要注意調(diào)用和返回的路徑。n 子程序嵌套1(下圖;逐級返回) nn 子程序嵌套2(下圖;直接返回主程序)n 主程序n n DO 子程序1n n RETURNn 子程序n n DO 子程序2n n RETURNn 子程序2n n ETURN TO MASTERn   n 二、內(nèi)存變量的作用域和參數(shù)傳遞 P170 u 全局變量和局部變量n 局部變量(私有變量):只能在說明它的程序及被它調(diào)用的下屬各級子程序中使用的內(nèi)存變量。用賦值命令或數(shù)組說明定義內(nèi)存 變量后,這個變量自動被默認是局部變量。n 全局變量(公共變量):能在各級程序中使用的內(nèi)存變量,當程序執(zhí)行完后,值不變。VFP默認命令窗口中定義的變量都是全局變量,但這樣定義的變量不能在程序方式下使用。n 命令:PUBLIC <

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論