第六章程序設(shè)計(jì)初步1 ppt課件_第1頁
第六章程序設(shè)計(jì)初步1 ppt課件_第2頁
第六章程序設(shè)計(jì)初步1 ppt課件_第3頁
第六章程序設(shè)計(jì)初步1 ppt課件_第4頁
第六章程序設(shè)計(jì)初步1 ppt課件_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 順序構(gòu)造設(shè)計(jì)順序構(gòu)造設(shè)計(jì) 分支構(gòu)造設(shè)計(jì)分支構(gòu)造設(shè)計(jì) 循環(huán)構(gòu)造設(shè)計(jì)循環(huán)構(gòu)造設(shè)計(jì) 程序設(shè)計(jì)根底程序設(shè)計(jì)根底 模塊化設(shè)計(jì)模塊化設(shè)計(jì)程序設(shè)計(jì)根底程序設(shè)計(jì)根底數(shù)據(jù)構(gòu)造數(shù)據(jù)構(gòu)造算法算法對數(shù)據(jù)的描畫:在程序中指定對數(shù)據(jù)的描畫:在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織方式數(shù)據(jù)的類型和數(shù)據(jù)的組織方式對操作的描畫對操作的描畫類比了解:菜譜原料操作步驟一系列計(jì)算機(jī)一系列計(jì)算機(jī)指令的集合指令的集合 程序設(shè)計(jì)根底程序設(shè)計(jì)根底特點(diǎn):按照程序書寫順序執(zhí)行程序特點(diǎn):按照程序書寫順序執(zhí)行程序 use sb &翻開表翻開表 list fields 稱號(hào),價(jià)錢稱號(hào),價(jià)錢 for 主要設(shè)備主要設(shè)備 &顯示相關(guān)記錄顯示相關(guān)記錄 repla

2、ce all 價(jià)錢價(jià)錢 with 價(jià)錢價(jià)錢*0.9 for 主要設(shè)主要設(shè)備備 &數(shù)據(jù)交換數(shù)據(jù)交換 例:翻開設(shè)備表,顯示一切主要設(shè)備的稱號(hào)及價(jià)錢,并將主要設(shè)備的價(jià)錢降低10%。特點(diǎn):根據(jù)條件特點(diǎn):根據(jù)條件的的 滿足與滿足與否而否而 分別執(zhí)分別執(zhí)行與行與 其相對其相對應(yīng)的應(yīng)的 操作操作開場翻開表輸入員工號(hào)找到嗎封鎖表終了YN輸出查無此人輸出姓名等思索:分支構(gòu)造與思索:分支構(gòu)造與順序構(gòu)造的不同之順序構(gòu)造的不同之處處 特點(diǎn):反復(fù)執(zhí)行某些操作,反復(fù)執(zhí)行的部分稱為特點(diǎn):反復(fù)執(zhí)行某些操作,反復(fù)執(zhí)行的部分稱為循環(huán)體。循環(huán)體。 條件循環(huán)體YNa當(dāng)型循環(huán)Y循環(huán)體條件Nb)直到型循環(huán)思索:思索: 兩種循環(huán)構(gòu)造的區(qū)別

3、在于?提示:循環(huán)兩種循環(huán)構(gòu)造的區(qū)別在于?提示:循環(huán)條件條件答案:答案: 1. 當(dāng)型是當(dāng)循環(huán)條件成立時(shí)執(zhí)行循環(huán)體,條件當(dāng)型是當(dāng)循環(huán)條件成立時(shí)執(zhí)行循環(huán)體,條件不成立時(shí)退出循環(huán)不成立時(shí)退出循環(huán) ;直到型是執(zhí)行循環(huán)體,直到條件;直到型是執(zhí)行循環(huán)體,直到條件成立才退出循環(huán)。成立才退出循環(huán)。 2. 當(dāng)型是先判別后執(zhí)行,能夠一當(dāng)型是先判別后執(zhí)行,能夠一次都不能執(zhí)行;直到型是先執(zhí)行后判別,至少執(zhí)行一次。次都不能執(zhí)行;直到型是先執(zhí)行后判別,至少執(zhí)行一次。 程序設(shè)計(jì)根底程序設(shè)計(jì)根底自頂向下逐漸細(xì)化構(gòu)造化編碼模塊化設(shè)計(jì)算法設(shè)計(jì)程序設(shè)計(jì)根底程序設(shè)計(jì)根底o(hù)ff屏幕格式屏幕格式 系統(tǒng)將整個(gè)屏幕劃分為:系統(tǒng)將整個(gè)屏幕劃分為

4、: 25行行 80列列 XY平面坐標(biāo)系。平面坐標(biāo)系。命令格式命令格式 SAY GET DEFAULT READ 根據(jù)員工的編號(hào)來修正員工的根本工資和水電費(fèi)。 CLEAR USE 工資表 yg=0001 2,10 SAY 請輸入員工的編號(hào) GET yg READ LOCATE FOR 員工編號(hào) = yg 4,10 SAY “請修正根本工資 GET 根本工資 6,10 SAY “請修正水電費(fèi) GET 水電費(fèi) READ USE 的指定位置出現(xiàn)一個(gè)Wait提示窗口。3)Timeout:用來設(shè)定等待時(shí)間。建立或修正程序文件 (1) 命令方式 格 式:MODIFY COMMAND ? 功 能:建立或修正一

5、個(gè)程序文件。 說 明:命令中的文件名是指定要生成的程序文件的稱號(hào),缺省的擴(kuò)展名為.PRG;文件名前也可以指明途徑。 順序構(gòu)造程序設(shè)計(jì)是三種根本構(gòu)造中最簡單也是最常用的一種構(gòu)造。順序構(gòu)造的程序在運(yùn)轉(zhuǎn)時(shí)按照語句陳列的先后順序,自頂向下依次執(zhí)行。 從鍵盤輸入一個(gè)小寫字母,要求改用大寫字母輸出。從鍵盤輸入一個(gè)小寫字母,要求改用大寫字母輸出。 SET TALK OFF CLEARACCEPT 請輸入一個(gè)小寫字母 TO aa= UPPER(a)? “轉(zhuǎn)換結(jié)果為: , aSET TALK ONRETURN 開 始輸入字母大小寫轉(zhuǎn)換輸出結(jié)果結(jié) 束例6.2流程圖 假設(shè)輸入的字母為非小寫字母,例如,誤操作輸入了大

6、寫字母或是數(shù)字字符,那么在此程序運(yùn)轉(zhuǎn)中依然將繼續(xù)執(zhí)行并顯示結(jié)果,這顯然與題意不符,要處理這個(gè)問題,需求用到選擇構(gòu)造程序。 程序應(yīng)具有判別功能,而判別是經(jīng)過程序中的分支構(gòu)造選擇構(gòu)造來實(shí)現(xiàn)的。 分支構(gòu)造是程序中一種常用構(gòu)造,按照分支構(gòu)造是程序中一種常用構(gòu)造,按照分支構(gòu)造執(zhí)行途徑的多少,可分為單分支、分支構(gòu)造執(zhí)行途徑的多少,可分為單分支、雙分支和多分支構(gòu)造。實(shí)現(xiàn)分支構(gòu)造的語句雙分支和多分支構(gòu)造。實(shí)現(xiàn)分支構(gòu)造的語句有有 IF語句和語句和DO CASE語句。語句。 無論哪種類型的分支構(gòu)造,都是根據(jù)無論哪種類型的分支構(gòu)造,都是根據(jù)所給條件為真或?yàn)榧?,來選擇執(zhí)行某一分所給條件為真或?yàn)榧?,來選擇執(zhí)行某一分支的

7、相應(yīng)操作。支的相應(yīng)操作。執(zhí)行流程:執(zhí)行流程: 首先計(jì)算條件表達(dá)式的值,首先計(jì)算條件表達(dá)式的值, 假設(shè)其值為真,那么執(zhí)行假設(shè)其值為真,那么執(zhí)行IFIF與與ENDIFENDIF之間的之間的命令命令 序列序列, ,然后執(zhí)行然后執(zhí)行ENDIFENDIF后面的命令;后面的命令; 假設(shè)其值為假,那么直接執(zhí)行假設(shè)其值為假,那么直接執(zhí)行ENDIFENDIF后面的后面的命令。命令。條件ENDIF后語句后語句N命令序列Y思索:分支構(gòu)造與順序構(gòu)造的不同之處思索:分支構(gòu)造與順序構(gòu)造的不同之處 例例1 1:求長方形面積。判別:當(dāng)輸入的邊長值為正:求長方形面積。判別:當(dāng)輸入的邊長值為正數(shù)時(shí),求面積。數(shù)時(shí),求面積。clea

8、rset talk offinput “請輸入長方形的長:請輸入長方形的長: to linput “請輸入長方形的寬:請輸入長方形的寬: to wif l0 and w0 s = l * w ? 長方形的面積為:長方形的面積為: , sendifreturn在設(shè)計(jì)程序時(shí),對于有數(shù)據(jù)在設(shè)計(jì)程序時(shí),對于有數(shù)據(jù)輸入的程序,一定要對輸入輸入的程序,一定要對輸入數(shù)據(jù)的有效性做相應(yīng)的檢查,數(shù)據(jù)的有效性做相應(yīng)的檢查,防止由于數(shù)據(jù)的錯(cuò)誤輸入而防止由于數(shù)據(jù)的錯(cuò)誤輸入而導(dǎo)致程序的出錯(cuò)。這是一個(gè)導(dǎo)致程序的出錯(cuò)。這是一個(gè)程序員必需養(yǎng)成的良好習(xí)慣。程序員必需養(yǎng)成的良好習(xí)慣。輸入長寬:輸入長寬:L和和W開場開場L,W “

9、zIF (a “z) OR (a “a) OR (a “a) ) ? “ ? “輸入字母錯(cuò)誤輸入字母錯(cuò)誤! ! SET TALK ON SET TALK ON RETURN RETURNENDIFENDIFa= UPPER(a)a= UPPER(a)? ? 轉(zhuǎn)換結(jié)果為轉(zhuǎn)換結(jié)果為: , a: , aSET TALK ONSET TALK ONRETURN RETURN 2 2、雙分支構(gòu)造、雙分支構(gòu)造 格式:格式:IF IF 1 ELSE ELSE 2 ENDIF ENDIF執(zhí)行流程:執(zhí)行流程: 首先計(jì)算條件表達(dá)式的值,首先計(jì)算條件表達(dá)式的值, 假設(shè)其值為真,那么執(zhí)行命令序列假設(shè)其值為真,那么執(zhí)行

10、命令序列1 1,然后然后 再執(zhí)行再執(zhí)行ENDIFENDIF后面的命令;后面的命令; 假設(shè)其為假,執(zhí)行命令序列假設(shè)其為假,執(zhí)行命令序列2 2,然后再,然后再執(zhí)執(zhí) 行行ENDIFENDIF后面的命令。后面的命令。條件條件語句序列語句序列1 1語句序列語句序列2 2YN從鍵盤輸入一個(gè)數(shù),判別其為奇數(shù)還是偶數(shù)。從鍵盤輸入一個(gè)數(shù),判別其為奇數(shù)還是偶數(shù)。 分析:分析:1 1首先是輸入一首先是輸入一個(gè)數(shù),然后判別輸入的數(shù)奇?zhèn)€數(shù),然后判別輸入的數(shù)奇偶性。偶性。2 2應(yīng)輸入數(shù)值型數(shù)據(jù),應(yīng)輸入數(shù)值型數(shù)據(jù),可以用可以用INPUTINPUT或是或是GETGET語句來語句來輸入。輸入。 3 3如何判別奇偶性呢?如何判別

11、奇偶性呢?可運(yùn)用可運(yùn)用MODMOD函數(shù)或求余運(yùn)算函數(shù)或求余運(yùn)算符符“%“%。對于一個(gè)偶數(shù)。對于一個(gè)偶數(shù)x x,MODMODx x,2 2應(yīng)該為應(yīng)該為0 0,否那,否那么為么為1 1。 輸出偶數(shù)開場開場輸入數(shù)輸入數(shù)余余數(shù)數(shù)為為0?0?輸出奇數(shù)輸出奇數(shù)終了終了YNSET TALK OFFSET TALK OFFINPUT “INPUT “請輸入一個(gè)數(shù)字請輸入一個(gè)數(shù)字 TO a TO aIF MOD (a,2)=0 & a%2=0IF MOD (a,2)=0 & a%2=0 ? a, “ ? a, “是一個(gè)偶數(shù)是一個(gè)偶數(shù)ELSEELSE ? a, “ ? a, “是一個(gè)奇數(shù)是一個(gè)奇數(shù)ENDIFEND

12、IFSET TALK ONSET TALK ONRETURN RETURN 分析分析: :1.1.翻開工資表翻開工資表; ;2.2.輸入員工號(hào)輸入員工號(hào); ;3.3.用用LOCATELOCATE命令查找該命令查找該員工;員工;4.4.用用FOUND()FOUND()函數(shù)來判函數(shù)來判別能否存在該記錄。別能否存在該記錄。5.5.假設(shè)假設(shè)FOUND()FOUND()函數(shù)為函數(shù)為真,表示存在此員工記真,表示存在此員工記錄,否那么,不存在此錄,否那么,不存在此員工記錄,給出員工記錄,給出“查無查無此人的提示信息。此人的提示信息。5.5.封鎖表。封鎖表。開場開場翻開表翻開表輸入員工號(hào)輸入員工號(hào)找到找到嗎嗎

13、封鎖表封鎖表終了終了YN輸出查無此人輸出查無此人輸出員工信息輸出員工信息查找該員工查找該員工SET TALK OFFSET TALK OFFUSE USE 工資表工資表ACCEPT “ACCEPT “請輸入員工編號(hào)請輸入員工編號(hào) TO a TO aLOCATE FOR LOCATE FOR 員工編號(hào)員工編號(hào)=a=aIF FOUNDIF FOUND & & 條件條件FOUNDFOUND為真表示存在此員工為真表示存在此員工 DISP DISP 員工號(hào)員工號(hào), ,根本工資根本工資, ,水電費(fèi)水電費(fèi)ELSE & ELSE & 條件條件FOUNDFOUND為假表示不存在此員工為假表示不存在此員工 ?“查

14、無此人!查無此人!ENDIFENDIFUSE USE SET TALK ONSET TALK ONRETURNRETURN程序采用程序采用“縮進(jìn)制縮進(jìn)制格式書寫,格式書寫,最外層頂格寫,屬于其內(nèi)層語最外層頂格寫,屬于其內(nèi)層語句那么往后退一定間隔,這樣句那么往后退一定間隔,這樣便于閱讀和調(diào)試。便于閱讀和調(diào)試。留意:留意:1 1、IFIF與與ENDIFENDIF必需成對出現(xiàn),且各占一行。必需成對出現(xiàn),且各占一行。2 2、 可以為關(guān)系表達(dá)式、邏輯表達(dá)可以為關(guān)系表達(dá)式、邏輯表達(dá)式或其他邏輯量。式或其他邏輯量。clearclearset talk offset talk offinput “input

15、“請輸入請輸入a a的值:的值: to a to a input “input “請輸入請輸入b b的值:的值: to b to b input “input “請輸入請輸入c c的值:的值: to c to c if ab &aif ab &a和和b b比較大小,假設(shè)比較大小,假設(shè)a a大,那么大,那么a a、b b 交換交換 s=a s=a a=b a=b b=s b=sendifendifif ac &aif ac &a和和c c比較大小,假設(shè)比較大小,假設(shè)a a大,那么大,那么a a、c c 交換交換 s=a s=a a=c a=c c=s c=sendifendifIf bc &bI

16、f bc &b和和c c比較大小,假設(shè)比較大小,假設(shè)b b大,那么大,那么b b、c c 交換交換 s=b s=b b=c b=c c=s c=sendifendif? a ,b , c? a ,b , creturnreturn3.IF3.IF語句的嵌套語句的嵌套 實(shí)踐生活中,很多問題不僅僅只需兩種能夠,而是要實(shí)踐生活中,很多問題不僅僅只需兩種能夠,而是要求對多種情況進(jìn)展不同的處置,那么需求用到求對多種情況進(jìn)展不同的處置,那么需求用到IFIF語句嵌套。語句嵌套。 嵌套是指在某種構(gòu)造中含有其它構(gòu)造。嵌套是指在某種構(gòu)造中含有其它構(gòu)造。普通格式:普通格式: IF IF 1 IF IF 2 ENDI

17、F ENDIF ELSE ELSE IF IF 3 ENDIF ENDIF ENDIF ENDIF 留意:留意:1 1、IFIF一定要與一定要與ENDIFENDIF配對。配對。2 2、在、在IFIF構(gòu)造之間可以嵌套,構(gòu)造之間可以嵌套,但不能交叉。但不能交叉。INPUT “INPUT “請輸入學(xué)生成果請輸入學(xué)生成果 TO p TO pIF p60 IF p60 ? “ ? “不及格不及格 ELSEELSE IF p70 IF p70 ? “ ? “及格及格 ELSE ELSE IF p80 IF p80 ? “ ? “良良 ELSE ELSE IF p90 IF p100) OR ( P0) ?

18、 輸入的成果有誤,請重新輸入輸入的成果有誤,請重新輸入ELSE DO CASE CASE P60 ? 不及格不及格 CASE P70 ? 及格及格 CASE P80 ? 良良 CASE P90 ? 好好 OTHERWISE ? 優(yōu)優(yōu) ENDCASEENDIFRETURN編一繳稅程序,以編一繳稅程序,以800800元為基數(shù),超出部分元為基數(shù),超出部分的繳稅比例如下:的繳稅比例如下: 800-1500800-1500含含800800 5%5% 1500-2500 1500-2500含含15001500 10%10% 2500-5000 2500-5000含含25002500 20%20% 5000

19、 5000以上以上 含含50005000 25% 25% 小結(jié)小結(jié) 分支構(gòu)造使得程序功能得到完善,分支構(gòu)造使得程序功能得到完善,分支構(gòu)造的目的在于對不同情況做出分支構(gòu)造的目的在于對不同情況做出不同處置,這種構(gòu)造的出現(xiàn)使得計(jì)算不同處置,這種構(gòu)造的出現(xiàn)使得計(jì)算機(jī)在一定程度上具有了判別的功能,機(jī)在一定程度上具有了判別的功能,是計(jì)算機(jī)走向智能化的重要構(gòu)造。是計(jì)算機(jī)走向智能化的重要構(gòu)造。命令序列命令序列EXITLOOPEnddo后面語句后面語句條件條件FTEnddo 求1+2+3+100之和。分析: 0 + 1 = 1 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 4950+100=50

20、50S I S S=0I =1S=S+II =I+1S=S+II =I+1S=S+II =I+1結(jié) 束輸出s開 始i=100?s,i賦初值0s=s+ii=i+1YN例6.12流程圖SET TALK OFFCLEARI=1S=0I=100I5為止,求此時(shí)n的值。 CLEARSET TALK OFFSTORE 0 TO S,IDO WHILE .T.DO WHILE .T. N=N+1 N=N+1 S=S+1/N S=S+1/N IF S5 IF S5 EXIT EXIT ENDIF ENDIFENDDOENDDO? “n的值應(yīng)該為,nSET TALK ONRETURN求100到200之間一切奇數(shù)

21、之和。 條件循環(huán)可以實(shí)現(xiàn)知和未知循環(huán)次數(shù)的循環(huán)。對于循環(huán)次數(shù)知的循環(huán)還可采用步長循環(huán)。 格式:格式: FOR FOR = TO TO STEP STEP ENDFOR ENDFOR NEXT NEXT 數(shù)值表達(dá)式,默許值為1。闡明:闡明: 1 1循環(huán)變量按步長值添加或減小。循環(huán)變量按步長值添加或減小。 2 2當(dāng)循環(huán)變量的值不在初值與終值范圍內(nèi)時(shí),終當(dāng)循環(huán)變量的值不在初值與終值范圍內(nèi)時(shí),終了循環(huán)。了循環(huán)。 假設(shè)n的初值為0 求1+2+3+100之和。 SET TALK OFF CLEAR S=0 FOR i=1 TO 100 STEP 1 S=S+i ENDFOR ? 1-100之和為,S SE

22、T TALK ON RETURN S1S=S*i積 求一切的3位數(shù)中能同時(shí)被5和12整除的數(shù)有多少個(gè)?其和是多少?并按照每行輸出5個(gè),輸出這些數(shù)。 在員工表中添加10條新記錄。格格 式:式: SCAN SCAN FORFORWHILEWHILE2 ENDSCAN ENDSCAN 說說 明:明: 1 1針對當(dāng)前任務(wù)區(qū)中被翻開的表的記錄進(jìn)展掃描。針對當(dāng)前任務(wù)區(qū)中被翻開的表的記錄進(jìn)展掃描。 2 2 子句確定掃描記錄的范圍,缺省那么為子句確定掃描記錄的范圍,缺省那么為ALLALL。 3 3對對 子句內(nèi)滿足子句內(nèi)滿足FORFOR 或或WHILEWHILE 的記錄執(zhí)行循環(huán)體中的規(guī)定操作。的記錄執(zhí)行循環(huán)體中

23、的規(guī)定操作。 4 4記錄指針可自動(dòng)往下移。記錄指針可自動(dòng)往下移。 統(tǒng)計(jì)員工表中男女人數(shù),以及教授和副教授的人數(shù)。 ?“總共有,n1,“個(gè)男員工?“總共有,n2,“個(gè)女員工?“總共有,j1,“個(gè)教授 ?“總共有,j2,“個(gè)副教授 USE 5、設(shè)S=1+1/2+1/3+1/N,求使S不超越10的最大的N值。6、求1-1000之間能被3整除的偶數(shù)的個(gè)數(shù)及其和。7、打印如以下圖形: * * * *附加題: 1、恣意輸入10個(gè)數(shù),能求出它們中的最大值和最小值。 2、打印九九乘法表。 d) DOd) DO命令所帶的參數(shù)叫實(shí)踐參數(shù),命令所帶的參數(shù)叫實(shí)踐參數(shù),PARAMETERSPARAMETERS所對所對應(yīng)

24、的叫方式參數(shù)。應(yīng)的叫方式參數(shù)。求一個(gè)半徑等于邊長的圓與正方形面積之差。主程序:主程序:STORE 0 TO S1,S2STORE 0 TO S1,S2INPUT “INPUT “輸入半徑或邊長的值:輸入半徑或邊長的值: TO A TO ADO YUAN.PRG WITH A,S1DO YUAN.PRG WITH A,S1DO ZHEN.PRG WITH A,S2DO ZHEN.PRG WITH A,S2?S1-S2?S1-S2YUAN.PRGYUAN.PRGPARAMETERS R,SPARAMETERS R,SS=3.14S=3.14* *R2R2RETURNRETURNZHEN.PRGZH

25、EN.PRGPARAMETERS L,SPARAMETERS L,SS=L2S=L2RETURNRETURNSTORE 0 TO S1,S2INPUT “輸入半徑或邊長的;值: TO ADO YUAN.PRG WITH A,S1DO ZHEN.PRG WITH A,S2?S1-S2YUAN.PRGYUAN.PRGPARAMETERS R, PARAMETERS R, S SS=3.14S=3.14* *R2R2RETURNRETURNZHEN.PRGZHEN.PRGPARAMETERS L, SPARAMETERS L, SS=L2S=L2RETURNRETURNA ,S2A ,S1主程序:主

26、程序: 注注 意意 1、只需當(dāng)、只需當(dāng)DO命令中參數(shù)為內(nèi)存變量時(shí),命令中參數(shù)為內(nèi)存變量時(shí),子程序的參數(shù)才干前往給主程序,假設(shè)參子程序的參數(shù)才干前往給主程序,假設(shè)參數(shù)為常量或表達(dá)式時(shí),子程序的參數(shù)值不數(shù)為常量或表達(dá)式時(shí),子程序的參數(shù)值不可以前往給主程序。可以前往給主程序。 2、假設(shè)子程序不需求參數(shù)時(shí),、假設(shè)子程序不需求參數(shù)時(shí),DO命令也命令也可以不帶參數(shù)??梢圆粠?shù)。主程序 DO A A.PRG DO B RETUTNB.PRG DO C RETURNTO MASTERC.PRG RETURNTO A主程序主程序CLEARDO A ?“一切程序一切程序執(zhí)行終了執(zhí)行終了A.PRG?開場執(zhí)行開場執(zhí)

27、行ADO B ?A執(zhí)行終了執(zhí)行終了RETURNB.PRG ?開場執(zhí)行開場執(zhí)行B DO C?B執(zhí)行終了執(zhí)行終了RETURN TO MASTERC.PRG ?開場執(zhí)行開場執(zhí)行CRETURN TO A 假設(shè)將多模塊程序中的每個(gè)模塊主程序,子程序或自定義函數(shù)分別保管為一個(gè)獨(dú)立的.PRG文件,那么每執(zhí)行一個(gè)模塊就要翻開一個(gè)文件,勢必會(huì)添加運(yùn)轉(zhuǎn)時(shí)間。為此VFP允許在一個(gè).PRG文件中設(shè)置多個(gè)程序模塊,并將主程序以外的每個(gè)模塊定義為一個(gè)過程,即“過程文件,仍以.PRG為擴(kuò)展名。說說 明:明: a) a) 每個(gè)過程均以每個(gè)過程均以PROCEDUREPROCEDURE開場,以開場,以RETURNRETURN終終

28、了。每個(gè)過程實(shí)踐上是一個(gè)獨(dú)立的子程序或一個(gè)了。每個(gè)過程實(shí)踐上是一個(gè)獨(dú)立的子程序或一個(gè)用戶定義函數(shù)。用戶定義函數(shù)。 b) PROCEDURE b) PROCEDURE 用于過程的第一條語句,用于過程的第一條語句,它標(biāo)識(shí)了每個(gè)過程的開場,同時(shí)定義了過程名。它標(biāo)識(shí)了每個(gè)過程的開場,同時(shí)定義了過程名。 c) c) 過程假設(shè)以過程假設(shè)以RETURN RETURN 作為終了語句,作為終了語句,那么該過程既可用那么該過程既可用DO DO 的方的方式執(zhí)行,又可當(dāng)做一個(gè)合法的自定義函數(shù),可供式執(zhí)行,又可當(dāng)做一個(gè)合法的自定義函數(shù),可供隨時(shí)調(diào)用。隨時(shí)調(diào)用。將子程序中的例題改為過程。STORE 0 TO S1 ,S2

29、INPUT “輸入半徑或邊長的值: TO ADO YUAN WITH A , S1DO ZHEN WITH A , S2?S1-S2PROCEDURE YUANPARAMETERS R , S S=3.14*R2RETURNPROCEDURE ZHENPARAMETERS L , S S=L2RETURN12寫出以下程序的運(yùn)轉(zhuǎn)結(jié)果。SET TALK OFFA=10B=8DO SUBB WITH A , BSET TALK ON RETURNPROCEDURE SUBB PARAMETERS X , Y ?X,Y STORE 25 TO X X=302*SQRT(X) Y=Y+X ?X,YRET

30、URN結(jié)果為: 820 28格格 式:式:SET PROCEDURE TO SET PROCEDURE TO 功功 能:翻開過程文件。能:翻開過程文件。 用過程文件實(shí)現(xiàn)求一個(gè)半徑等于邊長的圓與正方形面積之差的問題。 * *Main.prgMain.prgCLEARCLEARSET TALK OFFSET TALK OFFSET PROCEDURE TO sub &SET PROCEDURE TO sub &翻開過程文件翻開過程文件sub.prgsub.prgSTORE 0 TO s1,s2STORE 0 TO s1,s2INPUT “INPUT “輸入半徑或邊長的值輸入半徑或邊長的值: TO

31、a: TO aDO yuan WITH a,s1 &DO yuan WITH a,s1 &調(diào)用過程文件中的過程調(diào)用過程文件中的過程yuanyuanDO zhen WITH a,s2 &DO zhen WITH a,s2 &調(diào)用過程文件中的過程調(diào)用過程文件中的過程zhenzhen?s1-s2?s1-s2SET TALK ONSET TALK ONRETURN RETURN * *過程文件過程文件sub.prgsub.prgPROCEDURE yuan &PROCEDURE yuan &過程過程yuanyuan PARAMETERS r,s PARAMETERS r,s s=3.14 s=3.14

32、* *r2r2RETURNRETURNPROCEDURE zhen &PROCEDURE zhen &過程過程zhenzhen PARAMETERS i,s PARAMETERS i,s s=i2 s=i2RETURN RETURN 假設(shè)運(yùn)用FUNCTION語句來指出函數(shù)名,表示該函數(shù)包含在調(diào)用程序中;假設(shè)缺省,那么表示此函數(shù)是一個(gè)獨(dú)立文件,函數(shù)名在定義文件名時(shí)確定。RETURN用于前往函數(shù)值,只能前往一個(gè)值。假設(shè)缺省該語句那么前往值為.T.。 自定義函數(shù)與系統(tǒng)函數(shù)調(diào)用方法一樣: 函數(shù)名() 將子程序中的例題改為自定義函數(shù)。CLEARS=0INPUT “輸入半徑或邊長的值: TO A?YUAN

33、(A)-ZHEN(A)FUNCTION YUAN PARAMETERS R S=3.14*R2RETURN SFUNCTION ZHEN PARAMETERS L S=L2RETURN S 定義一個(gè)判別n能否是素?cái)?shù)的函數(shù),然后調(diào)用該函數(shù)求21000內(nèi)的全部素?cái)?shù)。分析:分析: a) a) 素?cái)?shù)也叫質(zhì)數(shù),它是大于素?cái)?shù)也叫質(zhì)數(shù),它是大于1 1且除了且除了1 1和它本和它本身之外,不能被其他任何整數(shù)所整除的整數(shù)。身之外,不能被其他任何整數(shù)所整除的整數(shù)。 b) b) 為了判別某數(shù)為了判別某數(shù)n n能否是素?cái)?shù),一個(gè)最簡單的能否是素?cái)?shù),一個(gè)最簡單的方法是用方法是用2345n-12345n-1這些數(shù)逐個(gè)去除這

34、些數(shù)逐個(gè)去除n n,看能否除,看能否除盡,假設(shè)全都除不盡,那么盡,假設(shè)全都除不盡,那么n n是素?cái)?shù),否那么,是素?cái)?shù),否那么,只需其中一個(gè)數(shù)除盡了,那么只需其中一個(gè)數(shù)除盡了,那么n n不是素?cái)?shù)。為了不是素?cái)?shù)。為了減少除的次數(shù),提高運(yùn)轉(zhuǎn)效率,除到減少除的次數(shù),提高運(yùn)轉(zhuǎn)效率,除到n n開方即可。開方即可。程序:程序: *此子程序判別n能否是素?cái)?shù)FUNCTION PRIMEPARAMETERS NFLAG=.T.K=INT(SQRT(N)J=2DO WHILE J=K AND FLAG IF MOD(N,J)=0 FLAG=.F. ENIF J=J+1ENDDORETURN FLAG*main.prg

35、調(diào)用該函數(shù)求21000內(nèi)的全部素?cái)?shù)。CLEARFOR M=2 TO 1000 IF PRIME(M) ?M ENDIFENDFOR一、全局變量一、全局變量 PUBLIC PUBLIC 功能:聲明并建立全局變量。功能:聲明并建立全局變量。闡明:闡明: a) a) 一旦定義可供一切的程序,模塊運(yùn)用。一旦定義可供一切的程序,模塊運(yùn)用。 b) b) 在命令窗口定義的變量是全局變量。在命令窗口定義的變量是全局變量。 c) c) 程序執(zhí)行完后不會(huì)自動(dòng)去除。程序執(zhí)行完后不會(huì)自動(dòng)去除。假設(shè)以內(nèi)存變量的作用域分類,可分為以下三種: 全局變量、部分變量、隱藏部分變量 *TEMP.PRG PUBLIC I I=2

36、?執(zhí)行TEMP1前的I:,I DO TEMP1 ?執(zhí)行TEMP1后的I:,I* *TEMP1.PRGTEMP1.PRG I=I+4 I=I+4 ?TEMP1 ?TEMP1中的中的I:,II:,I 結(jié)果:結(jié)果: 執(zhí)行執(zhí)行TEMP1TEMP1前的前的I I:2 2 TEMP1 TEMP1中的中的I I:6 6 執(zhí)行執(zhí)行TEMP1TEMP1后的后的I I:6 6二、部分變量二、部分變量 在程序中定義的變量,假設(shè)沒帶在程序中定義的變量,假設(shè)沒帶PUBLICPUBLIC聲明聲明, ,它只能在定義它的程序及其下級(jí)程序中運(yùn)用,一旦它只能在定義它的程序及其下級(jí)程序中運(yùn)用,一旦定義它的程序運(yùn)轉(zhuǎn)終了,它便自動(dòng)被去

37、除。定義它的程序運(yùn)轉(zhuǎn)終了,它便自動(dòng)被去除。例:*MAIN.PRG R=100 DO SUB ?P RETURN* *SUB.PRG SUB.PRG P=2 P=2* *3.143.14* *R R RETURN RETURN結(jié)果:由于結(jié)果:由于P P是在子程序中的部分是在子程序中的部分變量,退出子程序后自動(dòng)被去除,變量,退出子程序后自動(dòng)被去除,那么在主程序中輸出那么在主程序中輸出P P的值時(shí)出現(xiàn)的值時(shí)出現(xiàn)變量變量P P未定義的錯(cuò)誤。未定義的錯(cuò)誤。三、隱藏內(nèi)存變量三、隱藏內(nèi)存變量 PRIVATE PRIVATE 功能:聲明并隱藏上級(jí)模塊中的同名變量。功能:聲明并隱藏上級(jí)模塊中的同名變量。闡明:闡

38、明:a) a) 對對PRIVATEPRIVATE中內(nèi)存變量的修正并不影響上級(jí)程中內(nèi)存變量的修正并不影響上級(jí)程序中與之同名的內(nèi)存變量的值。此命令只對本級(jí)程序及序中與之同名的內(nèi)存變量的值。此命令只對本級(jí)程序及以下各級(jí)子程序有效,當(dāng)前往到上級(jí)程序時(shí),被以下各級(jí)子程序有效,當(dāng)前往到上級(jí)程序時(shí),被PRIVETEPRIVETE隱藏的當(dāng)前程序中的內(nèi)存變量自動(dòng)刪除。隱藏的當(dāng)前程序中的內(nèi)存變量自動(dòng)刪除。 b) b) 在它們被隱藏期間,程序就不能再調(diào)用這些被隱藏在它們被隱藏期間,程序就不能再調(diào)用這些被隱藏的上級(jí)內(nèi)存變量,但實(shí)踐上它們依然存在,一旦含有的上級(jí)內(nèi)存變量,但實(shí)踐上它們依然存在,一旦含有PRIVATEPR

39、IVATE內(nèi)存變量的程序終了后,被內(nèi)存變量的程序終了后,被PRIVATEPRIVATE隱藏起來的隱藏起來的那些以前建立的同名的上級(jí)內(nèi)存變量自動(dòng)恢復(fù)以前的內(nèi)那些以前建立的同名的上級(jí)內(nèi)存變量自動(dòng)恢復(fù)以前的內(nèi)容和形狀。容和形狀。 R=100 P=10 DO SUB ?P RETURN PROCEDURE SUB PRIVATE P P=2*3.14*R RETUEN結(jié)果:在過程結(jié)果:在過程SUBSUB中用中用PRIVATEPRIVATE命令隱藏了主命令隱藏了主程序中定義的全局變程序中定義的全局變量量P P,并重新對,并重新對P P賦值,賦值,前往主程序時(shí),前往主程序時(shí),P P恢復(fù)恢復(fù)以前的值,即輸出

40、以前的值,即輸出1010。優(yōu)點(diǎn):使得在開發(fā)大優(yōu)點(diǎn):使得在開發(fā)大型運(yùn)用程序時(shí),在不型運(yùn)用程序時(shí),在不同層次的程序中可以同層次的程序中可以運(yùn)用同名內(nèi)存變量而運(yùn)用同名內(nèi)存變量而不致發(fā)生混亂。不致發(fā)生混亂。 調(diào)用子程序時(shí),調(diào)用程序要把數(shù)據(jù)傳送給子程序,子程序也能夠把數(shù)據(jù)傳回到調(diào)用程序,因此在調(diào)用子程序過程中,必然要思索調(diào)用程序和被調(diào)用程序之間的數(shù)據(jù)是如何傳送的。 調(diào)用子程序時(shí)的數(shù)據(jù)傳送可以經(jīng)過兩種方式處理:a)a)利用變量的作用域?qū)崿F(xiàn)數(shù)據(jù)傳送利用變量的作用域?qū)崿F(xiàn)數(shù)據(jù)傳送例:*MAIN.PRG gao=8 kuan=6 c=0 DO SUB ?c return* *SUB.PRGSUB.PRG c=ga

41、o c=gao* *kuankuan RETURN RETURN結(jié)果為:48b)b)利用參數(shù)實(shí)現(xiàn)數(shù)據(jù)傳送利用參數(shù)實(shí)現(xiàn)數(shù)據(jù)傳送 利用這種方式傳送數(shù)據(jù),子程序具有更大的獨(dú)立性。編寫子程序時(shí),用PARAMETERS命令來闡明將要輸入、輸出的變量;用DO命令來提供輸入值和接受輸出結(jié)果。 參數(shù)傳送有兩種方式:值傳送和地址傳送。值傳送:子程序中參數(shù)變化后的值不回傳各上級(jí)調(diào)用值傳送:子程序中參數(shù)變化后的值不回傳各上級(jí)調(diào)用程序。常量和表達(dá)式只能運(yùn)用值傳送方式。運(yùn)用值傳程序。常量和表達(dá)式只能運(yùn)用值傳送方式。運(yùn)用值傳送方式的變量要用括號(hào)括起來。送方式的變量要用括號(hào)括起來。地址傳送:子程序中參數(shù)變化后的值要回傳各上

42、級(jí)調(diào)地址傳送:子程序中參數(shù)變化后的值要回傳各上級(jí)調(diào)用程序。內(nèi)存變量既可運(yùn)用值傳送方式,又可用地址用程序。內(nèi)存變量既可運(yùn)用值傳送方式,又可用地址傳送。運(yùn)用地址傳送方式的變量不加括號(hào)。傳送。運(yùn)用地址傳送方式的變量不加括號(hào)。寫出以下程序的輸出。SET TALK OFFX=1Y=3DO SUB WITH X , (Y) , 5?X , YRERURNPROCEDURE SUBPARAMETERS A , B , C A=ABC B=ABCRERURN分析:程序?qū)⒎治觯撼绦驅(qū)? 3個(gè)參數(shù)傳送給過程個(gè)參數(shù)傳送給過程SUBSUB,第一個(gè)參數(shù),第一個(gè)參數(shù)X X采用地址傳送方式,變量采用地址傳送方式,變量A A

43、的變化將引起的變化將引起X X的變化;的變化;第二個(gè)參數(shù)第二個(gè)參數(shù)Y Y采用值傳送方式,采用值傳送方式,B B的變化不引起的變化不引起Y Y的的變化;第三個(gè)參數(shù)是常數(shù),最后輸出為變化;第三個(gè)參數(shù)是常數(shù),最后輸出為9 39 3。寫出以下程序的輸出。CLEARA=3B=5?A,BDO PP WITH 3*A , 1*B?A,BRETURNPROCEDURE PPPARAMETERS X , YX=X2Y=Y+1?X , YRETURN 分析:程序?qū)蓚€(gè)表達(dá)式傳送給過程分析:程序?qū)蓚€(gè)表達(dá)式傳送給過程PPPP,它們都采,它們都采用值傳送方式,用值傳送方式,X,YX,Y的變化不引起的變化不引起A,BA

44、,B的變化,那么的變化,那么輸出結(jié)果為輸出結(jié)果為 3 5 6 3 5思索:將其改為思索:將其改為B B,結(jié)果能否一樣?結(jié)果能否一樣?NfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t

45、*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6Ia

46、LdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#

47、s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G

48、8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4bNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$

49、u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7J

50、aMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp

51、!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6Ia

52、LdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#

53、s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3ELdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v(y0B3F6I9LdOg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論