版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章程序設(shè)計基礎(chǔ)6.1結(jié)構(gòu)化程序設(shè)計概述6.2程序控制結(jié)構(gòu)6.3模塊化程序設(shè)計結(jié)構(gòu)化程序設(shè)計是根據(jù)不同的情況和條件,控制程序執(zhí)行相應(yīng)操作的語句序列。一般遵循四條原則:自頂向下、逐步求精、模塊化和限制使用轉(zhuǎn)移語句。6.1結(jié)構(gòu)化程序設(shè)計概述結(jié)構(gòu)化程序的本質(zhì)是功能設(shè)計,即以功能為主進行設(shè)計,其方法是自頂向下、功能分解。開發(fā)過程通常是從“做什么”到“如何做”,優(yōu)點是系統(tǒng)結(jié)構(gòu)強、便于設(shè)計和理解。1.結(jié)構(gòu)程序設(shè)計與算法程序的基本組成計算機是依靠程序工作的。利用計算機解決問題,首先要確定需要得到什么樣的“輸出”結(jié)果;其次,要想得到需要的結(jié)果,需要提供必要的數(shù)據(jù),稱為“輸入”;最后,需要確定如何“處理”輸入的數(shù)據(jù),才能獲得相應(yīng)的“輸出”結(jié)果。因此,程序的基本組成包括輸入、處理和輸出三部分。2025/1/18算法算法是解決某個問題或處理某個事件的方法和步驟。算法可以分為兩大類:-數(shù)值計算方法,如求解超越方程的根等。-是非數(shù)值計算方法,如排序、查找、求總和等。算法的描述算法可以采用不同的方法來描述,如自然語言、偽代碼、流程圖或程序設(shè)計語言等。最常用的算法圖形描述工具是流程圖,它使用的圖形符號表示算法中不同的處理。2025/1/18流程圖中常用的圖形符號:例如,根據(jù)三角形的三條邊求三角形面積的算法步驟用流程圖描述:2025/1/18注釋語句有以下三種書寫格式:①作為單獨一行,以“*”開頭,后跟注釋信息。②作為單獨一行,以NOTE語句開頭,后跟注釋信息。③與命令行同行,在命令行后加“&&”以及注釋信息。-程序由若干個程序行組成,一行只能寫一條命令。-在程序中命令書寫應(yīng)遵循命令書寫規(guī)則。-可在程序中加入注釋語句。2.程序的書寫規(guī)則在VFP中,程序文件是一個利用命令語句和程序控制語句序列來表達算法功能的文本文件,其文件擴展名為.prg。3.程序的建立利用命令建立程序文件語法格式:MODIFYCOMMAND[文件名|?]功能:如果程序文件不存在,則建立一個程序文件,并自動打開程序代碼編輯器,輸入程序代碼;若程序文件已存在,則自動打開該文件,進行編輯和修改。若選用“?”,則由用戶選擇程序文件進行修改。選擇“文件”菜單中的“新建”命令,在“新建對話框”中選擇“程序”選項,單擊“新建文件”按鈕,即可創(chuàng)建程序文件。利用菜單建立程序文件利用項目管理器建立程序文件在項目管理器上的“代碼”選項卡中,選擇“程序”,然后單擊項目管理器上的“新建”按鈕,也可以創(chuàng)建程序文件。例如,編寫程序求一個圓的面積。在命令窗口執(zhí)行語句:MODIFYCOMMANDarea4.程序的運行-執(zhí)行“程序”菜單中的“運行”命令-單擊工具欄上的“
”按鈕-執(zhí)行DO命令語句語法格式:DO程序文件名編寫程序代碼:
Input"請輸入一個圓的半徑"torS=3.14*r^2?"圓的面積是:",S輸入語句語法格式:INPUT[提示信息]TO<內(nèi)存變量>功能:等待用戶從鍵盤輸入數(shù)據(jù),并賦給內(nèi)存變量。
INPUT語句輸入的數(shù)據(jù)可以是數(shù)值型、字符型等數(shù)據(jù)。如果是字符型數(shù)據(jù)或日期型等,必須加定界符。5.程序中常用命令語句在程序執(zhí)行過程中,常常需要用到交互式的輸入/輸出語句以及其他命令語句。例如:執(zhí)行語句Input"請輸入一個數(shù)據(jù)"tox&&輸入3?x
語法格式:ACCEPT[提示信息]TO<內(nèi)存變量>功能:等待并提示用戶從鍵盤輸入一個字符串數(shù)據(jù),并賦給內(nèi)存變量。
ACCEPT語句注意:輸入的字符型數(shù)據(jù)或日期型等,必須不需要加定界符。例如:執(zhí)行語句Accept"請輸入一個數(shù)據(jù)"tox&&輸入abc?x例如:執(zhí)行語句Input"請輸入一個數(shù)據(jù)"toy&&輸入"abc"?y
輸出語句語法格式:
?|??<內(nèi)存變量名表>功能:顯示內(nèi)存變量、常量或表達式的值。
?/??語句例如:執(zhí)行語句Input"請輸入一個數(shù)據(jù)"tox&&輸入3?x Input"請輸入一個數(shù)據(jù)"toy&&輸入"abc"??y
說明:?表示在光標所在行的下一行開始顯示;??表示在當前光標位置開始顯示。6.1結(jié)構(gòu)化程序設(shè)計概述語法格式WAIT["<提示信息>"][TO<內(nèi)存變量名>]WINDOW功能:暫停程序運行,并在屏幕上顯示提示信息,等待用戶從鍵盤上輸入一個字符,然后繼續(xù)執(zhí)行。
WAIT語句-<提示信息>用于提示用戶進行操作的信息。-TO<內(nèi)存變量名>表示輸入的字符保存到指定的內(nèi)存變量中。-WINDOW表示在屏幕右上角系統(tǒng)信息窗口中顯示提示信息的內(nèi)容。例如:執(zhí)行語句Wait"請輸入一個數(shù)據(jù)"tox?x Wait"請輸入一個數(shù)據(jù)"toywindow?y
其他常用命令語句
CLEAR功能:清除VisualFoxPro主窗口工作區(qū)所顯示的信息。
QUIT功能:關(guān)閉所有文件,釋放所有變量,退出VisualFoxPro,返回Windows操作系統(tǒng)。
CLEARALL功能:關(guān)閉所有數(shù)據(jù)表文件,釋放所有變量,清除所有用戶自定義的菜單和窗口,并將當前工作區(qū)設(shè)置為1區(qū)。
SETTALKON|OFF功能:打開或關(guān)閉人機對話。說明:在SETTALKON狀態(tài)下,程序執(zhí)行時把一些非顯示命令的執(zhí)行結(jié)果顯示出來;在OFF狀態(tài)下,只有輸出命令的結(jié)果才能顯示。系統(tǒng)默認狀態(tài)為ON狀態(tài)。6.MESSAGEBOX消息框函數(shù)用途:用于信息提示,
并要求用戶做出響應(yīng)。格式為:m=MESSAGEBOX(cMessageText[,nDialogBoxType[,cTitleBarText]])參數(shù)說明:cMessageText:消息框中顯示的文本信息。nDialogBoxType:一個數(shù)值表達式(缺省時為0),用于定義消息框中按鈕的個數(shù)、類型和顯示圖標的樣式。cTitleBarText:消息框的標題,缺省時為“MicrosoftVisualFoxPro”。m:變量,用于接收MESSAGEBOX函數(shù)的返回值。nDialogBoxType參數(shù)按鈕的個數(shù)和類型取值
nDialogBoxType參數(shù)由三個數(shù)值常量組成,形式為n1+n2+n3。取值
按鈕名稱0 確定1 確定和取消2 終止、重試和忽略3 是、否和取消4 是和否5 重試和取消nDialogBoxType參數(shù):4+n2+n3。取值
圖標16 32 48 64 nDialogBoxType參數(shù)圖標樣式取值
nDialogBoxType參數(shù):n1+n2+n3。nDialogBoxType參數(shù):4+32+n3。取值
默認按鈕0 第一個按鈕
256 第二個按鈕
512 第三個按鈕
默認按鈕取值nDialogBoxType參數(shù):n1+n2+n3。nDialogBoxType參數(shù):4+32+256。nDialogBoxType參數(shù)函數(shù)調(diào)用:m=MESSAGEBOX("是否退出系統(tǒng)?",4+32+256,"退出")取值
按鈕名1 確定
2 取消
3 終止4 重試5 忽略6 是7 否m=MESSAGEBOX("是否退出系統(tǒng)?",4+32+256,"退出")?m &&m=7MESSAGEBOX函數(shù)返回值1.順序結(jié)構(gòu)6.2程序控制結(jié)構(gòu)程序控制結(jié)構(gòu)是指程序中命令或語句執(zhí)行的流程結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計的程序控制結(jié)構(gòu)有順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu),每一種基本結(jié)構(gòu)可以包含一個或多個語句。順序結(jié)構(gòu)是最簡單、最常用的程序結(jié)構(gòu),是按程序中語句的書寫順序依次執(zhí)行不同的控制結(jié)構(gòu)。例6.1:求圓的面積。INPUT"請輸入圓的半徑"torS=3.14*r*r?"圓的面積是:",S2.分支結(jié)構(gòu)分支結(jié)構(gòu)是根據(jù)條件表達式的計算結(jié)果判定執(zhí)行不同語句組的結(jié)構(gòu)。VFP中提供了三種分支結(jié)構(gòu):單分支、雙分支和多分支語句單分支語句IF<條件表達式><語句組>ENDIF執(zhí)行流程:條件表達式的值為.T.,則執(zhí)行語句組;條件表達式值為.F.,執(zhí)行ENDIF后面的語句。2025/1/18例6.2:根據(jù)學號查找學生表(student.dbf)中的學生信息。CLEARUSEstudentACCEPT"請輸入學生的學號"TOxhLOCATEFORstudent.stuno=xhIFFOUND()DISPLAYENDIFUSE雙分支語句IF<條件表達式><語句組A>ELSE<語句組B>ENDIF執(zhí)行流程:條件表達式的值為.T.,則執(zhí)行語句組A;條件表達式值為.F.,執(zhí)行執(zhí)行語句組B。兩個語句組執(zhí)行且僅執(zhí)行一個。例6.3:根據(jù)三條邊求三角形的面積。CLEARINPUT"請輸入第一條邊"TOaINPUT"請輸入第二條邊"TObINPUT"請輸入第三條邊"TOcs=0p=(a+b+c)/2IFa+b>canda+c>bandb+c>aS=SQRT(p*(p-a)*(p-b)*(p-c))?"三角形的面積是",sELSEWAITWINDOW"輸入的三條邊a、b、c不能構(gòu)成三角形"ENDIFIIF函數(shù)是根據(jù)條件成立與否返回不同的結(jié)果。條件函數(shù)IIFIIF(條件表達式,表達式1,表達式2)執(zhí)行規(guī)則:如果條件表達式的值為.T.,函數(shù)返回表達式1的值;否則,返回表達式2的值。例6.4:從鍵盤輸入兩個自然數(shù),輸出兩個數(shù)中的較大數(shù)。CLEARINPUT"請輸入第一個數(shù)"TOaINPUT"請輸入第二個數(shù)"TObmaxnum=IIF(a>b,a,b)?"較大數(shù)"+STR(maxnum)多分支語句CASECASE<條件表達式1><語句組1>CASE<條件表達式2><語句組2>……CASE<條件表達式N><語句組N>[OTHERWISE<語句組N+1>]ENDCASE執(zhí)行規(guī)則:1)依次求解條件表達式,若某條件表達式的計算結(jié)果為.T.,則執(zhí)行相應(yīng)的語句組;2)否則繼續(xù)求解下一個條件表達式。3)如果所有的條件表達式都為.F.,若有OTHERWISE,則執(zhí)行語句組N+1,DOCASE語句執(zhí)行結(jié)束,否則不執(zhí)行任何語句,直接執(zhí)行ENDCASE后面的語句。例6.5:實現(xiàn)百分制成績的等級轉(zhuǎn)換,若成績>=90為優(yōu)秀,成績<90且成績>=80為良好,成績<80且成績>=70為中等,成績<70且成績>=60為及格,成績<60為不及格。DOCASECASEa>=90b="優(yōu)秀"CASEa>=80b="良好"CASEa>=70b="中等"CASEa>=60b="及格"OTHERWISEb="不及格"ENDCASE3.循環(huán)結(jié)構(gòu)編寫程序時會遇到一些語句需要多次重復執(zhí)行。例如,求1+2+3+…+n的累加和,需要重復執(zhí)行n次加法運算。像這類問題可使用程序設(shè)計中的另一種結(jié)構(gòu),即循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)依據(jù)條件反復執(zhí)行相同的語句組,這組被反復執(zhí)行的語句組稱為循環(huán)體,循環(huán)體被反復執(zhí)行的次數(shù)稱為循環(huán)次數(shù)。在VFP中常用的循環(huán)控制語句有三種:-DOWHILE…ENDDO-FOR…ENDFOR/NEXT-SCAN…ENDSCANDOWHILE…ENDDODOWHILE<條件表達式><語句組1>[LOOP][EXIT]<語句組2>ENDDO執(zhí)行流程:當條件表達式的值為.T.時,執(zhí)行循環(huán)體,直到條件表達式的值為.F.,結(jié)束循環(huán)體,執(zhí)行ENDDO后面的語句。DOWHILE…ENDDO循環(huán)用于條件控制循環(huán)的執(zhí)行。例6.6逐條顯示學生表(student)中所有來自“上?!钡膶W生信息。CLEARUSEstudentLOCATEFORbirthplace="上海"DOWHILEFOUND()DISPLAYWAITWINDOWCONTINUEENDDOUSEUSEstudentm=0n=0DOWHILENOTEOF()IFstudent.gender="男"m=m+1ELSEn=n+1ENDIFSKIPENDDO?"男生人數(shù)"+STR(m),"女生人數(shù)"+STR(n)USE例6.7統(tǒng)計學生表中男女學生的人數(shù)。FOR…ENDFOR/NEXTFOR<循環(huán)變量>=<初值>TO<終值>[STEP<步長>]<語句組1>[LOOP][EXIT]<語句組2>ENDFOR/NEXTs=0n=1DOWHILEn<=10s=s+nn=n+1ENDDO?s例6.8求1+2+3+4+…+10。s=0FORn=1TO10s=s+nENDFOR?s累加算法思考:如何求100!?字符操作算法思考:如果用DOWHILE…ENDDO是否可以實現(xiàn)?
例6.10求字符串逆序,如已知字符串“abcdef”,請輸出逆序的結(jié)果。s="abcdef"sr=""FORi=LEN(s)TO1STEP-1sr=sr+SUBSTR(s,i,1)NEXT?"abcdef逆序的輸出結(jié)果:"+srSCAN…ENDSCANSCAN[范圍][FOR<條件表達式>]<語句組>ENDSCAN說明:(1)SCAN與ENDSCAN循環(huán)語句中隱含了EOF()和SKIP命令處理。(2)[范圍]表示記錄范圍,默認值為ALL。(3)FOR<條件表達式>表示只掃描滿足條件的記錄。CLEARUSEteacherSTORE0TOmSCANFORcation="博士"DISPLAYm=m+1ENDSCAN?"博士人數(shù)"+STR(m)USE例6.11統(tǒng)計并顯示具有博士學位的教師信息。USEstudentm=0n=0DOWHILENOTEOF()IFstudent.gender="男"m=m+1ELSEn=n+1ENDIFSKIPENDDO?"男生人數(shù)"+STR(m),"女生人數(shù)"+STR(n)USESCANENDSCAN思考:如何用SCAN…ENDSCAN實現(xiàn)統(tǒng)計學生男女人數(shù)?
6.3模塊化程序設(shè)計循環(huán)結(jié)構(gòu)可以實現(xiàn)同一個程序中某段程序反復執(zhí)行多次,但常常需要在同一個程序的不同位置多次執(zhí)行某段程序,或在不同程序中執(zhí)行同一程序段。因此在程序設(shè)計中,常把完成一個功能的程序編寫成一個單元,以便在其他程序中使用該功能時調(diào)用,這種為完成一個特定功能而編寫的程序段稱為自定義函數(shù)或過程。1.自定義函數(shù)函數(shù)定義FUNCTION<函數(shù)名>PARAMETERS<形參列表><命令語句序列>RETURN[<表達式>][ENDFUNC]不能與系統(tǒng)函數(shù)名以及內(nèi)存變量名相同用來接收主程序中的實參數(shù)據(jù)用于返回函數(shù)值。若省略該語句或表達式,則自定義函數(shù)等同于過程。注意:實參與形參一一對應(yīng)。函數(shù)調(diào)用格式:函數(shù)名([實參列表])例6.12編寫一個求n!的函數(shù)。FUNCTIONfactPARAMETERSnp=1FORi=1TOnp=p*iNEXTRETURNpENDFUNC注意:函數(shù)不能單獨執(zhí)行。在命令窗口調(diào)用fact函數(shù)求5!
,執(zhí)行過程:FUNCTIONfactPARAMETERSnp=1FORi=1TOnp=p*iNEXTRETURNpENDFUNC?fact(5)FUNCTIONfactPARAMETERSnp=1FORi=1TOnp=p*iNEXTRETURNpENDFUNC例6.13編寫程序求1!+2!+3!+…+10!s=0FORi=1TO10s=s+fact(i) NEXT?s在主程序中調(diào)用自定義函數(shù)。主程序自定義函數(shù)1.自定義過程過程定義PROCEDURE<過程名>PARAMETERS<形參列表><命令語句序列>[RETURN][ENDPROC]不能與系統(tǒng)函數(shù)名以及內(nèi)存變量名相同用來接收主程序中的實參數(shù)據(jù)無返回函數(shù)值注意:實參與形參一一對應(yīng)。過程調(diào)用格式:DO<過程名>with<實參列表>例6.14編寫一個過程求兩個數(shù)據(jù)的和。CLEARx=25y=38z=0DOsmwithx,y,z?"兩個數(shù)x,y的和是:",zPROCEDUREsmPARAMETERSX1,Y1,Z1Z1=X1+Y1ENDPROC注意:過程也不能單獨執(zhí)行。主程序自定義過程執(zhí)行過程3.參數(shù)傳遞在自定義函數(shù)和過程時,如果函數(shù)或過程需要從主程序獲取數(shù)據(jù)進行處理,則主程序調(diào)用函數(shù)或過程時會通過參數(shù)傳遞來完成。傳遞數(shù)據(jù)的稱為實參,而接收數(shù)據(jù)稱為形參。可作為實參對象:-常量-變量-表達式在參數(shù)傳遞過程中,實參傳遞數(shù)據(jù)給對應(yīng)的形參,此時系統(tǒng)才會給形參分配存儲空間,接收實參傳遞的數(shù)據(jù),當過程調(diào)用結(jié)束后,形參的空間將被撤銷。在參數(shù)傳遞過程中要注意以下幾點:-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年采購合同:電子產(chǎn)品批量采購及技術(shù)支持
- 2024版特種物品運輸協(xié)議3篇
- 2024年版企業(yè)租車服務(wù)協(xié)議規(guī)范化文件版B版
- 2024慶陽房屋租賃及租后維護服務(wù)合同3篇
- 2024年私募股權(quán)投資基金投融資合作協(xié)議3篇
- 2024年美甲行業(yè)勞動合同樣本
- 2024年度藝術(shù)品寄賣代理委托協(xié)議(含投資咨詢)3篇
- 2024年版建筑總承包協(xié)議解除條款明細一
- 2024年綿陽地區(qū)標準房屋租賃協(xié)議格式版B版
- 2025年度智能家居產(chǎn)品形象拍攝合作協(xié)議3篇
- 2024年甘肅省職業(yè)院校技能大賽養(yǎng)老照護(中職學生組)賽項樣題1
- 圓圈正義讀書分享課件
- 安平縣2024年小升初必考題數(shù)學檢測卷含解析
- 人教版數(shù)學二年級下冊全冊核心素養(yǎng)目標教學設(shè)計
- 人教版PEP小學英語三年級下冊單詞表(帶音標)
- 康美藥業(yè)財務(wù)分析案例
- 《無人機駕駛航空試驗基地(試驗區(qū))基礎(chǔ)設(shè)施使用、管理規(guī)范(征求意見稿)》
- 寵物醫(yī)療行業(yè)人力資源管理戰(zhàn)略研究
- 《了凡四訓》略說教學課件
- 項目15-1 蛋黃中免疫球蛋白的提取
- 電子招標投標交易平臺試題附有答案
評論
0/150
提交評論