第02章程序設(shè)計(jì)基礎(chǔ)課件_第1頁
第02章程序設(shè)計(jì)基礎(chǔ)課件_第2頁
第02章程序設(shè)計(jì)基礎(chǔ)課件_第3頁
第02章程序設(shè)計(jì)基礎(chǔ)課件_第4頁
第02章程序設(shè)計(jì)基礎(chǔ)課件_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章VisualFoxPro程序設(shè)計(jì)基礎(chǔ)2.1常量與變量VFP的基本的數(shù)據(jù)類型包括:

(1)數(shù)值型N

數(shù)值型數(shù)據(jù)表示數(shù)量,由正(+)負(fù)(-)號(hào)、數(shù)字和小數(shù)點(diǎn)組成。

(2)貨幣型Y

用于表示貨幣數(shù)據(jù)時(shí),使用貨幣型。(3)字符型C

數(shù)值型數(shù)據(jù)由任意字符和漢字組成,用于表示姓名、專業(yè)、地址、名稱等符號(hào)信息,數(shù)值性質(zhì)的信息也可用字符表示。(4)日期型D

日期型用于存儲(chǔ)日期數(shù)據(jù)。日期數(shù)據(jù)可進(jìn)行各種數(shù)值運(yùn)算。(5)日期時(shí)間型T

日期時(shí)間型數(shù)據(jù)同時(shí)保存日期和時(shí)間,可放入兩者的任一個(gè).(6)邏輯型L

邏輯型數(shù)據(jù)的值只有真、假兩個(gè)值。2.1.1常量

常量是在程序運(yùn)行過程中保持不變的量。

(1)數(shù)值型數(shù)值型常量是平常的數(shù)值常數(shù),它由正號(hào)(+)、負(fù)號(hào)(-)、數(shù)字(0~9)和小數(shù)點(diǎn)組成,如-6.78。為了表示很大或很小的數(shù)值型常量,也可以使用科學(xué)記數(shù)法形式書寫,例如1.6E-12表示1.6×10-12

(2)貨幣型貨幣型常量用來表示貨幣值。表示貨幣型常量時(shí),需在數(shù)字前加上美元符號(hào)($)。例如$123。貨幣數(shù)據(jù)在存儲(chǔ)和計(jì)算時(shí),采用4位小數(shù)。如果一個(gè)貨幣型常量多于4位小數(shù),那么系統(tǒng)會(huì)自動(dòng)將多余的小數(shù)位四舍五入。例如,常量$123.456789將存儲(chǔ)為

$123.4568(3)字符型字符型常量是由單引號(hào)、雙引號(hào)和方括號(hào)括起來的一串字符,這些字符可以是ASCII字符,也可以是漢字。例如‘計(jì)算機(jī)’,”123”,[數(shù)據(jù)]。這里將單引號(hào)、雙引號(hào)和方括號(hào)稱為定界符。字符串常量的定界符必須成對(duì)匹配。

注意:不包含任何字符的字符串(“”)叫空串??沾c包含空格的字符串(“”)不同?!纠?.1】顯示幾個(gè)字符型常量在命令窗口鍵入以下兩條命令:?”計(jì)算機(jī)”,’123’,[數(shù)據(jù)],[‘ABX’”abc”]??”學(xué)習(xí)”,’字符串’,””,[表示方法]顯示結(jié)果如下:計(jì)算機(jī)123數(shù)據(jù)‘ABX’”abc”學(xué)習(xí)字符串表示方法(4)日期型

日期型常量有嚴(yán)格的日期格式和傳統(tǒng)的日期格式兩種,其定界符都是一對(duì)花括號(hào)?;ɡㄌ?hào)內(nèi)包括年、月、日三部分內(nèi)容,各部分內(nèi)容之間用分隔符分隔。常用的分隔符有斜杠(/)、連字符(-)、句點(diǎn)(.)和空格符。嚴(yán)格的日期格式{^yyyy-mm-dd}第一個(gè)字符必須是脫字符^年份必須是4位(如2001、1999)注意:年月日的次序不能顛倒,不能缺??!例如{^2009-04-17}月,日均為2位傳統(tǒng)的日期格式傳統(tǒng)日期格式中的月、日各為2位數(shù)字,而年份可以是2位數(shù)字,也可以是4位數(shù)字。{10/08/01}、{10-08-01}、{10082001} 這種格式的日期型常量要受到語句 SETDATETO和SETCENTURYTO設(shè)置的影響。(5)日期時(shí)間型

日期時(shí)間型常量包括日期和時(shí)間兩部分內(nèi)容,數(shù)據(jù)兩端用花括號(hào)括起,日期時(shí)間型常量的格式為{^年/月/日[時(shí):[分[:秒]][上午|下午]]}。{^2009-04-17,11:30AM}(6)邏輯型

.T.、.t.、.Y.、.y.表示邏輯型常量的真。

.F.、.f.、.N.、.n.表示邏輯型常量的假。注意:前后兩個(gè)句點(diǎn)作為邏輯型常量的定界符是必不可少的,否則會(huì)被誤認(rèn)為變量名。2.1.2變量

變量名由字符(字母、漢字、_和數(shù)字)組成,不能以數(shù)字打頭。變量名不能使用系統(tǒng)保留字。變量有字段變量及內(nèi)存變量兩種。

每個(gè)變量都有一個(gè)名字,可以通過變量名訪問變量。當(dāng)出現(xiàn)內(nèi)存變量與字段變量同名時(shí),若簡單地用變量名訪問,則系統(tǒng)默認(rèn)為字段變量。如果要訪問內(nèi)存變量,則必須在變量名前加上前綴M.(或M->),例如M.姓名。(2008年4月真題)如果內(nèi)存變量和字段變量均有變量名“姓名”,那么引用內(nèi)存變量的正確方法是()。A)M.姓名B)M->姓名C)姓名D)A)和B)都可以D2.1.2變量

1.變量賦值格式:變量名=值

STORE值TO變量名表

兩個(gè)變量賦值的語句的差別是前者一次只能將一個(gè)值賦給一個(gè)變量,后者一次可以將一個(gè)值賦給多個(gè)變量。【例2.2】變量賦值。

r=10s=3.14159*r*rSTORE“面積”TOs1,s2?r,s,s1,s2 &&?為顯示后面的內(nèi)容(2008年4月真題)在VisualFoxPro中,有如下內(nèi)存變量賦值語句:

X={^2001-07-2810:15:20PM} Y=.F. M=$123.45 N=123.45 Z="123.24"

執(zhí)行上述賦值語句之后,內(nèi)存變量X、Y、M、N和Z的數(shù)據(jù)類型分別是()。

A)D、L、Y、N、C B)T、L、Y、N、C C)T、L、M、N、C D)T、L、Y、N、SB2.1.2變量

2.顯示變量格式1:DISPLAYMEMORY[LIKE<通配符>][TOPRINTER[PROMPT]|TOFILE<文件名>]

格式2:LISTMEMORY[LIKE<通配符>] [TOPRINTER[PROMPT]|TOFILE<文件名>]

顯示內(nèi)存變量名和當(dāng)前信息。*表示任意多個(gè)字符,?表示任意一個(gè)字符。

TOPRINTER:顯示記錄送打印機(jī)打印。帶PROMPT項(xiàng),打開打印對(duì)話框,在該對(duì)話框中對(duì)打印機(jī)進(jìn)行設(shè)置。

TOFILE文件名:顯示記錄送到指定的文件中保存,擴(kuò)展名為.txt。2.1.2變量

格式:

RELEASE

變量名表|ALL[LIKE變量名描述|EXCEPT變量名描述]

格式:

CLEARMEMORY

前者清除命令中描述的內(nèi)存變量,后者清除所有的內(nèi)存變量。3.內(nèi)存變量的釋放(2006年9月真題)從內(nèi)存中清除內(nèi)存變量的命令是()。

A)Release B)Delete C)Erase D)DestroyA2.1.3數(shù)組

數(shù)組的定義數(shù)組就是變量名相同而下標(biāo)不同的一組變量。格式:

DIMENSION<數(shù)組名>(<下標(biāo)上限1>[,<下標(biāo)上限2>])[,…]

DECLARE<數(shù)組名>(<下標(biāo)上限1>[,<下標(biāo)上限2>])[,…]例如,命令DIMENSIONx(5),y(2,3)定義了兩個(gè)數(shù)組:一維數(shù)組x含5個(gè)元素:x(1)、

x(2)、

x(3)、

x(4)、

x(5)。二維數(shù)組y含6個(gè)元素:y(1,1)、y(1,2)、y(1,3)、y(2,1)、y(2,2)、y(2,3)。數(shù)組創(chuàng)建后,系統(tǒng)自動(dòng)給每個(gè)數(shù)組元素賦以邏輯值.F.可以用一維數(shù)組的形式訪問二維數(shù)組。例如命令DIMENSIONy(2,3)定義了一個(gè)二維數(shù)組y, 含6個(gè)元素:y(1,1)、y(1,2)、y(1,3)、y(2,1)、y(2,2)、y(2,3)。用一維數(shù)組的形式可依次表示為:y(1)、y(2)、y(3)、y(4)、y(5)、y(6),其中y(4)與y(2,1)是同一變量。2.1.3數(shù)組(2006年4月真題)執(zhí)行下列命令序列后,最后一條命令的顯示結(jié)果是

DIMENSIONM(2,2)()

M(1,1)=10 M(1,2)=20 M(2,1)=30 M(2,2)=40 ?M(2)

A)變量未定義的提示

B)10 C)20 D).F.C2.2表達(dá)式

表達(dá)式是由數(shù)據(jù)元素和操作符適當(dāng)連接而成的式子。1.數(shù)值表達(dá)式數(shù)值表達(dá)式用于進(jìn)行數(shù)值運(yùn)算。操作符功

能+,-正負(fù)號(hào)**,^冪*,/,%乘,除,取余+,-加減優(yōu)先級(jí)從高到低為:+,-號(hào)

**,^

*,/,%

+,-。2.2表達(dá)式2.字符表達(dá)式字符表達(dá)式用于進(jìn)行字符運(yùn)算。操作符功

能+前后兩個(gè)字符串首位連接形成一個(gè)新的字符串-連接前后兩個(gè)字符串,將前字符串的尾部空格移到合并后的新字符串尾部$判左側(cè)字符串是否包含在右側(cè)字符串中

優(yōu)先級(jí)從高到低為:+,-$。2.2表達(dá)式3.日期時(shí)間表達(dá)式日期時(shí)間表達(dá)式用于進(jìn)行日期運(yùn)算。

格式結(jié)果及類型<日期>+<天數(shù)>日期型。指定若干天后的日期。<天數(shù)>+<日期>日期型。指定若干天后的日期。<日期>-<天數(shù)>日期型。指定若干天前的日期。<日期>-<日期>數(shù)值型。指定兩個(gè)日期相差的天數(shù)。<日期時(shí)間>+<秒數(shù)>日期時(shí)間型。指定若干秒后的日期時(shí)間。<秒數(shù)>+<日期時(shí)間>日期時(shí)間型。指定若干秒后的日期時(shí)間。<日期時(shí)間>-<秒數(shù)>日期時(shí)間型。指定若干秒前的日期時(shí)間。<日期時(shí)間>-<日期時(shí)間>數(shù)值型。指定兩個(gè)日期相差的秒數(shù)。(2006年4月真題)表達(dá)式{^2005-10-310∶0∶0}-{^2005-10-39∶0∶0}的數(shù)據(jù)類型是

。數(shù)值型(N)2.2表達(dá)式4.關(guān)系表達(dá)式

關(guān)系操作符用于進(jìn)行關(guān)系運(yùn)算

操作符功

能<小于>大于=等于<>,#,!=不等于<=小于等于>=大于等于==字符串精確等于比較關(guān)系操作符沒有優(yōu)先級(jí)。2.2表達(dá)式(1)數(shù)值型、貨幣型按其數(shù)值論大小。(2)字符型字符按在字符序列中的排列順序論大小。VFP中可分為三種情況:

Machine字符序列從小到大為:空格大寫字母小寫字母一級(jí)漢字(按拼音排序)。

PinYin字符序列漢字按拼音排序;對(duì)于西文字符從小到大為:空格小寫字母大寫字母。

Stroke字符序列漢字按筆畫排序;對(duì)于西文字符從小到大為:空格大寫字母小寫字母。2.2表達(dá)式

(3)日期型按日期論大小,日期或時(shí)間越往前越小。例如,{^2009-04-01}<{^2009-05-01}(4)邏輯型假小于真。即.F.<.T.2.2表達(dá)式5.邏輯表達(dá)式

邏輯表達(dá)式用于進(jìn)行邏輯運(yùn)算

操作符功

能.NOT.或!邏輯非.AND.邏輯與.OR.邏輯或優(yōu)先級(jí)從高到低為:.NOT.,!.AND..OR.(2006年4月真題)設(shè)X=“11”,Y=“1122”,下列表達(dá)式結(jié)果為假的是()。

A)NOT(X==Y)AND(X$Y) B)NOT(X$Y)OR(<>Y) C)NOT(X>=Y) D)NOT(X$Y)D2.2表達(dá)式6.綜合表達(dá)式的運(yùn)算優(yōu)先級(jí)

首先執(zhí)行:數(shù)值運(yùn)算符,字符運(yùn)算符,日期運(yùn)算符其次執(zhí)行:關(guān)系運(yùn)算符

最后執(zhí)行:邏輯運(yùn)算符2.3常用函數(shù)

1.數(shù)值函數(shù)

INT(n) 取數(shù)值n的整數(shù)部分。CEILING(n) 返回大于或等于數(shù)值n的最小整數(shù)。FLOOR(n) 返回小于或等于數(shù)值n的最大整數(shù)。SQRT(n) 求n的算術(shù)平方根。

ABS(n) 返回n的絕對(duì)值。MAX(n1,n2[,…])求n1,n2,…中數(shù)值最大的。MIN(n1,n2[,…])求n1,n2,…中數(shù)值最小的。

MOD(n1,n2) 求n1/n2的余數(shù)。ROUND(n1,n2)將n1的值按n2位四舍五入。

MOD(n1,n2) 求n1/n2的余數(shù)其中:n1是被除數(shù),n2是除數(shù)。余數(shù)的正負(fù)號(hào)與除數(shù)相同。如果被除數(shù)與除數(shù)同號(hào),那么函數(shù)值即為兩數(shù)相除的余數(shù);如果被除數(shù)與除數(shù)異號(hào),則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值。2.3常用函數(shù)2.3常用函數(shù)【例2.3】數(shù)值函數(shù)應(yīng)用。

?INT(680.34) &&顯示680?SQRT(9) &&顯示3.00?MAX(2,4.5,-100) &&顯示4.5?MOD(26,10) ,MOD(23,-5) &&顯示6-2?ROUND(1536.2854,3) &&顯示1536.285?ROUND(1536.2854,2) &&顯示1536.29?ROUND(1536.2854,0) &&顯示1536?ROUND(1536.2854,-1) &&顯示15402.3常用函數(shù)2.字符函數(shù)

LEN(c) 返回字符串c的長度(字符數(shù))

SPACE(n)返回n個(gè)空格的字符串。LEFT(s,n) 取字符串s左邊n個(gè)字符。RIGHT(s,n) 取字符串s右邊n個(gè)字符。

SUBSTR(s,n1,n2)取字符串s第n1個(gè)字符開始n2個(gè)字符。

TRIM(s)

去掉字符串s右邊的空格字符。

LTRIM(s)

去掉字符串s左邊的空格字符。

ALLTRIM(s)

去掉字符串s左右兩邊的空格字符。AT(s1,s2,n)返回字符串s1在字符串s2中第n次出現(xiàn) 的位置。沒有定位到則返回0。STUFF(s1,n1,n2,s2)

用s2替換s1中從第n1位開始,長度為n2的一個(gè)子串。【例2.4】 STORE‘GOODBYE!’TOs1 STORE‘MORNING’TOs2 ?STUFF(s1,6,3,s2),STUFF(s1,1,4,s2)

GOODMORNINGMORNINGBYE!2.3常用函數(shù)(2008年9月真題)

LEFT(“12345.6789”,LEN(“子串”))的計(jì)算結(jié)果是

。2.(2008年4月真題)有如下賦值語句:a=“計(jì)算機(jī)”,b=“微型”,結(jié)果為“微型機(jī)”的表達(dá)式是()。

A)b+LEFT(a,3) B)b+RIGHT(a,1) C)b+LEFT(a,5,3) D)b+RIGHT(a,2)3.(2008年4月真題)下列程序段執(zhí)行后,內(nèi)存變量s1的值是()。

s1="network" s1=stuff(s1,4,4,"BIOS") ?s1 A)networkB)netBIOSC)netD)BIOS1234DB4.(2007年9月真題)命令?LEN(SPACE(3)-SPACE(2))的結(jié)果是A)1()

B)2 C)3 D)5

D

5.(2007年4月真題)?AT(“EN”,RIGHT(“STUDENT”,4))的執(zhí)行結(jié)果是

。

2

2.3常用函數(shù)3.日期函數(shù)

DATE() 返回當(dāng)前日期。TIME() 返回當(dāng)前時(shí)間字符串“hh:mm:ss”。DATETIME()返回當(dāng)前日期時(shí)間。

YEAR(d) 返回日期d年的數(shù)值。MONTH(d)返回日期d月的數(shù)值。

DAY(d) 返回日期d日的數(shù)值。

HOUR(t) 返回日期時(shí)間t的小時(shí)部分(24小時(shí)制)。

MINUTE(t)返回日期時(shí)間t的分鐘部分。

SEC(t)返回日期時(shí)間t的秒數(shù)部分。2.3常用函數(shù)4.數(shù)據(jù)類型轉(zhuǎn)換函數(shù)CTOD(s) 將日期字符串s轉(zhuǎn)換為日期。CTOT(s) 將時(shí)間字符串s轉(zhuǎn)換為時(shí)間。

DTOC(d) 將日期d轉(zhuǎn)換為日期字符串。

TTOC(t) 將時(shí)間t轉(zhuǎn)換為時(shí)間字符串。

&<字符型變量>[.] 替換出字符型變量的內(nèi)容。6.(2006年4月真題)在VisualFoxPro中,宏替換可以從變量中替換出()。

A)字符串 B)數(shù)值

C)命令 D)以上三種都可能7.(2005年9月真題)依次執(zhí)行下列命令后的輸出結(jié)果是

SETDATETOYMD()。

SETCENTURYON SETCENTURYTO19ROLLOVER10 SETMARKTO"." ?CTOD("49-05-01") A)49.05.01 B)1949.05.01 C)2049.05.01 D)出錯(cuò)DB2.3常用函數(shù)5.測試函數(shù)

BETWEEN(<表達(dá)式T>,<表達(dá)式L>,<表達(dá)式H>)

判斷<表達(dá)式T>是否在<表達(dá)式L>和<表達(dá)式H>之間。ISNULL(<表達(dá)式>)

判斷表達(dá)式的結(jié)果是否為NULL值。EMPTY(<表達(dá)式>)

判斷表達(dá)式的結(jié)果是否為“空”值。IIF(<條件表達(dá)式>,<表達(dá)式1>,<表達(dá)式2>)

當(dāng)條件表達(dá)式為.T.時(shí),函數(shù)取表達(dá)式1的值;當(dāng)條件表達(dá)式為.F.時(shí),函數(shù)取表達(dá)式2的值。VARTYPE(<表達(dá)式>[,<邏輯表達(dá)式>])

測試表達(dá)式的類型,返回一個(gè)大寫字母。8.(2006年4月真題)在下列的VisualFoxPro表達(dá)式中,運(yùn)算結(jié)果不為邏輯真的是()。

A)EMPTY(SPACE(0)) B)LIKE(′xy*′,′xyz′) C)AT(′xy′,′abcxyz′) D)ISNULL(.NULL.)9.(2005年9月真題)下列VisualFoxPro表達(dá)式中,運(yùn)算結(jié)果為邏輯真的是()。

A)EMPTY(.NULL.) B)LIKE(′xy?′、′xyz′) C)AT(′xy′、′abcxyz′) D)ISNULL(SPACE(0))CB10.(2007年9月真題)命令?VARTYPE(TIME())的結(jié)果是()。

A)C B)D C)T D)出錯(cuò)11.(2006年9月真題)設(shè)X=6<5,命令?VARTYPE(X)的輸出是()。

A)N B)C C)L D)出錯(cuò)ACVisualFoxPro程序文件,是一個(gè)以(.PRG)為擴(kuò)展名的文本文件。任何可以建立、編輯文本文件的工具,都可以創(chuàng)建和編輯VisualFoxPro程序文件。這些文本編輯工具,可以是VisualFoxPro系統(tǒng)提供的內(nèi)部編輯器,也可以是其它常用文本編輯軟件。2.4程序與程序文件2.4.1程序的概念建立、編輯程序文件有兩種方式:1.命令方式

MODIFYCOMMAND〈程序文件名〉2.菜單方式打開“文件”菜單,選擇“新建”;在“新建”窗口,選擇“程序”,再選擇“新建文件”;在“程序文件”編輯窗口,輸入程序文件,并保存,此時(shí)建立程序文件的操作結(jié)束。2.4.2程序文件的建立與執(zhí)行

調(diào)用程序文件,即運(yùn)行程序文件,是程序文件建立的最終目的。在VisualFoxPro系統(tǒng)中,調(diào)用程序文件有很多方法,在這里僅介紹其中兩種方法。1.命令方式 在Command窗口中,輸入如下命令,則程序文件被調(diào)用。

DO〈程序文件名〉2.菜單方式 以菜單方式調(diào)用程序文件,操作方法如下:

(1)在VisualFoxPro系統(tǒng)主菜單下,打開“程序”菜單,選擇“運(yùn)行”。(2)在“運(yùn)行”窗口,輸入被調(diào)用的程序文件名即可。2.4.2程序文件的建立與執(zhí)行

1.(2008年9月真題)ModifyCommand命令建立的文件的默認(rèn)擴(kuò)展名是()。 A)prg B)app C)cmd D)exe2.(2008年9月真題)欲執(zhí)行程序temp.prg,應(yīng)該執(zhí)行的命令是()。 A)DOPRGtemp.prg B)DOtemp.prg

C)DOCMDtemp.prg D)DOFORMtemp.prg

ABInput<提示信息>to<內(nèi)存變量>從鍵盤上接受輸入,但不能不輸入任何內(nèi)容;<提示信息>為字符表達(dá)式,起提示說明作用;可接受的數(shù)據(jù)類型:字符型、數(shù)值型、邏輯型、日期型、日期時(shí)間型輸入字符常量必須加定界符,邏輯型常量必須用圓點(diǎn)定界,日期型和日期時(shí)間型要用嚴(yán)格的日期格式。2.4.3

簡單的輸入輸出命令

2.4.3

簡單的輸入輸出命令例:clearinput"請(qǐng)輸一個(gè)字符數(shù)據(jù)"toa?"a的數(shù)據(jù)類型是"??vartype(a)ifvartype(a)<>"C"waitwindows"數(shù)據(jù)類型錯(cuò)誤"at10,10endif

2.4.3

簡單的輸入輸出命令accept

<提示信息>to<內(nèi)存變量>只能接受字符串,輸入時(shí)不需要加定界符如果不輸入任何內(nèi)容而直接按回車鍵,系統(tǒng)會(huì)把空串賦給指定的內(nèi)存變量。例:accept"輸入字符數(shù)據(jù)"toa?"a的數(shù)據(jù)類型是"??vartype(a)2.4.3

簡單的輸入輸出命令wait<提示信息>to<內(nèi)存變量>不指定提示信息,則默認(rèn)為“按任意鍵繼續(xù)…”如果指定了window子句,則出現(xiàn)一個(gè)提示框使用timeout子句設(shè)定等待時(shí)間2.4.3

簡單的輸入輸出命令例:clearwaitwait"你好!"waitwindowswaitwindows"你好!"waitwindowsat5,5waitwindowsat5,50nowaitwaitwindowsat5,5timeout5waittoswindowat10,10timeout5順序結(jié)構(gòu)由一系列語句組成,程序運(yùn)行時(shí)按順序執(zhí)行語句?!纠?.5】一個(gè)簡單的求ax2+bx+c=0的方程的解程序。a=2b=1c=-1TEMP=b*b-4*a*cx1=(-b+SQRT(TEMP))/(2*a)x2=(-b-SQRT(TEMP))/(2*a)?x1,x2 &&顯示-0.5000-1.0000

建立程序文件123.PRG:

MODICOMM1232.5程序的基本結(jié)構(gòu)簡單的求ax2+bx+c=0方程解程序

執(zhí)行程序文件123.PRGDO123主窗口顯示:-1.0000 -4.00002.5.1選擇結(jié)構(gòu)

選擇結(jié)構(gòu)就是如果條件成立,執(zhí)行指定的語句序列。選擇結(jié)構(gòu)語句包括IF分支和CASE分支。

1.簡單形式的條件語句語法格式:

IF<條件表達(dá)式> <語句序列1>ENDIF功能:若條件表達(dá)式為.T.,則執(zhí)行語句序列1,然后轉(zhuǎn)向ENDIF的下一條語句;否則直接轉(zhuǎn)向ENDIF的下一條語句去執(zhí)行。if條件語句序列1endif語句序列2假真例:從鍵盤上輸入兩個(gè)數(shù),按從小到大的順序輸出。開始輸出a,ba>b第一個(gè)數(shù)->a第二個(gè)數(shù)->b不成立成立輸出b,aInput“輸入第一個(gè)數(shù):”toaInput“輸入第二個(gè)數(shù):”tobIf(a>b)?b,aendif?a,b語法格式:

IF<條件表達(dá)式> <語句序列1> ELSE <語句序列2> ENDIF

2.5.1選擇結(jié)構(gòu)2.一般形式的條件語句功能:若條件表達(dá)式為.T.,執(zhí)行語句序列1,否則執(zhí)行語句序列2。if條件語句序列1endif語句序列3語句序列2

真1.(2005年9月真題)下列程序段的輸出結(jié)果是(

)。

ACCEPTTOA IFA=[123456]

S=0 ENDIF S=1 ?S RETURN A)0 B)1 C)由A的值決定 D)程序出錯(cuò)B2.下面程序的運(yùn)行結(jié)果是()。(2008年4月真題)

SETEXACTON s="ni"+SPACE(2) IFs="ni" IFs="ni" ?"one" ELSE ?"two"ENDIF ELSE IFs="ni" ?"three" ELSE ?"four" ENDIF ENDIF RETURN A)one B)two C)three D)fourC先在較短字符串尾部加上若干空格3.多分支語句DOCASE...ENDCASE語法格式:

DOCASE CASE<條件1><語句行序列1> CASE<條件2><語句行序列2>

…………… CASE<條件n><語句行序列n> [OTHERWISE<語句行序列>] ENDCASE2.5.1選擇結(jié)構(gòu)真endcase后的語句語句序列1語句序列2語句序列n條件1條件2條件notherwise語句序列假假假真真有2.5.2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是在指程序執(zhí)行過程中,其中的某段代碼被重復(fù)執(zhí)行若干次。1.DOWHILE—ENDDO語句語句格式:dowhile<條件><命令序列>enddo語句序列中遇到退出循環(huán)語句EXIT,退出循環(huán)體,執(zhí)行ENDDO后面的語句。這些規(guī)則也適用FOR循環(huán)和SCAN循環(huán)。dowhile條件enddo后面的語句循環(huán)體真假例:求S=1+2+…+100clears=0i=1dowhilei<=100s=s+ii=i+1enddo?“S=“,sreturnYi=i+1NY開始打印ss=0i=1結(jié)束s=s+ii<=1001.下列程序顯示的結(jié)果是

。(2005年4月真題)

s=1 i=0 dowhilei<8 s=s+i

i=i+2

enddo ?s132.(2008年9月真題)(2006年9月真題)下列程序段執(zhí)行以后,內(nèi)存變量y的值是()。

x=76543 y=0 DOWHILEx>0 y=x%10+y*10 x=int(x/10) ENDDO A)3456 B)34567C)7654D)765433.(2008年4月真題)下列程序段執(zhí)行以后,內(nèi)存變量y的值是()。

CLEAR x=12345 y=0 DOWHILEx>0 y=y+x%10 x=int(x/10) ENDDO ?y A)54321 B)12345C)51D)15BD4.(2007年9月真題)下面程序計(jì)算一個(gè)整數(shù)的各位數(shù)字之和,在下劃線處應(yīng)填寫的語句是()。

SETTALKOFF INPUT"x="TOx s=0 DOWHILEx!=0 s=s+MOD(x,10)

ENDDO

?s SETTALKON A)x=int(x/10) B)x=int(x%10) C)x=x-int(x/10) D)x=x-int(x%10)A顯示VFP命令執(zhí)行的狀態(tài)。不顯示VFP命令執(zhí)行的狀態(tài)。5.(2007年4月真題)執(zhí)行下列程序,顯示的結(jié)果是

。

one="WORK" two="" a=LEN(one) i=a DOWHILEi>=1 two=two+SUBSTR(one,i,1) i=i-1 ENDDO ?twoKROW

2.5.2循環(huán)結(jié)構(gòu)2.FOR—ENDFOR語句語句格式:

for<循環(huán)變量>=<初值>to<終值>step<步長>

<循環(huán)體>

endfor|next只要變量的值小于等于終值,重復(fù)執(zhí)行循環(huán)體中的語句序列。具體執(zhí)行步驟如下:(1)給變量賦初值;(2)判斷循環(huán)變量的值是否小于等于終值;(3)若不是,則循環(huán)結(jié)束;(4)若是,則執(zhí)行語句序列;(5)變量=變量+步長,(若省略STEP,則步長=1);(6)轉(zhuǎn)(2)。2.5.2循環(huán)結(jié)構(gòu)循環(huán)變量加步長循環(huán)變量和終值比較endfor后面的語句循環(huán)體給循環(huán)變量賦初值假真2.5.2循環(huán)結(jié)構(gòu)3.SCAN—ENDSCAN語句scan[<范圍>][for<條件1>][where<條件2>]<循環(huán)體>

endsacn<范圍>的默認(rèn)值為ALL。1.(2005年4月)在VisualFoxPro中,如果希望跳出SCAN…ENDSCAN循環(huán)體,執(zhí)行ENDSCAN后面的語句,應(yīng)使用()。A)LOOP語句B)EXIT語句C)BREAK語句D)RETURN語句2.(2005年9月)在VisualFoxPro中,可以使用

語句跳出SCAN...ENDSCAN循環(huán)體外執(zhí)行ENDSCAN后面的語句。BEXIT

2.6多模塊程序設(shè)計(jì)

程序模塊語句1211232232程序由語句和模塊組成模塊是一個(gè)獨(dú)立的程序段,可以被其他模塊和程序調(diào)用,也可以調(diào)用其他模塊2.6.1模塊的定義和調(diào)用模塊可以是子程序,也可以是過程。子程序和前面講的程序一樣是一個(gè)獨(dú)立的.PRG文件??梢员恢鞒绦蚝推渌映绦蛘{(diào)用。過程是能夠完成某項(xiàng)功能的一段程序代碼,可以放在程序代碼的后面,也可以保存在單獨(dú)文件里,叫做過程文件其擴(kuò)展名也是.PRG。procedure<過程名>……endprocfunction<過程名>……endfunc必須以字母和下劃線開頭1.模塊及其定義2.模塊的調(diào)用格式1:

DO<文件名>|<過程名>

格式2:

在名字后面加一對(duì)小括號(hào)

<文件名>|<過程名>()2.6.1模塊的定義和調(diào)用過程可存放在下列位置:(1)一個(gè)獨(dú)立的程序的結(jié)束語句后面可同時(shí)存放多個(gè)過程,包含該過程的程序可直接調(diào)用該過程。

(2)在一個(gè)過程文件中,集中存放多個(gè)過程。要調(diào)用過程文件中的過程,首先要打開過程文件,一旦過程文件被打開,那么其中的所有過程都可以被調(diào)用。格式:SETPROCEDURETO[過程文件名表][ADDITIVE]系統(tǒng)可同時(shí)打開多個(gè)過程。選ADDITIVE,在打開當(dāng)前過程文件時(shí)原先的過程不關(guān)閉。不再使用過程文件時(shí)用RELEASEPROCEDURE命令關(guān)閉指定過程文件。2.6.1模塊的定義和調(diào)用格式1:PARAMETERS變量名表格式2:LPARAMETERS變量名表VFP中,參數(shù)傳遞有下列兩種方法:(1)按引用方式傳遞調(diào)用程序通過引用方式向過程傳送變量和數(shù)組。如果在被調(diào)用的過程中一個(gè)值被改變,則新的值被送回調(diào)用程序的相關(guān)的變量或數(shù)組中。(2)按賦值方式傳遞如果要通過賦值方式向過程傳送變量或數(shù)組,被調(diào)用的過程中任何參數(shù)的改變都不會(huì)傳送到調(diào)用程序相關(guān)的變量或數(shù)組中。2.6.2參數(shù)傳遞傳遞參數(shù)的語句(用在主程序中)do

文件名或過程名with

實(shí)參文件名或過程名(實(shí)參)接受參數(shù)的語句(與傳遞參數(shù)的do語句配合使用,放在被調(diào)用模塊中作為第一條執(zhí)行語句)parameters

形參2.6.2參數(shù)傳遞clearm=1n=2doAA?m,nprocedureAAm=100n=200returnendprocclearm=1n=2doAAwithmc=AA(n)?m,n,cprocedureAAparametersxx=100returnxendproc格式1格式2如果采用格式1,則:如果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論