VFO程序設(shè)計復(fù)習(xí)_第1頁
VFO程序設(shè)計復(fù)習(xí)_第2頁
VFO程序設(shè)計復(fù)習(xí)_第3頁
VFO程序設(shè)計復(fù)習(xí)_第4頁
VFO程序設(shè)計復(fù)習(xí)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/VFO程序設(shè)計復(fù)習(xí)1程序設(shè)計概述一、程序的概念概念:具有肯定功能的計算機(jī)能執(zhí)行的指令的集合。例1:顯示表XSDA可編寫成如下吩咐序SETDEFATOF:\表USEXSDALISTCLOSEALL例2:求a=3,b=2,c=5求a+b-c=?程序test.prg代碼如下:a=3b=2c=5x=a+b-c?x二、常見的程序設(shè)計方法1、

結(jié)構(gòu)化程序設(shè)計(模塊化)結(jié)構(gòu)化程序設(shè)計是一個面對過程的概念。把一個實(shí)際問題分為兩部分,即數(shù)據(jù)和過程。通過動態(tài)的程序執(zhí)行過程來對靜態(tài)的數(shù)據(jù)進(jìn)行處理,得出正確的結(jié)果。由VFP吩咐和程序設(shè)計吩咐的組合,需編制和調(diào)試;2、

面對對象的程序設(shè)計3、結(jié)構(gòu)化程序設(shè)計它是面對過程程序設(shè)計的另一種描述,面對過程程序設(shè)計有如下特點(diǎn):①整個程序分為若干個模塊,模塊之間相連接,且相對獨(dú)立。②第個模塊只有一個入口和一個出口。③第個模塊都能單獨(dú)執(zhí)行,且在有限時間內(nèi)執(zhí)行完。④采納自頂向下、逐步求精的方法。三、程序三大基本結(jié)構(gòu)1、依次結(jié)構(gòu):執(zhí)行是按吩咐出現(xiàn)的先后依次執(zhí)行。2、分支結(jié)構(gòu):按給定的條件成立和否來確定程序起向,分單向選擇分支、雙向選擇分支和多路分支。有以下兩種IF語句 DOCASE ENDIF ENDCASE3、循環(huán)結(jié)構(gòu):程序的執(zhí)行發(fā)生了自下而上的往復(fù),某一程序段將重復(fù)執(zhí)行。有以下三種DoWhile For SCANENDDO ENDFOR ENDSCAN四、算法和流程圖算法:解決某一問題的方法和步驟。見教材例。流程圖:算法的描述,除用自然語言描述外,計算機(jī)領(lǐng)域常用流程圖(ANSI圖和N-S圖)描述。見教材例。例如:樂山到成都怎么去?1、

解一元二次方程的算法。Ax2+bx+c=0,求x2、

求出1-100之間的質(zhì)數(shù)。X/=>2到SQRT(X)2程序的建立和執(zhí)行一、程序的擴(kuò)展名:PRG實(shí)質(zhì):文本文件(ASCII編碼)執(zhí)行時,會產(chǎn)生編譯文件FXP后讓計算機(jī)執(zhí)行。二、程序文件的建立和編輯1、吩咐方式:MODICOMM程序名.PRG(.PRG可省)2、菜單方式;文件=>新建=>程序3、項(xiàng)目管理器中建立的方法:建立項(xiàng)目管理器=>新建程序4、其他方法:其它可編輯文本的軟件:記事本\寫字板\WORD\其它程序編輯器留意:希望編寫程序之前事先設(shè)置好默認(rèn)書目(setdefato……)然后我們編寫的程序就會自動存儲在那個書目中。例如:setdefatod:\ksmodicommTest(相當(dāng)于是:modicommD:\ks\test.prg)三、程序的執(zhí)行1、吩咐方式吩咐格式:DO[盤符][路徑]程序名2、菜單方式:“程序”菜單->“運(yùn)行”吩咐在“運(yùn)行”窗口中輸入被運(yùn)行的程序文件名,即可運(yùn)行程序。四、VFP程序的分類:數(shù)學(xué)類程序、涉及到表操作的程序假如本程序是涉及到表操作的程序,那么:1、在程序起先部分可以先加語句CLEAR和CLOSEALL2、程序最終可以運(yùn)用吩咐CLOSEALL3、然后運(yùn)用RETURN或CANCEL或QUIT例:找出并顯示全部三好生CLEARCLOSEALLUSE學(xué)生LOCATEFOR三好生DOWHILENOTEOF()DISPCONTINUEENDDOCLOSEALLRETUREN3依次程序設(shè)計和常用語句一、程序設(shè)計中的常用語句1、輸入吩咐(1)賦值吩咐吩咐一:STORE<表達(dá)式>TO<內(nèi)存變量>吩咐二:<內(nèi)存變量>=<表達(dá)式>(2)交互式輸入吩咐(留意:輸入數(shù)據(jù)是在程序執(zhí)行的時候)INPUT[提示信息]TO<內(nèi)存變量>ACCEPT[提示信息]TO<內(nèi)存變量>WAIT[提示信息][TO<內(nèi)存變量>][TIMEOUT<等待時間>說明:①提示信息是C型,它會在屏幕上原樣輸出.②WAIT吩咐的功能:暫停程序執(zhí)行,顯示提示信息等待用戶按鍵。Wait吩咐中輸入的只能是一個字符(C型)。③Input適用于全部類型內(nèi)存變量,輸入時須要加定界符④Accept只適用于C型,并且C型不加定界符留意:Input和accept在編寫程序時語句都一樣,只是執(zhí)行程序(do)時,主屏幕上要求輸入的類型和格式不同。例1:輸入a、b、c的值,對2ax+b=c求x的值。ClearInput“現(xiàn)在計算2ax+b=c,請輸入a的值:”toaInput“請輸入b的值:”tobInput“請輸入c的值:”tocx=(c-b)/(2*a)?’x的值為:’,x&&比較運(yùn)用?’x的值為:’+str(x,3)有何區(qū)分return例2、查找學(xué)生.dbf中的指定記錄clearclosealluse學(xué)生listaccept“請輸入您想查找的姓名:”toxmLocatefor姓名=XM&&或吩咐SEEKXMiffound()DISPelse?’對不起,沒有找到此人’endiflistcloseallReturn思索:假如accept換成input,輸入的時候該怎么輸入?例3、刪除學(xué)生.dbf中的指定記錄clearclosealluse學(xué)生listinput“請輸入您想刪除的記錄號:”toxdelerecoxwait“你想徹底刪除這條記錄嗎?(y/n)”toaskifask=’Y’orask=’y’packendiflistcloseall留意區(qū)分交換方式和程序方式:有的吩咐可以在兩種狀態(tài)下執(zhí)行(例如:剛才的輸入吩咐),但有些吩咐只能在程序方式下執(zhí)行(例如:循環(huán)語句和分支語句)(3)格式輸入吩咐格式一:@行,列say提示信息格式二:@行,列say提示信息get變量……READ格式三:@行,列say提示信息get變量default常量功能:在屏幕指定的坐標(biāo)位置上顯示提示信息,然后通過READ吩咐激活GET子句的變量值。說明:①GET后的變量可以是內(nèi)存變量或當(dāng)前打開的數(shù)據(jù)文件中的字段變量,若是內(nèi)存變量,應(yīng)在執(zhí)行該吩咐前對內(nèi)存變量賦值,否則就必需運(yùn)用default參數(shù)賦初值。②輸入的值類型應(yīng)當(dāng)和初值類型相同。③READ吩咐和GET吩咐必需協(xié)作運(yùn)用。多個GET吩咐可以只用一個READ吩咐協(xié)作。假如沒有read則表示只顯示內(nèi)容,不輸入值。例1:編寫程序完成在學(xué)生.DBF中追加記錄CLEARUSE學(xué)生APPENDBLANK@5,20SAY“學(xué)號”GET學(xué)號@5,40SAY“姓名”GET姓名@7,20SAY“性別”GET性別@7,40SAY“誕生年月”GET誕生年月@9,20SAY“入校總分”GET入??偡諤9,40SAY“三好生”GET三好生READCLEARLISTCLOSEALLRETURN例2:編程求長方形的面積。CLEARX=0&&X為內(nèi)存變量,賦初值Y=0@1,5SAY“計算長方形的面積”@2,5SAY“輸入長方形的長:”GETX&&第2行5列顯示提示信息并等待輸入@3,5SAY“輸入長方形的寬:”GETY&&第3行5列顯示提示信息并等待輸入READ&&從鍵盤輸入X,Y的值S=X*Y&&計算長方形的面積?“長方形的面積:”,S&&顯示長方形的面積CANCEL思索題1:如將上述例1程序改為根據(jù)指定學(xué)號來修改記錄應(yīng)當(dāng)怎樣做?(答案見課件后)3、輸出吩咐⑴:非格式輸出吩咐?和??⑵:格式化輸出吩咐@行,列say表達(dá)式說明:行和列都可以是表達(dá)式,經(jīng)??梢赃\(yùn)用函數(shù)ROW()和COL()ROW()表示返回當(dāng)前行的行號COL()表示返回當(dāng)前列的列號例1:N=1CH=“VF程序設(shè)計”@N,26SAYSPACE(60)@N+1,26SAYCH例2:循環(huán)輸入值cleardimexh(10)store0toxh@10,10say'請輸入數(shù)字:'getxh(1)i=2dowhilei<=10@row()+1,10say'請輸入數(shù)字:'getxh(i)i=i+1enddoreadlistmemolikexh4、其他程序運(yùn)行吩咐(1)終止程序執(zhí)行吩咐

CANCEL、QUIT和RETURNQUIT:退出程序運(yùn)行并且退出VisualFoxproCANCEL:退出程序運(yùn)行RETURN:返回上級程序調(diào)用點(diǎn),假如是主程序就表示退出程序。主程序可缺省此吩咐返回(結(jié)束),即默認(rèn)運(yùn)用了return留意:上述吩咐執(zhí)行完后都會自動clearmemory。但是假如有數(shù)據(jù)庫和表打開不會自動關(guān)閉,所以運(yùn)用數(shù)據(jù)庫和表后在程序結(jié)束時我們經(jīng)常須要加吩咐:closeall(2)清屏吩咐CLEAR(3)注釋吩咐(

NOTE、*和&&)注釋的含義:程序員對程序語句功能的說明,執(zhí)行程序的時候不執(zhí)行注釋中的內(nèi)容,注釋只起到一個對語句說明的目的。一般困難程序中應(yīng)有30%以上的注釋。(4)TEXT語句:原樣輸出(參考書143例4.15)(5)系統(tǒng)設(shè)置吩咐set…on/off或者是set…to1、設(shè)置會話狀態(tài)SETTALKON/OFF2、設(shè)置跟蹤狀態(tài)SETECHOON/OFF3、設(shè)置打印狀態(tài)SETPRINTERON/OFF4、設(shè)置定向輸出狀態(tài)SETDEVICETOSCREEN5、設(shè)置精確比較狀態(tài)SETEXACTTOON/OFF6、設(shè)置日期格式SETDATEANSI7、色繪制系統(tǒng)供應(yīng)的愛護(hù)狀態(tài)SETSAFETYON/OFF8、設(shè)置刪除記錄標(biāo)記狀態(tài)(駕馭)SETDELETEDON/OFF功能:屏蔽或處理有刪除標(biāo)記的記錄說明:在吩咐格式中選擇ON時,各吩咐當(dāng)不對有刪除標(biāo)記的記錄進(jìn)行操作,但索引除外。系統(tǒng)默認(rèn)值為OFF思索題1答案:CLEARUSE學(xué)生ACCEPT"請輸入需修改記錄的學(xué)號:"TONUMLOCATEFOR學(xué)號=NUM@5,20SAY"學(xué)號"GET學(xué)號@5,40SAY"姓名"GET姓名@7,20SAY"性別"GET性別@7,40SAY"誕生年月"GET誕生年月@9,20SAY"入??偡?GET入??偡諤9,40SAY"三好生"GET三好生READCLEARLISTCLOSEALLRETURN4依次結(jié)構(gòu)和分支結(jié)構(gòu)一、依次結(jié)構(gòu)例1:求圓的面積(公式S=ΠR2)CLEARINPUT“請輸入半徑R的值:”TORS=3.1416*R*R?”圓面積為:”,SCANCEL二、分支結(jié)構(gòu)(選擇結(jié)構(gòu))1、IF語句(1)單向選擇: 雙向選擇:IF條件 IF條件執(zhí)行語句執(zhí)行語句ENDIF ELSE 執(zhí)行語句 ENDIF(2)單向選擇分支例如:求隨意一個數(shù)值的肯定值CLEARSETTALKOFFINPUT“請輸入數(shù)值:”TONIFN<0 N=-NENDIF?”|N|的肯定值為:”,NCANCEL(3)雙向選擇分支例1:用戶輸入數(shù)據(jù)表文件名,推斷它存在否,假如存在則打開數(shù)據(jù)表文件并顯示表中的全部記錄clearaccept'請輸入數(shù)據(jù)庫文件名:'toheng&&想想為什么不用inputiffile(heng+‘.dbf’)&&了解file()的運(yùn)用方法use&heng&&想想這兒為什么要用&代換listelse?'sorry,文件不存在:('endifcloseall&&關(guān)閉全部打開的表,假如不涉及多工作區(qū),可以只運(yùn)用use例2:推斷輸入的整數(shù)為奇數(shù)還是偶數(shù)。CLEARINPUT“請輸入整數(shù):”TONIFN%2=0&&該表達(dá)式還可用MOD(N,2)=0來表示 ?STR(N,4)+”是偶數(shù)”ELSE?STR(N,4)+”是奇數(shù)”ENDIFCANCEL(4)IF語句的嵌套例如:將用戶輸入的小寫英文字母轉(zhuǎn)化成大寫CLEARACCEPT“請輸入1個字母:”TOSTR1IFSTR1>=’a’ANDSTR1<=’z’STR1=UPPER(STR1)?SPACE(40)+STR1ELSEIFSTR1>=’A’ANDSTR1<=’Z’?SPACE(40)+STR1ELSE?’您輸入的不是英文字母’ENDIFENDIF2、多向選擇DOCASECASE <條件表達(dá)式1><吩咐序列1>CASE<條件表達(dá)式2><吩咐序列2>……OTHERWISE&&其它狀況<吩咐序列>ENDCASE說明:OTHERWISE可以沒有.例1:比較A、B的大小CLEARINPUT“請輸入A的值:”TOAINPUT“請輸入B的值:”TOBDOCASE CASEA>B ?”A大于B” CASEA<B ?”A小于B” CASEA=B ?”A等于B”ENDCASE例2:郵局負(fù)責(zé)郵購小物品規(guī)則如下:50公里及以內(nèi)收取額外金額5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40CLEARINPUT“請輸入您想郵購物品的路程(公里數(shù)):”TOXDOCASECASEX<=50Y=5CASEX>50ANDX<=100Y=10CASEX>100ANDX<=200Y=20CASEX>200ANDX<=500Y=40OTHERWISE Y=50ENDCASE?’對不起,您須要付款:’,Y,’元人民幣’5循環(huán)程序設(shè)計1、條件循環(huán)格式一:DOWHILE條件吩咐序列ENDDO格式二:DOWHILE條件 語句序列[LOOP]語句序列[EXIT]語句序列ENDDO要退出循環(huán),須要條件為假的時候(條件=.F.時)說明:(1)LOOP和EXIT吩咐一般放在IF條件中,也可以出現(xiàn)在循環(huán)體內(nèi)的任何位置。若執(zhí)行循環(huán)體時遇到LOOP吩咐,則干脆返回執(zhí)行DO吩咐,測試條件以確定是否接著循環(huán)。若遇到EXIT吩咐,則不執(zhí)行下面的吩咐序列,干脆跳出循環(huán),執(zhí)行ENDDO后面的吩咐。(2)條件表達(dá)式的值確定了循環(huán)是否接著,當(dāng)條件表達(dá)式的值始終為真(即永真循環(huán)),則應(yīng)運(yùn)用EXIT吩咐來限制循環(huán)結(jié)束例1:將字符“歡迎進(jìn)入樂山師范學(xué)院”從屏幕的頂部移至底部CLEARCH=“歡迎進(jìn)入樂山師范學(xué)院”N=1DOWHILEN<=23 @N,26SAYSPACE(60) @N+1,26SAYCHT=INKEY(0.2) &&等待0.2秒N=N+1ENDDORETURN注:INKEY([<數(shù)值表達(dá)式>]) 功能:等待用戶按鍵或鼠標(biāo)輸入,等待時間由數(shù)值表達(dá)式確定(單位為秒)返回由按鍵而產(chǎn)生的一個整數(shù)值.例2:實(shí)現(xiàn)顯示出全部的男生CLEARCLOSEALLUSE學(xué)生DOWHILENOTEOF()IF性別=’男’ DISPENDIFSKIPENDDOCLOSEALLLOOP循環(huán)實(shí)例例1:I=0DOWHILEI<10I=I+1IFINT(I/2)=I/2LOOPENDIF?”*”ENDDO例2:CLOSEALLCLEARUSE學(xué)生DOWHILENOTEOF()DISPWAIT‘你想修改本記錄嗎?(Y/N)’TOXIFX=’N’ORX=‘n’SKIPLOOPENDIFEDIT SKIPENDDOCLOSEALL程序執(zhí)行到WAIT語句后,假如用戶輸入的是’N’或’n’,那么就LOOP(也就跳過本次循環(huán),不執(zhí)行后面的EDIT)永真循環(huán)DOWHILE.T.DOWHILE.T.IFY>0IFY>0EXITQUITENDIFENDIFENDDOENDDO假如Y>0,則退出本循環(huán)假如Y>0,則退出程序,退出VFDOWHILE.T.DOWHILE.T.IFY>0IFY>0RETURNCANCELENDIFENDIFENDDOENDDO假如Y>0,則退出程序返回上層假如Y>0,則退出程序,回到VF中上述語句LOOP、EXIT、QUIT、RETURN、CANCEL等也可以在后面講的其它循環(huán)語句中運(yùn)用。例1:通過鍵盤輸入三角形的邊長,若邊長正確,馬上在屏幕上顯示三角形的面積,若邊長不正確,重新輸入邊長,若輸入的邊長中隨意一邊為0則程序馬上結(jié)束。CLEAR?”現(xiàn)在計算三角型的面積,假如想退出程序請輸入0?!盌OWHILE.T. INPUT“請輸入邊長a:”TOA INPUT“請輸入邊長b:”TOB INPUT“請輸入邊長c:”TOC IFA=0ORB=0ORC=0?’結(jié)束’RETURNENDIFIFA+B<=CORA+C<=BORB+C<=A?’錯誤的三角型,請重新輸入!’LOOPENDIF S=(A+B+C)/2 AREA=SQRT(S*(S-A)*(S-B)*(S-C)) ?’該三角型的面積是:’,areaENDDO例2:有下列表:book(書名C(20),作者C(8),出版日期D,內(nèi)容簡介M)編寫程序:查詢關(guān)于foxpro的圖書.

USEBOOKLOCATEFOR‘foxpro’$書名IF!FOUND()?’沒有關(guān)于foxpro的圖書’ELSE` DOWHILE!EOF()CLEAR?書名,作者,出版日期?內(nèi)容介紹WAIT“是否接著查找?(Y/N)”TOMIFM$’nN’EXITENDIFCONTINUEENDDO ?”全部顯示完成”ENDIF2、計數(shù)循環(huán)FOR循環(huán)變量=初值TO終值[STEP步長] 語句序列ENDFOR說明:(1)當(dāng)省略步長值時,系統(tǒng)默認(rèn)步長值為1.當(dāng)時值小于終止值時,步長值為正值,當(dāng)時值大于終值時,步長值為負(fù)值.步長值不能為0,否則會造成死循環(huán).(2)可在循環(huán)體內(nèi)嵌入[LOOP]和[EXIT]吩咐,功能和用法和條件循環(huán)中該吩咐的用法相同.例1:求1~100的和SUM=0FORn=1TO100SUM=SUM+nENDFOR?’1~100的總和為:’,SUM運(yùn)用DOWHILE實(shí)現(xiàn):SUM=0n=1DOWHILEn<=100 SUM=SUM+n n=n+1ENDDO?’1~100的總和為:’,SUMFOR和IF語句嵌套例2:求1到N之間能被3整除的數(shù)的和CLEARM=0INPUT“請輸入N的值:”TONFORX=1TONIFMOD(X,3)=0 M=M+X ENDIFENFOR?”M的值為:”,MRETURN例3:找出2-100之間全部的質(zhì)數(shù)算法探討:FORI=1TO100 假如此數(shù)是質(zhì)數(shù) 顯示這個數(shù)ENDFOR推斷一個數(shù)是不是質(zhì)數(shù),應(yīng)當(dāng)看它是否能被其它數(shù)整除.當(dāng)一個數(shù)I,從I從2到SQRT(X)都沒有數(shù)能被整除,那么它就是FORJ=2TOINT(SQRT(I)) IFIMODJ=0EXITENDIFENDFORIFJ>INT(SQRT(I))?I,’是質(zhì)數(shù)’ENDIF特殊:2是個質(zhì)數(shù).綜上所敘述:完成程序?yàn)?CLEAR?’2是質(zhì)數(shù)’FORI=3TO10FORJ=2TOINT(SQRT(I)) IFMOD(I,J)=0EXIT ENDIF ENDFOR IFJ>INT(SQRT(I))?I,’是質(zhì)數(shù)’ ENDIFENDFOR3、庫文件掃描循環(huán)SCAN范圍FOR/WHILE條件語句序列ENDSCAN例1:查詢?nèi)咳胄?偡衷?70以上的人.CLEARCLOSEALLUSE學(xué)生SCANFOR入??偡?gt;570DISPENDSCANCLOSEALL例2:用戶可以循環(huán)輸入并查找入??偡?直到輸入的是負(fù)數(shù)就退出.CLEARCLOSEALLUSE學(xué)生INPUT“請輸入你要查找的入校總分,輸入負(fù)數(shù)則退出:”TOXDOWHILEX>=0 SCANFOR入??偡?XDISPENDSCANINPUT“請輸入你要查找的入??偡?”TOXENDDO例3:編寫程序,對于學(xué)生.dbf能夠在程序末尾循環(huán)插入新記錄(駕馭)

CLEARCLOSEALLUSE學(xué)生DOWHILE.T.APPEBLANK@5,20SAY'學(xué)號'GET學(xué)號@5,40SAY'姓名'GET姓名@7,20SAY'性別'GET性別@7,30SAY'誕生年月'GET誕生年月 @9,20SAY'入校總分'GET入??偡?READ WAIT'你想接著插入新記錄嗎?(Y/N):'TOXIFX='N'ORX='n'EXITENDIF CLEARENDDOCLEARLISTCLOSEALL例4:編寫程序,該程序能夠依次修改表學(xué)生.DBF中的全部數(shù)據(jù)。(駕馭)(要求:必需運(yùn)用@行,列say...get..進(jìn)行數(shù)據(jù)修改)CLEARCLOSEALLUSE學(xué)生DOWHILE.T.ifeof()exitendif@5,20SAY'學(xué)號'GET學(xué)號@5,40SAY'姓名'GET姓名@7,20SAY'性別'GET性別@7,30SAY'誕生年月'GET誕生年月@9,20SAY'入??偡?GET入??偡諶EADWAIT'你想接著修改記錄嗎?(Y/N):'TOXIFX='N'ORX='n'EXITENDIFCLEARSKIPENDDOCLEARLISTCLOSEALL4、多重循環(huán)例1:輸入n的值,求1+1/2!+1/3!+1/4!+….+1/n!(階乘n!=1*2*3*4*(n-1)*n)CLEARSUM=0MUL=1INPUT"請輸入n的值:"TONFORi=1TONFORj=1TOiMUL=MUL*JENDFORSUM=SUM+1/MULENDFOR?'求得的總和為:',SUM例2:打印九九表方法一:CLEARFORA=1T09FORB=1TOAT=A*B??STR(B,1)+“*”+STR(A,1)+“=”+STR(T,2)+“”ENDFOR?”“ENDFORRETURN方法二:CLEAR@1,1say"*"fora=1to9@a+1,1saystr(a,1)nextforb=1to9@1,b*3saystr(b,1)forc=1tobp=c*b@b+1,c*3saystr(p,2)nextnextcancel例3:圖形打印CLEARfora=1to5內(nèi)循環(huán)外循環(huán) forc=1toa內(nèi)循環(huán)外循環(huán) ??“*" next ?nextCancel說明:打印圖形時,一般外循環(huán)限制打印行數(shù),內(nèi)循環(huán)限制每一行打印圖形個數(shù)。6數(shù)組的應(yīng)用一、數(shù)組的定義DIMENTION數(shù)組名(數(shù)值表達(dá)式1,[數(shù)組表達(dá)式2...])定義后單元默認(rèn)值為.F.二、一維數(shù)組1、定義一個一維數(shù)組:dimea(10)定義一個10數(shù)組,且全部單元默認(rèn)值為.F.2、賦值:例如:a=''a(1)=20a(3)={^2002/09/23}a(7)=.T循環(huán)賦值:dimea(10)i=1dowhilei<=10input'請輸入數(shù):'toa(i)i=i+1enddo或者是:fori=1to10input'請輸入數(shù):'toa(i)Endfor3、顯示值:fori=1to10?a(i)endfor運(yùn)用dowhile大家思索方法2:listmemolikea二、二維數(shù)組例如:dimes(5,4)1、賦值:例如:s=0s(3,4)=.t.s(12)=‘AYA'&&相當(dāng)于S(3,4)=‘AYA'2、循環(huán)賦值fori=1to5forj=1to4input'輸入值:'toa(i,j)endforendfor3、顯示值:fori=1to5forj=1to4??a(i,j)+space(2)endforendfor三、舉例輸入10個數(shù),將它們根據(jù)從大到小的依次排列算法探討:方法1:連續(xù)的兩兩比較方法2:將每個數(shù)和最終一個數(shù)比較程序cleardimea(10)?'輸入10個數(shù):'fori=1to10input"請輸入:"toa(i)endforfori=1to9forj=1toiifa(j)>a(i+1)t=a(i+1)a(i+1)=a(j)a(j)=tendifendforendforlistmemolikea例2:將1、2、3、…10依次輸入一維數(shù)組,實(shí)現(xiàn)依次輸出和逆序輸出。DIMEA(10)FORI=1TO10A(I)=IENDFORFORI=1TO10?A(I)ENDFORFORJ=10TO1STEP–1?A(J)ENDFOR例3:排序問題(要求:不肯定能編寫,但是重點(diǎn)地方能填空,基本方法要能理解)

輸入5個數(shù),將它們根據(jù)從大到小的依次排列

算法:(軟件技術(shù)支持第263頁)穩(wěn)定的算法:

插入法排序(將一個數(shù)據(jù)插入到已經(jīng)排列好的序列中)

冒泡排序(比較每次產(chǎn)生最大數(shù))

歸并排序(兩兩合并[][][][])

不穩(wěn)定的算法:(相同數(shù)據(jù)位置可能交換)

選擇排序(通過交換位置,最小的放在第一,次小的其次……)

實(shí)現(xiàn)算法:冒泡排序

n個數(shù)要比較n-1趟

每趟要比較的次數(shù)為:n-趟數(shù)

(3)每次比較:

假如當(dāng)前數(shù)a(j)大于后一個數(shù)a(j+1)那么就交換,否則不交換

cleardimea(5)

?'輸入5個數(shù):'

fori=1to5

input"請輸入:"toa(i)

endfor

fori=1to4 &&外循環(huán)是行(趟數(shù)),內(nèi)循環(huán)是列(比較次數(shù))

forj=1to5-I

ifa(j)>a(j+1)t=a(j+1)

a(j+1)=a(j)

a(j)=t

endif

endfor

endfor

FORI=1TO5?A(I)ENDFOR對N個數(shù)排序(從小到大)

clear

input"請問你想對多少個數(shù)進(jìn)行排序?"ton

dimea(n)

?'請輸入',n,'個數(shù):'

fori=1ton

input"請輸入:"toa(i)

endfor

fori=1ton-1

forj=1ton-i

ifa(j)>a(j+1)

t=a(j+1)

a(j+1)=a(j)

a(j)=t

endif

endforendfor

算法二:每次比較將當(dāng)前數(shù)和最終一個數(shù)據(jù)比clear

input“請問你想對多少個數(shù)進(jìn)行排序?”ton

dimea(n)?'請輸入',n,'個數(shù):'

fori=1ton

input"請輸入:"toa(i)

endfor

fori=1ton-1

forj=1ton-i

ifa(j)>a(n-i+1)

t=a(n-i+1)

a(n-i+1)=a(j)

a(j)=t

endif

endfor

endfor

listmemolikea

算法三:

clear

input“請問你想對多少個數(shù)進(jìn)行排序?”ton

dimea(n)

?'請輸入',n,'個數(shù):'

fori=1ton

input"請輸入:"toa(i)endfor

fori=1ton-1

forj=1ton-i

ifa(j)<a(n-i+1)

t=a(n-i+1)

a(n-i+1)=a(j)

a(j)=t

endif

endforendfor

listmemolikea7子程序、過程和自定義函數(shù)一、子程序1.子程序的概念2.子程序的建立和調(diào)用3.子程序的嵌套a1.prg

a2.prg

a3.prg?'***'

?'@@@'

?'$$$'

doa2

doa3

return

?'###'

?'999'

return思索:以上程序運(yùn)行后結(jié)果是什么?

***@@@$$$999

###

說明:1、假如將a2.prg或者a3.prg的return語句改成cancel,那么程序當(dāng)執(zhí)行到cancel的時候就會結(jié)束,不返回2、假如將a3.prg的return語句改成returntomaster想想結(jié)果會怎么樣呢?請先看看書P169頁二、變量的三種類型1、全局變量(定義:用public吩咐或在吩咐窗口中賦值的變量)有效范圍:主程序和全部子程序2、私有變量(定義:private)或變量屏蔽有效范圍:當(dāng)前程序,在子程序中修改和主程序同名的變量,只要返回主程序,原來同名變量中的值不變3、局部變量(可用LOCAL來定義,定義好后默認(rèn)值為.F.,或是在當(dāng)前程序中賦值的變量)有效范圍:當(dāng)前程序及當(dāng)前程序以下的全部子程序例:主程序MAIN1.PRGCLEARpublici,jstore1toi,j,kdo程序2?"主程序的輸出結(jié)果:"?"I="+STR(I,2)+"J="+STR(J,2)+"K="+STR(K,2)Cancel子程序:CLEARPRIVATEJ,KI=I*2J=I+1K=J+1?"子程序的輸出結(jié)果:"?"I="+STR(I,2)+"J="+STR(J,2)+"K="+STR(K,2)RETURN例2:main.prgsc.prgxb.prg

privatemCleary=x+10Input“請輸入x的值:”tox m=143m=y*10Privatey doxb z=int(m/100)Publiczz=z+mreturnDoscreturny=sqrt(x)+sqrt(z)?yreturn三、參數(shù)傳遞(教材172功能和說明)

主程序中:吩咐:do<子程序名>with<參數(shù)表>

實(shí)參子程序中:parameters<內(nèi)存變量表>形參數(shù)據(jù)通過return語句傳回à留意:變量表和參數(shù)表是個數(shù)一樣的,也相互對應(yīng),但是名字可能不一樣。例:MAIN.PRGP1.PRGX1=1PARAW1,W2X2=2PRIVATEW1DOP1WITHX1,X2W1=W1*3?’X1=’+STR(X1,1)W2=W2*4??’X2=’+STR(X2,1)RETURNX1=1X2=2DOP1WITHX1,X1+X2?’X1=’+STR(X1,1)??’X2=’+STR(X2,1)RET

溫馨提示

  • 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

提交評論