



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第6章章 程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)6.1 6.1 程序文件的建立與運(yùn)行程序文件的建立與運(yùn)行6.2 6.2 結(jié)構(gòu)化程序設(shè)計(jì)初步結(jié)構(gòu)化程序設(shè)計(jì)初步6.3 6.3 順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì)6.4 6.4 程序的選擇結(jié)構(gòu)程序的選擇結(jié)構(gòu)6.5 6.5 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)6.6 6.6 多模塊程序設(shè)計(jì)多模塊程序設(shè)計(jì)6.7 6.7 參數(shù)傳遞與變量作用域參數(shù)傳遞與變量作用域 教學(xué)目的教學(xué)目的 了解面向過程的程序設(shè)計(jì)方法,結(jié)構(gòu)化程序設(shè)計(jì)的三種基本了解面向過程的程序設(shè)計(jì)方法,結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),子程序和過程的使用方法。結(jié)構(gòu),子程序和過程的使用方法。 基本要求基本要求 通過對三種結(jié)構(gòu)的學(xué)習(xí),可以進(jìn)
2、行簡單的程序設(shè)計(jì)通過對三種結(jié)構(gòu)的學(xué)習(xí),可以進(jìn)行簡單的程序設(shè)計(jì) 教學(xué)要點(diǎn)教學(xué)要點(diǎn) 循環(huán)嵌套,模塊調(diào)用,變量的作用域。循環(huán)嵌套,模塊調(diào)用,變量的作用域。 6.1 6.1 程序文件的建立與運(yùn)行程序文件的建立與運(yùn)行 程序:程序:為完成某一特定任務(wù)而組織編寫的一系列命令為完成某一特定任務(wù)而組織編寫的一系列命令和語句。和語句。程序文件:程序文件:程序以文件的形式存放于磁盤上,這個(gè)文件就稱程序以文件的形式存放于磁盤上,這個(gè)文件就稱為程序文件。為程序文件。(1 1)命令方式)命令方式: MODIFY COMMAND : MODIFY COMMAND |? 或或MODIFY file MODIFY file |
3、? |? 6.1.2 VFP6.1.2 VFP程序文件的建立與執(zhí)行程序文件的建立與執(zhí)行1.1.程序文件的建立(默認(rèn)擴(kuò)展名為程序文件的建立(默認(rèn)擴(kuò)展名為. .PRGPRG) 第一條命令中,文件的默認(rèn)擴(kuò)展名為第一條命令中,文件的默認(rèn)擴(kuò)展名為.PRG.PRG,可省略,第,可省略,第二條命令中,建立程序文件時(shí)文件擴(kuò)展名二條命令中,建立程序文件時(shí)文件擴(kuò)展名.PRG.PRG必須同時(shí)輸必須同時(shí)輸入,不能省略。入,不能省略。 在文件名前可直接指明該文件保存的路徑。在文件名前可直接指明該文件保存的路徑。 用用ENDEND(即(即CTRL+ENDCTRL+END鍵,以下類似)或鍵,以下類似)或WW將編輯結(jié)果存將編
4、輯結(jié)果存盤,或執(zhí)行盤,或執(zhí)行“文件文件”菜單中的菜單中的“保存保存”命令存盤;用命令存盤;用QQ或或ESCESC鍵放棄存盤,并退出編輯程序。鍵放棄存盤,并退出編輯程序。執(zhí)行該命令后,執(zhí)行該命令后,VFPVFP將打開一個(gè)用于輸入和編輯修改程將打開一個(gè)用于輸入和編輯修改程序的窗口,窗口的標(biāo)題欄所顯示的就是該命令中的文序的窗口,窗口的標(biāo)題欄所顯示的就是該命令中的文件名,如圖所示。件名,如圖所示。 (2 2)菜單方式)菜單方式: : “文件文件” ” “新建新建” ” 彈出彈出“新建新建”的對話框的對話框 “ “文件類型文件類型”框里選擇框里選擇“程序程序” ” 單擊按鈕單擊按鈕“新建文件新建文件”
5、” 彈出文本編輯窗彈出文本編輯窗口,在這個(gè)窗口中就可以輸入命令和語句了,最后,選擇系統(tǒng)菜口,在這個(gè)窗口中就可以輸入命令和語句了,最后,選擇系統(tǒng)菜單單“文件文件”里的菜單項(xiàng)里的菜單項(xiàng)“保存保存”,按照系統(tǒng)提示將輸入窗口中的,按照系統(tǒng)提示將輸入窗口中的程序保存起來。程序保存起來。(3) (3) 在在“項(xiàng)目管理器項(xiàng)目管理器”對話框中選擇對話框中選擇“代碼代碼”選項(xiàng)卡中的選項(xiàng)卡中的“程序程序項(xiàng)項(xiàng)”,再單擊,再單擊“新建新建”按鈕。按鈕。 (4)(4)利用其它編輯軟件建立和編輯命令文件利用其它編輯軟件建立和編輯命令文件由于由于FoxProFoxPro的命令文件屬于文本文件,因此可在的命令文件屬于文本文件
6、,因此可在WindowsWindows操作系操作系統(tǒng)下利用統(tǒng)下利用WORDWORD、WPSWPS等編輯軟件或等編輯軟件或DOSDOS操作系統(tǒng)下利用操作系統(tǒng)下利用EDITEDIT等編輯等編輯軟件來建立和編輯命令文件。軟件來建立和編輯命令文件。 示例:建立應(yīng)用程序示例:建立應(yīng)用程序L1.PRG L1.PRG ,功能為:打開表文件,功能為:打開表文件“學(xué)學(xué)生生.dbf”.dbf”,根據(jù)鍵入的學(xué)生姓名在該表文件中查找并輸出該學(xué)生,根據(jù)鍵入的學(xué)生姓名在該表文件中查找并輸出該學(xué)生的基本情況,關(guān)閉文件,返回。的基本情況,關(guān)閉文件,返回。命令窗口:命令窗口:MODI COMM VFPL1.PRG MODI C
7、OMM VFPL1.PRG 編輯窗口:編輯窗口:* *L1.PRGL1.PRG SET TALK OFF SET TALK OFF USE VFP USE VFP學(xué)生學(xué)生. .DBFDBF ACCEPT “ ACCEPT “請輸入學(xué)生姓名:請輸入學(xué)生姓名:” ” TO XMTO XM LOCATE FOR LOCATE FOR 姓名姓名= =XMXM ? ? 學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,性別性別, ,班級班級 USEUSE SET TALK OFF SET TALK OFF RETURN RETURN2.2.程序文件的修改程序文件的修改(1)(1)利用系統(tǒng)菜單,操作與建立程序文件相同。利用系統(tǒng)
8、菜單,操作與建立程序文件相同。(2)(2)在命令方式下,其操作與建立程序文件相同,但必須在命令方式下,其操作與建立程序文件相同,但必須帶文件名或帶文件名或“?”。(3)(3)若程序包含在一個(gè)項(xiàng)目中,可以在若程序包含在一個(gè)項(xiàng)目中,可以在“項(xiàng)目管理器項(xiàng)目管理器”對對話框中選定它,再單擊話框中選定它,再單擊“修改修改”命令按鈕。命令按鈕。3.3.程序文件的執(zhí)行程序文件的執(zhí)行方法一、在命令方式下執(zhí)行命令文件方法一、在命令方式下執(zhí)行命令文件 DODO程序文件名程序文件名WITH WITH 方法二、使用系統(tǒng)菜單執(zhí)行命令文件方法二、使用系統(tǒng)菜單執(zhí)行命令文件“程序程序” “” “運(yùn)行運(yùn)行( (D)D)”,然后
9、在彈出的,然后在彈出的“運(yùn)行運(yùn)行”對話對話框中,選擇框中,選擇“程序列表程序列表”中要執(zhí)行的程序文件名,再單擊中要執(zhí)行的程序文件名,再單擊“運(yùn)行運(yùn)行”按鈕,程序就可以執(zhí)行。按鈕,程序就可以執(zhí)行。方法三、若程序包含在一個(gè)項(xiàng)目中,則可以在方法三、若程序包含在一個(gè)項(xiàng)目中,則可以在“項(xiàng)目管理項(xiàng)目管理器器”對話框中選定它,再單擊對話框中選定它,再單擊“運(yùn)行運(yùn)行”按鈕。按鈕。4.4.程序書寫規(guī)則程序書寫規(guī)則(1)(1)命令分行命令分行程序中每行命令都以回車鍵結(jié)束,一行只能寫一條命令。程序中每行命令都以回車鍵結(jié)束,一行只能寫一條命令。若命令需分行書寫,應(yīng)在一行終了時(shí)健入繼行符若命令需分行書寫,應(yīng)在一行終了時(shí)
10、健入繼行符“;”,然后,然后按回車鍵,繼續(xù)在下一行輸入。按回車鍵,繼續(xù)在下一行輸入。 (2)(2)命令注釋命令注釋 程序中可插入注釋,以提高程序的可讀性。程序中可插入注釋,以提高程序的可讀性。 注釋行以符號(hào)注釋行以符號(hào)“* *”開頭,它是一條非執(zhí)行命令,僅在程序開頭,它是一條非執(zhí)行命令,僅在程序中顯示。命令行的后面也可添加注釋,這種注釋以符號(hào)中顯示。命令行的后面也可添加注釋,這種注釋以符號(hào)“&”&”開頭。開頭。例如,例如,* * 本程序用于修改表的指定紀(jì)錄本程序用于修改表的指定紀(jì)錄 SET DATA USA & SET DATA USA & 日期格式置為日期格式
11、置為 MM-DD-YY MM-DD-YY 6.1.36.1.3、常使用的命令。、常使用的命令。命令命令 set talk set talk 命令命令格式:格式:set talk on/offset talk on/off功能:該命令控制其它命令執(zhí)行的結(jié)果輸出不輸出到屏幕上功能:該命令控制其它命令執(zhí)行的結(jié)果輸出不輸出到屏幕上命令命令 set print set print 命令命令格式:格式:set print off/onset print off/on功能:該命令控制輸出結(jié)果不輸出輸出到打印機(jī)打印輸出功能:該命令控制輸出結(jié)果不輸出輸出到打印機(jī)打印輸出命令命令文本輸出命令文本輸出命令格式格式1
12、 1:texttext 文本信息文本信息 endtextendtext功能:此命令把文本信息內(nèi)容顯示出來,允許文本信功能:此命令把文本信息內(nèi)容顯示出來,允許文本信息出現(xiàn)多行,它只能在程序工作方式中使用,而且息出現(xiàn)多行,它只能在程序工作方式中使用,而且TEXTTEXT與與ENDTEXTENDTEXT必須成對出現(xiàn)。必須成對出現(xiàn)。格式格式2 2:功能:能將一行文本信息的內(nèi)容按書寫形式的原樣顯示出功能:能將一行文本信息的內(nèi)容按書寫形式的原樣顯示出來。來。 與與的區(qū)別在于前者是在下一行的第一列開始輸出,的區(qū)別在于前者是在下一行的第一列開始輸出,而后者則不換行,在當(dāng)前光標(biāo)位置處開始顯示。而后者則不換行,在
13、當(dāng)前光標(biāo)位置處開始顯示。命令命令5 5:清屏命令:清屏命令格式:格式:clearclear 功能:清屏,常將此命令用于程序開始,保持屏幕整潔功能:清屏,常將此命令用于程序開始,保持屏幕整潔. .命令命令4 4 注釋語句注釋語句 格式一:格式一:note note 注釋字符注釋字符 格式二:格式二: * * 注釋字符注釋字符 格式三:格式三:& & 注釋注釋 功能:格式一、格式二一般對程序作注釋。格式三注釋功能:格式一、格式二一般對程序作注釋。格式三注釋某命令語句,只用在被注釋的命令行之后。某命令語句,只用在被注釋的命令行之后。命令命令6 6:返回命令:返回命令格式:格式: re
14、turn to masterreturn to master 功能:功能:return return 在一個(gè)主程序中用于結(jié)束此程序的運(yùn)在一個(gè)主程序中用于結(jié)束此程序的運(yùn)行并返回命令窗口;在子程序中用于結(jié)束子程序并返回到調(diào)行并返回命令窗口;在子程序中用于結(jié)束子程序并返回到調(diào)用此過程中的下一語句用此過程中的下一語句 return to masterreturn to master將過程的調(diào)用直接返回主程序。將過程的調(diào)用直接返回主程序。 中止程序執(zhí)行命令中止程序執(zhí)行命令格式:格式:CANCELCANCEL功能:中止功能:中止FoxProFoxPro程序的執(zhí)行。程序的執(zhí)行。說明:當(dāng)說明:當(dāng)FoxProF
15、oxPro程序運(yùn)行到該語句時(shí),將不再執(zhí)行其后面的程序運(yùn)行到該語句時(shí),將不再執(zhí)行其后面的所有語句,而直接退出程序,返回到命令窗口,同時(shí)關(guān)閉所所有語句,而直接退出程序,返回到命令窗口,同時(shí)關(guān)閉所有已打開的文件。有已打開的文件。 命令命令8. 8. 非格式化交互式命令非格式化交互式命令單字符接收命令(即等待命令)單字符接收命令(即等待命令)格式:格式:WAITWAIT TO TOWINDOWATWINDOWAT , NOWAIT CLEAR|NOCLEAR TIMEOUT NOWAIT CLEAR|NOCLEAR TIMEOUT功能:暫停程序的執(zhí)行,等待用戶輸入一個(gè)字符或按任功能:暫停程序的執(zhí)行,等
16、待用戶輸入一個(gè)字符或按任一鍵。也可只用于輸出一條提示信息。一鍵。也可只用于輸出一條提示信息。說明說明 WAIT WAIT命令使用命令使用VFPVFP程序暫停運(yùn)行,等用戶按任意鍵(或回程序暫停運(yùn)行,等用戶按任意鍵(或回車)后,程序繼續(xù)執(zhí)行。車)后,程序繼續(xù)執(zhí)行。 用于輸出一條提示信息。如缺省用于輸出一條提示信息。如缺省 ,則執(zhí)行命令后屏幕顯示則執(zhí)行命令后屏幕顯示“按任意鍵繼續(xù)按任意鍵繼續(xù)”,提示用戶按任,提示用戶按任意鍵,系統(tǒng)將繼續(xù)運(yùn)行。意鍵,系統(tǒng)將繼續(xù)運(yùn)行。 用于保存從鍵盤鍵入的字符,如果不選用于保存從鍵盤鍵入的字符,如果不選TOTO子句,子句,則輸入的數(shù)據(jù)不予保存。則輸入的數(shù)據(jù)不予保存。 W
17、indows Windows子句可使主屏幕上出現(xiàn)一個(gè)子句可使主屏幕上出現(xiàn)一個(gè)WAITWAIT提示窗口,用于提示窗口,用于輸出提示信息,該窗口的位置由輸出提示信息,該窗口的位置由ATAT選項(xiàng)的選項(xiàng)的 , 來指定,來指定,若缺省若缺省ATAT選項(xiàng),選項(xiàng), 在主屏幕右上角顯示。在主屏幕右上角顯示。 若使用若使用NOWAITNOWAIT選項(xiàng),系統(tǒng)將不等用戶按鍵選項(xiàng),系統(tǒng)將不等用戶按鍵, ,立即往下執(zhí)行。立即往下執(zhí)行。字符串接收命令字符串接收命令格式:格式:ACCEPT ACCEPT TO TO內(nèi)存變量內(nèi)存變量 功能:暫停程序的執(zhí)行,等待用戶輸入字符串?dāng)?shù)據(jù)。功能:暫停程序的執(zhí)行,等待用戶輸入字符串?dāng)?shù)據(jù)。
18、任意類型數(shù)據(jù)接收命令任意類型數(shù)據(jù)接收命令格式:格式:INPUT INPUT TO TO 功能:暫停程序的執(zhí)行,等待用戶輸入數(shù)據(jù)。功能:暫停程序的執(zhí)行,等待用戶輸入數(shù)據(jù)。 系統(tǒng)執(zhí)行該語句時(shí),暫停正在運(yùn)行著的程序,并顯示提系統(tǒng)執(zhí)行該語句時(shí),暫停正在運(yùn)行著的程序,并顯示提示信息,然后等待用戶從鍵盤輸入數(shù)據(jù),它允許用戶輸入多示信息,然后等待用戶從鍵盤輸入數(shù)據(jù),它允許用戶輸入多個(gè)字符直至輸入回車為止。并將輸入的信息以字符串的形式個(gè)字符直至輸入回車為止。并將輸入的信息以字符串的形式存儲(chǔ)在內(nèi)存變量中,故常用于輸入字符型的數(shù)據(jù)。存儲(chǔ)在內(nèi)存變量中,故常用于輸入字符型的數(shù)據(jù)。 WAIT WAIT和和ACCEPTA
19、CCEPT的相同點(diǎn)是:它們接收的均是字符型數(shù)據(jù),的相同點(diǎn)是:它們接收的均是字符型數(shù)據(jù),故兩者所接收的字符型數(shù)據(jù)都無需用單、雙引號(hào)或方括號(hào)括故兩者所接收的字符型數(shù)據(jù)都無需用單、雙引號(hào)或方括號(hào)括起來。起來。 WAIT WAIT和和ACCEPTACCEPT的最大區(qū)別是:的最大區(qū)別是:WAITWAIT只接收單個(gè)字符,并只接收單個(gè)字符,并且不需要輸入回車鍵,而且不需要輸入回車鍵,而ACCEPTACCEPT可接收多個(gè)字符,且必須用可接收多個(gè)字符,且必須用回車鍵來結(jié)束字符串的輸入?;剀囨I來結(jié)束字符串的輸入。說明:說明: WAIT WAIT和和ACCEPTACCEPT只能滿足字符型變量的賦值,而只能滿足字符型
20、變量的賦值,而INPUTINPUT能滿能滿足字符、數(shù)值、日期、邏輯型變量的賦值足字符、數(shù)值、日期、邏輯型變量的賦值, ,可用于輸入各種類可用于輸入各種類型的數(shù)據(jù)。型的數(shù)據(jù)。使用使用INPUTINPUT語句若給變量賦的值是字符型,需加定界符,否則語句若給變量賦的值是字符型,需加定界符,否則系統(tǒng)會(huì)把它當(dāng)成一個(gè)變量名處理;若給變量賦的值是邏輯型系統(tǒng)會(huì)把它當(dāng)成一個(gè)變量名處理;若給變量賦的值是邏輯型常量,需用定界符常量,需用定界符(.)(.)括?。惠斎肴掌谛统A績啥隧毤踊ɡㄌ?hào)括??;輸入日期型常量兩端須加花括號(hào);輸入數(shù)值型常量,則直接輸入整數(shù)或?qū)崝?shù),也可以輸入;輸入數(shù)值型常量,則直接輸入整數(shù)或?qū)崝?shù),也可以
21、輸入一個(gè)表達(dá)式。一個(gè)表達(dá)式。 提示信息的內(nèi)容同提示信息的內(nèi)容同WAITWAIT和和ACCEPTACCEPT語句。語句。9.9.格式化輸入輸出命令格式化輸入輸出命令格式化輸出語句:格式化輸出語句: SAYSAY格式:格式: 行行, ,列列SAYSAY表達(dá)式表達(dá)式功能:在指定的行和列輸出表達(dá)式的值。功能:在指定的行和列輸出表達(dá)式的值。說明:說明:行行, ,列確定光標(biāo)的位置。把顯示屏看作是由行和列組成列確定光標(biāo)的位置。把顯示屏看作是由行和列組成的二維坐標(biāo)系,其坐標(biāo)系為的二維坐標(biāo)系,其坐標(biāo)系為2525行行* *8080列,規(guī)定行值取值范圍是列,規(guī)定行值取值范圍是整數(shù)整數(shù)0 02424,列值取值范圍是整
22、數(shù),列值取值范圍是整數(shù)0 07979。那么,屏幕最左上角。那么,屏幕最左上角字符的坐標(biāo)就為(字符的坐標(biāo)就為(0 0,0 0),最右下角字符的坐標(biāo)就為(),最右下角字符的坐標(biāo)就為(2424,7979)。)。例如:例如:55,30 30 SAY “ABCD”SAY “ABCD”執(zhí)行結(jié)果將在屏幕的第執(zhí)行結(jié)果將在屏幕的第5 5行第行第3030列位置開始顯示字符串列位置開始顯示字符串ABCD ABCD 格式化輸入語句:格式化輸入語句:格式:格式:SAYSAY GET GET READ READ 功能:定位顯示功能:定位顯示GETGET變量的值;變量的值;READREAD命令激活當(dāng)前未被激活的命令激活當(dāng)前
23、未被激活的所有所有GETGET變量,用戶就可對這些變量,用戶就可對這些GETGET變量進(jìn)行編輯。變量進(jìn)行編輯。說明:說明: GETGET READ READ給變量賦值的方式為全屏幕操作。開始執(zhí)行時(shí)光給變量賦值的方式為全屏幕操作。開始執(zhí)行時(shí)光標(biāo)停在標(biāo)停在GETGET變量顯示區(qū)的第一個(gè)位置上,利用方向鍵可在顯示區(qū)內(nèi)變量顯示區(qū)的第一個(gè)位置上,利用方向鍵可在顯示區(qū)內(nèi)上下左右移動(dòng)光標(biāo)。當(dāng)光標(biāo)在最后一個(gè)上下左右移動(dòng)光標(biāo)。當(dāng)光標(biāo)在最后一個(gè)GETGET變量的顯示位置時(shí),按變量的顯示位置時(shí),按下回車鍵則數(shù)據(jù)存入變量,且全屏幕編輯結(jié)束。接著就執(zhí)行下回車鍵則數(shù)據(jù)存入變量,且全屏幕編輯結(jié)束。接著就執(zhí)行READREAD
24、的的后繼命令。后繼命令。 若缺省若缺省SAYSAY子句,子句,GETGET變量值從由變量值從由 指定的坐標(biāo)開始顯示;指定的坐標(biāo)開始顯示;含有含有SAYSAY子句時(shí)先顯示其表達(dá)式值,然后隔一個(gè)字符接著顯示子句時(shí)先顯示其表達(dá)式值,然后隔一個(gè)字符接著顯示GETGET變變量的值。量的值。 GET GET變量必須具有初值,除變量的類型遵照初值外,其長度也將變量必須具有初值,除變量的類型遵照初值外,其長度也將由初值決定。故使用前必須先定義。由初值決定。故使用前必須先定義。6.2 6.2 結(jié)構(gòu)化程序設(shè)計(jì)初步結(jié)構(gòu)化程序設(shè)計(jì)初步 1.1.算法及流程圖算法及流程圖(1)(1)算法的概念算法的概念: :根據(jù)問題要求
25、擬定用計(jì)算機(jī)求解的策略和步根據(jù)問題要求擬定用計(jì)算機(jī)求解的策略和步驟,并把它用某種工具描述出來,稱之為驟,并把它用某種工具描述出來,稱之為“算法設(shè)計(jì)算法設(shè)計(jì)”。 (2)(2)算法的流程圖描述算法的流程圖描述 : :用一些簡單的幾何框圖表示各種類型用一些簡單的幾何框圖表示各種類型的操作,然后用帶箭頭的有向流線將各個(gè)框圖連結(jié)起來,以的操作,然后用帶箭頭的有向流線將各個(gè)框圖連結(jié)起來,以表示其執(zhí)行的先后順序,這種框圖稱為表示其執(zhí)行的先后順序,這種框圖稱為“流程圖流程圖”。2.2.結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法 結(jié)構(gòu)化程序指整個(gè)程序由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成結(jié)構(gòu)化程序指整個(gè)程序由順序、選擇、
26、循環(huán)三種基本結(jié)構(gòu)組成。 (1)(1)自頂向下逐步求精:自頂向下逐步求精:從全局出發(fā),通盤考慮,把問題的整體從全局出發(fā),通盤考慮,把問題的整體分解成若干個(gè)相對獨(dú)立的小問題,然后再把小問題分解為若干分解成若干個(gè)相對獨(dú)立的小問題,然后再把小問題分解為若干個(gè)相對獨(dú)立的更小的問題,直到能表示成程序?yàn)橹?。個(gè)相對獨(dú)立的更小的問題,直到能表示成程序?yàn)橹埂?(2)(2)模塊化設(shè)計(jì):模塊化設(shè)計(jì):由一個(gè)大問題分解成若干個(gè)相對獨(dú)立的小問題,由一個(gè)大問題分解成若干個(gè)相對獨(dú)立的小問題,每個(gè)小問題實(shí)現(xiàn)一定的功能,稱為功能模塊。對大的功能模塊,每個(gè)小問題實(shí)現(xiàn)一定的功能,稱為功能模塊。對大的功能模塊,采用自頂向下逐步求精的方法
27、劃分為更小的功能模塊。各功能采用自頂向下逐步求精的方法劃分為更小的功能模塊。各功能模塊的程序可單獨(dú)編寫和調(diào)試,這樣便于多人協(xié)助完成較大型模塊的程序可單獨(dú)編寫和調(diào)試,這樣便于多人協(xié)助完成較大型的程序設(shè)計(jì)。的程序設(shè)計(jì)。3. 3. 程序設(shè)計(jì)的步驟程序設(shè)計(jì)的步驟(1)(1)分析問題分析問題主要是分析待編程序要解決什么問題,需要輸入什么主要是分析待編程序要解決什么問題,需要輸入什么數(shù)據(jù),需要做哪些處理,需要輸出什么數(shù)據(jù)等等。數(shù)據(jù),需要做哪些處理,需要輸出什么數(shù)據(jù)等等。(2)(2)畫流程圖畫流程圖用流程圖來描述處理問題的過程。用流程圖來描述處理問題的過程。(3)(3)編寫程序編寫程序根據(jù)程序流程圖,將所需
28、要的根據(jù)程序流程圖,將所需要的VFPVFP的命令、語句組織在的命令、語句組織在一起。一起。(4)(4)調(diào)試調(diào)試通過運(yùn)行程序?qū)Τ绦蜻M(jìn)行正確性檢驗(yàn)和測試。通過運(yùn)行程序?qū)Τ绦蜻M(jìn)行正確性檢驗(yàn)和測試。 符符 號(hào)號(hào) 名名 稱稱 功功 能能起止框起止框描述流程圖的開始和結(jié)束描述流程圖的開始和結(jié)束處理框處理框代表一個(gè)處理過程,其特征是一代表一個(gè)處理過程,其特征是一個(gè)入口,一個(gè)出口個(gè)入口,一個(gè)出口判斷框判斷框?yàn)檫x出幾條路線中的一條而進(jìn)行為選出幾條路線中的一條而進(jìn)行的判斷(條件轉(zhuǎn)移操作)的判斷(條件轉(zhuǎn)移操作)輸入輸輸入輸出框出框表示輸入輸出表示輸入輸出 流程線流程線表示信息流動(dòng)的通道表示信息流動(dòng)的通道 連接符連接
29、符一個(gè)流程圖在一頁紙上畫不下時(shí),一個(gè)流程圖在一頁紙上畫不下時(shí),用該符號(hào)連接用該符號(hào)連接4.4.流程圖介紹流程圖介紹(1)(1)繪制流程圖時(shí)所用到的基本符號(hào)繪制流程圖時(shí)所用到的基本符號(hào)說明:說明: 處理框中含有一個(gè)語句功能或一段程序,一般用自然處理框中含有一個(gè)語句功能或一段程序,一般用自然語言或數(shù)學(xué)表達(dá)式描述,盡量簡明扼要。語言或數(shù)學(xué)表達(dá)式描述,盡量簡明扼要。 流向線要清晰明確,不能相互交叉,不能出現(xiàn)死循環(huán)流向線要清晰明確,不能相互交叉,不能出現(xiàn)死循環(huán)流向線。流向線。 無論框圖描述的處理過程如何,所畫框圖總是只有一無論框圖描述的處理過程如何,所畫框圖總是只有一個(gè)入口,最后匯集到一個(gè)出口。個(gè)入口,
30、最后匯集到一個(gè)出口。 例:計(jì)算例:計(jì)算1 12 23 3100100。 SET TALK OFFSET TALK OFF S=0 S=0 FOR N=1 TO 100 FOR N=1 TO 100 S=S+N S=S+N ENDF ENDF ? 1 ? 12 23 3100=,S100=,S RETURN RETURN 算法流程圖 2)2)舉例:用框圖描述求一元二次方程舉例:用框圖描述求一元二次方程ax2+bxax2+bx+c=0+c=0的實(shí)根的實(shí)根的過程的過程分析:分析:首先輸入首先輸入a,b,ca,b,c的值,其次,計(jì)算判斷求一元二次方程實(shí)的值,其次,計(jì)算判斷求一元二次方程實(shí)根的條件根的條
31、件b b* *b-4b-4* *a a* *c c的值,最后判斷的值,最后判斷b b* *b-4b-4* *a a* *c c的值是否的值是否滿足實(shí)根存在的條件,若不滿足,則輸出方程無實(shí)根,滿足實(shí)根存在的條件,若不滿足,則輸出方程無實(shí)根,若滿足則方程有二個(gè)實(shí)根,輸出兩實(shí)根若滿足則方程有二個(gè)實(shí)根,輸出兩實(shí)根x1,x2x1,x2:x1=(-b+sqrtx1=(-b+sqrt(b(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a)x2=(-b-sqrtx2=(-b-sqrt(b(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a)6.3 順序結(jié)構(gòu)程序設(shè)計(jì)順序
32、結(jié)構(gòu)程序設(shè)計(jì) 1.1.順序結(jié)構(gòu)順序結(jié)構(gòu) 程序運(yùn)行時(shí),按照命令(語句)的排列順序逐條執(zhí)行,程序運(yùn)行時(shí),按照命令(語句)的排列順序逐條執(zhí)行,這種結(jié)構(gòu)就稱為順序結(jié)構(gòu)。這種結(jié)構(gòu)就稱為順序結(jié)構(gòu)。 2.2.簡單的輸入輸出語句簡單的輸入輸出語句 (1)(1)數(shù)據(jù)輸入語句數(shù)據(jù)輸入語句:INPUT :INPUT 1)1)格式格式: INPUT : INPUT TO TO 2)2)功能功能: :暫停程序運(yùn)行,顯示提示信息,等待用戶從鍵盤上輸入數(shù)暫停程序運(yùn)行,顯示提示信息,等待用戶從鍵盤上輸入數(shù)據(jù),用戶可以輸入任意合法的表達(dá)式。據(jù),用戶可以輸入任意合法的表達(dá)式。 (2)(2)單字符輸入語句單字符輸入語句: WAIT
33、 : WAIT 1)1)格式格式:WAIT :WAIT TO TO WINDOWS WINDOWS 2)2)功能功能: :暫停程序運(yùn)行,顯示提示信息,等待用戶鍵入任何一個(gè)鍵,暫停程序運(yùn)行,顯示提示信息,等待用戶鍵入任何一個(gè)鍵,然后繼續(xù)執(zhí)行程序。然后繼續(xù)執(zhí)行程序。 (3)(3)簡單輸出語句:?、簡單輸出語句:?、? ? 1)1)格式格式:?/? :?/? 2)2)功能功能: :依次計(jì)算并顯示表達(dá)式表中各表達(dá)式的值,所顯示的依次計(jì)算并顯示表達(dá)式表中各表達(dá)式的值,所顯示的值與值之間間隔一個(gè)空格。值與值之間間隔一個(gè)空格。 (4) (4) 信息顯示函數(shù)信息顯示函數(shù): MESSAGEBOX( ) : ME
34、SSAGEBOX( ) 1)1)格式格式: MESSAGEBOX(: MESSAGEBOX(,) ) 2)2)功能功能: :暫停程序運(yùn)行,在對話框中顯示提示信息,等待用戶暫停程序運(yùn)行,在對話框中顯示提示信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)表示單擊的是哪個(gè)按鈕。單擊按鈕,并返回一個(gè)整數(shù)表示單擊的是哪個(gè)按鈕。 由三個(gè)數(shù)碼相加產(chǎn)生,即由三個(gè)數(shù)碼相加產(chǎn)生,即: : + 例例:MESSAGEBOX:MESSAGEBOX函數(shù)舉例函數(shù)舉例 MESSAGEBOX函數(shù)舉例函數(shù)舉例對話框圖示對話框圖示 MESSAGEBOX(“歡迎使用本系統(tǒng)!”) MESSAGEBOX(“刪除記錄?”,1+48+256) MES
35、SAGEBOX(“繼續(xù)執(zhí)行嗎?”,3,”請確認(rèn)”)3.3.環(huán)境設(shè)置語句環(huán)境設(shè)置語句環(huán)境設(shè)置語句:環(huán)境設(shè)置語句:SET SET 設(shè)置系統(tǒng)環(huán)境和狀態(tài)的語句為設(shè)置系統(tǒng)環(huán)境和狀態(tài)的語句為 SETSET語語句,句,SETSET語句實(shí)際上是一個(gè)語句組,分為兩種格式:語句實(shí)際上是一個(gè)語句組,分為兩種格式: 格式格式 SET SET ON/OFF ON/OFF 格式格式 SET SET TO TO 常用的幾個(gè)常用的幾個(gè)SETSET語句語句: : SET DEFAULT TO SET DEFAULT TO 功能:設(shè)置默認(rèn)的工作目錄。功能:設(shè)置默認(rèn)的工作目錄。 (2) SET PATH TO (2) SET PA
36、TH TO 功能:設(shè)置搜索路徑。功能:設(shè)置搜索路徑。(3) SET TALK ON/OFF (3) SET TALK ON/OFF 功能功能: :控制是否使某些命令產(chǎn)生屏幕控制是否使某些命令產(chǎn)生屏幕顯示顯示 (4) SET PRINT ON/OFF (4) SET PRINT ON/OFF 功能:控制屏幕上的輸出內(nèi)容是否同時(shí)功能:控制屏幕上的輸出內(nèi)容是否同時(shí)送打印機(jī)打印。送打印機(jī)打印。4.4.注釋注釋 (1)(1)注釋語句注釋語句 1)1)格式格式 * */NOTE /NOTE 2)2)功能功能 注釋語句是非執(zhí)行語句,它們不對計(jì)算機(jī)產(chǎn)生任何操注釋語句是非執(zhí)行語句,它們不對計(jì)算機(jī)產(chǎn)生任何操作作,
37、僅僅對程序起注解作用。僅僅對程序起注解作用。 (2)(2)行末注釋行末注釋 行末注釋用在語句(命令)末尾,以行末注釋用在語句(命令)末尾,以“&”&”起頭,后跟本行的注起頭,后跟本行的注釋內(nèi)容。釋內(nèi)容。6.3.1 6.3.1 順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì)1.1.概念概念順序結(jié)構(gòu)程序:自始至終嚴(yán)格按照程序中語句的先后順序逐順序結(jié)構(gòu)程序:自始至終嚴(yán)格按照程序中語句的先后順序逐條執(zhí)行,是最基本、最普遍的結(jié)構(gòu)形式。條執(zhí)行,是最基本、最普遍的結(jié)構(gòu)形式。順序結(jié)構(gòu)的流程圖:順序結(jié)構(gòu)的流程圖:順序結(jié)構(gòu)順序結(jié)構(gòu)ABc例:編程,根據(jù)輸入的半徑值,計(jì)算出相應(yīng)的圓的周長。例:編程,根據(jù)輸入的半徑值
38、,計(jì)算出相應(yīng)的圓的周長。 SET TALK OFFSET TALK OFF CLEAR CLEAR INPUT “ INPUT “請輸入圓的半徑:請輸入圓的半徑:” ” TO RTO R L=2 L=2* *3.14163.1416* *R R 5,5 SAY “ 5,5 SAY “圓的周長是:圓的周長是:”+ +STR(L,6,3)STR(L,6,3) SET TALK ON SET TALK ON6.4 程序的選擇結(jié)構(gòu)程序的選擇結(jié)構(gòu)定義:分支結(jié)構(gòu):就是按照一定的條件由判斷語句或選擇語定義:分支結(jié)構(gòu):就是按照一定的條件由判斷語句或選擇語句構(gòu)成的雙重或多重走向的程序。句構(gòu)成的雙重或多重走向的程
39、序。語語 句句 行行條件表達(dá)式條件表達(dá)式語句行序列語句行序列ENDIF后面的語句后面的語句YN簡單分支結(jié)構(gòu)簡單分支結(jié)構(gòu)的流程圖的流程圖1 1)簡單分支格式:)簡單分支格式: IF IF ENDIFENDIF注:注:IFIF和和ENDIFENDIF必須成對出現(xiàn)必須成對出現(xiàn)說明:說明:(1)IF .ENDIF(1)IF .ENDIF配對組成一條語句,缺一不可。配對組成一條語句,缺一不可。(2)IF .ENDIF(2)IF .ENDIF語句只能在程序中使用,不能使用于交互式語句只能在程序中使用,不能使用于交互式狀態(tài)。狀態(tài)。 (3)(3)該語句的執(zhí)行過程是:首先對邏輯表達(dá)式進(jìn)行判斷,然后該語句的執(zhí)行過
40、程是:首先對邏輯表達(dá)式進(jìn)行判斷,然后根據(jù)邏輯表達(dá)式的取值確定是否執(zhí)行根據(jù)邏輯表達(dá)式的取值確定是否執(zhí)行 。當(dāng)。當(dāng) 的值為的值為“真真”時(shí),順序執(zhí)行時(shí),順序執(zhí)行IFIF與與ENDIFENDIF之間的語句序列,之間的語句序列,然后再執(zhí)行然后再執(zhí)行ENDIFENDIF后的語句;當(dāng)邏輯表達(dá)式的值為后的語句;當(dāng)邏輯表達(dá)式的值為“假假”時(shí),時(shí),不執(zhí)行不執(zhí)行IFIF與與ENDIFENDIF之間的語句而直接執(zhí)行之間的語句而直接執(zhí)行ENDIFENDIF后面的語句。后面的語句。邏輯表達(dá)式也稱為條件,故以后敘述中邏輯表達(dá)式也簡稱為邏輯表達(dá)式也稱為條件,故以后敘述中邏輯表達(dá)式也簡稱為條件。條件。例例: :從鍵盤接收兩個(gè)
41、數(shù),在屏幕輸出大數(shù)。從鍵盤接收兩個(gè)數(shù),在屏幕輸出大數(shù)。 INPUT X= TO XINPUT X= TO X INPUT Y= TO Y INPUT Y= TO Y IF XY & IF XY &如果如果XY,XY,把把X X與與Y Y交換交換 T=X &T=X &引入第三個(gè)變量引入第三個(gè)變量T,T,進(jìn)行三角交換進(jìn)行三角交換 X=YX=Y Y=T Y=T ENDIF ENDIF ?X ?X RETURN RETURN 2) 雙邊分支格式:雙邊分支格式: IF ELSE ENDIF條件成立?條件成立?語句序列語句序列1語句序列語句序列2Endif后的語句后的語句Y
42、N雙邊分支的流程圖雙邊分支的流程圖說明:該語句執(zhí)行過程是:首先判斷邏輯說明:該語句執(zhí)行過程是:首先判斷邏輯表達(dá)式的值是否為真,若為真,執(zhí)行表達(dá)式的值是否為真,若為真,執(zhí)行 ,而不執(zhí)行,而不執(zhí)行 ,并,并從從ENDIFENDIF后面的語句開始繼續(xù)執(zhí)行;若為假,后面的語句開始繼續(xù)執(zhí)行;若為假,則不執(zhí)行則不執(zhí)行 1,而執(zhí)行,而執(zhí)行 ,然后再執(zhí)行,然后再執(zhí)行ENDIFENDIF后面的語句。后面的語句。 例例:編一個(gè)程序,輸入一個(gè)教工號(hào),在編一個(gè)程序,輸入一個(gè)教工號(hào),在STAFF表中查找,若查到就表中查找,若查到就給該教師增加給該教師增加100元基本工資,并在信息窗口提示相應(yīng)的信息;若查元基本工資,并在
43、信息窗口提示相應(yīng)的信息;若查不到則提示不到則提示“查無此人!查無此人!”。vOPEN DATABASE 教學(xué)管理教學(xué)管理 &打開打開“教學(xué)管理教學(xué)管理”庫作為當(dāng)前庫庫作為當(dāng)前庫vUSE STAFF &打開當(dāng)前庫中打開當(dāng)前庫中STAFF表表v CLEARv INPUT 請輸入教工號(hào):請輸入教工號(hào): TO JGH v LOCATE ALL FOR 教工號(hào)教工號(hào)=JGHv IF FOUND()v REPLACE 基本工資基本工資 WITH 基本工資基本工資+100v =MESSAGEBOX(該教師的基本工資已增加該教師的基本工資已增加100元元”)v ELSEv =MESSAGEBO
44、X(查無此人!查無此人!)v ENDIFv CLOSE DATABASE &關(guān)閉當(dāng)前庫關(guān)閉當(dāng)前庫v RETURNIF語句多重嵌套一般格式:語句多重嵌套一般格式: IF ELSE IF ELSE IF ELSE ENDIF ENDIF ENDIF3)多分支結(jié)構(gòu)多分支結(jié)構(gòu)注:注: (1)IF、ELSE(可不選可不選)、ENDIF必須成對使用必須成對使用 (2)最好采用縮格(鋸齒形)的書寫方式)最好采用縮格(鋸齒形)的書寫方式多分支程序用于解決要根據(jù)多種條件,從各種情況中選擇一種進(jìn)行處理的問題。多分支程序用于解決要根據(jù)多種條件,從各種情況中選擇一種進(jìn)行處理的問題。條件條件n條件條件2條件條件
45、1語句序列語句序列1語句序列語句序列n+1語句序列語句序列n語句序列語句序列2ENDCASE的下一語的下一語句句情況判斷語句格式情況判斷語句格式:DO CASE分支程序用于解決要根據(jù)多種條件,從各種情況中選擇一種進(jìn) CASE CASE CASE OTHERWISE ENDCASE說明:說明:DO CASEDO CASE和和ENDCASEENDCASE須成對出現(xiàn)須成對出現(xiàn)在情況語句中,如果邏輯表達(dá)在情況語句中,如果邏輯表達(dá)式的值為真的情況多于一個(gè),則式的值為真的情況多于一個(gè),則僅執(zhí)行第一個(gè)邏輯表達(dá)式值為真僅執(zhí)行第一個(gè)邏輯表達(dá)式值為真的語句系列。的語句系列。DO CASEDO CASE語句之間可以
46、嵌套使用,語句之間可以嵌套使用,DO CASEDO CASE語句和語句和IFIF語句也可以嵌套語句也可以嵌套使用使用DO CASEDO CASE語句和語句和DO WHILEDO WHILE也可也可以嵌套使用。以嵌套使用。 例例: :顯示當(dāng)前季節(jié)程序。顯示當(dāng)前季節(jié)程序。 M=MONTH(DATE() &M=MONTH(DATE() &獲取當(dāng)前月份獲取當(dāng)前月份 DO CASE DO CASE CASE M=2 OR M=12 CASE M=3 AND M=3 AND M=6 AND M=6 AND M=9 AND M=9 AND M=11 =MESSAGEBOX(” =MESSAG
47、EBOX(”現(xiàn)在是秋季現(xiàn)在是秋季) ENDCASE ENDCASE RETURN RETURN 6.5 6.5 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)定義:按照一定條件重復(fù)進(jìn)行某種特定操作的程序稱為定義:按照一定條件重復(fù)進(jìn)行某種特定操作的程序稱為循環(huán)結(jié)構(gòu)程序。循環(huán)結(jié)構(gòu)程序。VFPVFP中有三種循環(huán)結(jié)構(gòu),中有三種循環(huán)結(jié)構(gòu),條件循環(huán)(當(dāng)循環(huán)條件循環(huán)(當(dāng)循環(huán)WHILEWHILE)計(jì)數(shù)循環(huán)(計(jì)數(shù)循環(huán)(FOR-ENDFORFOR-ENDFOR或或FOR-NEXTFOR-NEXT)庫文件記錄掃描循環(huán)(庫文件記錄掃描循環(huán)(SCANSCAN)。)。 DO WHILE DO WHILE 1 LOOPLOOP 2 EXITEXIT 3
48、 ENDDOENDDO條件條件成立成立?loopexitENDDOENDDO后面的語句后面的語句YN1、條件循環(huán)、條件循環(huán)備注備注v 例例:用用DO WHILE語句編寫程序語句編寫程序,實(shí)現(xiàn)例實(shí)現(xiàn)例6.2算法。算法。v S=0 &存放累加和的變量存放累加和的變量S初值為初值為0v N=1 &取第一個(gè)自然數(shù)取第一個(gè)自然數(shù)v DO WHILE N=100 v S=S+N &累加當(dāng)前自然數(shù)累加當(dāng)前自然數(shù)v N=N+1 &取下一個(gè)自然數(shù)取下一個(gè)自然數(shù)v ENDDOv ?Sv RETURN(2)(2)循環(huán)體中兩條特殊語句:循環(huán)體中兩條特殊語句:EXITEXIT和和LOOP
49、LOOP(1)(1)格式格式跳出循環(huán)語句:跳出循環(huán)語句:EXITEXIT短跳循環(huán)語句短跳循環(huán)語句:LOOP :LOOP (2)(2)功能功能在循環(huán)體中執(zhí)行到在循環(huán)體中執(zhí)行到EXITEXIT時(shí),立時(shí),立即無條件跳出循環(huán),轉(zhuǎn)去執(zhí)行即無條件跳出循環(huán),轉(zhuǎn)去執(zhí)行 ENDDO ENDDO 的后一個(gè)語句。若執(zhí)行的后一個(gè)語句。若執(zhí)行到到LOOPLOOP語句,則立即返回語句,則立即返回DO DO WHILEWHILE重判循環(huán)條件,而不再重判循環(huán)條件,而不再執(zhí)行循環(huán)體內(nèi)的其他語句。執(zhí)行循環(huán)體內(nèi)的其他語句。 DO WHILE DO WHILE DO WHILE DO WHILE EXIT EXIT LOOPLOOP
50、 ENDDO ENDDO ENDDOENDDO (3)EXIT (3)EXIT語句的一個(gè)典型應(yīng)用語句的一個(gè)典型應(yīng)用 EXITEXIT語句常用在下列控制結(jié)構(gòu)中,用于控制循環(huán)語句常用在下列控制結(jié)構(gòu)中,用于控制循環(huán)次數(shù)不確定時(shí)的循環(huán)退出。次數(shù)不確定時(shí)的循環(huán)退出。 DO WHILE .T. &DO WHILE .T. &循環(huán)條件為永真循環(huán)條件為永真 ) IF IF EXITEXIT ENDIF ENDIF ENDDO ENDDO例例: : 從鍵盤輸入若干個(gè)非零的數(shù)值,當(dāng)輸入數(shù)值從鍵盤輸入若干個(gè)非零的數(shù)值,當(dāng)輸入數(shù)值“0”0”時(shí)結(jié)束輸入,時(shí)結(jié)束輸入,統(tǒng)計(jì)有效數(shù)值的個(gè)數(shù)和它們的平均值。統(tǒng)計(jì)
51、有效數(shù)值的個(gè)數(shù)和它們的平均值。 CLEARCLEAR S=0 & S=0 &存放累加和存放累加和 N=0 &N=0 &存放數(shù)值個(gè)數(shù)存放數(shù)值個(gè)數(shù) DO WHILE .T. &DO WHILE .T. &這是一個(gè)永真循環(huán)這是一個(gè)永真循環(huán) INPUT INPUT 請輸入數(shù)值,請輸入數(shù)值, 輸入零時(shí)結(jié)束輸入零時(shí)結(jié)束 TO SZ TO SZ IF SZ=0 IF SZ=0 EXIT EXIT ENDIF ENDIF S=S+SZ S=S+SZ N=N+1 N=N+1 ENDDO ENDDO ? 共輸入有效數(shù)值個(gè)數(shù)共輸入有效數(shù)值個(gè)數(shù):,N:,N ? ? 平均
52、值是平均值是:,S/N:,S/N RETURN RETURN 2、計(jì)數(shù)循環(huán)格式:、計(jì)數(shù)循環(huán)格式:FOR = TO STEP LOOP EXIT ENDFOR| NEXT (注:(注:步長可為步長可為正值正值和和負(fù)值)負(fù)值)備注備注 例例:裝有裝有100只雞蛋的蛋箱,運(yùn)輸過程中打碎了若干雞只雞蛋的蛋箱,運(yùn)輸過程中打碎了若干雞蛋。貨主開箱取雞蛋,若蛋。貨主開箱取雞蛋,若5只只5只的取,最后剩下一只;只的取,最后剩下一只;若若6只只6只的取,最后也剩一只;若只的取,最后也剩一只;若7只只7只的?。蛔詈髣傊坏娜?;最后剛好取完;請問有多少只好雞蛋?好取完;請問有多少只好雞蛋? clear for i=
53、1 to 100 if mod(i,5)=1 and mod(i,6)=1 and mod(i,7)=0 ?i, endif endf return3、表掃描循環(huán)結(jié)構(gòu)、表掃描循環(huán)結(jié)構(gòu)格式:格式:SCAN FOR WHILE LOOP EXIT ENDSCAN備注備注SCAN循環(huán)專用于控制循環(huán)專用于控制對數(shù)據(jù)表中記錄進(jìn)行對數(shù)據(jù)表中記錄進(jìn)行逐條操作。逐條操作。功能功能 針對當(dāng)前表中指定范針對當(dāng)前表中指定范圍內(nèi)滿足條件的每條圍內(nèi)滿足條件的每條記錄,逐一執(zhí)行記錄,逐一執(zhí)行SCAN與與ENDSCAN之間的語句序列。之間的語句序列。 例例: 用用SCAN循環(huán)實(shí)現(xiàn)對循環(huán)實(shí)現(xiàn)對STAFF表中出生于表中出生于5
54、0年代的教年代的教師增加師增加100元工資。元工資。 OPEN DATABASE 教學(xué)管理教學(xué)管理 USE STAFF IN 0 SCAN FOR 出生日期出生日期=1950/01/01 REPLACE 基本工資基本工資 WITH 基本工資基本工資+100 ENDSCAN CLOSE DATABASE RETURN 4、多重循環(huán)、多重循環(huán)格式(以當(dāng)型循環(huán)結(jié)構(gòu)為例):格式(以當(dāng)型循環(huán)結(jié)構(gòu)為例):DO WHILE 條件表達(dá)式條件表達(dá)式1 語句序列語句序列1 DO WHILE 條件表達(dá)式條件表達(dá)式2 語句序列語句序列2 DO WHILE 條件表達(dá)式條件表達(dá)式3 語句序列語句序列3 ENDDO 語句序
55、列語句序列4 ENDDO 語句序列語句序列5 ENDDO4.循環(huán)的嵌套循環(huán)的嵌套 例例:某學(xué)生食堂采購員帶某學(xué)生食堂采購員帶1000元錢去市場買雞,已知元錢去市場買雞,已知每只小雞每只小雞5元,每只公雞元,每只公雞20元,每只母雞元,每只母雞30元,現(xiàn)在要元,現(xiàn)在要求求1000元錢正好買元錢正好買100只雞且品種齊全,請編程序幫助只雞且品種齊全,請編程序幫助采購員制訂采購方案。采購員制訂采購方案。 CLEAR FOR I=1 TO 33 &最多可以買最多可以買33只母雞只母雞 FOR J=1 TO 50 &最多可以買最多可以買50只公雞只公雞 FOR K=1 TO 100 &a
56、mp;最多可以買最多可以買100只小雞只小雞 IF 30*I+20*J+5*K=1000 AND I+J+K=100 ?I,J,K ENDI ENDF ENDF ENDF循環(huán)語句與循環(huán)語句與IF語句和語句和DOCASE語句的相互嵌套語句的相互嵌套循環(huán)語句與循環(huán)語句與IF語句和語句和DOCASE語句的相互嵌套有如下幾語句的相互嵌套有如下幾種形式。種形式。形式一:形式一: DO WHILE IF ELSE ENDIF ENDDO形式二:形式二: if do while enddo endif注意:在嵌套使用時(shí),不能互相交叉。注意:在嵌套使用時(shí),不能互相交叉。形式四:形式四: docase case
57、 do while enddo case endcase 形式三:形式三: do while do case case endcase enddo6.6.1子程序子程序6.6.2自定義函數(shù)自定義函數(shù)6.6.3過程過程6.6 多模塊程序設(shè)計(jì)多模塊程序設(shè)計(jì)應(yīng)用程序一般都是多模塊程序,可包含多個(gè)程序模塊。應(yīng)用程序一般都是多模塊程序,可包含多個(gè)程序模塊。模塊是可以命名的一個(gè)程序段,可指主程序、子程序和自模塊是可以命名的一個(gè)程序段,可指主程序、子程序和自定義函數(shù)。本節(jié)介紹模塊的構(gòu)成及調(diào)用方法,多模塊程序定義函數(shù)。本節(jié)介紹模塊的構(gòu)成及調(diào)用方法,多模塊程序中變量的作用域,程序調(diào)用方法以及結(jié)構(gòu)化程序設(shè)計(jì)等。中
58、變量的作用域,程序調(diào)用方法以及結(jié)構(gòu)化程序設(shè)計(jì)等。 6.6.1子程序子程序 一、調(diào)用與返回一、調(diào)用與返回 對于兩個(gè)具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?qū)τ趦蓚€(gè)具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?yàn)橹鞒绦?,被調(diào)用的程序?yàn)樽映绦?。為主程序,被調(diào)用的程序?yàn)樽映绦颉?主程序執(zhí)行時(shí)遇到主程序執(zhí)行時(shí)遇到DO命令,執(zhí)行就轉(zhuǎn)向子程序,稱為命令,執(zhí)行就轉(zhuǎn)向子程序,稱為調(diào)用子程序。子程序執(zhí)行到調(diào)用子程序。子程序執(zhí)行到RETURN語句,就會(huì)返語句,就會(huì)返回到主程序中調(diào)用命令處的下一語句繼續(xù)執(zhí)行程序,回到主程序中調(diào)用命令處的下一語句繼續(xù)執(zhí)行程序,稱為從子程序中返回,簡稱返回。稱為從子程序中返回,簡稱返回。2.帶參數(shù)子程
59、序的調(diào)用與返回帶參數(shù)子程序的調(diào)用與返回DO命令允許帶一個(gè)命令允許帶一個(gè)WITH子句,用來進(jìn)行參數(shù)傳遞。子句,用來進(jìn)行參數(shù)傳遞。格式:格式:DO IN說明:說明:(1) 中的參數(shù)可以是表達(dá)式,但若為內(nèi)存變量必須中的參數(shù)可以是表達(dá)式,但若為內(nèi)存變量必須具有初值。具有初值。(2) 當(dāng)當(dāng)是是IN子句子句中的一個(gè)過程時(shí),中的一個(gè)過程時(shí),DO命令調(diào)用該過程。命令調(diào)用該過程。 調(diào)用子程序時(shí)參數(shù)表中的參數(shù)值要傳送給子程序,子程調(diào)用子程序時(shí)參數(shù)表中的參數(shù)值要傳送給子程序,子程序中必須設(shè)置相應(yīng)的參數(shù)接收語句接收傳遞來的參數(shù)值。序中必須設(shè)置相應(yīng)的參數(shù)接收語句接收傳遞來的參數(shù)值。VFP用用PARAMETERS命令接收
60、參數(shù)值和回送參數(shù)值。命令接收參數(shù)值和回送參數(shù)值。格式:格式:PARAMETERS 功能:指定內(nèi)存變量以接收功能:指定內(nèi)存變量以接收DO命令發(fā)送的參數(shù)值,返回主命令發(fā)送的參數(shù)值,返回主程序時(shí)把內(nèi)存變量值返回給主程序中相應(yīng)的內(nèi)存變量。程序時(shí)把內(nèi)存變量值返回給主程序中相應(yīng)的內(nèi)存變量。說明:說明:(1)PARAMETERS必須是被調(diào)用程序的第一個(gè)語句。必須是被調(diào)用程序的第一個(gè)語句。(2)命令中的參數(shù)被命令中的參數(shù)被VFP默認(rèn)為私有變量,返主時(shí)回送參數(shù)值默認(rèn)為私有變量,返主時(shí)回送參數(shù)值之后即被清除。之后即被清除。(3)命令中的參數(shù)依次與調(diào)用命令命令中的參數(shù)依次與調(diào)用命令WITH子句中的參數(shù)相對應(yīng),子句中的參數(shù)相對應(yīng),故兩者參數(shù)個(gè)數(shù)必須相同。故兩者參數(shù)個(gè)數(shù)必須相同。ymj=05,10 SAY“請輸入半徑:請輸入半徑:”GET bj DEFAULT 0READDO js WITH bj,ymj &調(diào)用子程序調(diào)用子程序? “ymj=”,ymj &顯
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 42567.4-2025工業(yè)過程測量變送器試驗(yàn)的參比條件和程序第4部分:物位變送器的特定程序
- 別墅果樹出售合同范本
- 勘查標(biāo)準(zhǔn)合同范本
- 上海古董拍賣合同范本
- 信托轉(zhuǎn)讓合同范本
- 單位與單位入股合同范本
- 鄉(xiāng)村道路跨寬施工合同范本
- 加工企業(yè)入股合同范本
- 單位施工合同范例
- 包裝盒印刷廠合同范本
- 教師師德和專業(yè)發(fā)展課件
- 服務(wù)器巡檢報(bào)告模版
- 2023年中國煤化工行業(yè)全景圖譜
- 2023年高中生物新教材人教版(2023年)必修二全冊教案
- 小學(xué)美術(shù) 四年級 人教版《造型?表現(xiàn)-色彩表現(xiàn)與創(chuàng)作》“色彩”單元美術(shù)作業(yè)設(shè)計(jì)《色彩的明與暗》《色彩的漸變》《色彩的情感》
- 中國心臟重癥鎮(zhèn)靜鎮(zhèn)痛專家共識(shí)專家講座
- 川教版七年級生命生態(tài)安全下冊第1課《森林草原火災(zāi)的危害》教案
- 護(hù)理人員心理健康
- 安全技術(shù)說明書粗苯
- 六年級上冊心理健康教育課件-健康上網(wǎng)快樂多 北師大版
- 單招面試技巧范文
評論
0/150
提交評論