計(jì)算機(jī)程序基礎(chǔ)(講義)_第1頁(yè)
計(jì)算機(jī)程序基礎(chǔ)(講義)_第2頁(yè)
計(jì)算機(jī)程序基礎(chǔ)(講義)_第3頁(yè)
計(jì)算機(jī)程序基礎(chǔ)(講義)_第4頁(yè)
計(jì)算機(jī)程序基礎(chǔ)(講義)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、VFP程序設(shè)計(jì)1 數(shù)據(jù)與數(shù)據(jù)運(yùn)算 HYPERLINK l _2_數(shù)據(jù)與數(shù)據(jù)運(yùn)算 o 4.1 結(jié)構(gòu)化程序設(shè)計(jì)2 結(jié)構(gòu)化程序設(shè)計(jì) HYPERLINK l _2_結(jié)構(gòu)化程序設(shè)計(jì) o 4.1 結(jié)構(gòu)化程序設(shè)計(jì)3 程序結(jié)構(gòu) HYPERLINK l _3_程序結(jié)構(gòu) o 4.2 程序結(jié)構(gòu)4 子程序、過(guò)程與自定義函數(shù) HYPERLINK l _4.3_子程序、過(guò)程與自定義函數(shù) 1 數(shù)據(jù)與數(shù)據(jù)運(yùn)算一、數(shù)據(jù)類(lèi)型數(shù)據(jù)是反映現(xiàn)實(shí)世界中客觀事物屬性的記錄,它包括兩個(gè)方面:數(shù)據(jù)內(nèi)容與數(shù)據(jù)形式。數(shù)據(jù)內(nèi)容就是數(shù)據(jù)的值,數(shù)據(jù)形式就是數(shù)據(jù)的存儲(chǔ)形式和操作使用方式,也稱為數(shù)據(jù)類(lèi)型。VFP6系統(tǒng)為使用戶建立和操作數(shù)據(jù)庫(kù)更加方便,將系統(tǒng)

2、中所有操作、處理的數(shù)據(jù),分為幾種不同數(shù)據(jù)類(lèi)型:字符型、數(shù)值型、日期型、日期時(shí)間型、邏輯型、備注型、通用型、貨幣型、二進(jìn)制字符型和二進(jìn)制備注型。二、常量與變量在VFP系統(tǒng)中,數(shù)據(jù)可用常量、變量、數(shù)組表示,數(shù)據(jù)還可以用字段、記錄和對(duì)象中,由它們存儲(chǔ)、容納各種類(lèi)型的數(shù)據(jù)。(一)常量常量是在命令或程序中可直接引用、具有具體值的命名數(shù)據(jù)項(xiàng),其特征是在整個(gè)操作過(guò)程中它的值和表現(xiàn)形式保持不變。VFP按常量取值的數(shù)據(jù)類(lèi)型,將常量分為6種類(lèi)型:數(shù)值型常量、浮點(diǎn)型常量、字符型常量、邏輯型常量、日期型常量、日期時(shí)間型常量。1、數(shù)值型常量由數(shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)組成,表示整數(shù)或?qū)崝?shù)值。如:100,-21,15.31,-

3、21092.5041等分別是數(shù)值型常量中的整數(shù)和實(shí)數(shù)。2、字符型常量由任意ASCII字符、漢字、空格或數(shù)字等組成的字符型數(shù)據(jù),字符型常量又稱為字符串。為與其他類(lèi)型常量、變量和標(biāo)識(shí)符相區(qū)別,VFP要求將字符串中所有字符,用一對(duì)雙引號(hào)“”或單引號(hào)“”或方括號(hào)“ ”作為定界符對(duì)括起來(lái)。如“I am a student.”,中華人民共和國(guó),Visual FoxPro數(shù)據(jù)庫(kù)系統(tǒng)都是字符串。3、日期型常量日期型常量是表示日期值的數(shù)據(jù),其默認(rèn)格式是mm/dd/yyyy。如10/01/04和10/01/2004均表示2004年10月1日這一日期常量值。4、邏輯型常量邏輯型常量就是表示邏輯判斷結(jié)果“真”或“假”

4、的邏輯值。邏輯常量只有真和假兩種值,分別用(.T.或.y.)和(.F.或.n.)表示真和假。VFP中在表示邏輯常量的字母左右加注圓點(diǎn)符“.”以示區(qū)別。(二)變量變量是在操作過(guò)程中可以改變其取值或數(shù)據(jù)類(lèi)型的數(shù)據(jù)項(xiàng)。確定一個(gè)變量,需要確定其三個(gè)要素:變量名、數(shù)據(jù)類(lèi)型和變量值。1、內(nèi)存變量?jī)?nèi)存變量是一種存在于計(jì)算機(jī)內(nèi)存中變量,是一種單個(gè)數(shù)據(jù)元素的臨時(shí)性變量,需要時(shí)臨時(shí)定義,不用時(shí)可隨時(shí)釋放。內(nèi)存變量分為用戶自定義內(nèi)存變量和系統(tǒng)內(nèi)存變量。(1)內(nèi)存變量的建立建立內(nèi)存變量就是給內(nèi)存變量賦值。內(nèi)存變量賦值既可定義一個(gè)新的內(nèi)存變量,也可改變已朋內(nèi)存變量的值或數(shù)據(jù)類(lèi)型。【格式】?jī)?nèi)存變量=表達(dá)式【功能】計(jì)算的值

5、并賦值給指定內(nèi)存變量?!纠緼=3+2y=2*x+5(2)內(nèi)存變量的顯示輸出可以用兩個(gè)命令在屏幕上顯示輸出內(nèi)存變量的值。【格式1】?表達(dá)式表 AT 列號(hào)【格式2】?表達(dá)式表 AT 列號(hào)【功能】計(jì)算表達(dá)式表中各表達(dá)式的值,并在屏幕上指定位置顯示輸出各式的值。格式1:不管有無(wú)指定表達(dá)式表,都會(huì)輸出一個(gè)回車(chē)換行符。如果指定了表達(dá)式表,各表達(dá)式值將在下一行的起始處輸出;格式2:不會(huì)輸出一個(gè)回車(chē)換行符,各表達(dá)式值在屏幕上當(dāng)前行光標(biāo)所在位置直接輸出;表達(dá)式表:多個(gè)逗號(hào)兩兩分隔的表達(dá)式,各表達(dá)式的值輸出時(shí),以空格分隔;AT 列號(hào):該子句指定表達(dá)式值從指定列開(kāi)始顯示輸出。AT的定位只對(duì)它前面的一個(gè)表達(dá)式有效,

6、多個(gè)表達(dá)式必須用多個(gè)AT子句分別定位輸出,而且可反序定位?!纠?A,B,C AT 20?A2、數(shù)組數(shù)組是一種結(jié)構(gòu)化的變量,是一組具有相同名稱、以下標(biāo)相互區(qū)分的有序內(nèi)存變量。一個(gè)數(shù)組通常都包含多個(gè)數(shù)據(jù)元素。Visual FoxPro系統(tǒng)中只允許使用一維數(shù)組(相當(dāng)于數(shù)列)和二維數(shù)組(相當(dāng)于行列式或矩陣)。(1)數(shù)組元素?cái)?shù)組中各有序變量(數(shù)據(jù)元素)組成數(shù)組的成員,稱為數(shù)組元素。數(shù)組元素實(shí)質(zhì)上是一個(gè)內(nèi)存變量,也稱數(shù)組變量,它們具有相同變量名即數(shù)組名,彼此以下標(biāo)區(qū)分;數(shù)組元素的名稱(變量名)用數(shù)組加下標(biāo)構(gòu)成。如A(1)、B(2,3)分別表示一維數(shù)組A的第1個(gè)數(shù)組元素,二維數(shù)組B中第2行第3列的數(shù)組元素

7、;下標(biāo)必須用圓括號(hào)對(duì)括;一維數(shù)組的元素只有一個(gè)下標(biāo),二維數(shù)組的元素有兩個(gè)以逗號(hào)分隔的下標(biāo)(也可用一個(gè)下標(biāo)表示);數(shù)組元素的下標(biāo)均從1開(kāi)始,各元素的初始值為 .F. ;數(shù)組元素的數(shù)據(jù)類(lèi)型決定于最后賦值的數(shù)據(jù)類(lèi)型;不同元素的數(shù)據(jù)類(lèi)型可以不同;數(shù)組元素與普通內(nèi)存變量一樣操作,可以賦值和引用。(2)數(shù)組的定義數(shù)組必須先定義后使用,定義數(shù)組是向系統(tǒng)申請(qǐng)數(shù)組元素在內(nèi)存中存儲(chǔ)空間。【格式】DIMENSION 數(shù)組名1(N1, N2)DECLARE 數(shù)組名1(N1 , N2) ,數(shù)組名2(N3 ,N4)【功能】定義一維或二維數(shù)組。(3)數(shù)組的元素的排列一維數(shù)組是按下標(biāo)從小到大的順序排列的,二維數(shù)組的排列是先按

8、下標(biāo)1,再按下標(biāo)2的從小到大的順序排列。如:A(5)排列如下表所示:A(1)A(2)A(3)A(4)A(5)B(3,4)排列如下表所示:B(1,1)B(1,2)B(1,3)B(1,4)B(2,1)B(2,2)B(2,3)B(2,4)B(3,1)B(3,2)B(3,3)B(3,4)其中:B(7)相當(dāng)于B(2,3)(4)數(shù)組的賦值與引用數(shù)組元素的賦值與引用,與普通內(nèi)存變量的規(guī)則相同?!纠緿IME A(5) , B(3,4)STORE “OK” TO AB(1,1)=10B(1,2)=20?A(3),B(1,2),B(2,3)三、常用函數(shù)Visual FoxPro系統(tǒng)中,函數(shù)是一段程序代碼,用來(lái)進(jìn)

9、行一些特定的運(yùn)算或操作,支持和完善命令的功能,幫助用戶完成各種操作與管理。函數(shù)的一般形式為: 函數(shù)名(參數(shù)1 , 參數(shù)2)Visual FoxPro的函數(shù)由函數(shù)名與參數(shù)(即自變量)兩部分組成。參數(shù)必須用圓括號(hào)對(duì)括起來(lái),如有多個(gè)參數(shù),各參數(shù)以逗號(hào)分隔;有些函數(shù)可省略參數(shù),或不需參數(shù),但也必須保留括號(hào); (一)字符函數(shù)字符函數(shù)是處理字符型數(shù)據(jù)的函數(shù),其自變量或函數(shù)值中至少有一個(gè)是字符型數(shù)據(jù)。函數(shù)中涉及的字符型數(shù)據(jù)項(xiàng),均以C表示。1、字符串長(zhǎng)度函數(shù)【格式】LEN(C)【功能】返回字符串C的字符數(shù)(長(zhǎng)度)。函數(shù)值為N型。2、取子字符串函數(shù)【格式】SUBSTR(C, N1, N2)【功能】返回從字符串C

10、中第N1個(gè)字符開(kāi)始,截取N2個(gè)字符的子串。LEFT(C, N) 從字符串C左邊取N個(gè)字符RIGHT(C, N) 從字符串C右邊取N個(gè)字符3、子串位置函數(shù)【格式】AT(C1, C2)【功能】返回字符串C1在字符串C2中的起始位置。函數(shù)值為整數(shù)。如果串C2不包含串C1,函數(shù)返回值為零。4、刪除字符串空格函數(shù)【格式】RTRIM | TRIM(C)【功能】刪除字符串C尾部空格字符。LTRIM(C) 刪除字符串C的前導(dǎo)空格字符。ALLTRIM(C) 刪除字符串C的前導(dǎo)和尾部空格字符。5、空格函數(shù)【格式】SPACE(N)【功能】返回一個(gè)包含N個(gè)空格的字符串。6、大小寫(xiě)字母轉(zhuǎn)換函數(shù)【格式】LOWER(C)

11、| UPPER(c)【功能】LOWER( )將字符串C中字母全部變成小寫(xiě)字母,UPPER( )將字符串C中字母全部變成大寫(xiě)字母,其它字符不變。(二)數(shù)值函數(shù)數(shù)值函數(shù)用于數(shù)值運(yùn)算,其自變量與函數(shù)都是數(shù)值型數(shù)據(jù)。1、取絕對(duì)值函數(shù)【格式】ABS(N)【功能】計(jì)算N(數(shù)值表達(dá)式)的值,并返回該值的絕對(duì)值。2、取整函數(shù)【格式】INT(N)【功能】計(jì)算數(shù)值表達(dá)式N的值,返回該值的整數(shù)部分。3、四舍五入函數(shù)【格式】ROUND(N1, N2)【功能】返回N1四舍五入的值,N2表示保留的小數(shù)位數(shù)。4、最大值和最小值函數(shù)【格式】MAX | MIN(N1, N2 , N3.)【功能】返回?cái)?shù)值表達(dá)式中的最大值MAX(

12、 )和最小值MIN( )。5、求余數(shù)函數(shù)(求模函數(shù))【格式】MOD(N1, N2)【功能】返回N1除以N2的余數(shù)。余數(shù)的小數(shù)位數(shù)與N1相同,符號(hào)與N2相同。6、平方根函數(shù)【格式】SQRT(N)【功能】求非負(fù)N的平方根。7、符號(hào)函數(shù)【格式】SIGN(N)【功能】返回N的符號(hào)。正數(shù)、零、負(fù)數(shù)分別返回1、0、-1。(三)轉(zhuǎn)換函數(shù)在數(shù)據(jù)庫(kù)應(yīng)用的過(guò)程中,經(jīng)常要將不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)進(jìn)行相應(yīng)轉(zhuǎn)換,滿足實(shí)際應(yīng)用的需要。Visual FoxPro系統(tǒng)提供了若干個(gè)轉(zhuǎn)換函數(shù),較好地解決了數(shù)據(jù)類(lèi)型轉(zhuǎn)換的問(wèn)題。1、數(shù)值轉(zhuǎn)換為字符串【格式】STR(N ,長(zhǎng)度,小數(shù)位數(shù))【功能】將N的數(shù)值轉(zhuǎn)換成字符串形式。函數(shù)值為C型。2

13、、字符串轉(zhuǎn)換為數(shù)值【格式】VAL (C)【功能】將C串中數(shù)字轉(zhuǎn)換成對(duì)應(yīng)數(shù)值,轉(zhuǎn)換結(jié)果取兩位小數(shù)。函數(shù)值為N型。3、字符轉(zhuǎn)換為ASCII碼值【格式】ASC(C)【功能】返回C串首字符的ASCII碼值。函數(shù)值為N型。4、ASCII碼轉(zhuǎn)換為相應(yīng)字符【格式】CHR(N)【功能】返回以N值為ASCII碼的ASCII字符。函數(shù)值為C型。四、運(yùn)算符與表達(dá)式在Visual FoxPro系統(tǒng)中,表達(dá)式是由常量、變量、函數(shù)及其他數(shù)據(jù)容器單獨(dú)或與運(yùn)算符組成的有意義的運(yùn)算式子。運(yùn)算符是對(duì)數(shù)據(jù)對(duì)象進(jìn)行加工處理的符號(hào),根據(jù)其處理數(shù)據(jù)對(duì)象的數(shù)據(jù)類(lèi)型,運(yùn)算符分為算術(shù)(數(shù)值)運(yùn)算符、字符運(yùn)算符、日期時(shí)間運(yùn)算符、邏輯運(yùn)算符和關(guān)系

14、運(yùn)算符五類(lèi),相應(yīng)的,表達(dá)式也分為算術(shù)表達(dá)式、字符表達(dá)式、日期時(shí)間表達(dá)式、邏輯表達(dá)式和關(guān)系表達(dá)式五類(lèi)。在Visual FoxPro系統(tǒng)中,各類(lèi)運(yùn)算的優(yōu)先順序如下:圓括號(hào)算術(shù)和日期運(yùn)算字符串運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算用戶也可以通過(guò)給表達(dá)式加圓括號(hào)的方式,改變其默認(rèn)運(yùn)算順序。如果多個(gè)同一級(jí)別的運(yùn)算,則按在表達(dá)式中出現(xiàn)的先后順序進(jìn)行運(yùn)算。(一)算術(shù)表達(dá)式算術(shù)表達(dá)式又稱數(shù)值表達(dá)式,其運(yùn)算對(duì)象和運(yùn)算結(jié)果均為數(shù)值型數(shù)據(jù)。數(shù)值運(yùn)算符的功能及運(yùn)算優(yōu)先順序,如表所示。表中運(yùn)算符按運(yùn)算優(yōu)先級(jí)別從高到低順序排列。算術(shù)運(yùn)算符運(yùn)算符功能表達(dá)式舉例運(yùn)算結(jié)果優(yōu)先級(jí)別( )圓括號(hào)(2-5)*(3+2)-15最高最低-取相反數(shù)-(3-

15、8)5*、乘冪2*5、3232、9*、/乘、除2*10、25/520、5%取余數(shù)20%32+、-加、減36+19、29-4755、-18(二)字符表達(dá)式字符表達(dá)式是由字符運(yùn)算符將字符型數(shù)據(jù)對(duì)象連接起來(lái)進(jìn)行運(yùn)算的式子。字符運(yùn)算的對(duì)象是字符型數(shù)據(jù)對(duì)象,運(yùn)算結(jié)果是字符常量或邏輯常量。下表為字符運(yùn)算符的功能。字符運(yùn)算符運(yùn)算符功能表達(dá)式舉例運(yùn)算結(jié)果+串1+串2:兩串順序相連接12 +5612 56-串1-串2:串1尾空格移到串2尾后再順序相連接12 -561256 +與-都是字符連接運(yùn)算符,都將兩字符串順序連接,但“+”是直接連接,“-”則將串1尾部所有空格移到串2尾部后再連接。(三)關(guān)系表達(dá)式由關(guān)系運(yùn)

16、算符連接兩個(gè)同類(lèi)數(shù)據(jù)對(duì)象進(jìn)行關(guān)系比較的運(yùn)算式稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值為邏輯值,關(guān)系表達(dá)式成立則其值為“真”,否則為“假”。關(guān)系運(yùn)算符運(yùn)算符功能表達(dá)式舉例運(yùn)算結(jié)果小于15大于A 1.T.=等于2+4 = 3*5.F.=串全等比較abc=abcabc.F.=小于或等于abc =大于或等于10-10-02=10/01/02.T.、#、!=不等于5 -10.T.$包含于。串1$串2:串1是否為串2子串1234$a123451234$34512.T.F.關(guān)系運(yùn)算符的優(yōu)先級(jí)別相同。關(guān)系表達(dá)式運(yùn)算時(shí),就是比較同類(lèi)兩數(shù)據(jù)對(duì)象的“大小”,對(duì)于不同類(lèi)型的數(shù)據(jù),其“大小”或者是值的大小,或者是先后順序。日期或

17、日期時(shí)間數(shù)據(jù)以日期或時(shí)間的先后順序?yàn)樾颉?(四)邏輯表達(dá)式由邏輯運(yùn)算將邏輯型數(shù)據(jù)對(duì)象連接而成的式子稱為邏輯表達(dá)式。邏輯表達(dá)式的運(yùn)算對(duì)象與運(yùn)算結(jié)果均為邏輯型數(shù)據(jù)。邏輯運(yùn)算符前后一般要加圓點(diǎn)“.”標(biāo)記,以示區(qū)別。邏輯運(yùn)算符運(yùn)算符功能優(yōu)先級(jí)別.NOT. (!)邏輯非,取其右邊邏輯值的相反值最高最低.AND.邏輯與,兩邊的邏輯值均為真才得真.OR.邏輯或,兩邊的邏輯值均為假才得假對(duì)于各種邏輯運(yùn)算,其運(yùn)算規(guī)則可由邏輯運(yùn)算真值表確定,如下表所示就是邏輯運(yùn)算真值表。 2 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)的方法:自頂向下,逐步求精。結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)組成。VFP提供面向過(guò)程的程序

18、設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。面向過(guò)程的程序設(shè)計(jì)是用結(jié)構(gòu)化編程語(yǔ)言來(lái)實(shí)現(xiàn)編寫(xiě)程序。具體就是告訴計(jì)算機(jī)如何一步一步解決問(wèn)題,即要求計(jì)算機(jī)“怎么做”。它不依賴具體的機(jī)器。面向?qū)ο蟮某绦蛟O(shè)計(jì)適于解決大型的任務(wù),設(shè)計(jì)程序時(shí)只需告訴計(jì)算機(jī)“做什么”,而不用說(shuō)明“怎么做”。它不依賴具體的機(jī)器。VFP程序是由一系列命令組成,又稱命令文件或程序文件。運(yùn)行程序文件就是執(zhí)行文件中的各條命令。一、引例先看一個(gè)完整的VFP過(guò)程化程序?qū)嵗?,從中可以引出程序的幾個(gè)基本概念。*程序示例:求圓形的面積。CLEAR&清除主窗口中的信息SET TALK OFF&關(guān)閉命令窗口對(duì)話INPUT 請(qǐng)輸入圓的半徑,R= TO R&輸入圓的

19、半徑S=PI( )*R2&計(jì)算圓的面積? 圓的面積=,S&輸出圓的面積SET TALK ON&打開(kāi)命令窗口對(duì)話RETURN&返回命令窗口NOTE 程序結(jié)束有關(guān)此Visual FoxPro程序的幾點(diǎn)說(shuō)明:注釋語(yǔ)句【格式1】* 注釋內(nèi)容每一行開(kāi)頭均可加此注釋【格式2】NOTE 注釋內(nèi)容同上【格式3】& 注釋內(nèi)容行尾注釋【功能】增強(qiáng)程序文件易讀性,編譯時(shí)注釋內(nèi)容不會(huì)被執(zhí)行。NOTE 注釋一行寫(xiě)不下可加續(xù)行符”;”, &注釋不能用在命令語(yǔ)句行續(xù)行符”;”的后面。對(duì)話開(kāi)關(guān)語(yǔ)句【格式】SET TALK OFF | ON【功能】關(guān)閉或打開(kāi)命令執(zhí)行時(shí)的對(duì)話開(kāi)關(guān)。命令的分行Visual FoxPro程序是命令行

20、的序列,每個(gè)命令都以回車(chē)鍵結(jié)束,一行只能寫(xiě)一條命令;若一條命令太長(zhǎng),一行寫(xiě)不下,也可分行書(shū)寫(xiě),并在分行處加上續(xù)行符“;”,再按回車(chē)鍵。程序的結(jié)束執(zhí)行程序文件時(shí),將依次執(zhí)行文件中的命令,直到所有命令執(zhí)行完畢,或者執(zhí)行到以下命令:CANCAL:終止程序運(yùn)行,清除所有的私有變量,返回命令窗口;RETURN:結(jié)束程序執(zhí)行,返回調(diào)用它的上級(jí)程序,若無(wú)上級(jí)程序則返回命令窗口;二、程序中常用的簡(jiǎn)單語(yǔ)句一個(gè)程序如果沒(méi)有輸出操作(即將程序結(jié)果顯示出來(lái))就沒(méi)有什么實(shí)用價(jià)值,而如果沒(méi)有輸入操作(即給變量提供數(shù)據(jù)),則必然缺乏靈活性。VFP提供多種方法來(lái)實(shí)現(xiàn)信息的輸入和輸出。(一)輸入語(yǔ)句1、賦值輸入語(yǔ)句在編寫(xiě)程序時(shí)

21、,給變量提供數(shù)據(jù)可以用賦值語(yǔ)句,多用于給變量賦初值?!靖袷?】STORE 數(shù)據(jù) TO變量名表【格式2】變量名=表達(dá)式【功能】給變量賦值,其中格式1可以同時(shí)給多個(gè)變量賦同一個(gè)值,而格式2只能給一個(gè)變量賦一個(gè)值。而在程序運(yùn)行過(guò)程中,往往需要根據(jù)實(shí)際情況輸入數(shù)據(jù)賦值給變量,這就需要采用交互式數(shù)據(jù)輸入語(yǔ)句。2、交互式輸入語(yǔ)句INPUT命令【格式】INPUT 提示信息 TO 內(nèi)存變量【功能】在程序執(zhí)行過(guò)程中,將用戶交互式輸入的內(nèi)容賦值給指定內(nèi)存變量【例】從鍵盤(pán)輸入兩個(gè)任意正數(shù),編程求以兩數(shù)為邊長(zhǎng)的矩形面積。程序文件名為PROG4.PRGSET TALK OFFCLEARINPUT“矩形的邊長(zhǎng)a為:” T

22、O AINPUT“矩形的邊長(zhǎng)b為:” TO BS=A*B?“矩形的面積為:”, SSET TALK ONRETURN【練習(xí)】編寫(xiě)一個(gè)能同時(shí)求矩形面積與周長(zhǎng)的程序。(二)輸出語(yǔ)句1、簡(jiǎn)單輸出語(yǔ)句【格式】?|?表達(dá)式【功能】將表達(dá)式的值輸出(?)到下一行起始處,或直接輸出(?)到當(dāng)前光標(biāo)所在位置。2、格式輸出語(yǔ)句【格式】行號(hào),列號(hào) SAY 表達(dá)式【功能】將表達(dá)式的值在指定位置輸出到屏幕上。【說(shuō)明】與格式輸入命令相同, SAY。 3 程序結(jié)構(gòu)Visual FoxPro系統(tǒng)提供的命令豐富,且功能強(qiáng)大,把這些命令和程序設(shè)計(jì)語(yǔ)句有效地組織在一起,就形成了實(shí)現(xiàn)某一特定功能的程序。所謂程序設(shè)計(jì)就是通過(guò)對(duì)實(shí)際問(wèn)

23、題的分析,確定解題算法,并應(yīng)用程序設(shè)計(jì)語(yǔ)言提供的命令或語(yǔ)句將解題算法描述為計(jì)算機(jī)處理的語(yǔ)句序列(即程序)。所謂結(jié)構(gòu)化程序設(shè)計(jì),就是采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu),即順序、分支、循環(huán)三種基本結(jié)構(gòu)構(gòu)成。一、順序結(jié)構(gòu)順序結(jié)構(gòu)是一種最簡(jiǎn)單的結(jié)構(gòu)。在這種結(jié)構(gòu)中,程序根據(jù)語(yǔ)句中的命令的書(shū)寫(xiě)順序依次執(zhí)行的命令序列。VFP系統(tǒng)中的大多數(shù)命令都可以作為順序結(jié)構(gòu)中的語(yǔ)句?!纠烤幊虒?shí)現(xiàn)輸入某個(gè)三角形的底和高,計(jì)算其面積。 SET TALK OFFCLEARINPUT “請(qǐng)輸入三角形的底:” TO DINPUT “請(qǐng)輸入三角形的高:” TO GAREA=D*G/2&計(jì)算面積?AREA&輸出面

24、積SET TALK ON CANCEL【例】某商場(chǎng)營(yíng)業(yè)員工資的計(jì)算方法是:每月600元的基本工資加該月總銷(xiāo)售額的8.5提成。要求編一程序,輸入某營(yíng)業(yè)員的月總銷(xiāo)售額,計(jì)算并顯示該營(yíng)業(yè)員的月收入。二、分支結(jié)構(gòu)(選擇結(jié)構(gòu))分支結(jié)構(gòu)是在程序執(zhí)行時(shí),根據(jù)不同的條件,選擇執(zhí)行不同的程序語(yǔ)句,用來(lái)解決有選擇、有轉(zhuǎn)移的諸多問(wèn)題。分支結(jié)構(gòu)又稱選擇結(jié)構(gòu),其形式有如下三種:?jiǎn)蜗蚍种?、雙向分支和多路分支。TF條件語(yǔ)句序列(一)單向選擇語(yǔ)句單向選擇語(yǔ)句,即根據(jù)用戶設(shè)置的條件表達(dá)式的值,決定某一操作是否執(zhí)行。【格式】IF 條件表達(dá)式 語(yǔ)句序列 ENDIF【功能】該語(yǔ)句首先計(jì)算條件表達(dá)式的值,當(dāng)條件表達(dá)式的值為真時(shí),執(zhí)行語(yǔ)

25、句序列;否則,執(zhí)行ENDIF后面的第一條命令?!纠壳笠辉畏匠藺X2BXC0的實(shí)根。SET TALK OFFCLEARINPUT “A=” TO AINPUT “B=” TO BINPUT “C=” TO CZ=B2-4*A*CIF Z=0 X1=(-B+SQRT(Z)/(2*A) X2=(-B-SQRT(Z)/(2*A) ?”X1=”, X1, ”X2=”, X2ENDIFSET TALK ONRETURN(二)雙向選擇TF條件語(yǔ)句序列1語(yǔ)句序列2雙向選擇語(yǔ)句,即根據(jù)用戶設(shè)置的條件表達(dá)式的值,選擇兩個(gè)操作中的一個(gè)來(lái)執(zhí)行?!靖袷健縄F 條件表達(dá)式 語(yǔ)句序列1 ELSE 語(yǔ)句序列2ENDIF

26、【功能】該語(yǔ)句首先計(jì)算條件表達(dá)式的值,當(dāng)條件表達(dá)式的值為真時(shí),執(zhí)行語(yǔ)句序列1中的命令;否則,執(zhí)行語(yǔ)句序列2中的命令;執(zhí)行完語(yǔ)句序列1或語(yǔ)句序列2后都將執(zhí)行ENDIF后面的第一條命令?!纠烤帉?xiě)一密碼校驗(yàn)程序(假設(shè)密碼為ABC)。SET TALK OFFCLEARACCEPT “請(qǐng)輸入您的密碼:” TO AIF A= “ABC” CLEAR ?“歡迎使用本系統(tǒng)!”ELSE ? “密碼錯(cuò)誤!”ENDIFSET TALK ONCANCEL【例】根據(jù)輸入的百分制成績(jī),轉(zhuǎn)換成等級(jí)分(85以上優(yōu)秀、60以上合格、60以下不合格)。CLEARSET TALK OFFINPUT “請(qǐng)輸入成績(jī):” TO CJI

27、F CJ=85&判斷成績(jī)等級(jí) ? “優(yōu)秀”ELSE&成績(jī)小于85之后再作判斷 IF CJ=60 ? “合格” ELSE ? “不合格” ENDIF&內(nèi)層判斷結(jié)束ENDIF&外層判斷結(jié)束SET TALK ONCANCEL(三)多路分支選擇多路分支語(yǔ)句,即根據(jù)多個(gè)條件表達(dá)式的值,選擇執(zhí)行多個(gè)操作中的一個(gè)對(duì)應(yīng)執(zhí)行。 【格式】 DO CASE CASE 條件表達(dá)式1 語(yǔ)句序列1 CASE 條件表達(dá)式2 語(yǔ)句序列2 CASE 條件表達(dá)式N 語(yǔ)句序列N OTHERWISE 語(yǔ)句序列N+1 ENDCASE【功能】該語(yǔ)句根據(jù)給出的N個(gè)條件表達(dá)式的值,選擇N+1個(gè)語(yǔ)句序列中的一個(gè)執(zhí)行。當(dāng)所有CASE中條件表達(dá)式

28、的值都是假時(shí),如果有OTHERWISE項(xiàng),則執(zhí)行語(yǔ)句序列N+1,再執(zhí)行ENDCASE后面的第一條命令;否則,直接執(zhí)行ENDCASE后面的第一條命令?!纠考僭O(shè)收入(S)與所得稅稅率(R)的關(guān)系如下表,編程計(jì)算個(gè)人所得稅的繳費(fèi)方法。0S800R=0.05800S20000.082000S50000.1S5000程序結(jié)構(gòu)如下:SET TALK OFFCLEARINPUT “您的月工資收入:” TO SDO CASE CASE S800 TAX =0 CASE S2000 TAX =0.05*(S-800) CASE S5000 TAX =0.08*(S-800) OTHERWISE TAX =0.

29、1*(S-800)ENDCASE? “應(yīng)繳個(gè)人所得稅:”,TAXSET TALK ONRETURN【說(shuō)明】使用分支語(yǔ)句應(yīng)注意的幾點(diǎn)(1)IF ENDIF和DO CASE ENDCASE必須配對(duì)使用,DO CASE與第一個(gè)CASE 條件表達(dá)式之間不應(yīng)有任何命令。(2)條件表達(dá)式可以是各種表達(dá)式或函數(shù)的組合,其值必須是邏輯值。(3)語(yǔ)句序列可以一個(gè)或多個(gè)命令組成,或是其他控制語(yǔ)句構(gòu)成的嵌套結(jié)構(gòu)。(4)DO CASEENDCASE命令,每次最多只能執(zhí)行一個(gè)語(yǔ)句序列。在多個(gè)CASE項(xiàng)的條件表達(dá)式值為真時(shí),只執(zhí)行第一個(gè)條件表達(dá)式值為真的語(yǔ)句序列,然后執(zhí)行ENDCASE的后面的第一條命令?!纠烤帉?xiě)身高體

30、重測(cè)試儀測(cè)量程序。體質(zhì)指數(shù)(BMI)=體重(kg)身高平方(m2)。BMI24超重,26肥胖。程序結(jié)構(gòu)如下:CLEARINPUT “您的身高(m):” TO HINPUT “您的體重(kg):” TO GBMI=G/H2DO CASE CASE BMI20 .AND. BMI=24 MessageBox(“您的體形完全正常,繼續(xù)保持!”,64 ,“提示”) CASE BETWEEN(BMI,24,26) MessageBox(“您的身材有些超重,注意飲食和鍛煉!”,48,“提示”) OTHERWISE MessageBox(“您太胖了,趕緊減肥、加強(qiáng)鍛煉!”,16 ,“提示”)ENDCASER

31、ETURN三、循環(huán)結(jié)構(gòu)在用計(jì)算機(jī)解決實(shí)際問(wèn)題時(shí),經(jīng)常會(huì)遇到重復(fù)處理的內(nèi)容,因此就需要在程序中將某些語(yǔ)句重復(fù)執(zhí)行。循環(huán)結(jié)構(gòu)是按照一定的條件使某些語(yǔ)句或程序段重復(fù)執(zhí)行若干次。這里給大家介紹的是WHILE條件循環(huán)和FOR步長(zhǎng)循環(huán)(一)當(dāng)循環(huán)語(yǔ)句 DO WHILE 【格式】 DO WHILE 條件表達(dá)式 語(yǔ)句序列1 ENDDO【功能】根據(jù)指定條件控制循環(huán)體的執(zhí)行?!菊f(shuō)明】(1)DO WHILEENDDO之間的語(yǔ)句序列稱為循環(huán)體,是被控制重復(fù)執(zhí)行的部分。(2)DO WHILE是循環(huán)語(yǔ)句的起始,通過(guò)控制循環(huán)。其控制過(guò)程是:進(jìn)入DO WHILE時(shí),首先判斷條件是否成立,若為真,則執(zhí)行一遍循環(huán)體,當(dāng)遇到END

32、DO時(shí),返回到循環(huán)起始DO WHILE,再次判斷條件是否成立,執(zhí)行循環(huán)體,直到條件為假時(shí)跳出循環(huán),轉(zhuǎn)而執(zhí)行ENDDO后續(xù)語(yǔ)句。特例,當(dāng)一開(kāi)始條件就不成立,將立即退出循環(huán),一次也不執(zhí)行循環(huán)體。(3)如果循環(huán)體中含有LOOP語(yǔ)句,則當(dāng)遇到LOOP時(shí)強(qiáng)行返回到循環(huán)開(kāi)始語(yǔ)句DO WHILE,再判斷條件;如果循環(huán)體中含有EXIT語(yǔ)句,則當(dāng)遇到EXIT時(shí)強(qiáng)行跳出循環(huán),接著執(zhí)行ENDDO后的語(yǔ)句。通常LOOP或EXIT出現(xiàn)在循環(huán)體內(nèi)的選擇語(yǔ)句中,根據(jù)條件決定是LOOP還是EXIT。(4)在執(zhí)行循環(huán)體過(guò)程中,每執(zhí)行一遍循環(huán)體,一定要修改一次條件,否則無(wú)法實(shí)現(xiàn)對(duì)循環(huán)次數(shù)的控制,當(dāng)條件永遠(yuǎn)為真時(shí),將會(huì)造成死循環(huán)。

33、循環(huán)條件設(shè)置是構(gòu)成循環(huán)結(jié)構(gòu)的重要因素,常見(jiàn)的幾種條件設(shè)置方法:計(jì)數(shù)形式鍵盤(pán)輸入數(shù)據(jù)直接用.T.作為條件,用EXIT跳出循環(huán)等。【例】編程求1210之和。(計(jì)數(shù)形式)SET TALK OFFCLEARS=0I=1DO WHILE I=1S2=S2+SUBSTR(S1,I,1)I=I-1ENDDO?S2RETURN【例】編程求1100之間的奇數(shù)之和。(直接用.T.作為條件)SET TALK OFFCLEARS=0I=1DO WHILE .T.S=S+II=I+2IF I100EXITENDIFENDDO?100以內(nèi)的奇數(shù)和為:,SSET TALK ONCANCEL(二)步長(zhǎng)循環(huán)語(yǔ)句 FOR NEX

34、T【格式】FOR 循環(huán)變量=初值 TO 終值 STEP 步長(zhǎng)循環(huán)體語(yǔ)句序列ENDFOR | NEXT使用FOR循環(huán)語(yǔ)句的有關(guān)說(shuō)明:省略STEP 步長(zhǎng),則步長(zhǎng)為默認(rèn)值1;初值、終值和步長(zhǎng)都可以是數(shù)值表達(dá)式,但這些表達(dá)式僅在循環(huán)語(yǔ)句開(kāi)始執(zhí)行時(shí)計(jì)算一次。循環(huán)語(yǔ)句執(zhí)行過(guò)程中,初值、終值和步長(zhǎng)是不會(huì)改變的,并由此確定循環(huán)的次數(shù);可以在循環(huán)體內(nèi)改變循環(huán)變量的值,但會(huì)改變循環(huán)執(zhí)行次數(shù);EXIT和LOOP命令可以出現(xiàn)在循環(huán)體內(nèi)。執(zhí)行LOOP命令時(shí),結(jié)束本次循環(huán),循環(huán)變量增加一個(gè)步長(zhǎng)值,返回FOR循環(huán)頭判斷循環(huán)條件是否成立。執(zhí)行EXIT命令時(shí),程序跳出循環(huán),執(zhí)行循環(huán)尾后面的語(yǔ)句【例】從鍵盤(pán)輸入10個(gè)數(shù),編程找出

35、其中的最大值。SET TALK OFFCLEARINPUT “請(qǐng)從鍵盤(pán)輸入一個(gè)數(shù):” TO AMAX = AFOR I=2 TO 10INPUT “請(qǐng)從鍵盤(pán)再輸入一個(gè)數(shù):” TO AIF MAX =1)SET TALK OFFCLEARINPUT “請(qǐng)輸入N:” TO NS=1DO SUB1 WITH N,S?STR(N,2)+“!=”,SSET TALK ONPROCEDURE SUB1&求階乘的過(guò)程PARAMETER X,YIF X=1DO SUB1 WITH X-1,Y&遞歸調(diào)用Y=X*YENDIFRETURN二、自定義函數(shù)自定義函數(shù)和過(guò)程一樣,可以以獨(dú)立的程序文件形式單獨(dú)存儲(chǔ)在磁盤(pán)上,

36、也可以放在過(guò)程文件或直接放在程序文件中。與過(guò)程所不同的是,自定義函數(shù)不管其是否帶參數(shù),其在完成某種操作后必須返回一個(gè)函數(shù)值;且函數(shù)調(diào)用不是通過(guò)DO命令來(lái)實(shí)現(xiàn)的,與系統(tǒng)函數(shù)一樣是通過(guò)函數(shù)名引用的,并且在程序中只能用來(lái)組成表達(dá)式。1、自定義函數(shù)格式:【格式】FUNCTION PARAMETER RETURN 【說(shuō)明】FUNCTION 是函數(shù)說(shuō)明語(yǔ)句,調(diào)用函數(shù)時(shí)就是通過(guò)函數(shù)名引用的。PARAMETER是參數(shù)說(shuō)明語(yǔ)句,形式參數(shù)表列出了調(diào)用時(shí)應(yīng)該輸入的參數(shù)(只能是輸入?yún)?shù));若無(wú)參數(shù)可省略。RETURN后的表達(dá)式為函數(shù)的返回值。2、自定義函數(shù)的調(diào)用【格式】函數(shù)名( 實(shí)際參數(shù)表)【功能】用實(shí)參替換函數(shù)中的

37、形參,運(yùn)行函數(shù)體并返回函數(shù)值.【例】計(jì)算圓面積SET TALK OFFCLEARINPUT ”請(qǐng)輸入圓的半徑:” TO R?”圓的面積為:”,AREA(R) &AREA()為計(jì)算面積的函數(shù)SET TALK ONFUNCTION AREA&計(jì)算面積的函數(shù)PARAMETER X&形參說(shuō)明RETURN(3.1416*X2)【例】將十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)SET TALK OFFCLEARINPUT ”請(qǐng)輸入一個(gè)十進(jìn)制整數(shù):” TO D?”轉(zhuǎn)換成二進(jìn)制數(shù)為:”,D2B(D)&D2B()為十進(jìn)制轉(zhuǎn)二進(jìn)制函數(shù)SET TALK ONRETURNFUNCTION D2B&轉(zhuǎn)換函數(shù)PARAMETER N&形參說(shuō)

38、明B=”DO WHILE N0 B=STR(MOD(N,2),1)+B N=INT(N/2)ENDDORETURN B 5 經(jīng)典程序范例一、歷年程序題【2002】求兩個(gè)整數(shù)m和n的最大公約數(shù),最小公倍數(shù)【2006】。CLEARINPUT M= TO MINPUT N= TO NIF MN T=M M=N N=TENDIFA=MB=NDO WHILE B#0 T=A%B A=B B=TENDDO?最大公約數(shù)為:,A?最小公倍數(shù)為:,M*N/ACANCEL【2003】輸人三個(gè)數(shù),編程求出三個(gè)數(shù)中最大數(shù)和最小數(shù),并顯示輸出。【2007】CLEARINPUT 輸入第一個(gè)數(shù) TO AINPUT 輸入第二

39、個(gè)數(shù) TO BINPUT 輸入第三個(gè)數(shù) TO CIF AB T=A A=B B=TENDIFIF BC T=B B=C C=TENDIFIF AC T=A A=C C=TENDIF?”max=”,max, ”min=”,minRETURN【2003】從鍵盤(pán)輸入一個(gè)正整數(shù)n,編程求出12+22+n2,并將結(jié)果顯示輸出。CLEARINPUT 輸入一個(gè)正整數(shù) TO NS=0FOR I=1 TO N S=S+I2ENDFOR?”S=”,SRETURN【2004】整型變量a,b,c中分別存放各不相同的數(shù)值。編寫(xiě)程序,實(shí)現(xiàn)a,b,c從大到小排序,并以此順序輸出排序后的三個(gè)數(shù)。CLEARINPUT 輸入第一

40、個(gè)數(shù) TO AINPUT 輸入第二個(gè)數(shù) TO BINPUT 輸入第三個(gè)數(shù) TO CIF A=ASC(A); .AND.ASC(C)=ASC(a); .AND.ASC(C)=ASC(z) N=N+1 ?C ?N ENDIFENDFOR?英文字符數(shù)共計(jì):,N,個(gè)RETURN【2005】已有按從小到大的順序排列的10個(gè)數(shù),現(xiàn)輸入一個(gè)數(shù),要求插入到數(shù)列中。插入后數(shù)列仍然按從小到大順序排列。CLEARDECLARE N(11)FOR I=1 TO 10 INPUT 輸入一個(gè)數(shù): TO N(I)ENDFORINPUT 再輸入一個(gè)數(shù): TO N(11)J=10DO WHILE N(J+1)=60 K=K+1ENDIFENDFOR?平均分,S/45?及格人數(shù),K,占百分比,K/45RETURN【2007】數(shù)組a中已存放了10個(gè)由小到大排列的數(shù)?,F(xiàn)從鍵盤(pán)輸入一個(gè)數(shù)x,要求刪除數(shù)組中與其相同的數(shù),并將后續(xù)的數(shù)依次前移,最后輸出剩余的數(shù)。CLEARK=0DIME A(10)FOR I=1 TO 10INPUT A(I)= TO A(I)NEXTINPUT X= TO

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論