




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上VFO程序設計復習1程序設計概述一、程序的概念概念:具有一定功能的計算機能執行的指令的集合。例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二、常見的程序設計方法1、 結構化程序設計(模塊化) 結構化程序設計是一個面向過程的概念。把一個實際問題分為兩部分,即數據和過程。通過動態的程序執行過程來對靜態的數據進行處理,得出正確的結果。由VFP命令和程序設計命令的組合,需編制和調試; 2
2、、 面向對象的程序設計 3、結構化程序設計它是面向過程程序設計的另一種描述,面向過程程序設計有如下特點:整個程序分為若干個模塊,模塊之間相銜接,且相對獨立。第個模塊只有一個入口和一個出口。第個模塊都能單獨執行,且在有限時間內執行完。采用自頂向下、逐步求精的方法。 三、程序三大基本結構1、順序結構:執行是按命令出現的先后順序執行。 2、分支結構:按給定的條件成立與否來決定程序起向,分單向選擇分支、雙向選擇分支和多路分支。有以下兩種 IF 語句 DO CASEENDIF ENDCASE3、循環結構:程序的執行發生了自下而上的往復,某一程序段將重復執行。 有以下三種Do While Fo
3、r SCANENDDO ENDFOR ENDSCAN四、算法和流程圖算法:解決某一問題的方法與步驟。見教材例。流程圖:算法的描述,除用自然語言描述外,計算機領域常用流程圖(ANSI圖和NS圖)描述。見教材例。 例如:樂山到成都怎么去?1、 解一元二次方程的算法。Ax2+bx+c=0, 求x2、 求出1-100之間的質數。 X / => 2 到 SQRT(X )2程序的建立和執行一、程序的擴展名:PRG 實質:文本文件(ASCII編碼)執行時,會產生編譯文件FXP后讓計算機執行。 二、程序文件的建立和編輯1、命令方式:MODI COMM 程序名.PRG (.PRG可
4、省)2、菜單方式;文件 => 新建 => 程序 3、項目管理器中建立的方法:建立項目管理器 => 新建程序 4、其他方法:其它可編輯文本的軟件: 記事本寫字板WORD其它程序編輯器 注意: 希望編寫程序之前事先設置好默認目錄(set defa to )然后我們編寫的程序就會自動存儲在那個目錄中。例如:set defa to d:ks modi comm Test (相當于是:modi comm D:kstest.prg) 三、 程序的執行1、命令方式命令格式:DO 盤符路徑程序名 2、菜單方式:“程序”菜單->“運行”命令在“運行”窗口中輸入被運行的程序文件名,即可運行
5、程序。 四、VFP程序的分類:數學類程序、涉及到表操作的程序如果本程序是涉及到表操作的程序,那么: 1、在程序開始部分可以先加語句CLEAR 和 CLOSE ALL 2、程序最后可以使用命令CLOSE ALL 3、然后使用RETURN或CANCEL或QUIT 例:找出并顯示所有三好生CLEAR CLOSE ALL USE 學生 LOCATE FOR 三好生DO WHILE NOT EOF() DISPCONTINUE ENDDO CLOSE ALL RETUREN3順序程序設計與常用語句一、程序設計中的常用語句1、輸入命令(1)賦值命令命令一:STORE <表達式> TO <
6、內存變量>命令二:<內存變量>= <表達式> (2)交互式輸入命令(注意:輸入數據是在程序執行的時候 )INPUT 提示信息 TO <內存變量>ACCEPT 提示信息 TO <內存變量>WAIT 提示信息 TO <內存變量> TIMEOUT <等待時間>說明: 提示信息是C型, 它會在屏幕上原樣輸出 .WAIT命令的功能:暫停程序執行,顯示提示信息等待用戶按鍵。 Wait命令中 輸入的只能是一個字符(C型)。 Input 適用于全部類型內存變量,輸入時需要加定界符 Accept只適用于C型,并且C型不加定界符注意:I
7、nput和accept在編寫程序時語句都一樣,只是執行程序(do)時,主屏幕上要求輸入的類型和格式不同。例1:輸入a、b、c的值,對2ax+b=c 求 x的值。ClearInput “現在計算2ax+b=c,請輸入a的值:” to aInput “請輸入b的值:” to bInput “請輸入c的值:” to cx=(c-b)/(2*a)?x的值為:,x &&比較使用? x的值為:+str(x,3)有何區別 return 例2、查找學生.dbf中的指定記錄 clearclose alluse 學生listaccept “請輸入您想查找的姓名: ” to xmLocate for
8、 姓名=XM &&或命令 SEEK XMif found() DISP else ?對不起,沒有找到此人endiflistclose allReturn思考:如果accept換成input,輸入的時候該怎么輸入? 例3、刪除學生.dbf中的指定記錄 clearclose alluse 學生listinput “請輸入您想刪除的記錄號: ” to xdele reco xwait “你想徹底刪除這條記錄嗎?(y/n)” to ask if ask=Y or ask=y packendiflistclose all注意區分交換方式和程序方式:有的命令可以在兩種狀態下執行(例如:剛才
9、的輸入命令),但有些命令只能在程序方式下執行(例如:循環語句和分支語句) (3)格式輸入命令格式一:行,列 say 提示信息格式二:行,列 say 提示信息 get 變量 READ 格式三:行,列 say 提示信息 get 變量 default常量 功能:在屏幕指定的坐標位置上顯示提示信息,然后通過READ命令激活GET子句的變量值。說明:GET后的變量可以是內存變量或當前打開的數據文件中的字段變量,若是內存變量,應在執行該命令前對內存變量賦值,否則就必須使用default參數賦初值。輸入的值類型應該與初值類型相同。READ命令與GET命令必須配合使用。多個GET命令可以只用一個READ命令配
10、合。如果沒有read則表示只顯示內容,不輸入值。例1:編寫程序完成在學生.DBF中追加記錄CLEARUSE 學生APPEND BLANK5,20 SAY “學號” GET 學號5,40 SAY “姓名” GET 姓名7,20 SAY “性別” GET 性別7,40 SAY “出生年月” GET 出生年月9,20 SAY “入校總分” GET 入校總分9,40 SAY “三好生” GET 三好生READCLEARLISTCLOSE ALLRETURN例2:編程求長方形的面積。 CLEAR X=0 &&X為內存變量,賦初值Y=0 1,5 SAY “計算長方形的面積”2,5 SAY
11、“輸入長方形的長:” GET X &&第2行5列顯示提示信息并等待輸入3,5 SAY “輸入長方形的寬:” GET Y &&第3行5列顯示提示信息并等待輸入 READ &&從鍵盤輸入X,Y的值 S=X*Y &&計算長方形的面積 ? “長方形的面積:”,S &&顯示長方形的面積 CANCEL思考題1:如將上述例1程序改為按照指定學號來修改記錄應該怎樣做?(答案見課件后)3、輸出命令:非格式輸出命令?和?:格式化輸出命令行,列 say 表達式 說明:行和列都可以是表達式,常常可以使用函數ROW( ) 和 COL( )
12、ROW( )表示返回當前行的行號 COL( )表示返回當前列的列號例1:N=1CH=“VF程序設計”N,26 SAY SPACE(60)N+1,26 SAY CH例2:循環輸入值cleardime xh(10)store 0 to xh10,10 say '請輸入數字:' get xh(1) i=2do while i<=10 row()+1,10 say '請輸入數字:' get xh(i) i=i+1enddoreadlist memo like xh 4、其他程序運行命令(1)終止程序執行命令 CANCEL 、QUIT 和 RETURNQ
13、UIT: 退出程序運行并且退出 Visual FoxproCANCEL : 退出程序運行RETURN: 返回上級程序調用點,如果是主程序就表示退出程序。主程序可缺省此命令返回(結束),即默認使用了return 注意:上述命令執行完后都會自動clear memory。但是如果有數據庫和表打開不會自動關閉,所以使用數據庫和表后在程序結束時我們常常需要加命令: close all(2)清屏命令CLEAR(3)注釋命令( NOTE 、* 和 &&)注釋的含義:程序員對程序語句功能的說明,執行程序的時候不執行注釋中的內容,注釋只起到一個對語句說明的目的。一般復雜程序中應有30
14、%以上的注釋。(4)TEXT語句:原樣輸出(參考書143例4.15) (5)系統設置命令set on/off 或者是 set to 1、設置會話狀態SET TALK ON/OFF2、設置跟蹤狀態SET ECHO ON/OFF3、設置打印狀態SET PRINTER ON/OFF4、設置定向輸出狀態SET DEVICE TO SCREEN5、設置精確比較狀態SET EXACT TO ON/OFF6、設置日期格式SET DATE ANSI 7、色繪制系統提供的保護狀態SET SAFETY ON/OFF8、設置刪除記錄標記狀態(掌握)SET DELETED ON/OFF功能:屏蔽或處理有刪除標記的記錄
15、說明:在命令格式中選擇ON時,各命令當不對有刪除標記的記錄進行操作,但索引除外。系統默認值為OFF思考題1答案:CLEARUSE 學生ACCEPT "請輸入需修改記錄的學號:" TO NUMLOCATE FOR 學號=NUM5,20 SAY "學號" GET 學號5,40 SAY "姓名" GET 姓名7,20 SAY "性別" GET 性別7,40 SAY "出生年月" GET 出生年月9,20 SAY "入校總分" GET 入校總分9,40 SAY "三好生&q
16、uot; GET 三好生READCLEARLISTCLOSE ALLRETURN4順序結構和分支結構一、順序結構例1:求圓的面積(公式S=R2)CLEARINPUT “請輸入半徑R的值:” TO RS=3.1416*R*R?”圓面積為:” ,SCANCEL二、分支結構(選擇結構)1、IF語句(1)單向選擇: 雙向選擇:IF 條件 IF 條件 執行語句 執行語句ENDIF ELSE執行語句 ENDIF(2)單向選擇分支例如:求任意一個數值的絕對值CLEARSET TALK OFFINPUT “請輸入數值:” TO NIF N<0N= - NENDIF?”|N|的絕對值為:”,NCANCEL
17、(3)雙向選擇分支例1:用戶輸入數據表文件名,判斷它存在否,如果存在則打開數據表文件并顯示表中的全部記錄 clearaccept '請輸入數據庫文件名:' to heng &&想想為什么不用inputif file(heng+.dbf) &&了解file()的使用方法 use &heng &&想想這兒為什么要用&代換 listelse ?'sorry,文件不存在:( 'endif close all &&關閉所有打開的表,如果不涉及多工作區,可以只使用use例2:判斷輸入的整數為奇數
18、還是偶數。CLEARINPUT “請輸入整數:” TO NIF N%2=0 &&該表達式還可用 MOD(N,2)=0來表示?STR(N,4)+”是偶數”ELSE ?STR(N,4)+”是奇數”ENDIFCANCEL(4) IF語句的嵌套例如:將用戶輸入的小寫英文字母轉化成大寫 CLEARACCEPT “請輸入1個字母:” TO STR1IF STR1>=a AND STR1<=z STR1=UPPER(STR1) ?SPACE(40)+STR1ELSE IF STR1>=A AND STR1<=Z ?SPACE(40)+STR1 ELSE ?您輸入的不是
19、英文字母 ENDIFENDIF2、多向選擇DO CASE CASE <條件表達式1> <命令序列1>CASE <條件表達式2> <命令序列2>OTHERWISE &&其它情況<命令序列>ENDCASE說明:OTHERWISE 可以沒有.例1:比較A、B的大小CLEARINPUT “請輸入A的值:” TO AINPUT “請輸入B的值:” TO BDO CASE CASE A>B ?”A 大于B” CASE A<B ?”A 小于B” CASE A=B?”A等于B”ENDCASE例2:郵局負責郵購小物品規則如下
20、:50公里及以內收取額外金額5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。 CLEARINPUT “請輸入您想郵購物品的路程(公里數): ” 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?對不起, 您需要付款: ,Y,元人民幣5循環程序設計1、條件循環格式一:DO WHILE
21、條件 命令序列 ENDDO格式二: DO WHILE 條件 語句序列 LOOP 語句序列EXIT語句序列 ENDDO 要退出循環,需要條件為假的時候(條件=.F.時)說明:(1) LOOP和EXIT 命令一般放在IF條件中,也可以出現在循環體內的任何位置。若執行循環體時遇到LOOP命令,則直接返回執行DO命令,測試條件以決定是否繼續循環。若遇到EXIT命令,則不執行下面的命令序列,直接跳出循環,執行ENDDO后面的命令。(2)條件表達式的值確定了循環是否繼續,當條件表達式的值始終為真(即永真循環),則應使用EXIT命令來控制循環結束例1:將字符“歡迎進入樂山師范學院”從屏幕的頂部移至底部CLE
22、ARCH=“歡迎進入樂山師范學院”N=1DO WHILE N<=23N,26 SAY SPACE(60)N+1,26 SAY CH T=INKEY(0.2)&&等待0.2秒 N=N+1ENDDORETURN注:INKEY (<數值表達式>)功能:等待用戶按鍵或鼠標輸入,等待時間由數值表達式確定(單位為秒)返回由按鍵而產生的一個整數值.例2:實現顯示出全部的男生 CLEARCLOSE ALLUSE 學生DO WHILE NOT EOF() IF 性別=男DISP ENDIF SKIPENDDOCLOSE ALL LOOP循環實例例1:I=0DO WHILE I&
23、lt;10 I=I+1 IF INT(I/2)=I/2 LOOP ENDIF ?”*”ENDDO例2:CLOSE ALLCLEARUSE 學生DO WHILE NOT EOF() DISP WAIT 你想修改本記錄嗎?(Y/N) TO X IF X=N OR X=n SKIP LOOP ENDIF EDIT SKIPENDDOCLOSE ALL程序執行到WAIT語句后,如果用戶輸入的是N或n,那么就LOOP(也就跳過本次循環,不執行后面的EDIT)永真循環DO WHILE .T. DO WHILE .T. IF Y>0 IF Y>0 EXIT QUITENDIF ENDIFENDD
24、O ENDDO如果Y>0,則退出本循環 如果Y>0,則退出程序,退出VFDO WHILE .T. DO WHILE .T.IF Y>0 IF Y>0 RETURN CANCELENDIF ENDIFENDDO ENDDO如果Y>0,則退出程序返回上層 如果Y>0,則退出程序,回到VF中上述語句LOOP、EXIT、QUIT、RETURN、CANCEL等也可以在后面講的其它循環語句中使用。例1:通過鍵盤輸入三角形的邊長,若邊長正確,立即在屏幕上顯示三角形的面積,若邊長不正確,重新輸入邊長,若輸入的邊長中任意一邊為0則程序立即結束。 CLEAR ?”現在計算三角型
25、的面積,如果想退出程序請輸入0。”DO WHILE .T.INPUT “請輸入邊長a:” TO AINPUT “請輸入邊長b:” TO BINPUT “請輸入邊長c:” TO CIF A=0 OR B=0 OR C=0 ?結束 RETURN ENDIF IF A+B<=C OR A+C<=B OR B+C<=A ?錯誤的三角型,請重新輸入! LOOP ENDIFS=(A+B+C)/2AREA=SQRT(S*(S-A)*(S-B)*(S-C)?該三角型的面積是:,areaENDDO 例2:有下列表:book(書名 C(20),作者 C(8),出版日期 D,內容簡介 M)編寫程序
26、:查詢關于 foxpro 的圖書. USE BOOKLOCATE FOR foxpro $ 書名IF ! FOUND() ?沒有關于foxpro的圖書 ELSEDO WHILE ! EOF() CLEAR ?書名,作者,出版日期 ?內容介紹 WAIT “是否繼續查找?(Y/N)” TO M IF M$nN EXIT ENDIFCONTINUE ENDDO?”全部顯示完成”ENDIF 2、計數循環FOR 循環變量=初值 TO 終值 STEP 步長語句序列ENDFOR說明: (1)當省略步長值時,系統默認步長值為1.當初值小于終止值時,步長值為正值,當初值大于終值時,步長值為負值.步長值
27、不能為0,否則會造成死循環. (2)可在循環體內嵌入LOOP和EXIT命令,功能和用法與條件循環中該命令的用法相同.例1:求1100的和SUM=0FOR n=1 TO 100 SUM=SUM+nENDFOR?1100的總和為:,SUM使用DO WHILE 實現:SUM=0n=1DO WHILE n<=100SUM=SUM+nn=n+1ENDDO?1100的總和為:,SUMFOR和IF語句嵌套例2:求1到N之間能被3整除的數的和CLEARM=0INPUT “請輸入N的值:” TO NFOR X=1 TO N IF MOD(X,3)=0M=M+XENDIFENFOR?”M的值為:”,MRET
28、URN例3: 找出2-100之間所有的質數算法研究:FOR I=1 TO 100如果此數是質數顯示這個數ENDFOR判斷一個數是不是質數,應該看它是否能被其它數整除.當一個數I , 從I從2到 SQRT(X) 都沒有數能被整除,那么它就是 FOR J=2 TO INT(SQRT(I)IF I MOD J=0 EXIT ENDIFENDFORIF J> INT(SQRT(I) ?I,是質數ENDIF特別: 2是個質數.綜上所敘述: 完成程序為:CLEAR?2是質數FOR I=3 TO 10 FOR J=2 TO INT(SQRT(I)IF MOD(I,J)=0 EXITENDIFENDFO
29、RIF J> INT(SQRT(I) ?I,是質數ENDIFENDFOR3、庫文件掃描循環SCAN 范圍 FOR/WHILE 條件 語句序列ENDSCAN例1:查詢所有入校總分在570以上的人.CLEARCLOSE ALLUSE 學生SCAN FOR 入校總分>570 DISPENDSCANCLOSE ALL例2:用戶可以循環輸入并查找入校總分,直到輸入的是負數就退出.CLEARCLOSE ALLUSE 學生INPUT “請輸入你要查找的入校總分,輸入負數則退出: ” TO XDO WHILE X>=0SCAN FOR 入校總分=X DISP ENDSCANINPUT “請輸
30、入你要查找的入校總分: ” TO XENDDO例3:編寫程序,對于學生.dbf能夠在程序末尾循環插入新記錄 (掌握) CLEARCLOSE ALLUSE 學生DO WHILE .T. APPE BLANK 5,20 SAY '學號' GET 學號 5,40 SAY '姓名' GET 姓名 7,20 SAY '性別' GET 性別 7,30 SAY '出生年月' GET 出生年月 9,20 SAY '入校總分' GET 入校總分 READ WAIT '你想繼續插入新記錄嗎?(Y/N) : '
31、 TO X IF X='N' OR X='n' EXITENDIF CLEARENDDOCLEARLISTCLOSE ALL 例4:編寫程序,該程序能夠順序修改表學生.DBF中的所有數據。(掌握) (要求:必須使用 行,列 say . get . 進行數據修改) CLEARCLOSE ALLUSE 學生DO WHILE .T. if eof() exit endif5,20 SAY '學號' GET 學號 5,40 SAY '姓名' GET 姓名 7,20 SAY '性別' GET 性別 7,30 SAY '
32、;出生年月' GET 出生年月 9,20 SAY '入校總分' GET 入校總分 READ WAIT '你想繼續修改記錄嗎?(Y/N) : ' TO X IF X='N' OR X='n' EXIT ENDIF CLEAR SKIPENDDOCLEARLISTCLOSE ALL4、多重循環例1:輸入n的值,求1+1/2!+1/3!+1/4!+.+1/n! ( 階乘 n!=1*2*3*4.*(n-1)*n )CLEARSUM=0MUL=1INPUT "請輸入n的值: " TO NFOR i=1 TO N
33、FOR j=1 TO i 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
34、 b+1,c*3 say str(p,2) next nextcancel例3:圖形打印CLEAR for a=1 to 5內循環外循環 for c=1 to a ?“*" next ?nextCancel說明:打印圖形時,一般外循環控制打印行數,內循環控制每一行打印圖形個數。6數組的應用一、 數組的定義DIMENTION 數組名(數值表達式1,數組表達式2.)定義后單元默認值為.F.二、一維數組1、定義一個一維數組:dime a(10) -定義一個10數組,且所有單元默認值為.F.2、賦值:例如: a=''a(1)=20 a(3)=2002/09/23a(7)=.T
35、.循環賦值:dime a(10)i=1do while i<=10 input '請輸入數:' to a(i) i=i+1enddo或者是:for i=1 to 10 input '請輸入數:' to a(i) Endfor3、顯示值:for i=1 to 10 ?a(i)endfor使用do while大家思考方法2:list memo like a二、二維數組例如:dime s(5,4)1、賦值:例如: s=0s(3,4)=.t.s(12)=AYA' && 相當于S(3,4)=AYA'2、循環賦值for i=1 to 5
36、 for j=1 to 4 input '輸入值:' to a(i,j) endforendfor3、顯示值:for i=1 to 5 for j=1 to 4 ?a(i,j)+space(2) endforendfor三、舉例輸入10 個數,將它們按照從大到小的順序排列算法研究:方法1:連續的兩兩比較方法2:將每個數和最后一個數比較程序cleardime a(10)?'輸入10個數: 'for i=1 to 10input "請輸入: " to a(i)endforfor i=1 to 9for j=1 to i if a(j)>a(
37、i+1) t=a(i+1) a(i+1)=a(j) a(j)=t endif endforendforlist memo like a例2:將1、2、3、10順序輸入一維數組,實現順序輸出和逆序輸出。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:排序問題 (要求:不一定能編寫,但是重點地方能填空,基本方法要能理解) 輸入5 個數,將它們按照從大到小的順序排列 算法: (軟件技術支持 第263頁)穩定的算法: 插入法排序
38、(將一個數據插入到已經排列好的序列中) 冒泡排序(比較每次產生最大數) 歸并排序(兩兩合并 ) 不穩定的算法:(相同數據位置可能交換) 選擇排序(通過交換位置,最小的放在第一,次小的第二) 實現算法:冒泡排序 (1) n個數要比較n-1趟(2) (3) 每趟要比較的次數為 : n-趟數 (4)(3)每次比較: 如果當前數 a(j)大于后一個數 a(j+1) 那么就交換,否則不交換 clear dime a(5) ?'輸入5個數: ' for i=1 to 5
39、 input "請輸入: " to a(i) endfor for i=1 to 4 && 外循環是行(趟數), 內循環是列(比較次數) 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對N個數排序(從小到大) clear input "請問你想對多少個數進行排序
40、? " to n dime a(n) ?'請輸入',n,'個數: ' for i=1 to n input "請輸入: " 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 算法二:每次比較將當前數和最后一個數據
41、比clear input “請問你想對多少個數進行排序? ” to n dime a(n) ?'請輸入',n,'個數: ' for i=1 to n input "請輸入: " 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
42、160;endfor list memo like a 算法三: clear input “請問你想對多少個數進行排序? ” to n dime a(n) ?'請輸入',n,'個數: ' for i=1 to n input "請輸入: " 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
43、)=a(j) a(j)=t endif endforendfor list memo like a7子程序、過程和自定義函數一、子程序1.子程序的概念2.子程序的建立和調用3.子程序的嵌套a1.prg a2.prg a3.prg?'*' &
44、#160; ?'' ?'$' do a2
45、 do a3 return ?'#' ?'999'
46、160; return思考:以上程序運行后結果是什么? * $ 999# 說明:1、 如果將a2.prg或者a3.prg的return語句改成cancel,那么程序當執行到cancel的時候就會結束,不返回 2、如果將a3.prg的return語句改成return to master想想結果會怎么樣呢? 請先看看書 P169頁 二、變量的三種類型 1、全局
47、變量(定義:用public命令或在命令窗口中賦值的變量) 有效范圍:主程序和所有子程序 2、私有變量(定義:private)或變量屏蔽 有效范圍:當前程序,在子程序中修改與主程序同名的變量,只要返回主程序,原來同名變量中的值不變 3、局部變量(可用LOCAL來定義,定義好后默認值為.F.,或是在當前程序中賦值的變量) 有效范圍:當前程序及當前程序以下的所有子程序 例:主程序MAIN1.PRG CLEAR public i,j store 1 to i,j,k do 程序2 ?"主程序的輸出結果:" ?"I="+STR(I,2)+" J=&quo
48、t;+STR(J,2)+" K="+STR(K,2) Cancel 子程序:CLEAR PRIVATE J,K I=I*2 J=I+1 K=J+1 ?"子程序的輸出結果:" ?"I="+STR(I,2)+" J="+STR(J,2)+" K="+STR(K,2) RETURN 例2: main.prg sc.prg xb.prg
49、 private m Clear y=x+10
50、Input “請輸入x的值: ” 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 三、參數傳遞(教材172功能和說明)主程序中:命令: do <子程序名> with <參數表> 實參 子程序中:parameters <內存變量表> 形參 數據通過return語句傳回 à 注意:變量表和參數表是個數一致的,也相互對應,但是名字可能不一樣。 例: MAIN.PRG P1.PRG X1=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 凱里市預算績效管理辦法
- 鑄造設備供需管理辦法
- 北京市外包隊伍管理辦法
- 發票管理辦法管理性規定
- 銀行貸款擔保管理辦法
- 南寧市等級公路管理辦法
- 防范風險資金管理辦法
- 銀行預留印章管理辦法
- 市場抽檢制度及管理辦法
- 銀行托管存款管理辦法
- 壓力管道年度檢查報告(空白)
- 水泥工廠設計規范
- 橋(門)式起重機日常維護保養記錄表
- 學校衛生間改造施工方案
- 麥肯錫-成都國際空港產業新城產業規劃市委書記匯報版-20161228
- (高清版)JTGT 3331-04-2023 多年凍土地區公路設計與施工技術規范
- 2024年輔警招聘考試試題庫附完整答案(必刷)
- 腎功能不全抗生素選擇課件
- 肝硬化門靜脈高壓食管胃靜脈曲張出血的防治指南( 2022)
- 子宮脫垂病例護理討論
- vte病人的健康宣教
評論
0/150
提交評論