版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章程序設(shè)計(jì)基礎(chǔ)程序是為了完成一項(xiàng)任務(wù)而編寫的指令的集合。在VFP中可以同時應(yīng)用面向過程和面向?qū)ο髢煞N編程方法,面向?qū)ο蟮某绦蛟O(shè)計(jì)是其主要特色。本章主要介紹的是面向過程的編程方法。程序設(shè)計(jì)基礎(chǔ)命令的執(zhí)行方式交互執(zhí)行(命令窗口)程序執(zhí)行(程序文件)程序:是能夠完成一項(xiàng)任務(wù)的相關(guān)命令的有序集合;程序執(zhí)行的最大好處:可重復(fù)修改可重復(fù)執(zhí)行一個程序可調(diào)用另一個程序可完成復(fù)雜的數(shù)據(jù)處理,實(shí)現(xiàn)對數(shù)據(jù)綜合性的管理及應(yīng)用程序的模塊結(jié)構(gòu)主模塊子模塊1子模塊2子模塊3子模塊11子模塊12子模塊21子模塊22子模塊31子模塊13子模塊23子模塊24程序邏輯的描述敘述框:判斷框:連接框:流程線:基本流程圖符號一個簡單程序?qū)嵗齋ETTALKOFFCLEARUSESTUDENTDOWHILE!EOF()
IF總成績>360
?學(xué)號,姓名,總成績
ENDIF
SKIPENDDOCLOSEALLRETURN初始化不是表末打開表總成績>360顯示當(dāng)前記錄移動指針結(jié)束NNYY程序的建立、修改與執(zhí)行程序文件:程序以文本文件形式保存在磁盤上,擴(kuò)展名為:“.PRG”;可通過任何文本編輯器建立;程序的建立與修改可視操作通過“文件”菜單/“新建”/“程序”;“打開”、或“保存”或“另存為”命令通過“常用”工具欄上的“新建”/“程序”;“打開”或“保存”按鈕命令操作:MODIFYCOMMAND
[FileName|?]
程序的執(zhí)行可視操作“程序”菜單的“運(yùn)行”命令或“常用”工具欄上的“運(yùn)行”按鈕命令方式:DO
ProgramName
程序結(jié)束、返回命令命令格式:
RETURNCANCELQUIT格式1:終止程序的運(yùn)行,并將控制權(quán)返回給調(diào)用程序或命令窗口格式2:終止程序運(yùn)行,并將控制權(quán)返回命令窗口。格式3:結(jié)束程序運(yùn)行,關(guān)閉所有文件,退出VFP,返回控制到操作系統(tǒng)。4.1程序設(shè)計(jì)概念4.1.1程序設(shè)計(jì)與算法簡介程序設(shè)計(jì)是根據(jù)算法步驟把命令、函數(shù)、變量、常量、表達(dá)式以邏輯的方組合為程序文件或系統(tǒng)的過程。其一般步驟是:第一步,根據(jù)問題要求擬定用計(jì)算機(jī)求解的策略和步驟,稱之為算法。第二步,根據(jù)擬定的算法,按照編程語言約定的規(guī)則,編寫程序代碼,即編程。第三步,不斷運(yùn)行、修改程序,即調(diào)試程序。
算法是指為解決一個問題而采取的方法和步驟,或者說解決步驟的精確描述。算法分為數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法。描述實(shí)現(xiàn)算法的邏輯步驟,一般采用流程圖方式。流程圖分傳統(tǒng)流程圖;N-S流程圖等。傳統(tǒng)流程圖是用一些圖框,流程線以及文字說明來描述操作過程,這樣的表示算法,直觀,形象,容易理解。一、算法舉例:交換兩個變量X和Y中所存儲的數(shù)據(jù)。分析:要交換兩個變量的數(shù)據(jù),需要一個中間媒介的變量,例如T。首先,將X的值賦給T;再將Y的值賦給X,最后,將T的值賦給Y,就完成了交換。根據(jù)這個思路,可寫出如下算法:
X→TY→XT→Y根據(jù)此算法,寫VFP程序如下:
T=XX=YY=T123算法的特點(diǎn)與要求特點(diǎn):1.表達(dá)較為自由,表述一個算法,可有多種方式。2.算法與語言無關(guān)。3.程序語言與自然語言可以混合使用。要求:1.保證算法的正確性。2.通用性、可擴(kuò)展性。程序的邏輯性與通用性
1.程序的邏輯性:
要完成數(shù)據(jù)處理過程,通常應(yīng)包括三個部分:(1)輸入原始數(shù)據(jù)及其處理要求;(2)按指定要求進(jìn)行數(shù)據(jù)處理;(3)輸出結(jié)果。
2.程序的通用性:
程序應(yīng)可反復(fù)執(zhí)行,使程序的應(yīng)用范圍更廣。通??刹捎茫?/p>
(1)參數(shù)傳替(2)鍵盤輸入4.2常用命令和語句4.2.1基本輸入、輸出語句程序最基本的操作就是輸入、輸出。輸入是從鍵盤或鼠標(biāo)等設(shè)備中接收數(shù)據(jù)。輸出是指將計(jì)算機(jī)所做的運(yùn)算結(jié)果輸出到屏幕或打印機(jī)。4.2.1.1輸入命令1.鍵盤輸入命令(ACCEPT)格式:
ACCEPT[<提示信息>]TO<內(nèi)存變量>功能:從鍵盤接收字符型數(shù)據(jù)存入內(nèi)存變量中。說明:(1)<提示信息>表示命令執(zhí)行時顯示的內(nèi)容。<提示信息>為字符常量、字符變量或字符表達(dá)式。(2)<內(nèi)存變量>表示存儲字符數(shù)據(jù)的字符變量或數(shù)值元素。(3)輸入的數(shù)據(jù)作為字符型數(shù)據(jù)處理,不需要定界符括起來。若使用定界符,則定界符成為輸入字符的一部分,并以回車結(jié)束輸入。例12.1用ACCEPT命令輸入某生姓名與性別,STUDENT.DBF中查找該學(xué)生并顯示。ACCE"姓名:"TOXMACCE"性別:"TOXBUSESTUDENTLISTFOR
姓名=XMAND
性別=XB例:顯示STUDENT.DBF中,不同專業(yè)學(xué)生的姓名,籍貫,專業(yè)ACCE"專業(yè):"TOZYSELE姓名,籍貫,專業(yè)
FROMSTUDENTWHERE專業(yè)=ZY
2.任意類型鍵盤輸入命令(INPUT)格式:INPUT[<提示信息>]TO<內(nèi)存變量>功能:從鍵盤接收任意類型的數(shù)據(jù)存入內(nèi)存變量。說明:提示用戶使用鍵盤輸入數(shù)據(jù),數(shù)據(jù)類型可以是數(shù)值型、字符型、邏輯型或日期型,以回車結(jié)束輸入。(2)提示信息可以時字符型常量、變量或表達(dá)式(3)輸入字符串時必須加定界符,輸入邏輯型常量時要用圓點(diǎn)定界符,輸入日期型數(shù)據(jù)時要用轉(zhuǎn)換函數(shù)。例14.2
已知圓半徑r,計(jì)算圓面積s,球體積v和球表面積
f,其公式為:s=r^2f=4r^2v=4/3r^3INPUT“輸入半徑R=”TORs=pi()*r^2f=4*pi()*r^2v=4/3*pi()*r^3?“圓面積為:”,s?"球表面積為:",f?“球體積為:",v3.程序暫停、等待接收單字符命令(WAIT)格式:WAIT[<提示信息>][TO<內(nèi)存變量>][WINDOW[AT<行坐標(biāo),列坐標(biāo)>]][TIMEOUT<等待秒數(shù)>]
功能:顯示提示并暫停程序運(yùn)行,按任意鍵或單擊鼠標(biāo)后程序才繼續(xù)執(zhí)行。說明:(1)<提示信息>表示要顯示提示的內(nèi)容,省略提示信息,系統(tǒng)給出“按任意鍵繼續(xù)”。(2)TO<內(nèi)存變量>表示鍵盤的輸入以字符形式存入指定的內(nèi)存變量。內(nèi)存變量類型為字符型,寬度為1。(3)WINDOW表示在VFP主窗口右上角的系統(tǒng)消息窗口的位置中顯示消息。(4)AT<行坐標(biāo),列坐標(biāo)>指消息窗口在主窗口中的位置坐標(biāo)。CLEARA="WWW"WAITWAITATOB?B,TYPE('B'),LEN(B)T="WhereistheWindow"waitTwindowswaitTwindowsAT15,10waitTwindowsAT20,10timeout24.2.2注釋語句和續(xù)行語句
4.2.2.1注釋語句注釋語句用來給程序加注釋,以提高程序的可讀性。有以下兩種注釋語句注釋整行格式:*<注釋內(nèi)容>或NOTE<注釋內(nèi)容>行末注釋格式:<執(zhí)行語句>&&<注釋內(nèi)容>4.2.2.2續(xù)行標(biāo)志續(xù)行標(biāo)志“;”,表示本語句尚未結(jié)束。
指定缺省驅(qū)動器和目錄命令格式:SETDEFAULT
TO[<路徑>]或者用“工具”菜單的“文件位置”命令4.3控制結(jié)構(gòu)
VFP的程序結(jié)構(gòu),與其他高級語言一樣,分為三種控制結(jié)構(gòu),各個結(jié)構(gòu)可以實(shí)現(xiàn)不同的功能。
VFP程序設(shè)計(jì)語言的三種控制結(jié)構(gòu)是:
順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。思考:1.實(shí)體之間的三種聯(lián)系是什么? 2.數(shù)據(jù)庫管理系統(tǒng)采用的三種數(shù)據(jù)模型是什么?
3.關(guān)系數(shù)據(jù)庫有哪三種關(guān)系操作?4.3.1順序結(jié)構(gòu)順序結(jié)構(gòu)是程序設(shè)計(jì)中最簡單,最常用,最基礎(chǔ)的基本結(jié)構(gòu)。該結(jié)構(gòu)命令的排列順序就是命令的執(zhí)行順序,其間既沒有分支跳轉(zhuǎn),也沒有重復(fù)。開始語句語句語句結(jié)束順序結(jié)構(gòu)流程圖例:順序結(jié)構(gòu)程序設(shè)計(jì)顯示STUDENT.DBF表中所有男性記錄USESTDUENTLISTFOR性別=“男”USERETURN選擇結(jié)構(gòu)流程圖條件Yes條件命令序列ENDIF的下一條命令NoYes命令序列2命令序列1ENDIF的下一條命令No無分支結(jié)構(gòu)分支結(jié)構(gòu)4.3.2選擇結(jié)構(gòu)選擇結(jié)構(gòu)是指程序執(zhí)行過程中,需要先對某個條件進(jìn)行計(jì)算,再根據(jù)計(jì)算結(jié)果決定執(zhí)行哪個語句。常用的選擇結(jié)構(gòu)有無分支選擇結(jié)構(gòu)、分支選擇結(jié)構(gòu)、多分支選擇結(jié)構(gòu)。1.無分支選擇結(jié)構(gòu)命令格式:IF<條件>
<命令組1>
ENDIF功能:計(jì)算條件,若結(jié)果為.T.,則執(zhí)行命令組1。否則執(zhí)行ENDIF下面的語句。2.分支選擇結(jié)構(gòu)分支結(jié)構(gòu)的執(zhí)行邏輯是:條件滿足,執(zhí)行命令組1。否則執(zhí)行命令組2。命令格式:IF〈條件〉<命令組1>
ELSE<命令組2>
ENDIFINPUT“X=“TOXIFX>=0?”X的絕對值是:“,ABS(X)ELSE?”X的絕對值是:“,
ABS(X)ENDIFRETURN思考:1.如何使輸出結(jié)果為確定值X的絕對值?2.能否用IIF()函數(shù)編程?CLEARINPUT"輸入一個數(shù):"TOXY=IIF(X>0,X,-X)?X,"的絕對值是:",YRETURN說明:
(1)條件可為關(guān)系或邏輯表達(dá)式,根據(jù)〈條件〉的邏輯值進(jìn)行判斷:若邏輯值為T,就執(zhí)行命令組1,完成后轉(zhuǎn)到ENDIF之后的命令。若邏輯值為F時,執(zhí)行命令2,完成之后轉(zhuǎn)去執(zhí)行ENDIF之后命令。(2)IF—ENDIF結(jié)構(gòu)命令可以通過多層嵌套以實(shí)現(xiàn)多條件的選擇。流程控制命令—IF輸入三角形的三個邊長A、B、C:(1)若A、B、C能構(gòu)成三角形,則計(jì)算出三角形面積;否則提示“不能構(gòu)成三角形!”。(2)若構(gòu)成的三角形為直角三角形,給出“構(gòu)成直角三角形”的提示。提示:三個數(shù)能構(gòu)成三角形的三條邊長的充分必要條件是:三個數(shù)均大于0。任意兩條邊長的和大于第三邊.。式中:S:面積W:周長/2SETTALKOFFCLEAR(計(jì)算三角形.PRG)?"計(jì)算三角形面積,請輸入三角形的三個邊長:"INPUT"A="TOAINPUT"B="TOBINPUT"C="TOCIFA+B>C.AND.
B+C>A.AND.
C+A>B W=(A+B+C)/2 S=SQRT(W*(W-A)*(W-B)*(W-C))
IFA^2+B^2=C^2.OR.B^2+C^2=A^2
.OR.C^2+A^2=B^2 ?"構(gòu)成直角三角形."
ENDIF ?"三角形面積=",SELSE ?"輸入的三個邊長不能構(gòu)成三角形!"ENDIFSETTALKON閏年問題一個年份滿足以下條件之一即為閏年:能被4整除且不能被100整除能被4整除也能被400整除INPUT“輸入年號:”TOnYearIFMOD(nYear,4)=0
AND(MOD(nYear,100)<>0ORMOD(nYear,400)=0)
?nYear,”是閏年“ELSE
?nYear,”不是閏年”ENDIFRETURN流程控制命令—IF編寫程序由鍵盤輸入A,B,C三個數(shù),按值的大小順序顯示出來。分析:先比較任意兩個數(shù),并將其中的大數(shù)存入內(nèi)存變量M,小數(shù)存入N。再將第三個數(shù)與M及N比較得到三個數(shù)的大小順序。CLEAR?"對三個數(shù)排序,請輸入三個數(shù):"INPUT"A="TOAINPUT"B="TO
BINPUT"C="TO
CIFA>B
M=A
n=BELSEM=BN=AENDIFIFC>M?C,M,NELSE
IFC<N?M,N,C
ELSE?M,C,N
ENDIFENDIF格式:&<字符型變量>功能:替換出字符型變量的內(nèi)容,即&的值是變量中的字符串。宏替換可以嵌套使用。注意:1.&函數(shù)后的變量必須是字符型;2.字符變量的值可以是數(shù)字,也可以是字母或漢字,如果是數(shù)字,&函數(shù)的結(jié)果是數(shù)值型數(shù)字;如果變量的值是字母或漢字,&函數(shù)的結(jié)果就是以該字母或漢字命名的變量,那么,此變量必須先賦值。例如:宏替換函數(shù)A=“123”B=“456”?A+B,&A+&B?&A+B(出錯,為什么?)下面程序運(yùn)行的結(jié)果為______:
x='1‘
y='2‘
c='x+y‘
?&c例12.10建立一個在任意表中查詢學(xué)號的程序(學(xué)號查詢-IF.PRG)clearaccept"輸入表的名字:"tobmUse
&bmaccept"輸入要查詢的學(xué)號:"tommmLOCATEFOR
學(xué)號=mmmifFOUND()
dispelse?“查無此人!"endifUsereturn4.3.3.多分支選擇命令DOCASE當(dāng)供選擇的結(jié)果多于兩個時,使用多分支選擇結(jié)構(gòu)更方便。格式:DOCASE
CASE〈條件1〉 〈命令組1〉
CASE〈條件2〉〈命令組2〉 …
[OTHERWISE 〈命令組n+1〉]
ENDCASE功能:執(zhí)行第一個滿足條件的命令集合。說明:(1)DOCASE
與ENDCASE
必須成對出現(xiàn)。(2)執(zhí)行順序:先計(jì)算表達(dá)式1,如為.T.,執(zhí)行命令組1;如為.F.,繼續(xù)判斷表達(dá)式2……,直到找到條件為真者。如都不為真,則執(zhí)行OTHERWISE后的語句(如果沒有OTHERWISE,則直接執(zhí)行ENDCASE后面的語句。(3)在多分支結(jié)構(gòu)中,若有多個條件為真,只能執(zhí)行第一個為真者。流程控制命令—DOCASE某班學(xué)生計(jì)算機(jī)考試成績已登記到COMPUTER.DBF自由表的成績(N型)字段中,另有評估(C6)字段。編程序?qū)γ總€學(xué)生計(jì)算機(jī)的成績進(jìn)行評估:“優(yōu)秀”(90-100)“良好”(80-89)“中等”(70-79)“及格”(60-69)“不及格”(0-59),寫到評估字段中.CLEARUSECOMPUTER……DOCASE
CASE
成績>=90
REPLACE
評估WITH“優(yōu)秀”
CASE
成績>=80
REPLACE
評估WITH“良好”
CASE
成績>=70
REPLACE
評估WITH“中等”
CASE成績>=60
REPLACE
評估WITH“及格”
OTHERWISEREPLACE
評估WITH
“不及格”ENDCASE……思考:如果程序中將CASE成績>=60REPLACE評估WITH“及格”作為第一個判斷條件,執(zhí)行完程序后的結(jié)果是什么?流程控制命令—DOCASECLEARSTORE0TOX,S1,S2,S3DOWHILEX<10X=X+1DOCASECASEMOD(X,2)=0 S1=S1+X/2CASEINT(X/3)=X/3 S2=S2+X/3CASEINT(X/2)<>X/2 S3=S3+1ENDCASEENDDO?INT(S1),INT(S2),INT(S3)RETURN寫出下列程序的結(jié)果4.2.4循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)是指對某些語句通過條件判斷決定是否重復(fù)執(zhí)行,如果條件為.T.,則重復(fù)執(zhí)行,否則終止循環(huán)。
VisualFoxpro中給出三種循環(huán)結(jié)構(gòu):“當(dāng)型”(DOWHILE);“步長型”(FOR-NEXTfor-endfor);“表掃描型”(SCAN)。1.當(dāng)型循環(huán)命令DOWHILE
結(jié)構(gòu):
DOWHILE〈條件表達(dá)式〉 [命令組]
[LOOP]
[EXIT]
ENDDO
功能:當(dāng)給定的條件為真,就使DOWHILE…ENDDO之間的命令重復(fù)執(zhí)行,實(shí)現(xiàn)程序循環(huán)。否則跳出循環(huán),執(zhí)行ENDDO后面的語句。CommandslExpressionYLOOPNEXIT說明:(1)如果條件為.T.,則執(zhí)行DOWHILE和ENDDO之間的[命令組],當(dāng)命令組包含的命令執(zhí)行完后,程序自動返回到DOWHILE,每執(zhí)行一遍就判斷一次。如果條件為.F.,則跳過DOWHILEHE和ENDDO之間的命令組,結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行ENDDO之后的命令。(2)EXIT選項(xiàng)跳出循環(huán),執(zhí)行ENDDO后的語句。(3)DOWHILE…ENDDO必須成對出現(xiàn),并且DOWHILE…ENDDO可進(jìn)行嵌套,形成多重循環(huán)。例12.10在數(shù)據(jù)庫Student·DBF中找出所有男性的學(xué)生。
USESTUDENTDOWHILE.T. IF性別=
‘男’
DISPLAY ENDIF SKIP
IFEOF()
EXIT ENDIF
ENDDO思考:去除程序中黃色命令后,要保持程序功能,如何修改程序?例:STUDENT.DBF是一個學(xué)生信息文件,其中包含學(xué)號、姓名等字段,而且已按“學(xué)號”建立了索引,索引文件名是XH.IDX;CJ1.DBF是成績文件,其中包含學(xué)號、課程名、成績字段,而且已按“課程名”建立了索引,索引文件名是CJ1.IDX。請編程顯示輸出選修“計(jì)算機(jī)基礎(chǔ)”課程的學(xué)生姓名和成績。
程序(xsxx)如下:SETTALKOFFSELECT1USESTUDENTINDEXXHSELECT2USECJ1INDEXCJ1locatefor課程名="計(jì)算機(jī)基礎(chǔ)"DOWHILEFOUND() SELECTSTUDENT SEEKCJ1.學(xué)號
?姓名+“:”
SELECTCJ1 ??成績
CONTINUEENDDOCANCEL思考:利用建立臨時關(guān)系的方法,如何修改程序?(多表查詢.Prg)有一職員數(shù)據(jù)庫Stff_10。數(shù)據(jù)庫中有YUANGONG、ZHIBAN表,YUANGONG的表結(jié)構(gòu)是職工編碼C(4)、姓名C(10)、夜值班天數(shù)Ⅰ晝值班天數(shù)Ⅰ加班費(fèi)N(10,2)。ZHIBAN表的庫結(jié)構(gòu)是值班時間C(2),每天加班費(fèi)N(7,2),ZHIBAN表中只有兩條記錄,分別記載了白天和夜里的每天加班費(fèi)標(biāo)準(zhǔn)。請制作一個菜單,菜單上有兩個菜單項(xiàng),分別是“計(jì)算”和“關(guān)閉”,計(jì)算菜單應(yīng)完成下列要求。:1.計(jì)算YUANGONG表的加班費(fèi)字段值.計(jì)算方法是:加班費(fèi)=夜值班天數(shù)*夜每天加班費(fèi)+晝值班天數(shù)*晝每天加班費(fèi).根據(jù)上面的結(jié)果,將員工的職工編碼、姓名、加班費(fèi)存儲到staff_d表中,并按加班費(fèi)降序,如果加班費(fèi)相等,則按職工編碼的升序排列settalkoffopendatabasestaff_10select2
usezhibanselect1useyuangongindexon職工編碼tobmdowhile!eof()select2GOTOPreplacea->加班費(fèi)witha->夜值班天數(shù)*每天加班費(fèi)
skip
replacea->加班費(fèi)witha->加班費(fèi)+a->晝值班天數(shù)*每天加班費(fèi)
select1skipenddosorton加班費(fèi)/d,職工編碼/atostaff_dfields職工編碼,姓名,加班費(fèi)usestaff_dBROWSEclosedatabasesettalkon*統(tǒng)計(jì)按紐CLICK事件程序代碼:SETTALKOFFCLOSEALLOPENDATASTU_7SELE1USEXUESHENGINDEXON學(xué)號TOXH1SELE2USECHENGJIINDEXON學(xué)號TOXH2TOTALON學(xué)號TOABCUSEABCINDEXON學(xué)號TOXH3SELE1SETRELATO學(xué)號INTOABCGOTOPDOWHILE
!EOF()REPLXUESHENG.平均分WITH
ABC.成績/4
SKIPENDDOSORTON平均分,學(xué)號TOPINGJUNUSEPINGJUNBROW題目同第三章查詢*統(tǒng)計(jì)按紐CLICK事件程序代碼:SELECTXuesheng.學(xué)號,Xuesheng.姓名,AVG(Chengji.成績)AS平均分;
FROMstu_7!xueshengINNERJOINstu_7!chengji;ONXuesheng.學(xué)號=Chengji.學(xué)號;
GROUPBYXuesheng.學(xué)號;
ORDERBY平均分,Xuesheng.學(xué)號;
INTOTABLEpingjun.dbfSELE
PINGJUNBROW題目同第三章查詢例題:共有五個數(shù)據(jù)表文件std1.dbf-std5.dbf,下面程序的功能是刪除每個表文件的末記錄。請?zhí)羁铡?程序填空-3.prg)n=1DOWHILEn<=5 db=① USE&db
② DELETE PACK n=n+1ENDDOUSE 例11-15打印九九乘法表
A=1B=1 DowhileA<=9
DowhileB<=9 T=A*B ??T B=B+1
ENDDO A=A+1 ?
Enddo
Cancel思考:1.要打印九九表如何修改程序?2.要打印無重復(fù)值的九九表如何修改程序?P88例4.14有錯誤2.步長型循環(huán)命令FOR命令格式:FOR<內(nèi)存變量>=<初值>
TO<終值>
[
STEP<步長值>][命令組][EXIT][LOOP]ENDFOR[或NEXT]循環(huán)次數(shù)=INT((終值-初值)/步長)+1功能:根據(jù)給定的循環(huán)次數(shù)重復(fù)執(zhí)行一組命令,實(shí)現(xiàn)程序循環(huán)。Var
>or<
nFinalValueCommandsNYEXITLOOPVar=
nInitialValueVar=Var±nIncrement說明:(1)<內(nèi)存變量>相當(dāng)于一個計(jì)數(shù)器。(2)<初值>是計(jì)數(shù)器開始值;<終值>是計(jì)數(shù)器的終止值.(3)<步長值>是計(jì)數(shù)器值的增長或減少量,如果是負(fù)數(shù),則計(jì)數(shù)器被減小,缺省STEP,步長值為1,<初值>、<終值>和<步長值>均為數(shù)值型表達(dá)式。(4)
FOR與NEXT必須成對出現(xiàn)。S=0FORI=1TO10S=S+IENDFOR?”S=“,SS=0FORI=1TO9STEP2S=S+IENDFOR?”S=“,SFORI=1TO9STEP2 ??SPACE(11-I)FORK=1TOI ??"*" ENDFOR ?ENDFOR例:寫程序結(jié)果:I=I+1S=0FORI=9TO1STEP-2S=S+IENDFOR?”S=“,S例:輸出Fibonacci(斐波納契)數(shù)列的前20個數(shù)1,1,2,3,5,8,13,…。
算法:Fibonacci(斐波納契)序列是一種整數(shù)數(shù)列,其中每一個數(shù)等于前兩個數(shù)之和。
程序如下:clearf1=1f2=1?f1,f2forj=2to10
f1=f1+f2f2=f2+f1??f1,f2endforreturn 設(shè):Fibonacci
序列數(shù)用變量f1,f2表示;首先f1=f2=1變量J由2~10每次+1當(dāng)J=2f1=f1+f2(F1=1+1)f2=f2+f1(F2=1+2)??f1,f2當(dāng)J=3f1=f1+f2(F1=2+3)f2=f2+f1(F2=3+5)??f1,f2…例:找出100~999之間的所有“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個三位數(shù),其中各位數(shù)字的立方和等于該數(shù)本身(如153=13+53+33)。設(shè)I
代表三位數(shù),a,b,c分別代表該三位數(shù)在百位、十位和各位上的三個數(shù)字。 算法1:
a=int(I/100)
例如int(153/100)
等于1
b=int((I-100*a)/10)
例如int((153-100*1)/10)
等于5
c=I-int(I/10)*10
例如153-int(153/10)*10
等于3算法2:s=str(I,3)1將一個三位數(shù)轉(zhuǎn)換成字符串
a=val(left(2,I))b=val(subs(s,2,1))c=val(right(s,1)ForI=100to999 a=int(I/100)b=int((I-100*a)/10)c=i-int(I/10)*10 IFI=A^3+B^3+C^3??IENDIFENDFOR作業(yè):用算法2編程,找出100~999之間的所有“水仙花數(shù)”例題:寫程序的運(yùn)行結(jié)果
X=“計(jì)算機(jī)科學(xué)與計(jì)算機(jī)工程技術(shù)”
Y=""DOWHILELEN(X)>=2 FORP=15TO1STEP-12
Y=Y+SUBSTR(X,1,2)
X=SUBSTR(X,P) ENDFOR Y=Y+RIGHT(X,4)ENDDO?YRETURN作業(yè)題1.程序的最終結(jié)果是什么?2.循環(huán)的中間結(jié)果是什么?3.數(shù)據(jù)表掃描循環(huán)SCAN結(jié)構(gòu):
SCAN[范圍>][FOR/WHILE<條件>][命令組][EXIT][LOOP]ENDSCAN
功能:對當(dāng)前表中符合條件的記錄按照命令組序列進(jìn)行處理,SCAN表示循環(huán)開始,并按指定條件移動記錄指針;ENDSCAN表示一次循環(huán)結(jié)束,使循環(huán)返回.
!EOF()CommandsNYEXITLOOPSKIP說明:(1)<范圍>:指定記錄的查找范圍,只查找指定<范圍>內(nèi)的記錄。若省略<范圍>,則默認(rèn)為ALL。(2)FOR<條件>]只對<條件>為·T·的記錄執(zhí)行命令組,利用FOR子句可以過濾掉用戶不需要的記錄;[WHILE<條件>]指定一個條件,只要<條件>的計(jì)算結(jié)果為真(·T·)就執(zhí)行命令組。(3)[EXIT],[LOOP]用法同前面循環(huán)結(jié)構(gòu)。(4)SCAN自動把記錄指針移向下一個符合指定條件的記錄,并執(zhí)行同樣的命令組。例12.15查詢輸出所有臨床醫(yī)學(xué)專業(yè)、五年學(xué)制學(xué)生的學(xué)號,姓名,專業(yè),學(xué)制.SETTALKOFFCLEARUSESTUDENTSCANFOR專業(yè)=‘臨床醫(yī)學(xué)”·AND·學(xué)制=‘五’
DISPLAY學(xué)號,姓名,專業(yè),學(xué)制ENDSCANUSECANCEL例:顯示STUDENT.DBF中所有年齡小于22歲的女生的記錄
(修改程序中的錯誤)USESTUDENTSCANFOR性別=“女”AND;YEAR(DATE())-YEAR(出生年月)<22
DISPLAYENDSCANUSE
條件循環(huán)
FOR-NEXT循環(huán)
I=1FORI=1TOnDOWHILE
i<=n<命令序列><命令序列>ENDFORI=I+1ENDDO
條件循環(huán)
掃描循環(huán)
GOTOPSCANDOWHILE!EOF()
處理一個記錄
處理一個記錄
ENDSCANSKIPENDDO條件、步長、掃描三種方式的比較
在循環(huán)語句的循環(huán)體中可以插入LOOP、EXIT語句,其命令功能是:
LOOP
能使執(zhí)行轉(zhuǎn)向循環(huán)語句頭部繼續(xù)循環(huán)。
EXIT
用來立即退出循環(huán),轉(zhuǎn)去執(zhí)行ENDDO,ENDFOR或ENDSCAN后面的語句。
注意:在DO循環(huán)語句中執(zhí)行LOOP語句,將直接將控制權(quán)轉(zhuǎn)到DOWHILE
語句;在FOR循環(huán)語句中執(zhí)行LOOP語句,將會先修改循環(huán)變量的值,然后轉(zhuǎn)向FOR語句。在SCAN循環(huán)語句中執(zhí)行LOOP語句,將會先移動記錄指針,然后轉(zhuǎn)去判斷循環(huán)條件。
循環(huán)輔助語句1.數(shù)組的定義
數(shù)組是用一個內(nèi)存變量名表示順序排列的一組數(shù)據(jù)的有序集合。其中內(nèi)存變量名為數(shù)組名,順序號稱為數(shù)組的下標(biāo)值,它必須放在數(shù)組名后面的括號(圓括號或方括號)內(nèi)。每一個數(shù)組名下標(biāo)值表示一個數(shù)組元素。數(shù)組元素的使用與內(nèi)存變量完全相同,所以數(shù)組元素也稱為下標(biāo)變量。要使用一個數(shù)組,必須事先定義。數(shù)組大小由下標(biāo)值的上、下限決定,下限規(guī)定為1。4.4數(shù)組及其應(yīng)用創(chuàng)建數(shù)組的命令格式是:
DIMENSION<數(shù)組名>(下標(biāo)上限1>[,(下標(biāo)下限2>)[,……]
DECLAR<數(shù)組名>(下標(biāo)上限1>[,(下標(biāo)下限2>)[,……]功能:定義一個或多個一維或二維數(shù)組。注意:1.以上兩種格式功能完全相同。數(shù)組創(chuàng)建后,系統(tǒng)自動給每個數(shù)組元素賦以邏輯假(.F.)。2.下標(biāo)值可為常數(shù)、變量或表達(dá)式,但必須大于0;4.4.1數(shù)組的創(chuàng)建例如,DIMENSIONX(5),Y(2,3)命令定義了兩個數(shù)組:一維數(shù)組X含5個元素:
x(1)、x(2)、x(3)、x(4)、x(5)。二維數(shù)組y含6個元素:
y(1,1)、y(1,2)、y(1,3)、y(2,1)、y(2,2)、y(2,3)??梢杂靡痪S數(shù)組的形式訪問二維數(shù)組。例如,數(shù)組Y中的各個元素用一維數(shù)組形式可依次為:
y(1)、y(2)、y(3)、y(4)、y(5)、y(6)
其中y(4)與y(2,1)是同一變量。例:用數(shù)組存儲下列矩陣
1357911131517192123算法:1.用雙重循環(huán)將矩陣存入數(shù)組X(3,4),外循環(huán)控制行,內(nèi)循環(huán)控制列。2.矩陣系數(shù)用變量K賦值,K從1到23,每次遞增2。3.輸入數(shù)據(jù)的同時輸出結(jié)果。解:使用下列語句
cleardimensionx(3,4)k=1fori=1to3forj=1to4x(i,j)=kk=k+2??x(i,j)endfor
?endfor例:STUDENT.DBF表的結(jié)構(gòu)如右圖,寫出程序結(jié)果。dimea(4)usestudentcountfor性別=”男”toa(1)countfor成績>70.and.成績<80toa(2)averfor性別=”男”toa(3)countfor性別=”女”.and.成績>60toa(4)I=1DowhileI<=4 ?”a(I)=”,a(I) I=I+1
Enddo
Return1.將數(shù)據(jù)表之間的數(shù)據(jù)傳遞給數(shù)組命令:格式:SCATTER[FIELDS<字段名表>]TO<數(shù)組名>[MEMO]功能:復(fù)制當(dāng)前記錄中指定字段的數(shù)據(jù)到數(shù)組或變量中。MEMO:指定備注字段可以參加復(fù)制。默認(rèn)情況下,SCATTER命令不處理備注字段。4.4.3數(shù)組與數(shù)據(jù)表之間的數(shù)據(jù)傳遞格式:GATHERFROM<數(shù)組名>[FIELDS<字段名表>][MEMO]功能:用指定數(shù)組中的數(shù)據(jù)替換當(dāng)前表當(dāng)前記錄中的數(shù)據(jù)。注意:數(shù)組與表文件各字段的類型必須一致。將數(shù)組中的數(shù)據(jù)傳遞給數(shù)據(jù)表的命令例:在STUDENT表的末尾增加一個空白記錄,然后將首記錄字段值復(fù)制到空白記錄中。(注意:STUDENT表中不能建立主索引或者侯選索引)USESTUDENTAPPENDBLANKGOTOPSCATTERTORECODERMEMOGOBOTTOMGATHERFROMMEMO例:計(jì)算并輸出第N個Fibonacci(斐波納契)數(shù)算法:Fibonacci(斐波納契)序列是一種整數(shù)數(shù)列,其中每一個數(shù)等于前兩個數(shù)之和。
CLEARINPUT"N="TONDIMENF(N)STORE1TOF(1),F(2)??F(1),F(2)FORI=3TONF(I)=F(I-1)+F(I-2)??F(I)ENDFOR??“第”,N,“個Fibonacci數(shù)是",F(N)
程序設(shè)計(jì)的基本技巧記錄的交換隨機(jī)數(shù)的生成奇偶數(shù)的判定素?cái)?shù)的判定一元二次方程的求解公式計(jì)算迭代運(yùn)算求和求積計(jì)數(shù)求最大值求最大值兩數(shù)組的加法兩數(shù)組的乘法數(shù)組的轉(zhuǎn)置排序程序的模擬運(yùn)行寫出程序的運(yùn)行結(jié)果程序填空字符圖形打印圖形例:編寫程序打印如下圖形(圖中第一行第一個*在第3列輸出)。
fori=1to7 ??space(2*i) for_____________ ??"*" endfor
?endfor記錄的交換將STUDENT表中的首記錄與末記錄交換USESTUDENTGOTOPSCATTERTO
FirstRecordGOBOTTOMSCATTERTOEndRecordGOTOPGATHER
FROM
EndRecordGOBOTTOMGATHER
FROM
FirstRecord思考題:如何交換任意兩條記錄?提示:這兩條記錄的記錄號通過鍵盤輸入指定。隨機(jī)數(shù)的生成為了生成某個范圍內(nèi)(大于或等于小數(shù)而小于大數(shù))的隨機(jī)整數(shù),可使用公式:INT(rand()*(upper-lower+1)+lower)隨機(jī)生成20個大于或等于10小于100的隨機(jī)整數(shù)DIMENSIONR(20)FORI=1TO20 R(I)=INT(RAND()*(100–10+1)+10)??R(I)ENDFOR隨機(jī)生成20個大于或等于10小于100的隨機(jī)數(shù)(保留兩位小數(shù))。DIMENSIONR(20)FORI=1TO20 R(I)=INT((RAND()*(100-10+1)+10)*100)/100??R(I)ENDFOR奇偶數(shù)的判定偶數(shù)的定義:能被2整除的數(shù)偶數(shù)的判定方法:
x/2=int(x/2)x%2=0MOD(x,2)=0思考:如何判定3的倍數(shù)?如何判定一個數(shù)同時被3和7整除?例:寫出下列程序結(jié)果S=0J=1FORI=1TO5 J=J*I IF(I%2)=0 S=S+JENDIFENDFOR?"SUM=",SRETURN例:編程計(jì)算1~100
中奇數(shù)之和。CLEARCLEARI=1S=0
S=0FORI=1TO100DOWHILEI<=100 IFINT(I/2)<>I/2IFINT(I/2)<>I/2
S=S+IS=S+I
ENDIFENDIF
I=I+1ENDFOR
ENDDO?“1~1000中奇數(shù)之和是:”,SRETURN思考:怎樣輸出1-100之間的每個奇數(shù)?例12.14統(tǒng)計(jì)數(shù)0~100之間不是3的倍數(shù)的數(shù),并求其累加和。SETTALKOFF(不是3的倍數(shù).PRG)STORE0TOM,N fori=1to100
IFINT(i/3)*3<>I&&判斷i是3的倍數(shù)嗎?
LOOP
ELSE M=M+i &&求不是3的倍數(shù)的數(shù)之和
N=N+1&&統(tǒng)計(jì)不是3的倍數(shù)的個數(shù)
?N,I&&輸出不是3的倍數(shù)的數(shù)
ENDIFENDFOR?“在0~100之間一共有”,N,“個不是3的倍數(shù)的數(shù)”,“其和為:”,MSETTALKON素?cái)?shù)的判定素?cái)?shù),也稱質(zhì)數(shù),就是一個大于2且只能被1或自身整除的數(shù)素?cái)?shù)的判定(判別M是否是素?cái)?shù)):用M從M=2,3,4,…到N-1各數(shù)整除,如果都除不盡,則x是素?cái)?shù)。每次判斷N/M余數(shù)是否為0,如果每次都不為0,則N必為素?cái)?shù)。
素?cái)?shù)的判定INPUT“請輸入一個大于2的自然數(shù):”TONK=.T.&&K的值為.T.表示輸入的數(shù)是素?cái)?shù),為.F.表示不是素?cái)?shù).FORM=2TON-1 IFMOD(N,M)=0 K=.F. EXIT ENDIFENDFORIFK ?STR(N)+“是素?cái)?shù)"ELSE ?STR(N)+“不是素?cái)?shù)"
ENDIF3~100之間素?cái)?shù)的判定CLEAR?FORI=3TO100J=2DOWHILEJ<I IF
mod(i,j)=0&&J能否整除i或者INT(I/J)=I/J EXIT ENDIF J=J+1ENDDOIFJ=I&&如果除數(shù)J=I為素?cái)?shù)
??IENDIFENDFORRETURN思考:如何計(jì)算并輸出3~100間有幾個素?cái)?shù)?一元二次方程的求解ax2+bx+c=0輸入a,b,c(方程.prg)計(jì)算△=b2-4ac如果a=0輸出X=-C/B否則:如果△>0輸出兩個不同的實(shí)根X1=(-b+sqrt(△))/(2a)X2=(-b-sqrt(△))/(2a)如果△=0輸出一個實(shí)根X=(-b)/(2a)如果△<0輸出“方程無實(shí)根”INPUT"Givecoefficientsa:"TOaINPUT"Givecoefficientsb:"TObINPUT"Givecoefficientsc:"TOcdelta=b*b-4*a*c&&計(jì)算判別式Δdocasecasea=0?"Onerootat",-C/BCASEdelta>0&&判別式Δ>0S=SQRT(discr)?"Therootare:"?"X1=",(-b+S)/(2*A)?"X2=",(-b-S)/(2*A)CASEdelta=0&&判別式Δ=0?"Therootis:"?"X=",(-b)/(2*A)OTHERWISE&&判別式Δ<0?"Norealroots."ENDCASE求和(迭代)直到最后一項(xiàng)小于10-4為止直到最后一項(xiàng)的絕對值小于10-4為止S=0FORN=1TO100S=S+NENDFOR迭代是指重復(fù)執(zhí)行一組指令(或一定步驟),,每次執(zhí)行這組指令時,都從變量的原值推出它的新值。求和S=11+12+13+…+20s=0s=s+11s=s+12s=s+13s=s+14s=s+15s=s+16s=s+17s=s+18s=s+19s=s+20s=0FORI=11TO
20
s=s+iENDFORs=0i=11Dowhile
i<=20
s=s+I
i=i+1ENDDOs=0FORI=20TO
11STEP-1
s=s+iENDFORs=0i=20Dowhile
i>=11
s=s+I
i=i-1ENDDO例:用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一項(xiàng)的絕對值小于10-4為止。T=1Pi=0N=1S=1Dowhileabs(t)>0.0001 pi=pi+t n=n+2&&計(jì)算分母
s=-s &&計(jì)算分子
t=s/nEnddoPi=pi*4?”最后一項(xiàng)的絕對值小于10-4時π=”,pireturn求積S=1*2*3*…*10s=1s=s*1s=s*2s=s*3s=s*4s=s*5s=s*6s=s*7s=s*8s=s*9s=s*10s=1FORI=1TO10 s=s*iENDFORs=1FORI=10TO1STEP-1 s=s*iENDFORs=1i=10Dowhile
i>=11 s=s*i
i=i-1ENDDOs=1i=1Dowhilei<=10 s=s*i
i=i+1ENDDOS=n!=n*(n-1)!作業(yè):編程求1!+2!+3!+……+N!T=1&&T1=1S=T&&S1=1FORI=2TO100 T=T/I
&&T=(2-1)/2,1/2/3,1/2/3/4,… S=S+T&&S=1+1/2+1/6+1/24+…ENDFOR?“S=”,S用程序(求階乘之和.prg)建立了迭代關(guān)系計(jì)數(shù)的基本方法統(tǒng)計(jì)數(shù)組A中的正數(shù)的個數(shù)a(1):37a(2):-37a(3):37a(4):-37a(5):-37a(6):37a(7):37a(8):-37a(9):37a(10):0a(11):37c=0FORI=1TO11 IFa(i)>0 c=c+1 ENDIFENDFORSTORE0TO
c1,c2FOR
I=1TO11 IFa(i)>0 c1=c1+1 ELSE IFa(i)<0 c2=c2+1ENDIF ENDIFENDFOR功能擴(kuò)展統(tǒng)計(jì)數(shù)組A中的正、負(fù)數(shù)的個數(shù)求最大值、最小值假設(shè)A為一維數(shù)組,求值最大的元素maxs=a(1)FORi=2TO10 IFmaxs<a(i)
maxs=a(i) ENDIFENDFORmaxs=a(1)Position=1FORi=2
TO10 IFmaxs<a(i)
maxs=a(i) position=i ENDIFENDFOR功能擴(kuò)展變量Position的作用是?例題:編程產(chǎn)生N個兩位(10~100)隨機(jī)整數(shù),輸出這些數(shù)中的最大、最小數(shù)。(程序填空)
INPUT"N="TON DIMENX(____) J=1 DOWHILEJ<=N
X(i)=int(rand()*90+10)
__________ ENDDO
mx=x(1) mi=x(1) FORI=2TON ifx(i)>mx mx=____
endif
ifx(i)<mi ____=x(i)
endif endfor
?"最大數(shù)是",MX,"最小數(shù)是",MI矩陣的加法完全相同的兩個數(shù)組可作加法,如:其中:cij
=aij+bijFOR
i=1
TO4 FOR
j=1TO
3
c(i,j)=a(i,j)+b(i,j) ENDFORENDFORA矩陣59261037114812B矩陣235689101112矩陣的乘法要求:A矩陣的列數(shù)(n)與B矩陣的行數(shù)(m)相同。得到的乘積矩陣為M*N其中:cij=ai1*b1j+ai2*b2j+ai3*b3j+ai4*b4jFOR
i=1TO
3 FORj=1
TO3C(I,J)=0 FORK=1
TO
4 c(i,j)=c(i,j)+a(i,k)*b(k,j) ENDFOR ENDFORENDFOR其中I=1,2,3j=1,2,3矩陣的轉(zhuǎn)置將m*n的矩陣A的行和列互換,得到n*m的矩陣AT,AT稱為A的轉(zhuǎn)置矩陣.其中:bij=ajiFORi=1
TO3 FOR
j=1
TO4 b(i,j)=a(j,i) ENDFORENDFOR矩陣A123456789101112AT矩陣59261037114812排序排序的方法冒泡法兩兩比較法選擇法基排歸并法堆排SHELL排序法…排序方法—冒泡法a(i)a(j)編號1#2#3#4#5#6#7#8#數(shù)據(jù)<降序52793684指示器i指示器j52指示器j75757指示器j99779指示器j3比較成立,則交換:指示器j6指示器j8指示器j4a(i)a(j)t123排序方法—冒泡法FORi=1TO7 FORj=i+1TO8 IFa(i)<a(j) t=a(i) a(i)=a(j) a(j)=t ENDIF ENDFORENDFORSETTALKOFFDIMENSIONa(8)CLEARFORi=1TO8 ii=ALLTRIM(STR(i)) p="Enter"+ii+"'thnumber:" INPUTpTOa(i)ENDFORFORi=1TO8 ?a(i)ENDFORSETTALKON按降序排序例:隨機(jī)產(chǎn)生10個3位(100-999)整數(shù),并按從小到大的順序輸出DIMENSIONA(10)FORI=1TO10 A(I)=INT(RAND()*900+100)&&循環(huán)產(chǎn)生10個3位隨機(jī)整數(shù)ENDFORFORI=1TO9 FORJ=I+1TO10 IFA(I)>A(J)&&按從小到大的順序排序
Q=A(I) A(I)=A(J) A(J)=Q ENDIF ENDFORENDFORFORI=1TO10&&循環(huán)輸出排序后的數(shù)??A(I)ENDFORRETURN
思考:1.怎樣按從大到小的順序輸出?2.
如果不要最后一個循環(huán),怎樣輸出排序后的數(shù)?
按升序排序排序方法—選擇法選擇排序(SELECTSORT)的基本思想是:先在未排序的序列中選一個最小元素,作為已排序子序列;然后再重復(fù)地從未排序子序列中選取一個最小元素,把它加入已排序的數(shù)列,作為已排序子數(shù)列的最后一個元素,直到把未排序子數(shù)列中的元素處理完為止。排序方法—選擇法FORi=1TO7 pos=i FORj=i+1TO8 IFa(pos)<a(j) pos=j ENDIF ENDFOR t=a(i) a(i)=a(pos) a(pos)=tENDFORSETTALKOFFDIMENSIONa(8)CLEARFORi=1TO8 a(i)=INT(RAND()*90)+10ENDFORFORi=1TO8 ??a(i)ENDFOR?SETTALKON按降序排序排序方法—兩兩比較法a(i)a(i+1)編號1#2#3#4#5#6#7#8#數(shù)據(jù)<降序52793684比較成立,則交換指示器i第一輪比較,…,共比較N-1輪。52指示器i277272指示器i299292指示器i233232指示器i266262指示器i288282指示器i244242排序方法—兩兩比較法FORj=1TOnum-1 FORi=1TOnum-1 IFa(i)>a(i+1) t=a(i) a(i)=a(i+1) a(i+1)=t ENDIF ENDFORENDFORSETTALKOFFINPUT"Enternumber:"TOnumDIMENSIONa(num)CLEARFORi=1TOnum a(i)=INT(RAND()*90)+10ENDFORFORi=1TOnum ??a(i)ENDFOR?SETTALKON按升序排序思考:如何加快排序速度?排序方法—基排5247952479數(shù)組a下標(biāo).f..f..f..f..f..f..f..f..f.值12345678911111要點(diǎn):以數(shù)據(jù)值作為數(shù)組的下標(biāo)在相應(yīng)元素作一個標(biāo)記,為輸出排序結(jié)果做準(zhǔn)備排序方法—基排SETTALKOFFDIMENSIONA(9)FORI=1TO7 INPUTTOx a(x)=1ENDFORFORi=1TO9 IF!EMPTY(a(i)) ?i ENDIFENDFORSETTALKONRETURN優(yōu)點(diǎn):排序速度最快缺點(diǎn):只能對無重復(fù)的數(shù)據(jù)排序只能對正整數(shù)排序必須知道數(shù)據(jù)的范圍所占空間大改良:對有重復(fù)的數(shù)據(jù)集排序?對具有小數(shù)的數(shù)據(jù)集排序?對具有負(fù)數(shù)的數(shù)據(jù)集排序?檢測數(shù)據(jù)的范圍?排序方法—基排法的改良SETTALKOFFDIMENSIONa(9)a
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《偵查策略》課件
- 外陰濕疹的臨床護(hù)理
- 孕期中暑的健康宣教
- 傳導(dǎo)性耳鳴的健康宣教
- 這位廳官的講話火了
- 雙曲線定義課件
- 你們想錯了課件
- 化膿性腮腺炎的健康宣教
- 科學(xué)探究:物質(zhì)的比熱容課件滬科
- 鼻毛孔粗大伴白色分泌物的臨床護(hù)理
- 綠化工程售后服務(wù)方案
- 北京西城實(shí)小2024-2025學(xué)年六年級數(shù)學(xué)第一學(xué)期期末綜合測試試題含解析
- 2024-2030年炔草酯全產(chǎn)業(yè)競爭狀況監(jiān)測及未來需求趨勢分析報告(-版)
- 2024年高考語文復(fù)習(xí)試題匯編:文學(xué)類文本閱讀(含解析)
- 2022新教材蘇教版科學(xué)5五年級下冊全冊教學(xué)設(shè)計(jì)
- 舊橋拆除監(jiān)理細(xì)則
- 統(tǒng)編版語文二年級上冊第八單元大單元公開課一等獎創(chuàng)新教學(xué)設(shè)計(jì)
- 創(chuàng)傷中心建設(shè)要點(diǎn)
- 證券投資實(shí)戰(zhàn)精講智慧樹知到答案2024年西安歐亞學(xué)院
- 師帶徒工作總結(jié)徒弟
- 文案合作合同范本
評論
0/150
提交評論