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

下載本文檔

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

文檔簡介

第8章結(jié)構(gòu)化程序設(shè)計(jì)VisualFoxPro程序設(shè)計(jì)主講教師:高駿Emil:704098395@第8章VisualFoxPro程序設(shè)計(jì)主講教師:高駿

本章要求:1.掌握VFP程序的建立、修改、運(yùn)行。

2.掌握程序的三種基本結(jié)構(gòu)。3.了解過程和過程文件。

本章要點(diǎn):

程序的三種控制結(jié)構(gòu)。學(xué)時安排:6學(xué)時(理論)+6學(xué)時(實(shí)踐)課程要求本章要求:課程要求結(jié)束作業(yè)

第8章程序設(shè)計(jì)基礎(chǔ)

8.1

程序文件及其編輯環(huán)境

8.2

程序中幾種常用命令

8.3

程序的基本控制結(jié)構(gòu)

8.4

過程和用戶自定義函數(shù)結(jié)束作業(yè)第8章程序設(shè)計(jì)基礎(chǔ)8.1程序文件8.1程序文件及其編輯環(huán)境

在ViusalFoxPro中,程序是由一系列ViusalFoxPro可以理解的命令、函數(shù)和操作組成的,這些命令和函數(shù)可以在ViusalFoxPro中的命令窗口和以人工方式逐一執(zhí)行,也可以把它們放在一個程序文件中,以文件的形式來執(zhí)行。【8.1】

假定學(xué)號的前四位為入學(xué)年份,第5,6位為專業(yè)代碼.編寫命令文件test.prg,分別統(tǒng)計(jì)所有學(xué)生和2010年入學(xué),專業(yè)代碼為03的學(xué)生選修課程號為101課程的平均成績.8.1程序文件及其編輯環(huán)境在ViusalSETTALKOFFSETDEFAULTTOd:\學(xué)生管理OPENDATA學(xué)生管理SELECTAVG(成績)FROM

成績

WHERE; 課程號=“101”INTOARRAYm1SELECTAVG(成績)FROM成績

WHERE; 課程號=“101”ANDLEFT(學(xué)號,4)=“2010”;ANDSUBS(學(xué)號,5,2)=“03”INTOARRAYm2CLEAR?”所有學(xué)生的平均成績:”font“宋體”,20,m1(1)font“宋體”?”指定學(xué)生的平均成績:”font“宋體”,20,m2(1),font“宋體”CLOSEDATASESETTALKONRETURNSETTALKOFF(1)以命令方式建立、修改程序文件ModifyCommand<程序文件名>格式:功能:創(chuàng)建、編輯以“程序文件名”為名的程序文件說明:1.在編輯窗口輸入一條條命令。2.^w或關(guān)閉窗口存盤、^q或者<Esc>放棄存盤3.程序文件的擴(kuò)展名為.prg,可以省略。(2)以菜單方式建立、修改程序文件文件新建文件打開已有的程序文件.prg8.1.1程序文件的建立和運(yùn)行1.程序文件的建立(1)以命令方式建立、修改程序文件ModifyComm(2)命令方式(1)菜單方式程序運(yùn)行Do<文件名>格式:功能:運(yùn)行程序文件程序文件建立后,可以用多種方式、多次執(zhí)行它。下面是兩種常用的方式。選中運(yùn)行2.程序文件的運(yùn)行、調(diào)用(2)命令方式(1)菜單方式程序運(yùn)行Do<文件名>8.1.2VisualFoxPro編程特點(diǎn)1.變量不區(qū)分大小寫類型說明示例類型說明示例a數(shù)組型aStudentsf浮點(diǎn)型fInterestc字符型cNamel邏輯型lFlagy貨幣型yCurrentValuen數(shù)值型nCounterd日期型dBirthDayo對象oEmployeet日期時間型tLastModifiedu未知uReturnValueb雙精度型bValue建議的變量命名約定8.1.2VisualFoxPro編程特點(diǎn)1.變量不2.變量不需預(yù)先聲明當(dāng)把一個值保存到某一變量而該變量原先不存在時,VisualFoxPro系統(tǒng)會隱含地聲明它,并有初始值存在。用戶在變量里放什么數(shù)據(jù),變量就是什么類型。

3.命令分行程序中每條命令都以回車鍵結(jié)尾,一行只能寫一條命令。若需分行書寫,可以使用分號“;”表示續(xù)行。4.添加注釋VisualFoxPro系統(tǒng)對整行注釋和行中部分注釋有不同的格式。整行注釋使用“*”引導(dǎo),行中部分注釋使用“&&”引導(dǎo)。2.變量不需預(yù)先聲明當(dāng)把一個值保存到某一變量8.2程序中幾種常用命令8.2.1基本輸入命令1.Wait命令

暫停程序的運(yùn)行,直到用戶輸入一個字符,也可用于輸出一條提示信息WAIT[<信息文本>]

[TO

<內(nèi)存變量>][WINDOW[AT

<行>,<列>]]

[NOWAIT][CLEAR][NOCLEAR][TIMEOUT

<數(shù)值表達(dá)式>]保存鍵入的字符,省略TO子句不保存省略則顯示“按任意鍵繼續(xù)….不等待用戶輸入關(guān)閉提示窗口不關(guān)閉提示窗口,直到下一個WAIT命令自動關(guān)閉WINDOW子句使屏幕出現(xiàn)一個WAIT提示窗口,內(nèi)容由<信息文本>確定,位置有AT子句指定.省略AT子句則出現(xiàn)在屏幕右上角TIMEOUT子句設(shè)定等待時間(以秒為單位)8.2程序中幾種常用命令8.2.1基本輸入命令1.W說明:③若指定WINDOWS子句,則會出現(xiàn)一個WAIT提示窗口,用以顯示提示信息.提示窗口在主窗口的右上角,也可以用AT短語指定其在主窗口中的位置.④若同時選用NOWAIT短語和WINDOWS子句,系統(tǒng)將不等待用戶按鍵,直接往下執(zhí)行.⑤若選用NOCLEAR短語,則不關(guān)閉提示窗口,直到用戶執(zhí)行下一條WAITWINDOWS命令或WAITCLEAR命令為止.⑥TIMEOUT子名用來設(shè)定等待時間(秒數(shù))。例如執(zhí)行:

Wait“歡迎使用!”Windows在屏幕右上角彈出一個窗口,顯示“歡迎使用!”,按任意鍵后窗口消失。說明:例如執(zhí)行:在屏幕右上角彈出一個窗口,顯示“歡迎使用!”2.Accept命令A(yù)ccept[<提示信息>]To<內(nèi)存變量>格式:功能:在程序執(zhí)行過程中,暫停執(zhí)行,等待用戶從鍵盤輸入字符串。當(dāng)用戶以回車鍵結(jié)束輸入完數(shù)據(jù)后,系統(tǒng)將用戶輸入的內(nèi)容作為字符串賦值給指定內(nèi)存變量。然后繼續(xù)往下執(zhí)行程序。說明:(1)如果選用提示信息,系統(tǒng)會在屏幕上顯示提示信息;(2)輸入的數(shù)據(jù)只能是字符型數(shù)據(jù),并且不用定界符;(3)如果用戶什么數(shù)據(jù)都不輸,就按下回車鍵,系統(tǒng)認(rèn)為是輸入了一個空串,自動會把空串賦給指定的內(nèi)存變量中。2.Accept命令A(yù)ccept[<提示信息>]【例8.2】編程從鍵盤輸入某數(shù)據(jù)庫的文件名,要求打開該數(shù)據(jù)庫并顯示其內(nèi)容.程序文件名為

PROG1.PRG。SETTALKOFFStedefaulttod:\學(xué)生管理CLEARACCEPT

"請輸入數(shù)據(jù)庫名:"

TO

AAAOPENDATABASE

&AAAACCEPT

"請輸入表名:"

TO

BBBUSE

&BBBbrowseUSESETTALKONRETURNDoprog1請輸入數(shù)據(jù)庫名:學(xué)生管理請輸入表名:

學(xué)生【例8.2】編程從鍵盤輸入某數(shù)據(jù)庫的文件名,要求打開該數(shù)據(jù)庫Use人才檔案ExclusiveAccept"請輸入編號:"TobhLocateFor編號=bh?編號,姓名Usesetdefaulttod:\人才管理opendata人才管理Accept"請輸入職稱:"tozcselect*from專業(yè)特長;where職稱=zc

【例8.3】輸入姓名,在人才檔案表中查詢某編號對應(yīng)的姓名【例8.4】編寫程序,瀏覽專業(yè)特長表中不同職稱的記錄集。Do8.4請輸入職稱:教授Do8.3請輸入編號:sh01001Sh01001

金銀橋輸入字符串時不加定界符Use人才檔案Exclusivesetd3.Input命令I(lǐng)nput[<提示信息>]To<內(nèi)存變量>格式:功能:(1)如果選用<提示信息>,那么系統(tǒng)會首先顯示該提示信息的值,作為提示信息。(2)輸入的數(shù)據(jù)可以是常量、變量,也可以是一般的表達(dá)式。但不能不輸入任何內(nèi)容直接按回車鍵。(3)輸入字符串是必須加定界符“”,輸入邏輯型常量要用圓點(diǎn)定界符(如.T.,.F.),輸入日期時間型常量是要用大括號(如{^2012-03-01})。說明:等待用戶從鍵盤輸入數(shù)據(jù),用戶可以輸入任意合法的表達(dá)式。當(dāng)以回車鍵結(jié)束輸入時,系統(tǒng)將表達(dá)式的值存入指定的內(nèi)存變量,程序繼續(xù)運(yùn)行。3.Input命令I(lǐng)nput[<提示信息>]To<內(nèi)【例8.5】編寫命令文件test1.prg,查找指定日期以后出生的學(xué)生

SETDEFAULTTOd:\學(xué)生管理OPENDATABASE學(xué)生管理INPUT"輸入日期:"

TO

mrqSELECT學(xué)號,姓名,出生日期

FROM

學(xué)生;

WHERE出生日期>mrq;

NOWAITCLOSEDATABASERETURNDotest1輸入日期:{^1993-01-01}【例8.5】編寫命令文件test1.prg,查找指定日期以ClearInput“長方形一邊的長為:”TOAInput“長方形另一邊的長為:”TOBS=A*B?"長方形的面積為:",S【例8.6】從鍵盤輸入兩個任意正數(shù),編程求以兩數(shù)為邊長的長方形面積。程序文件名為8.6.prg在命令窗口中輸入:ModifyCommand8.6Do8.6長方形一邊的長為:5長方形另一邊的長為:6運(yùn)行結(jié)果:長方形的面積為:30屏幕顯示鍵盤輸入Clear【例8.6】從鍵盤輸入兩個任意正數(shù),編程求以兩數(shù)為Setdefaulttod:\人才管理Input"請輸入要刪除的人的出生日期:"toCsrqDeletefrom人才檔案where出生日期=CsrqSelect人才檔案BrowClosedata【例8.7】編寫程序,將人才檔案表中指定的出生日期的記錄邏輯刪除。請輸入要刪除的人的出生日期:{^1969-02-03}Setdefaulttod:\人才管理【例8.7】編4.格式輸入語句格式:@<行,列>Say<提示信息>get<變量>@<行,列>Say<提示信息>get<變量>…….Read功能:在指定的行、列位置輸入一個常量,當(dāng)執(zhí)行到Read語句時,將常量賦值給指定的變量。說明:1、多個@語句可以配置一個Read語句。但是中間不能有別的語句。2、Get后面的變量要先賦值。4.格式輸入語句格式:@<行,列>Say<提示ClearSetdefaulttod:\人才管理Use專業(yè)特長ExclusiveAccept"請輸入職稱:"tozcLocateAllFor職稱=zc@2,10Say"編號"Get編號@3,10Say"專業(yè)"Get專業(yè)@4,10Say"畢業(yè)學(xué)校"Get畢業(yè)學(xué)校@5,10Say"專業(yè)年限"Get專業(yè)年限@6,10Say“職稱”Get職稱ReadClosedata【例8.8】

編寫程序,在指定的位置顯示修改“專業(yè)特長”表中指定職稱的記錄。Clear【例8.8】編寫程序,在指定的位置顯示修改“專業(yè)@<行,列>Say<提示信息>[Picture<格式描述符>]格式:功能:(1)在指定的行、列輸出表達(dá)式的值。(2)格式描述符用來限定數(shù)據(jù)輸出的類型、長度及格式。8.2.2基本輸出語句1.格式輸出語句@<行,列>Say<提示信息>[Pictur格式字符含義例子9只允許顯示數(shù)字字符與正負(fù)號Picture"999.99"#一個數(shù)值型數(shù)字與正負(fù)號Picture"####.##",千位分隔符Picture“99,999"$顯示貨幣符Picture"$999.99"X允許任意字符Picture"xxxxx"!將字符轉(zhuǎn)成大寫Picture"xxxxx"常用格式描述符的功能格式字符含義例子9只允許顯示數(shù)字字符與正負(fù)號PictureUse人才檔案ExclusiveAccept"請輸入編號:"tobhLocatFor編號=bh@13,20Say編號Picture"!!!!!!!!"

@14,20Say姓名Picture"xxxxxxxxx"Use【例8.9】輸入編號,在人才檔案表中查詢某編號對應(yīng)的姓名。字符轉(zhuǎn)換成大寫任意字符Use人才檔案Exclusive【例8.9】x1=Messagebox("您真的要退出系統(tǒng)嗎?",4+16+0,"退出系統(tǒng)")Ifx1=6ReturnEndifMessagebox(<“提示信息”>,<對話框類型>,<“對話框標(biāo)題“>)格式:功能:在屏幕上彈出一個指定格式的對話框。說明:對話框類型是由“按鈕個數(shù)+顯示圖標(biāo)+默認(rèn)按鈕”組成。提示信息對話框標(biāo)題提示信息對話框標(biāo)題對話框類型按鈕個數(shù)顯示圖標(biāo)默認(rèn)按鈕2.對話框MessageBox函數(shù)P67x1=Messagebox("您真的要退出系統(tǒng)嗎?",4+1代碼代碼的含義0確定按鈕1確定、取消按鈕2終止、重試、和忽略按鈕3是、否和取消按鈕4是、否按鈕5重試、取消按鈕按鈕個數(shù)代碼顯示圖標(biāo)代碼代碼代碼的含義16停止圖標(biāo)32問號圖標(biāo)48感嘆號圖標(biāo)64信息圖標(biāo)默認(rèn)焦點(diǎn)按鈕的代碼代碼代碼的含義0默認(rèn)焦點(diǎn)在第一個按鈕256默認(rèn)焦點(diǎn)在第二個按鈕512默認(rèn)焦點(diǎn)在第三個按鈕按鈕返回值按鈕返回值確定1忽略5取消2是6終止3否7單擊對話框按鈕的返回值4+16+0單擊“否”,返回7返回值送到x1如果x1=“是”返回系統(tǒng)單擊“是”,返回6代碼代碼的含義0確定按鈕1確定、取消按鈕2終止、重試、和忽略8.2.3程序結(jié)尾命令1、程序的末尾可以使用Return命令,能使程序執(zhí)行結(jié)束,并返回到調(diào)用它的上級程序繼續(xù)執(zhí)行,若無上級程序則返回到命令窗口。2、使用另一條命令為Cancel,它可以中止程序運(yùn)行,并返回到命令窗口。3、使用Quit命令可以結(jié)束程序運(yùn)行退出VisualFoxPro系統(tǒng)8.2.3程序結(jié)尾命令1、程序的末尾可以使用Return8.3程序的基本控制結(jié)構(gòu)常見的控制結(jié)構(gòu)如下:1.順序結(jié)構(gòu)順序結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)程序中語句的書寫順序依次執(zhí)行的命令序列。VisualFoxPro系統(tǒng)中的大多數(shù)命令都可以作為順序結(jié)構(gòu)中的語句。2.分支結(jié)構(gòu)分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行不同的程序語句,用來解決有選擇、有轉(zhuǎn)移的諸多問題。3.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)則能夠使某些語句或程序段重復(fù)執(zhí)行若干次。如果某些語句或程序段需要在一個固定的位置上重復(fù)操作,使用循環(huán)是最好的選擇。8.3程序的基本控制結(jié)構(gòu)常見的控制結(jié)構(gòu)如下:8.3.1順序結(jié)構(gòu)順序結(jié)構(gòu)是一種線性結(jié)構(gòu)。是程序設(shè)計(jì)中最簡單同時也是最基本的結(jié)構(gòu)。它要求順序地執(zhí)行每一個基本的加工處理單位。命令序列1命令序列2【例8.10】計(jì)算圓的周長和面積。ClearInput"請輸入圓的半徑:"Tor&&輸入半徑c=2*3.14*r&&計(jì)算圓的周長s=3.14*r*r&&計(jì)算圓的面積?"圓的周長:",c&&輸出周長?“圓的面積:”,s&&輸出面積Return8.3程序的基本控制結(jié)構(gòu)8.3.1順序結(jié)構(gòu)順序結(jié)構(gòu)是一種線性結(jié)構(gòu)。分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行不同的程序語句。If<條件表達(dá)式><語句序列>EndIf格式:功能:首先計(jì)算〈條件表達(dá)式〉的值,當(dāng)〈條件表達(dá)式〉的值為真時,執(zhí)行〈語句序列〉;否則,執(zhí)行EndIf后面的第一條語句。EndIf后面的語句TF語句序列條件1.簡單的條件語句8.3.2條件分支結(jié)構(gòu)分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行ClearInput"X="TOxInput"Y="TOyIfx/3=Int(x/3)y=y+xEndIf?"Y=",y【例8.11】編寫程序:先從鍵盤接收兩個數(shù)x和y,然后判斷x能否被3整除。如果x能被3整除,那么y的值增加x;否則y的值不變。EndIf后面的語句TF

y=y+xx/3=int(x/3)輸入x,yIfmod(X,3)=0Clear【例8.11】編寫程序:先從鍵盤接收兩個數(shù)x和y,【例8.12】編寫程序:修改“專業(yè)特長”表中的數(shù)據(jù),把編號為“zj01002”的職稱從“副教授”改為“教授”。ClearUse專業(yè)特長

ExclusiveLocateFor編號="zj01002"If職稱="副教授"

Replace職稱With"教授"

EndIfBrowseLast【例8.12】編寫程序:修改“專業(yè)特長”表中的數(shù)據(jù),把編號為2.帶Else的條件語句If〈條件表達(dá)式〉〈語句序列1〉Else〈語句序列2〉EndIf格式:功能:FT語句序列1語句序列2條件EndIf后面的語句該語句首先計(jì)算〈條件表達(dá)式〉的值,當(dāng)〈條件表達(dá)式〉的值為真時,執(zhí)行〈語句序列1〉中的命令;否則,執(zhí)行〈語句序列2〉中的命令;執(zhí)行完〈命令行序列1〉或〈命令行序列2〉后都將執(zhí)行EndIf后面的第一條語句。2.帶Else的條件語句If〈條件表達(dá)式〉格式:功能【例8.13】輸入一個姓名,在“學(xué)生”表中查找該姓名的學(xué)生,如果找到,顯示該記錄的姓名、性別和出生日期,否則顯示“查無此人!”,程序名為test2.prgSETDEFAULTTOd:\學(xué)生管理OPENDATABASE學(xué)生管理USE學(xué)生IN0SELECT學(xué)生ACCEPT“請輸入待查學(xué)生姓名:”TONAMELOCATEFOR姓名=NAMEIFEOF()=.F.?”姓名:”+姓名

FONT“宋體”,20?”性別:”+IIF(性別=.t.,“男”,”女”)FONT“宋體”,20

?”出生日期:”+DTOC(出生日期,1)FONT“宋體”,20ELSE

?”查無此人!”FONT“宋體”,20ENDIFCLOSEDATABASERETURNmessagebox(“查無此人!”,0+48+0,”例8.13”)【例8.13】輸入一個姓名,在“學(xué)生”表中查找該姓名的學(xué)生,語句執(zhí)行時,依次判斷Case后面的條件是否成立。當(dāng)發(fā)現(xiàn)某個Case后面的條件成立時,就執(zhí)行該Case和下一個Case之間的語句序列,然后執(zhí)行EndCase后面的語句令。如果所有的條件都不成立,則執(zhí)行Otherwise與EndCase之間的語句序列,然后轉(zhuǎn)向EndCase后面的語句。3.多分支語句DoCaseCase〈條件表達(dá)式1〉<語句序列1〉Case〈條件表達(dá)式2〉<語句序列2〉……Case〈條件表達(dá)式N〉〈語句序列N〉][Otherwise〈語句序列N+1〉]

EndCase格式:功能:條件2條件nOTHERWISE語句序列1語句序列2語句序列n語句序列n+1ENDCASE后面的語句條件1…語句執(zhí)行時,依次判斷Case后面的條件①不管有幾個Case條件成立,只有最先成立的那個Case條件的對應(yīng)命令序列被執(zhí)行。②如果所有的Case條件都不成立,且沒有Otherwise子句,則直接跳出本結(jié)構(gòu)。③DoCase和EndCase必須配對使用,DoCase是本結(jié)構(gòu)的入口,EndCase是本結(jié)構(gòu)的出口。④DoCase和第一個Case子句之間不能插入任何命令。說明:DoCaseCase〈條件表達(dá)式1〉<命令行序列1〉Case〈條件表達(dá)式2〉<命令行序列2〉……Case〈條件表達(dá)式N〉〈命令行序列N〉][Otherwise〈命令行序列N+1〉]

EndCaseInput"請輸入考試成績:"

ToxDoCaseCasex<60?"不及格"Casex<70?"及格"Casex<80?"中等"Casex<90?"良好"Otherwise?"優(yōu)秀"EndCase①不管有幾個Case條件成立,只有最先成立的那個Case條件【例8.13】顯示當(dāng)前季節(jié)。程序文件如下。ClearYue=Month(Date())DoCaseCaseyue<4jj="春"Caseyue<7jj="夏"Caseyue<10jj="秋"

Otherwise

jj="冬"EndcaseWaitjjWindow從今天的日期里取出月份送到y(tǒng)ue測試表達(dá)式的值是否在表達(dá)式中,是就返回.T.【例8.13】顯示當(dāng)前季節(jié)。程序文件如下。Clear從今天【例8.14】假設(shè)收入(P)與稅率(R)的關(guān)系如下表,編程求稅金。0P≤

3500R=0.053500<P≤

45000.084500<P≤

65000.1P>6500ClearInput"請輸入收入:"

ToPDoCaseCaseP<=3500R=0CaseP<=4500R=0.05CaseP<=6500R=0.08OtherwiseR=0.1EndCaseTax=(p-3500)*r?"稅金為:

"+Str(tax)【例8.14】假設(shè)收入(P)與稅率(R)的關(guān)系如下表,編程求【例8.15】輸入一個字符“男”或者“女”到變量“性別”中,再輸入一個數(shù)值到變量“身高”中。計(jì)算:如果性別=“男”并且身高又在180以上,輸出“參加籃球比賽”,否則輸出“參加足球比賽”。如果性別為“女”并且身高在170以上輸出“參加模特大賽”,否則輸出“參加健美操比賽”。Acce"請輸入你的性別:"

To性別Input"請輸入你的身高:"

To身高If性別="男"

DoCaseCase身高>=180?"參加籃球比賽!"Case身高<180?"參加足球比賽!"EndCaseElseDoCaseCase身高>=170?

"參加模特比賽!"

Case身高<170?

"參加健美操比賽!"EndCaseEndIfReturn用Case包含If語句怎么寫?【例8.15】輸入一個字符“男”或者“女”到變量“性別”中,bca解題步驟:交換a、b的值交換a、c的值交換b、c的值【例8.16】編寫程序,對任給的三個數(shù),按從小到大的順序輸出。輸入a,b,c的值開始TFA,b交換a>b?TFa>cA,c交換TFB,c交換b>c?bca解題步驟:【例8.16】編寫程序,對任給的三個數(shù),按從Input"請輸入第1個數(shù):"toaInput"請輸入第2個數(shù):"tobInput"請輸入第3個數(shù):"toc?"排序前",a,b,cIfa>bt=aa=bb=tEndifIfa>ct=aa=cc=tEndifIfb>ct=bb=cc=tEndif?“排序后",a,b,ca,b排序a,c排序B,c排序Input"請輸入第1個數(shù):"toaa=8.4循環(huán)結(jié)構(gòu)程序循環(huán)結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu),是指程序在執(zhí)行的過程中,程序中的某段代碼被重復(fù)執(zhí)行若干次。被重復(fù)執(zhí)行的代碼段,通常稱之為循環(huán)體。1.條件循環(huán)根據(jù)條件表達(dá)式的值決定循環(huán)體內(nèi)語句的執(zhí)行次數(shù)。格式1:功能:DoWhile<條件表達(dá)式><語句序列>EndDo條件FT循環(huán)體EndDo后面的語句首先計(jì)算〈條件表達(dá)式〉的值,當(dāng)〈條件表達(dá)式〉的值為真時,執(zhí)行循環(huán);否則,執(zhí)行EndDo后面的第一條命令。如果第一次判斷條件為假,一次也不循環(huán)。8.4循環(huán)結(jié)構(gòu)程序循環(huán)結(jié)構(gòu)也稱為重復(fù)【例8.17】統(tǒng)計(jì)“人才檔案”表中工資超過7000元的人數(shù)。ClearSetdefaulttod:\人才管理Use人才檔案ExclusiveGoTopRc=0DoWhileEof()=.f.If工資現(xiàn)狀>7000rc=rc+1EndIfSkipEndDo@2,30Say"工資在7000元以上的人"@2,60SayrcUseClearSetdefaulttod:\人才管理Use人才檔案ExclusiveLocatefor工資>7000Rc=0DoWhileEof()=.f.rc=rc+1continueEndDo?"工資在7000元以上的人“,rcUse【例8.17】統(tǒng)計(jì)“人才檔案”表中工資超過7000元的人數(shù)。ClearS=0I=1DoWhileI<=100S=S+II=I+1EndDo?"1+2+3+……+100=",S【例8.18】編程求1+2+3+……+100之和。一個循環(huán)結(jié)構(gòu)一般應(yīng)具備如下的條件:(1)循環(huán)的初始條件:一般為給循環(huán)控制變量賦初值;(2)循環(huán)頭:循環(huán)語句的起始,設(shè)置、判斷循環(huán)條件;(3)循環(huán)尾:循環(huán)語句的結(jié)尾;(4)循環(huán)體:位于循環(huán)頭和循環(huán)尾之間、循環(huán)控制重復(fù)執(zhí)行的語句序列。求s=1+3+5+7-------+51求s=1*2*3*--------*100(s=100!)求s=1!+2!+3!+…+n!求s=1!+2!+3!+…+n!Clear【例8.18】編程求1+2+3+……+100之和。DoWhile<條件表達(dá)式><語句序列1>[Loop]<語句序列2>[Exit]<語句序列3>EndDo格式2:功能:Loop語句:強(qiáng)行返回到循環(huán)開始語句。Exit語句:強(qiáng)行跳出循環(huán),接著執(zhí)行EndDo后的語句EndDo的后繼語句循環(huán)體LoopExit循環(huán)條件DoWhile<條件表達(dá)式>格式2:功能:LClearJi=0Ou=0Dowhile.t.

Input”輸入一個整數(shù):”Toa

Ifa=0Exit

Else

Ifmod(a,2)=0ou=ou+1

endif

【例8.19】輸入任意整數(shù),分別統(tǒng)計(jì)偶數(shù)和奇數(shù)的個數(shù),輸入0為結(jié)束程序。Ifmod(a,2)<>0ji=ji+1EndifEndifEnddo?”奇數(shù)的個數(shù)為:”,ji?”偶數(shù)的個數(shù)為:”,ouReturnClear【例8.19】輸入任意整數(shù),分別統(tǒng)計(jì)偶數(shù)和奇數(shù)的個Flag=0I=2Input"請輸入一個大于2的整數(shù)"ToNDoWhilei<nIfMod(n,i)<>0I=I+1LoopElseFlag=1ExitEndIfEndDo【例8.20】驗(yàn)證一個大于2的整數(shù)n是否為素?cái)?shù)。一個數(shù)除了1和它本身之外,沒有其他整數(shù)能整除的整數(shù)為素?cái)?shù)。判別一個大于2的整數(shù)n是否為素?cái)?shù)可以:用2,3,…,n-1作除數(shù)除n,只要有一個能整除n,n就不是素?cái)?shù)。否則,n為素?cái)?shù)。IfFlag=0?Str(n,3)+"是素?cái)?shù)"Else?Str(n,3)+"不是素?cái)?shù)"EndifIfn/i=int(n/i)Flag=0【例8.20】驗(yàn)證一個大于2的整數(shù)n是否為素【例9.21】全班50個同學(xué)報(bào)名參加運(yùn)動會。如果是男同學(xué)并且身高又在180以上,輸出“參加籃球比賽”,否則輸出“參加足球比賽”。如果是女同學(xué)并且身高在170以上輸出“參加模特大賽”,否則輸出“參加健美操比賽”。最后統(tǒng)計(jì)參加各項(xiàng)比賽的人數(shù)。

else?"參加足球比賽!"

B=B+1EndifElseif身高>=170

?"參加模特比賽!"

C=C+1

else

?"參加健美操比賽!"

D=D+1

EndifEndIfSUM=SUM-1EndDo?"參加籃球比賽的人數(shù)"

,A?"參加足球比賽的人數(shù)"

,B?"參加模特比賽的人數(shù)"

,C?"參加健美操比賽的人數(shù)",DA=0B=0C=0D=0Sum=50DoWhileSUM>0Acce"請輸入你的性別"

TO性別Input"請輸入你的身高"

TO身高If

性別="男“if身高>=180

?"參加籃球比賽!"

A=A+1

【例9.21】全班50個同學(xué)報(bào)名參加運(yùn)動會。如果是男同學(xué)并且2.步長循環(huán)步長循環(huán)控制語句,即根據(jù)循環(huán)變量的初值、終值和步長,決定循環(huán)體內(nèi)語句的執(zhí)行次數(shù)。For<循環(huán)變量>=<初值>To<終值>[Step<步長>]<循環(huán)體>EndFor|Next格式:功能:循環(huán)體ExitLoop循環(huán)變量增加步長循環(huán)變量獲得初值FT循環(huán)變量在終值內(nèi)首先將初值賦給循環(huán)變量,然后判斷循環(huán)條件是否成立(若步長為正值,循環(huán)條件為“循環(huán)變量<=終值”;若步長為負(fù)值,循環(huán)條件為“循環(huán)變量>=終值”)。若循環(huán)條件成立,則執(zhí)行循環(huán)體,然后循環(huán)變量增加一個步長值,并再次判斷循環(huán)條件是否成立,以確定是否再次執(zhí)行循環(huán)體。若循環(huán)條件不成立,則結(jié)束該循環(huán)語句,執(zhí)行EndFor后面的語句。2.步長循環(huán)步長循環(huán)控制語句,即根據(jù)循環(huán)變量的初值1、省略Step步長,則步長為默認(rèn)值1;2、初值、終值和步長都可以是數(shù)值表達(dá)式,當(dāng)初值小于終值,步長必須為正,當(dāng)初值大于終值,步長必須為負(fù)才可以循環(huán);3、可以在循環(huán)體內(nèi)改變循環(huán)變量的值,但會改變循環(huán)執(zhí)行次數(shù);4、Exit和Loop命令可以出現(xiàn)在循環(huán)體內(nèi)。執(zhí)行Loop命令時,結(jié)束本次循環(huán),循環(huán)變量增加一個步長值,返回For循環(huán)頭判斷循環(huán)條件是否成立。執(zhí)行Exit命令時,程序跳出循環(huán),執(zhí)行循環(huán)尾后面的語句說明:注意:1、循環(huán)終止的條件是:“循環(huán)變量的值超出終值”,而不是循環(huán)變量的值等于終值。2、超出的含義:當(dāng)<步長>為正時,檢查<循環(huán)變量>是否大于<終值>

當(dāng)<步長>為負(fù)時,檢查<循環(huán)變量>是否小于<終值>

當(dāng)步長為0時,循環(huán)永不終止。For<循環(huán)變量>=<初值>To<終值>[Step<步長>]<循環(huán)體>EndFor|NextFor<循環(huán)變量>=<初值>To<終值>[Step<步長>]<循環(huán)體>EndFor|Next1、省略Step步長,則步長為默認(rèn)值1;說明:注意:1、ClearS=1I=1DoWhileI<=100S=S*II=I+1EndDo?"1*2*3*……*100=",S【例8.22】編程求1*2*3*……*100之和。ClearS=1Fori=1to100s=s*IEndFor?"1*2*3*……*100=",SClear【例8.22】編程求1*2*3*……*100之和?!纠?.23】全班50個同學(xué)報(bào)名參加運(yùn)動會。如果是男同學(xué)并且身高又在180以上,輸出“參加籃球比賽”,否則輸出“參加足球比賽”。如果是女同學(xué)并且身高在170以上輸出“參加模特大賽”,否則輸出“參加健美操比賽”。最后統(tǒng)計(jì)參加各項(xiàng)比賽的人數(shù)。else

?"參加健美操比賽!"D=D+1EndifEndIfEndFor?"參加籃球比賽的人數(shù)"

,A?"參加足球比賽的人數(shù)"

,B?"參加模特比賽的人數(shù)"

,C?"參加健美操比賽的人數(shù)",DReturnA=0B=0C=0D=0ForI=1TO50Acce"請輸入你的性別"

TO性別Input"請輸入你的身高"

TO身高If

性別="男"DoCaseif身高>=180

?"參加籃球比賽!"A=A+1else?"參加足球比賽!"B=B+1EndifElseif身高>=170

?"參加模特比賽!"

C=C+1【例8.23】全班50個同學(xué)報(bào)名參加運(yùn)動會。如果是男同學(xué)并且【例8.24】輸入任意10個整數(shù),將所有正整數(shù)顯示出來。ClearFori=1to10Input“輸入一個整數(shù)”ToaIfa>0?aElseLoopEndifEndFor在For循環(huán)語句中執(zhí)行Loop語句,將會先修改循環(huán)變量的值,然后轉(zhuǎn)向循環(huán)語句頭部?!纠?.24】輸入任意10個整數(shù),將所有正整數(shù)顯示出來。Cl3.掃描循環(huán)掃描循環(huán)控制語句,即根據(jù)表中的當(dāng)前記錄指針決定循環(huán)體內(nèi)語句的執(zhí)行次數(shù),掃描當(dāng)前表中滿足表中的記錄。Scan[<范圍>][For<條件表達(dá)式1>][While<條件表達(dá)式2>]<命令行序列>EndScan格式:功能:執(zhí)行該語句時,記錄指針在當(dāng)前表的指定范圍內(nèi)自動從上往下依次移到滿足條件的記錄上,并對每一條記錄執(zhí)行循環(huán)體內(nèi)的命令。(1)<范圍>的默認(rèn)值是All。(2)當(dāng)指針移到文件尾時,自動退出循環(huán)。說明:循環(huán)體TFEof()3.掃描循環(huán)掃描循環(huán)控制語句,即根據(jù)表中的當(dāng)前記【例8.25】用掃描循環(huán)控制語句,統(tǒng)計(jì)人才檔案數(shù)據(jù)表中男同學(xué)的人數(shù)。clearRc=0Use人才檔案ExclusiveScanallfor性別=“男”

rc=rc+1EndScan?“男同學(xué)的人數(shù)為",rcUse【例8.25】用掃描循環(huán)控制語句,統(tǒng)計(jì)人才檔案數(shù)據(jù)表中男同學(xué)【例8.26】用掃描循環(huán)控制語句,顯示人才檔案數(shù)據(jù)表中年齡大于等于25的記錄。clearUse人才檔案ExclusiveScanallforyear(date())-year(出生日期)>=25display編號,姓名EndScanUse【例8.26】用掃描循環(huán)控制語句,顯示人才檔案數(shù)據(jù)表中年齡大練習(xí):下列程序段執(zhí)行后,輸出結(jié)果是:記錄號名稱

1男子排球

2女子排球

3男子足球

4女子足球

5男乒乓球Use運(yùn)動員表ExclusiveGo2ScanNext4ForLeft(名稱,2)=“男" IfRight(名稱,2)=“球"ExitEndifEndscan?名稱男子足球練習(xí):下列程序段執(zhí)行后,輸出結(jié)果是:記錄號名稱Use4.多重循環(huán)如果在一個循環(huán)內(nèi)包含另一個循環(huán)結(jié)構(gòu),則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。下面是幾種常見的二重嵌套形式:1.ForI=….…..ForJ=….….NextJ…..NextI2.FORI=….…..DOWHILE….….ENDDO…..NEXTI[[[[3.DOWHILEL….…..DOWHILE…….ENDDO…..enddo[[4.多重循環(huán)如果在一個循環(huán)內(nèi)包含另一個循環(huán)結(jié)構(gòu),對于循環(huán)的嵌套,要注意以下事項(xiàng):(1)內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2)外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;(3)不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán)。ForAForB

ForC……

NextC

NextBNextA[[[ForAForBForC……

NextB

NextANextC

[[[不能交叉正確的嵌套錯誤的嵌套對于循環(huán)的嵌套,要注意以下事項(xiàng):ForA[[[For【例8.27】分析下面程序的運(yùn)行結(jié)果:clearFori=1To3Forj=5To7?

I,jNextjNextiReturn[[151617252627353637【例8.27】分析下面程序的運(yùn)行結(jié)果:clear[[

對于兩個具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?yàn)橹鞒绦?,被調(diào)用程序?yàn)樽映绦?。子程序的建立和一般命令文件的建立方法相同,都是ModifyCommand,文件默認(rèn)的擴(kuò)展名還是Prg。調(diào)用方法是在主程序中用Do命令。8.4.1主程序和子程序Do子程序文件名ModifyCommand〈過程文件名〉文件格式:與程序一樣主程序調(diào)用:返回主程序:Return[ToMaster]建立子程序:沒有可選項(xiàng),返回到調(diào)用處,有可選項(xiàng),返回到調(diào)用的最高一級。1.子程序的調(diào)用和返回8.4過程和用戶自定義函數(shù)對于兩個具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?yàn)橹鞒绦颍纠?.28】分析下面程序的運(yùn)行結(jié)果:&&MAIN.PRGClearDoJADoJBDoJCReturn&&JA.RPG?"***"DoJBDoJCReturn&&JB.RPG?"#####"Return&&JC.RPG?"*******"ReturnToMaster【例8.28】分析下面程序的運(yùn)行結(jié)果:&&MAIN.PRG【例8.29】利用子程序計(jì)算圓的面積:*主程序:DoWhile.T.ClearWait“是否要計(jì)算圓的面積(Y/N)?”TojaIfUpper(ja)=“Y” &&為“N”時結(jié)束程序Dozcx1.prgElseExitEndifEnddoReturn*子程序zcx1:ClearInput"輸入圓的半徑:"tobjS=3.14*bj**2?"圓的面積為:",sReturn【例8.29】利用子程序計(jì)算圓的面積:*主程序:2.帶參數(shù)的子程序調(diào)用

調(diào)用子程序時參數(shù)表中的參數(shù)要傳送給子程序,子程序也必須設(shè)置相應(yīng)的參數(shù)接受語句。Parameters可以完成此項(xiàng)功能,但是必須是子程序的第一條語句。主程序調(diào)用:子程序接收:Do<過程文件名〉With<實(shí)際參數(shù)表>Parameters<形式參數(shù)表>各種各類型的常數(shù)、有具體值的變量沒有具體指的變量,個數(shù)、位置和類型要和主程序的實(shí)際參數(shù)一樣,但是名字可以不一樣。例如:主程序:DozcxWith“張三”,89,性別子程序:Parametersa,b,c

變量姓名必須是賦過值的變量沒有具體值2.帶參數(shù)的子程序調(diào)用調(diào)用子程序時參數(shù)表中的參【例8.30】利用子程序計(jì)算圓的面積:*主程序:Clearymj=0 &&初始化用于接收圓面積的變量Input“請輸入圓的半徑:“To

bjDozcx2Withbj,ymj &&帶參數(shù)調(diào)用子程序@7,10Say"圓的面積為:"+Str(ymj,10,2)Return*子程序zcx2:Parameterscj,sS=3.14*cj**2Return變量bj初始值為0計(jì)算后的面積【例8.30】利用子程序計(jì)算圓的面積:*主程序:函數(shù)名(實(shí)際參數(shù)表)3.自定義函數(shù)

自定義函數(shù)與子程序的區(qū)別在于自定義函數(shù)必須返回一個函數(shù)值,而子程序則無此限制。主程序調(diào)用格式:[Function<函數(shù)名>][Parameters<形式參數(shù)表>]

命令序列Return<表達(dá)式>如果是單獨(dú)的程序,就可以省略這一句,如果自定義函數(shù)和主程序是一個程序,不能省略。從表達(dá)式返回函數(shù)值到主程序自定義函數(shù)格式:例如:主程序:

?a1(bb)自定義函數(shù):Parametersbb

……Returnbb函數(shù)名(實(shí)際參數(shù)表)3.自定義函數(shù)自定義函【例8.31】利用自定義函數(shù)計(jì)算圓的面積:*主程序:clearInput“請輸入圓的半徑:“To

bj@7,10Say"圓的面積為:"+str(zcx3(bj),10,2) Return帶參數(shù)調(diào)用自定義函數(shù)zcx3*自定義函數(shù)zcx3:ParametersrS=3.14*r**2Returns調(diào)用時bj是半徑,返回時,bj是面積*主程序:clearInput“請輸入圓的半徑:“To

bj@7,10Say"圓的面積為:"+str(zcx3(bj),10,2) Return*自定義函數(shù)Functionzcx3ParametersrS=3.14*r**2Returns如果主程序和自定義函數(shù)放在一個文件中,那么一定要加上這么一句。【例8.31】利用自定義函數(shù)計(jì)算圓的面積:*主程序:8.4.2過程文件多個過程可以保存在一個過程文件中。過程文件打開后,其中的過程能被任何其它程序調(diào)用。稱為內(nèi)部過程調(diào)用。要調(diào)用內(nèi)部過程,需在主程序中首先打開過程文件,然后再調(diào)用過程文件中的過程。打開過程文件:調(diào)用過程:關(guān)閉過程文件:SetProcedureTo<過程文件名>Do

<過程名>[with參數(shù)表]SetProcedureTo1.打開、調(diào)用、關(guān)閉過程文件

8.4.2過程文件多個過程可以保存在一個過程文2.過程的建立1、Procedure表示一個過程的開始,并命名過程名,過程名必須以字母或下劃線開始。為1~8個字符;2、過程執(zhí)行到Return處返回到調(diào)用程序或命令窗口。定義過程:

Procedure<過程名1><命令序列>Return[ToMaster]Procedure<過程名2><命令序列>Return……說明:過程文件可以單獨(dú)建立成命令文件,也可以放在主程序的后面2.過程的建立1、Procedure表示一個過程的開始,【例8.32】有2個文件:程序文件Prog1.Prg是主文件,Pp1.Prg過程文件。ClearSetProcedureTopp1.prgInput"請從鍵盤輸入一個數(shù):"ToaInput"請從鍵盤輸入一個數(shù):"TobDoP1DoP2SetProcedureTo?"a=",a,"b=",b?"a+b=",a+b,"a-b=",a-b?"a*b=",a*b,"a/b=",a/bReturn*PP1.PRGProcedureP1C=1D=2C=C+DD=D+C?"c=",C,"d=",DReturnProcedureP2?"p2=",200Return打開pp1.prg過程文件pp1過程文件放了2個過程P1和P2關(guān)閉PP1.PRG過程文件【例8.32】有2個文件:程序文件Prog1.Prg是主文件【例8.33】編寫計(jì)算園的面積和周長的程序。ClearSetProceduretozcx1N=0Dowhile.t.Clear@10,10say"請選擇以下功能:"@11,10say"1-計(jì)算圓的面積:"@12,10say"2-計(jì)算圓的周長:"@13,10say"3-退出"@14,10say"請輸入您的選擇:"getnReadDocasecasen=1doproc1&&面積Casen=2doproc2&&周長Casen=3ExitEndcaseEnddoSetProceduretoReturn打開過程文件關(guān)閉過程文件*zcx1Procedureproc1ClearInput"請輸入半徑:"tobjs=3.14**bj?“圓的面積為:",sWaitReturnProcedureproc2ClearInput"請輸入半徑:"tobji=2*3.14*bj?"圓的周長為:",iWaitReturn【例8.33】編寫計(jì)算園的面積和周長的程序。ClearDo本章小結(jié)VisualFoxPro既是一種數(shù)據(jù)庫管理系統(tǒng),也是一種程序設(shè)計(jì)語言。本章介紹了VisualFoxPro陳序設(shè)計(jì)的基本內(nèi)容,包括程序的概念、程序的基本結(jié)構(gòu)、多模塊程序設(shè)計(jì)等等。本章小結(jié)VisualFoxPro既是一種數(shù)據(jù)實(shí)驗(yàn)六

程序設(shè)計(jì)作業(yè)要求作業(yè)上交實(shí)驗(yàn)六的Word文檔和所作的程序文件。實(shí)驗(yàn)六程序設(shè)計(jì)作業(yè)要求作業(yè)上交實(shí)驗(yàn)六的Word文檔和所作演講完畢,謝謝觀看!演講完畢,謝謝觀看!第8章結(jié)構(gòu)化程序設(shè)計(jì)VisualFoxPro程序設(shè)計(jì)主講教師:高駿Emil:704098395@第8章VisualFoxPro程序設(shè)計(jì)主講教師:高駿

本章要求:1.掌握VFP程序的建立、修改、運(yùn)行。

2.掌握程序的三種基本結(jié)構(gòu)。3.了解過程和過程文件。

本章要點(diǎn):

程序的三種控制結(jié)構(gòu)。學(xué)時安排:6學(xué)時(理論)+6學(xué)時(實(shí)踐)課程要求本章要求:課程要求結(jié)束作業(yè)

第8章程序設(shè)計(jì)基礎(chǔ)

8.1

程序文件及其編輯環(huán)境

8.2

程序中幾種常用命令

8.3

程序的基本控制結(jié)構(gòu)

8.4

過程和用戶自定義函數(shù)結(jié)束作業(yè)第8章程序設(shè)計(jì)基礎(chǔ)8.1程序文件8.1程序文件及其編輯環(huán)境

在ViusalFoxPro中,程序是由一系列ViusalFoxPro可以理解的命令、函數(shù)和操作組成的,這些命令和函數(shù)可以在ViusalFoxPro中的命令窗口和以人工方式逐一執(zhí)行,也可以把它們放在一個程序文件中,以文件的形式來執(zhí)行。【8.1】

假定學(xué)號的前四位為入學(xué)年份,第5,6位為專業(yè)代碼.編寫命令文件test.prg,分別統(tǒng)計(jì)所有學(xué)生和2010年入學(xué),專業(yè)代碼為03的學(xué)生選修課程號為101課程的平均成績.8.1程序文件及其編輯環(huán)境在ViusalSETTALKOFFSETDEFAULTTOd:\學(xué)生管理OPENDATA學(xué)生管理SELECTAVG(成績)FROM

成績

WHERE; 課程號=“101”INTOARRAYm1SELECTAVG(成績)FROM成績

WHERE; 課程號=“101”ANDLEFT(學(xué)號,4)=“2010”;ANDSUBS(學(xué)號,5,2)=“03”INTOARRAYm2CLEAR?”所有學(xué)生的平均成績:”font“宋體”,20,m1(1)font“宋體”?”指定學(xué)生的平均成績:”font“宋體”,20,m2(1),font“宋體”CLOSEDATASESETTALKONRETURNSETTALKOFF(1)以命令方式建立、修改程序文件ModifyCommand<程序文件名>格式:功能:創(chuàng)建、編輯以“程序文件名”為名的程序文件說明:1.在編輯窗口輸入一條條命令。2.^w或關(guān)閉窗口存盤、^q或者<Esc>放棄存盤3.程序文件的擴(kuò)展名為.prg,可以省略。(2)以菜單方式建立、修改程序文件文件新建文件打開已有的程序文件.prg8.1.1程序文件的建立和運(yùn)行1.程序文件的建立(1)以命令方式建立、修改程序文件ModifyComm(2)命令方式(1)菜單方式程序運(yùn)行Do<文件名>格式:功能:運(yùn)行程序文件程序文件建立后,可以用多種方式、多次執(zhí)行它。下面是兩種常用的方式。選中運(yùn)行2.程序文件的運(yùn)行、調(diào)用(2)命令方式(1)菜單方式程序運(yùn)行Do<文件名>8.1.2VisualFoxPro編程特點(diǎn)1.變量不區(qū)分大小寫類型說明示例類型說明示例a數(shù)組型aStudentsf浮點(diǎn)型fInterestc字符型cNamel邏輯型lFlagy貨幣型yCurrentValuen數(shù)值型nCounterd日期型dBirthDayo對象oEmployeet日期時間型tLastModifiedu未知uReturnValueb雙精度型bValue建議的變量命名約定8.1.2VisualFoxPro編程特點(diǎn)1.變量不2.變量不需預(yù)先聲明當(dāng)把一個值保存到某一變量而該變量原先不存在時,VisualFoxPro系統(tǒng)會隱含地聲明它,并有初始值存在。用戶在變量里放什么數(shù)據(jù),變量就是什么類型。

3.命令分行程序中每條命令都以回車鍵結(jié)尾,一行只能寫一條命令。若需分行書寫,可以使用分號“;”表示續(xù)行。4.添加注釋VisualFoxPro系統(tǒng)對整行注釋和行中部分注釋有不同的格式。整行注釋使用“*”引導(dǎo),行中部分注釋使用“&&”引導(dǎo)。2.變量不需預(yù)先聲明當(dāng)把一個值保存到某一變量8.2程序中幾種常用命令8.2.1基本輸入命令1.Wait命令

暫停程序的運(yùn)行,直到用戶輸入一個字符,也可用于輸出一條提示信息WAIT[<信息文本>]

[TO

<內(nèi)存變量>][WINDOW[AT

<行>,<列>]]

[NOWAIT][CLEAR][NOCLEAR][TIMEOUT

<數(shù)值表達(dá)式>]保存鍵入的字符,省略TO子句不保存省略則顯示“按任意鍵繼續(xù)….不等待用戶輸入關(guān)閉提示窗口不關(guān)閉提示窗口,直到下一個WAIT命令自動關(guān)閉WINDOW子句使屏幕出現(xiàn)一個WAIT提示窗口,內(nèi)容由<信息文本>確定,位置有AT子句指定.省略AT子句則出現(xiàn)在屏幕右上角TIMEOUT子句設(shè)定等待時間(以秒為單位)8.2程序中幾種常用命令8.2.1基本輸入命令1.W說明:③若指定WINDOWS子句,則會出現(xiàn)一個WAIT提示窗口,用以顯示提示信息.提示窗口在主窗口的右上角,也可以用AT短語指定其在主窗口中的位置.④若同時選用NOWAIT短語和WINDOWS子句,系統(tǒng)將不等待用戶按鍵,直接往下執(zhí)行.⑤若選用NOCLEAR短語,則不關(guān)閉提示窗口,直到用戶執(zhí)行下一條WAITWINDOWS命令或WAITCLEAR命令為止.⑥TIMEOUT子名用來設(shè)定等待時間(秒數(shù))。例如執(zhí)行:

Wait“歡迎使用!”Windows在屏幕右上角彈出一個窗口,顯示“歡迎使用!”,按任意鍵后窗口消失。說明:例如執(zhí)行:在屏幕右上角彈出一個窗口,顯示“歡迎使用!”2.Accept命令A(yù)ccept[<提示信息>]To<內(nèi)存變量>格式:功能:在程序執(zhí)行過程中,暫停執(zhí)行,等待用戶從鍵盤輸入字符串。當(dāng)用戶以回車鍵結(jié)束輸入完數(shù)據(jù)后,系統(tǒng)將用戶輸入的內(nèi)容作為字符串賦值給指定內(nèi)存變量。然后繼續(xù)往下執(zhí)行程序。說明:(1)如果選用提示信息,系統(tǒng)會在屏幕上顯示提示信息;(2)輸入的數(shù)據(jù)只能是字符型數(shù)據(jù),并且不用定界符;(3)如果用戶什么數(shù)據(jù)都不輸,就按下回車鍵,系統(tǒng)認(rèn)為是輸入了一個空串,自動會把空串賦給指定的內(nèi)存變量中。2.Accept命令A(yù)ccept[<提示信息>]【例8.2】編程從鍵盤輸入某數(shù)據(jù)庫的文件名,要求打開該數(shù)據(jù)庫并顯示其內(nèi)容.程序文件名為

PROG1.PRG。SETTALKOFFStedefaulttod:\學(xué)生管理CLEARACCEPT

"請輸入數(shù)據(jù)庫名:"

TO

AAAOPENDATABASE

&AAAACCEPT

"請輸入表名:"

TO

BBBUSE

&BBBbrowseUSESETTALKONRETURNDoprog1請輸入數(shù)據(jù)庫名:學(xué)生管理請輸入表名:

學(xué)生【例8.2】編程從鍵盤輸入某數(shù)據(jù)庫的文件名,要求打開該數(shù)據(jù)庫Use人才檔案ExclusiveAccept"請輸入編號:"TobhLocateFor編號=bh?編號,姓名Usesetdefaulttod:\人才管理opendata人才管理Accept"請輸入職稱:"tozcselect*from專業(yè)特長;where職稱=zc

【例8.3】輸入姓名,在人才檔案

溫馨提示

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

最新文檔

評論

0/150

提交評論