VFO程序設(shè)計(jì)復(fù)習(xí)_第1頁(yè)
VFO程序設(shè)計(jì)復(fù)習(xí)_第2頁(yè)
VFO程序設(shè)計(jì)復(fù)習(xí)_第3頁(yè)
VFO程序設(shè)計(jì)復(fù)習(xí)_第4頁(yè)
VFO程序設(shè)計(jì)復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、VFO程序設(shè)計(jì)復(fù)習(xí)1程序設(shè)計(jì)概述一、程序的概念概念:具有一定功能的計(jì)算機(jī)能執(zhí)行的指令的集合。例1:顯示表XSDA可編寫成如下命令序SET DEFA TO F:表USE XSDALISTCLOSE ALL例2:求a=3,b=2,c=5 求a+b-c=?程序test.prg 代碼如下:a=3b=2c=5x=a+b-c?x二、常見的程序設(shè)計(jì)方法1、  結(jié)構(gòu)化程序設(shè)計(jì)(模塊化) 結(jié)構(gòu)化程序設(shè)計(jì)是一個(gè)面向過(guò)程的概念。把一個(gè)實(shí)際問(wèn)題分為兩部分,即數(shù)據(jù)和過(guò)程。通過(guò)動(dòng)態(tài)的程序執(zhí)行過(guò)程來(lái)對(duì)靜態(tài)的數(shù)據(jù)進(jìn)行處理,得出正確的結(jié)果。由VFP命令和程序設(shè)計(jì)命令的組合,需編制和調(diào)試; 2、  面向?qū)ο蟮?/p>

2、程序設(shè)計(jì) 3、結(jié)構(gòu)化程序設(shè)計(jì)它是面向過(guò)程程序設(shè)計(jì)的另一種描述,面向過(guò)程程序設(shè)計(jì)有如下特點(diǎn):整個(gè)程序分為若干個(gè)模塊,模塊之間相銜接,且相對(duì)獨(dú)立。第個(gè)模塊只有一個(gè)入口和一個(gè)出口。第個(gè)模塊都能單獨(dú)執(zhí)行,且在有限時(shí)間內(nèi)執(zhí)行完。采用自頂向下、逐步求精的方法。 三、程序三大基本結(jié)構(gòu)1、順序結(jié)構(gòu):執(zhí)行是按命令出現(xiàn)的先后順序執(zhí)行。 2、分支結(jié)構(gòu):按給定的條件成立與否來(lái)決定程序起向,分單向選擇分支、雙向選擇分支和多路分支。有以下兩種 IF 語(yǔ)句 DO CASEENDIF ENDCASE3、循環(huán)結(jié)構(gòu):程序的執(zhí)行發(fā)生了自下而上的往復(fù),某一程序段將重復(fù)執(zhí)行。 有以下三種Do While For SCANENDDO E

3、NDFOR ENDSCAN四、算法和流程圖算法:解決某一問(wèn)題的方法與步驟。見教材例。流程圖:算法的描述,除用自然語(yǔ)言描述外,計(jì)算機(jī)領(lǐng)域常用流程圖(ANSI圖和NS圖)描述。見教材例。 例如:樂(lè)山到成都怎么去?1、  解一元二次方程的算法。Ax2+bx+c=0, 求x2、  求出1-100之間的質(zhì)數(shù)。 X / => 2 到 SQRT(X )2程序的建立和執(zhí)行一、程序的擴(kuò)展名:PRG 實(shí)質(zhì):文本文件(ASCII編碼)執(zhí)行時(shí),會(huì)產(chǎn)生編譯文件FXP后讓計(jì)算機(jī)執(zhí)行。 二、程序文件的建立和編輯1、命令方式:MODI COMM 程序名.PRG (.PRG可?。?、菜單方式;文件 =

4、> 新建 => 程序 3、項(xiàng)目管理器中建立的方法:建立項(xiàng)目管理器 => 新建程序 4、其他方法:其它可編輯文本的軟件: 記事本寫字板WORD其它程序編輯器 注意: 希望編寫程序之前事先設(shè)置好默認(rèn)目錄(set defa to )然后我們編寫的程序就會(huì)自動(dòng)存儲(chǔ)在那個(gè)目錄中。例如:set defa to d:ks modi comm Test (相當(dāng)于是:modi comm D:kstest.prg) 三、 程序的執(zhí)行1、命令方式命令格式:DO 盤符路徑程序名 2、菜單方式:“程序”菜單->“運(yùn)行”命令在“運(yùn)行”窗口中輸入被運(yùn)行的程序文件名,即可運(yùn)行程序。 四、VFP程序的分

5、類:數(shù)學(xué)類程序、涉及到表操作的程序如果本程序是涉及到表操作的程序,那么: 1、在程序開始部分可以先加語(yǔ)句CLEAR 和 CLOSE ALL 2、程序最后可以使用命令CLOSE ALL 3、然后使用RETURN或CANCEL或QUIT 例:找出并顯示所有三好生CLEAR CLOSE ALL USE 學(xué)生 LOCATE FOR 三好生DO WHILE NOT EOF() DISPCONTINUE ENDDO CLOSE ALL RETUREN3順序程序設(shè)計(jì)與常用語(yǔ)句一、程序設(shè)計(jì)中的常用語(yǔ)句1、輸入命令(1)賦值命令命令一:STORE <表達(dá)式> TO <內(nèi)存變量>命令二:&

6、lt;內(nèi)存變量>= <表達(dá)式> (2)交互式輸入命令(注意:輸入數(shù)據(jù)是在程序執(zhí)行的時(shí)候 )INPUT 提示信息 TO <內(nèi)存變量>ACCEPT 提示信息 TO <內(nèi)存變量>WAIT 提示信息 TO <內(nèi)存變量> TIMEOUT <等待時(shí)間>說(shuō)明: 提示信息是C型, 它會(huì)在屏幕上原樣輸出 .WAIT命令的功能:暫停程序執(zhí)行,顯示提示信息等待用戶按鍵。 Wait命令中 輸入的只能是一個(gè)字符(C型)。 Input 適用于全部類型內(nèi)存變量,輸入時(shí)需要加定界符 Accept只適用于C型,并且C型不加定界符注意:Input和accept在編

7、寫程序時(shí)語(yǔ)句都一樣,只是執(zhí)行程序(do)時(shí),主屏幕上要求輸入的類型和格式不同。例1:輸入a、b、c的值,對(duì)2ax+b=c 求 x的值。ClearInput “現(xiàn)在計(jì)算2ax+b=c,請(qǐng)輸入a的值:” to aInput “請(qǐng)輸入b的值:” to bInput “請(qǐng)輸入c的值:” to cx=(c-b)/(2*a)?x的值為:,x &&比較使用? x的值為:+str(x,3)有何區(qū)別 return 例2、查找學(xué)生.dbf中的指定記錄 clearclose alluse 學(xué)生listaccept “請(qǐng)輸入您想查找的姓名: ” to xmLocate for 姓名=XM &&

8、amp;或命令 SEEK XMif found() DISP else ?對(duì)不起,沒(méi)有找到此人endiflistclose allReturn思考:如果accept換成input,輸入的時(shí)候該怎么輸入? 例3、刪除學(xué)生.dbf中的指定記錄 clearclose alluse 學(xué)生listinput “請(qǐng)輸入您想刪除的記錄號(hào): ” to xdele reco xwait “你想徹底刪除這條記錄嗎?(y/n)” to ask if ask=Y or ask=y packendiflistclose all注意區(qū)分交換方式和程序方式:有的命令可以在兩種狀態(tài)下執(zhí)行(例如:剛才的輸入命令),但有些命令只

9、能在程序方式下執(zhí)行(例如:循環(huán)語(yǔ)句和分支語(yǔ)句) (3)格式輸入命令格式一:行,列 say 提示信息格式二:行,列 say 提示信息 get 變量 READ 格式三:行,列 say 提示信息 get 變量 default常量 功能:在屏幕指定的坐標(biāo)位置上顯示提示信息,然后通過(guò)READ命令激活GET子句的變量值。說(shuō)明:GET后的變量可以是內(nèi)存變量或當(dāng)前打開的數(shù)據(jù)文件中的字段變量,若是內(nèi)存變量,應(yīng)在執(zhí)行該命令前對(duì)內(nèi)存變量賦值,否則就必須使用default參數(shù)賦初值。輸入的值類型應(yīng)該與初值類型相同。READ命令與GET命令必須配合使用。多個(gè)GET命令可以只用一個(gè)READ命令配合。如果沒(méi)有read則表示

10、只顯示內(nèi)容,不輸入值。例1:編寫程序完成在學(xué)生.DBF中追加記錄CLEARUSE 學(xué)生APPEND BLANK5,20 SAY “學(xué)號(hào)” GET 學(xué)號(hào)5,40 SAY “姓名” GET 姓名7,20 SAY “性別” GET 性別7,40 SAY “出生年月” GET 出生年月9,20 SAY “入校總分” GET 入??偡?,40 SAY “三好生” GET 三好生READCLEARLISTCLOSE ALLRETURN例2:編程求長(zhǎng)方形的面積。 CLEAR X=0 &&X為內(nèi)存變量,賦初值Y=0 1,5 SAY “計(jì)算長(zhǎng)方形的面積”2,5 SAY “輸入長(zhǎng)方形的長(zhǎng):” GE

11、T X &&第2行5列顯示提示信息并等待輸入3,5 SAY “輸入長(zhǎng)方形的寬:” GET Y &&第3行5列顯示提示信息并等待輸入 READ &&從鍵盤輸入X,Y的值 S=X*Y &&計(jì)算長(zhǎng)方形的面積 ? “長(zhǎng)方形的面積:”,S &&顯示長(zhǎng)方形的面積 CANCEL思考題1:如將上述例1程序改為按照指定學(xué)號(hào)來(lái)修改記錄應(yīng)該怎樣做?(答案見課件后)3、輸出命令:非格式輸出命令?和?:格式化輸出命令行,列 say 表達(dá)式 說(shuō)明:行和列都可以是表達(dá)式,常常可以使用函數(shù)ROW( ) 和 COL( ) ROW( )表示返回當(dāng)前行

12、的行號(hào) COL( )表示返回當(dāng)前列的列號(hào)例1:N=1CH=“VF程序設(shè)計(jì)”N,26 SAY SPACE(60)N+1,26 SAY CH例2:循環(huán)輸入值cleardime xh(10)store 0 to xh10,10 say '請(qǐng)輸入數(shù)字:' get xh(1) i=2do while i<=10 row()+1,10 say '請(qǐng)輸入數(shù)字:' get xh(i) i=i+1enddoreadlist memo like xh 4、其他程序運(yùn)行命令(1)終止程序執(zhí)行命令  CANCEL 、QUIT 和 RETURNQUIT: 退出程序運(yùn)行并且

13、退出 Visual FoxproCANCEL : 退出程序運(yùn)行RETURN: 返回上級(jí)程序調(diào)用點(diǎn),如果是主程序就表示退出程序。主程序可缺省此命令返回(結(jié)束),即默認(rèn)使用了return 注意:上述命令執(zhí)行完后都會(huì)自動(dòng)clear memory。但是如果有數(shù)據(jù)庫(kù)和表打開不會(huì)自動(dòng)關(guān)閉,所以使用數(shù)據(jù)庫(kù)和表后在程序結(jié)束時(shí)我們常常需要加命令: close all(2)清屏命令CLEAR(3)注釋命令(  NOTE 、* 和 &&)注釋的含義:程序員對(duì)程序語(yǔ)句功能的說(shuō)明,執(zhí)行程序的時(shí)候不執(zhí)行注釋中的內(nèi)容,注釋只起到一個(gè)對(duì)語(yǔ)句說(shuō)明的目的。一般復(fù)雜程序中應(yīng)有30%以上的注釋。(4)TEX

14、T語(yǔ)句:原樣輸出(參考書143例4.15) (5)系統(tǒng)設(shè)置命令set on/off 或者是 set to 1、設(shè)置會(huì)話狀態(tài)SET TALK ON/OFF2、設(shè)置跟蹤狀態(tài)SET ECHO ON/OFF3、設(shè)置打印狀態(tài)SET PRINTER ON/OFF4、設(shè)置定向輸出狀態(tài)SET DEVICE TO SCREEN5、設(shè)置精確比較狀態(tài)SET EXACT TO ON/OFF6、設(shè)置日期格式SET DATE ANSI 7、色繪制系統(tǒng)提供的保護(hù)狀態(tài)SET SAFETY ON/OFF8、設(shè)置刪除記錄標(biāo)記狀態(tài)(掌握)SET DELETED ON/OFF功能:屏蔽或處理有刪除標(biāo)記的記錄說(shuō)明:在命令格式中選擇ON

15、時(shí),各命令當(dāng)不對(duì)有刪除標(biāo)記的記錄進(jìn)行操作,但索引除外。系統(tǒng)默認(rèn)值為OFF思考題1答案:CLEARUSE 學(xué)生ACCEPT "請(qǐng)輸入需修改記錄的學(xué)號(hào):" TO NUMLOCATE FOR 學(xué)號(hào)=NUM5,20 SAY "學(xué)號(hào)" GET 學(xué)號(hào)5,40 SAY "姓名" GET 姓名7,20 SAY "性別" GET 性別7,40 SAY "出生年月" GET 出生年月9,20 SAY "入校總分" GET 入??偡?,40 SAY "三好生" GET 三好生R

16、EADCLEARLISTCLOSE ALLRETURN4順序結(jié)構(gòu)和分支結(jié)構(gòu)一、順序結(jié)構(gòu)例1:求圓的面積(公式S=R2)CLEARINPUT “請(qǐng)輸入半徑R的值:” TO RS=3.1416*R*R?”圓面積為:” ,SCANCEL二、分支結(jié)構(gòu)(選擇結(jié)構(gòu))1、IF語(yǔ)句(1)單向選擇: 雙向選擇:IF 條件 IF 條件 執(zhí)行語(yǔ)句 執(zhí)行語(yǔ)句ENDIF ELSE執(zhí)行語(yǔ)句 ENDIF(2)單向選擇分支例如:求任意一個(gè)數(shù)值的絕對(duì)值CLEARSET TALK OFFINPUT “請(qǐng)輸入數(shù)值:” TO NIF N<0N= - NENDIF?”|N|的絕對(duì)值為:”,NCANCEL(3)雙向選擇分支例1:用

17、戶輸入數(shù)據(jù)表文件名,判斷它存在否,如果存在則打開數(shù)據(jù)表文件并顯示表中的全部記錄 clearaccept '請(qǐng)輸入數(shù)據(jù)庫(kù)文件名:' to heng &&想想為什么不用inputif file(heng+.dbf) &&了解file()的使用方法 use &heng &&想想這兒為什么要用&代換 listelse ?'sorry,文件不存在:( 'endif close all &&關(guān)閉所有打開的表,如果不涉及多工作區(qū),可以只使用use例2:判斷輸入的整數(shù)為奇數(shù)還是偶數(shù)。CLEARINP

18、UT “請(qǐng)輸入整數(shù):” TO NIF N%2=0 &&該表達(dá)式還可用 MOD(N,2)=0來(lái)表示?STR(N,4)+”是偶數(shù)”ELSE ?STR(N,4)+”是奇數(shù)”ENDIFCANCEL(4) IF語(yǔ)句的嵌套例如:將用戶輸入的小寫英文字母轉(zhuǎn)化成大寫 CLEARACCEPT “請(qǐng)輸入1個(gè)字母:” TO STR1IF STR1>=a AND STR1<=z STR1=UPPER(STR1) ?SPACE(40)+STR1ELSE IF STR1>=A AND STR1<=Z ?SPACE(40)+STR1 ELSE ?您輸入的不是英文字母 ENDIFEND

19、IF2、多向選擇DO CASE CASE <條件表達(dá)式1> <命令序列1>CASE <條件表達(dá)式2> <命令序列2>OTHERWISE &&其它情況<命令序列>ENDCASE說(shuō)明:OTHERWISE 可以沒(méi)有.例1:比較A、B的大小CLEARINPUT “請(qǐng)輸入A的值:” TO AINPUT “請(qǐng)輸入B的值:” TO BDO CASE CASE A>B ?”A 大于B” CASE A<B ?”A 小于B” CASE A=B?”A等于B”ENDCASE例2:郵局負(fù)責(zé)郵購(gòu)小物品規(guī)則如下:50公里及以內(nèi)收取額外金

20、額5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。 CLEARINPUT “請(qǐng)輸入您想郵購(gòu)物品的路程(公里數(shù)): ” TO XDO CASE CASE X<=50 Y=5 CASE X>50 AND X<=100 Y=10 CASE X>100 AND X<=200 Y=20 CASE X>200 AND X<=500 Y=40 OTHERWISE Y=50ENDCASE?對(duì)不起, 您需要付款: ,Y,元人民幣5循環(huán)程序設(shè)計(jì)1、條件循環(huán)格式一:DO WHILE 條件 命令序列 ENDDO

21、格式二: DO WHILE 條件 語(yǔ)句序列 LOOP 語(yǔ)句序列EXIT語(yǔ)句序列 ENDDO 要退出循環(huán),需要條件為假的時(shí)候(條件=.F.時(shí))說(shuō)明:(1) LOOP和EXIT 命令一般放在IF條件中,也可以出現(xiàn)在循環(huán)體內(nèi)的任何位置。若執(zhí)行循環(huán)體時(shí)遇到LOOP命令,則直接返回執(zhí)行DO命令,測(cè)試條件以決定是否繼續(xù)循環(huán)。若遇到EXIT命令,則不執(zhí)行下面的命令序列,直接跳出循環(huán),執(zhí)行ENDDO后面的命令。(2)條件表達(dá)式的值確定了循環(huán)是否繼續(xù),當(dāng)條件表達(dá)式的值始終為真(即永真循環(huán)),則應(yīng)使用EXIT命令來(lái)控制循環(huán)結(jié)束例1:將字符“歡迎進(jìn)入樂(lè)山師范學(xué)院”從屏幕的頂部移至底部CLEARCH=“歡迎進(jìn)入樂(lè)山師

22、范學(xué)院”N=1DO WHILE N<=23N,26 SAY SPACE(60)N+1,26 SAY CH T=INKEY(0.2)&&等待0.2秒 N=N+1ENDDORETURN注:INKEY (<數(shù)值表達(dá)式>)功能:等待用戶按鍵或鼠標(biāo)輸入,等待時(shí)間由數(shù)值表達(dá)式確定(單位為秒)返回由按鍵而產(chǎn)生的一個(gè)整數(shù)值.例2:實(shí)現(xiàn)顯示出全部的男生 CLEARCLOSE ALLUSE 學(xué)生DO WHILE NOT EOF() IF 性別=男DISP ENDIF SKIPENDDOCLOSE ALL LOOP循環(huán)實(shí)例例1:I=0DO WHILE I<10 I=I+1 I

23、F INT(I/2)=I/2 LOOP ENDIF ?”*”ENDDO例2:CLOSE ALLCLEARUSE 學(xué)生DO WHILE NOT EOF() DISP WAIT 你想修改本記錄嗎?(Y/N) TO X IF X=N OR X=n SKIP LOOP ENDIF EDIT SKIPENDDOCLOSE ALL程序執(zhí)行到WAIT語(yǔ)句后,如果用戶輸入的是N或n,那么就LOOP(也就跳過(guò)本次循環(huán),不執(zhí)行后面的EDIT)永真循環(huán)DO WHILE .T. DO WHILE .T. IF Y>0 IF Y>0 EXIT QUITENDIF ENDIFENDDO ENDDO如果Y>

24、;0,則退出本循環(huán) 如果Y>0,則退出程序,退出VFDO WHILE .T. DO WHILE .T.IF Y>0 IF Y>0 RETURN CANCELENDIF ENDIFENDDO ENDDO如果Y>0,則退出程序返回上層 如果Y>0,則退出程序,回到VF中上述語(yǔ)句LOOP、EXIT、QUIT、RETURN、CANCEL等也可以在后面講的其它循環(huán)語(yǔ)句中使用。例1:通過(guò)鍵盤輸入三角形的邊長(zhǎng),若邊長(zhǎng)正確,立即在屏幕上顯示三角形的面積,若邊長(zhǎng)不正確,重新輸入邊長(zhǎng),若輸入的邊長(zhǎng)中任意一邊為0則程序立即結(jié)束。 CLEAR ?”現(xiàn)在計(jì)算三角型的面積,如果想退出程序請(qǐng)輸

25、入0。”DO WHILE .T.INPUT “請(qǐng)輸入邊長(zhǎng)a:” TO AINPUT “請(qǐng)輸入邊長(zhǎng)b:” TO BINPUT “請(qǐng)輸入邊長(zhǎng)c:” TO CIF A=0 OR B=0 OR C=0 ?結(jié)束 RETURN ENDIF IF A+B<=C OR A+C<=B OR B+C<=A ?錯(cuò)誤的三角型,請(qǐng)重新輸入! LOOP ENDIFS=(A+B+C)/2AREA=SQRT(S*(S-A)*(S-B)*(S-C)?該三角型的面積是:,areaENDDO 例2:有下列表:book(書名 C(20),作者 C(8),出版日期 D,內(nèi)容簡(jiǎn)介 M)編寫程序:查詢關(guān)于 foxpro

26、的圖書. USE BOOKLOCATE FOR foxpro $ 書名IF ! FOUND() ?沒(méi)有關(guān)于foxpro的圖書 ELSEDO WHILE ! EOF() CLEAR ?書名,作者,出版日期 ?內(nèi)容介紹 WAIT “是否繼續(xù)查找?(Y/N)” TO M IF M$nN EXIT ENDIFCONTINUE ENDDO?”全部顯示完成”ENDIF 2、計(jì)數(shù)循環(huán)FOR 循環(huán)變量=初值 TO 終值 STEP 步長(zhǎng)語(yǔ)句序列ENDFOR說(shuō)明: (1)當(dāng)省略步長(zhǎng)值時(shí),系統(tǒng)默認(rèn)步長(zhǎng)值為1.當(dāng)初值小于終止值時(shí),步長(zhǎng)值為正值,當(dāng)初值大于終值時(shí),步長(zhǎng)值為負(fù)值.步長(zhǎng)值不能為0,否則會(huì)造成死循環(huán)

27、. (2)可在循環(huán)體內(nèi)嵌入LOOP和EXIT命令,功能和用法與條件循環(huán)中該命令的用法相同.例1:求1100的和SUM=0FOR n=1 TO 100 SUM=SUM+nENDFOR?1100的總和為:,SUM使用DO WHILE 實(shí)現(xiàn):SUM=0n=1DO WHILE n<=100SUM=SUM+nn=n+1ENDDO?1100的總和為:,SUMFOR和IF語(yǔ)句嵌套例2:求1到N之間能被3整除的數(shù)的和CLEARM=0INPUT “請(qǐng)輸入N的值:” TO NFOR X=1 TO N IF MOD(X,3)=0M=M+XENDIFENFOR?”M的值為:”,MRETURN例3: 找出2-10

28、0之間所有的質(zhì)數(shù)算法研究:FOR I=1 TO 100如果此數(shù)是質(zhì)數(shù)顯示這個(gè)數(shù)ENDFOR判斷一個(gè)數(shù)是不是質(zhì)數(shù),應(yīng)該看它是否能被其它數(shù)整除.當(dāng)一個(gè)數(shù)I , 從I從2到 SQRT(X) 都沒(méi)有數(shù)能被整除,那么它就是 FOR J=2 TO INT(SQRT(I)IF I MOD J=0 EXIT ENDIFENDFORIF J> INT(SQRT(I) ?I,是質(zhì)數(shù)ENDIF特別: 2是個(gè)質(zhì)數(shù).綜上所敘述: 完成程序?yàn)?CLEAR?2是質(zhì)數(shù)FOR I=3 TO 10 FOR J=2 TO INT(SQRT(I)IF MOD(I,J)=0 EXITENDIFENDFORIF J> INT

29、(SQRT(I) ?I,是質(zhì)數(shù)ENDIFENDFOR3、庫(kù)文件掃描循環(huán)SCAN 范圍 FOR/WHILE 條件 語(yǔ)句序列ENDSCAN例1:查詢所有入??偡衷?70以上的人.CLEARCLOSE ALLUSE 學(xué)生SCAN FOR 入??偡?gt;570 DISPENDSCANCLOSE ALL例2:用戶可以循環(huán)輸入并查找入校總分,直到輸入的是負(fù)數(shù)就退出.CLEARCLOSE ALLUSE 學(xué)生INPUT “請(qǐng)輸入你要查找的入??偡?輸入負(fù)數(shù)則退出: ” TO XDO WHILE X>=0SCAN FOR 入校總分=X DISP ENDSCANINPUT “請(qǐng)輸入你要查找的入??偡? ”

30、 TO XENDDO例3:編寫程序,對(duì)于學(xué)生.dbf能夠在程序末尾循環(huán)插入新記錄 (掌握) CLEARCLOSE ALLUSE 學(xué)生DO WHILE .T. APPE BLANK 5,20 SAY '學(xué)號(hào)' GET 學(xué)號(hào) 5,40 SAY '姓名' GET 姓名 7,20 SAY '性別' GET 性別 7,30 SAY '出生年月' GET 出生年月 9,20 SAY '入校總分' GET 入??偡?READ WAIT '你想繼續(xù)插入新記錄嗎?(Y/N) : ' TO X IF X=&#

31、39;N' OR X='n' EXITENDIF CLEARENDDOCLEARLISTCLOSE ALL 例4:編寫程序,該程序能夠順序修改表學(xué)生.DBF中的所有數(shù)據(jù)。(掌握) (要求:必須使用 行,列 say . get . 進(jìn)行數(shù)據(jù)修改) CLEARCLOSE ALLUSE 學(xué)生DO WHILE .T. if eof() exit endif5,20 SAY '學(xué)號(hào)' GET 學(xué)號(hào) 5,40 SAY '姓名' GET 姓名 7,20 SAY '性別' GET 性別 7,30 SAY '出生年月' GE

32、T 出生年月 9,20 SAY '入??偡?#39; GET 入??偡?READ WAIT '你想繼續(xù)修改記錄嗎?(Y/N) : ' TO X IF X='N' OR X='n' EXIT ENDIF CLEAR SKIPENDDOCLEARLISTCLOSE ALL4、多重循環(huán)例1:輸入n的值,求1+1/2!+1/3!+1/4!+.+1/n! ( 階乘 n!=1*2*3*4.*(n-1)*n )CLEARSUM=0MUL=1INPUT "請(qǐng)輸入n的值: " TO NFOR i=1 TO N FOR j=1 TO i

33、MUL=MUL*J ENDFOR SUM= SUM+1/MUL ENDFOR?'求得的總和為: ',SUM例2:打印九九表方法一:CLEAR FOR A=1 T0 9 FOR B=1 TO A T=A*B?STR(B,1)+“*”+STR(A,1)+“=”+STR(T,2)+“ ” ENDFOR? ” “ENDFORRETURN方法二:CLEAR 1,1 say "*"for a=1 to 9a+1,1say str(a,1)nextfor b=1 to 9 1,b*3 say str(b,1) for c=1 to b p=c*b b+1,c*3 say

34、str(p,2) next nextcancel例3:圖形打印CLEAR for a=1 to 5內(nèi)循環(huán)外循環(huán) for c=1 to a ?“*" next ?nextCancel說(shuō)明:打印圖形時(shí),一般外循環(huán)控制打印行數(shù),內(nèi)循環(huán)控制每一行打印圖形個(gè)數(shù)。6數(shù)組的應(yīng)用一、 數(shù)組的定義DIMENTION 數(shù)組名(數(shù)值表達(dá)式1,數(shù)組表達(dá)式2.)定義后單元默認(rèn)值為.F.二、一維數(shù)組1、定義一個(gè)一維數(shù)組:dime a(10) -定義一個(gè)10數(shù)組,且所有單元默認(rèn)值為.F.2、賦值:例如: a=''a(1)=20 a(3)=2002/09/23a(7)=.T.循環(huán)賦值:dime a(

35、10)i=1do while i<=10 input '請(qǐng)輸入數(shù):' to a(i) i=i+1enddo或者是:for i=1 to 10 input '請(qǐng)輸入數(shù):' to a(i) Endfor3、顯示值:for i=1 to 10 ?a(i)endfor使用do while大家思考方法2:list memo like a二、二維數(shù)組例如:dime s(5,4)1、賦值:例如: s=0s(3,4)=.t.s(12)=AYA' && 相當(dāng)于S(3,4)=AYA'2、循環(huán)賦值for i=1 to 5 for j=1 to 4

36、 input '輸入值:' to a(i,j) endforendfor3、顯示值:for i=1 to 5 for j=1 to 4 ?a(i,j)+space(2) endforendfor三、舉例輸入10 個(gè)數(shù),將它們按照從大到小的順序排列算法研究:方法1:連續(xù)的兩兩比較方法2:將每個(gè)數(shù)和最后一個(gè)數(shù)比較程序cleardime a(10)?'輸入10個(gè)數(shù): 'for i=1 to 10input "請(qǐng)輸入: " to a(i)endforfor i=1 to 9for j=1 to i if a(j)>a(i+1) t=a(i+1)

37、 a(i+1)=a(j) a(j)=t endif endforendforlist memo like a例2:將1、2、3、10順序輸入一維數(shù)組,實(shí)現(xiàn)順序輸出和逆序輸出。DIME A(10)FOR I=1 TO 10 A(I)=IENDFORFOR I=1 TO 10 ?A(I) ENDFORFOR J=10 TO 1 STEP 1 ?A(J)ENDFOR例3:排序問(wèn)題 (要求:不一定能編寫,但是重點(diǎn)地方能填空,基本方法要能理解) 輸入5 個(gè)數(shù),將它們按照從大到小的順序排列 算法: (軟件技術(shù)支持 第263頁(yè))穩(wěn)定的算法: 插入法排序(將一個(gè)數(shù)據(jù)插入到已經(jīng)排列

38、好的序列中) 冒泡排序(比較每次產(chǎn)生最大數(shù)) 歸并排序(兩兩合并 ) 不穩(wěn)定的算法:(相同數(shù)據(jù)位置可能交換) 選擇排序(通過(guò)交換位置,最小的放在第一,次小的第二) 實(shí)現(xiàn)算法:冒泡排序 (1) n個(gè)數(shù)要比較n-1趟(2)  (3) 每趟要比較的次數(shù)為 : n-趟數(shù) (4)(3)每次比較: 如果當(dāng)前數(shù) a(j)大于后一個(gè)數(shù) a(j+1) 那么就交換,否則不交換 clear dime a(5) ?'輸入5個(gè)數(shù): ' for i=1 to 5 input &

39、quot;請(qǐng)輸入: " to a(i) endfor for i=1 to 4 && 外循環(huán)是行(趟數(shù)), 內(nèi)循環(huán)是列(比較次數(shù)) for j=1 to 5-I if a(j)>a(j+1)t=a(j+1) a(j+1)=a(j) a(j)=t endif endfor endfor FOR I=1 TO 5 ?A(I)ENDFOR對(duì)N個(gè)數(shù)排序(從小到大) clear input "請(qǐng)問(wèn)你想對(duì)多少個(gè)數(shù)進(jìn)行排序? " to n

40、 dime a(n) ?'請(qǐng)輸入',n,'個(gè)數(shù): ' for i=1 to n  input "請(qǐng)輸入: " to a(i) endfor for i=1 to n-1  for j=1 to n-i  if a(j)>a(j+1)  t=a(j+1)  a(j+1)=a(j)  a(j)=t  endif  endforendfor 算法二:每次比較將當(dāng)前數(shù)和最后一個(gè)數(shù)據(jù)比clear i

41、nput “請(qǐng)問(wèn)你想對(duì)多少個(gè)數(shù)進(jìn)行排序? ” to n dime a(n) ?'請(qǐng)輸入',n,'個(gè)數(shù): ' for i=1 to n  input "請(qǐng)輸入: " to a(i) endfor for i=1 to n-1  for j=1 to n-i  if a(j)>a(n-i+1)  t= a(n-i+1)  a(n-i+1)=a(j)  a(j)=t  endif  endfor endfor

42、60;list memo like a 算法三: clear input “請(qǐng)問(wèn)你想對(duì)多少個(gè)數(shù)進(jìn)行排序? ” to n dime a(n) ?'請(qǐng)輸入',n,'個(gè)數(shù): ' for i=1 to n  input "請(qǐng)輸入: " to a(i)endfor for i=1 to n-1  for j=1 to n-i  if a(j)<a(n-i+1)  t= a(n-i+1)  a(n-i+1)=a(j) 

43、a(j)=t  endif  endforendfor list memo like a7子程序、過(guò)程和自定義函數(shù)一、子程序1.子程序的概念2.子程序的建立和調(diào)用3.子程序的嵌套a1.prg               a2.prg           a3.prg?'*'   &#

44、160;           ?''           ?'$'         do a2                do a3&

45、#160;           return               ?'#'               ?'999'    

46、60;                return思考:以上程序運(yùn)行后結(jié)果是什么?   * $ 999#   說(shuō)明:1、 如果將a2.prg或者a3.prg的return語(yǔ)句改成cancel,那么程序當(dāng)執(zhí)行到cancel的時(shí)候就會(huì)結(jié)束,不返回 2、如果將a3.prg的return語(yǔ)句改成return to master想想結(jié)果會(huì)怎么樣呢? 請(qǐng)先看看書 P169頁(yè) 二、變量的三種類型 1、全局變量(定義:用public

47、命令或在命令窗口中賦值的變量) 有效范圍:主程序和所有子程序 2、私有變量(定義:private)或變量屏蔽 有效范圍:當(dāng)前程序,在子程序中修改與主程序同名的變量,只要返回主程序,原來(lái)同名變量中的值不變 3、局部變量(可用LOCAL來(lái)定義,定義好后默認(rèn)值為.F.,或是在當(dāng)前程序中賦值的變量) 有效范圍:當(dāng)前程序及當(dāng)前程序以下的所有子程序 例:主程序MAIN1.PRG CLEAR public i,j store 1 to i,j,k do 程序2 ?"主程序的輸出結(jié)果:" ?"I="+STR(I,2)+" J="+STR(J,2)+&

48、quot; K="+STR(K,2) Cancel 子程序:CLEAR PRIVATE J,K I=I*2 J=I+1 K=J+1 ?"子程序的輸出結(jié)果:" ?"I="+STR(I,2)+" J="+STR(J,2)+" K="+STR(K,2) RETURN 例2: main.prg sc.prg xb.prg                 &

49、#160;                                            private m Clear y=x+10 Input “請(qǐng)輸入x的值

50、: ” to x m=143 m=y*10 Private y do xb z=int(m/100) Public z z=z+m return Do sc return y=sqrt(x)+sqrt(z) ?y return 三、參數(shù)傳遞(教材172功能和說(shuō)明)主程序中:命令: do <子程序名> with <參數(shù)表>     實(shí)參 子程序中:parameters <內(nèi)存變量表> 形參 數(shù)據(jù)通過(guò)return語(yǔ)句傳回 à 注意:變量表和參數(shù)表是個(gè)數(shù)一致的,也相互對(duì)應(yīng),但是名字可能不一樣。 例: MAIN.PRG P1.

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論