重慶專升本計(jì)算機(jī)VF程序設(shè)計(jì)_第1頁
重慶專升本計(jì)算機(jī)VF程序設(shè)計(jì)_第2頁
重慶專升本計(jì)算機(jī)VF程序設(shè)計(jì)_第3頁
重慶專升本計(jì)算機(jī)VF程序設(shè)計(jì)_第4頁
重慶專升本計(jì)算機(jī)VF程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

VFO程序設(shè)計(jì)復(fù)習(xí)1程序設(shè)計(jì)概述一、程序的概念概念:具有一定功能的計(jì)算機(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è)計(jì)方法1、

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

面向?qū)ο蟮某绦蛟O(shè)計(jì)3、結(jié)構(gòu)化程序設(shè)計(jì)它是面向過程程序設(shè)計(jì)的另一種描述,面向過程程序設(shè)計(jì)有如下特點(diǎn):①整個(gè)程序分為若干個(gè)模塊,模塊之間相銜接,且相對獨(dú)立。②第個(gè)模塊只有一個(gè)入口和一個(gè)出口。③第個(gè)模塊都能單獨(dú)執(zhí)行,且在有限時(shí)間內(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四、算法和流程圖算法:解決某一問題的方法與環(huán)節(jié)。見教材例。流程圖:算法的描述,除用自然語言描述外,計(jì)算機(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ì):文本文獻(xiàn)(ASCII編碼)執(zhí)行時(shí),會(huì)產(chǎn)生編譯文獻(xiàn)FXP后讓計(jì)算機(jī)執(zhí)行。二、程序文獻(xiàn)的建立和編輯1、命令方式:MODICOMM程序名.PRG(.PRG可?。?、菜單方式;文獻(xiàn)=>新建=>程序3、項(xiàng)目管理器中建立的方法:建立項(xiàng)目管理器=>新建程序4、其他方法:其它可編輯文本的軟件:記事本\寫字板\WORD\其它程序編輯器注意:希望編寫程序之前事先設(shè)立好默認(rèn)目錄(setdefato……)然后我們編寫的程序就會(huì)自動(dòng)存儲(chǔ)在那個(gè)目錄中。例如:setdefatod:\ksmodicommTest(相稱于是:modicommD:\ks\test.prg)三、程序的執(zhí)行1、命令方式命令格式:DO[盤符][途徑]程序名2、菜單方式:“程序”菜單->“運(yùn)營”命令在“運(yùn)營”窗口中輸入被運(yùn)營的程序文獻(xiàn)名,即可運(yùn)營程序。四、VFP程序的分類:數(shù)學(xué)類程序、涉及到表操作的程序假如本程序是涉及到表操作的程序,那么:1、在程序開始部分可以先加語句CLEAR和CLOSEALL2、程序最后可以使用命令CLOSEALL3、然后使用RETURN或CANCEL或QUIT例:找出并顯示所有三好生CLEARCLOSEALLUSE學(xué)生LOCATEFOR三好生DOWHILENOTEOF()DISPCONTINUEENDDOCLOSEALLRETUREN3順序程序設(shè)計(jì)與常用語句一、程序設(shè)計(jì)中的常用語句1、輸入命令(1)賦值命令命令一:STORE<表達(dá)式>TO<內(nèi)存變量>命令二:<內(nèi)存變量>=<表達(dá)式>(2)交互式輸入命令(注意:輸入數(shù)據(jù)是在程序執(zhí)行的時(shí)候)INPUT[提醒信息]TO<內(nèi)存變量>ACCEPT[提醒信息]TO<內(nèi)存變量>WAIT[提醒信息][TO<內(nèi)存變量>][TIMEOUT<等待時(shí)間>說明:①提醒信息是C型,它會(huì)在屏幕上原樣輸出.②WAIT命令的功能:暫停程序執(zhí)行,顯示提醒信息等待用戶按鍵。Wait命令中輸入的只能是一個(gè)字符(C型)。③Input合用于所有類型內(nèi)存變量,輸入時(shí)需要加定界符④Accept只合用于C型,并且C型不加定界符注意:Input和accept在編寫程序時(shí)語句都同樣,只是執(zhí)行程序(do)時(shí),主屏幕上規(guī)定輸入的類型和格式不同。例1:輸入a、b、c的值,對2ax+b=c求x的值。ClearInput“現(xiàn)在計(jì)算2ax+b=c,請輸入a的值:”toaInput“請輸入b的值:”tobInput“請輸入c的值:”tocx=(c-b)/(2*a)?’x的值為:’,x&&比較使用?’x的值為:’+str(x,3)有何區(qū)別return例2、查找學(xué)生.dbf中的指定記錄clearclosealluse學(xué)生listaccept“請輸入您想查找的姓名:”toxmLocatefor姓名=XM&&或命令SEEKXMiffound()DISPelse?’對不起,沒有找到此人’endiflistcloseallReturn思考:假如accept換成input,輸入的時(shí)候該怎么輸入?例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ù)文獻(xiàn)中的字段變量,若是內(nèi)存變量,應(yīng)在執(zhí)行該命令前對內(nèi)存變量賦值,否則就必須使用default參數(shù)賦初值。②輸入的值類型應(yīng)當(dāng)與初值類型相同。③READ命令與GET命令必須配合使用。多個(gè)GET命令可以只用一個(gè)READ命令配合。假如沒有read則表達(dá)只顯示內(nèi)容,不輸入值。例1:編寫程序完畢在學(xué)生.DBF中追加記錄CLEARUSE學(xué)生APPENDBLANK@5,20SAY“學(xué)號”GET學(xué)號@5,40SAY“姓名”GET姓名@7,20SAY“性別”GET性別@7,40SAY“出生年月”GET出生年月@9,20SAY“入??偡帧盙ET入校總分@9,40SAY“三好生”GET三好生READCLEARLISTCLOSEALLRETURN例2:編程求長方形的面積。CLEARX=0&&X為內(nèi)存變量,賦初值Y=0@1,5SAY“計(jì)算長方形的面積”@2,5SAY“輸入長方形的長:”GETX&&第2行5列顯示提醒信息并等待輸入@3,5SAY“輸入長方形的寬:”GETY&&第3行5列顯示提醒信息并等待輸入READ&&從鍵盤輸入X,Y的值S=X*Y&&計(jì)算長方形的面積?“長方形的面積:”,S&&顯示長方形的面積CANCEL思考題1:如將上述例1程序改為按照指定學(xué)號來修改記錄應(yīng)當(dāng)如何做?(答案見課件后)3、輸出命令⑴:非格式輸出命令?和??⑵:格式化輸出命令@行,列say表達(dá)式說明:行和列都可以是表達(dá)式,經(jīng)??梢允褂煤瘮?shù)ROW()和COL()ROW()表達(dá)返回當(dāng)前行的行號COL()表達(dá)返回當(dāng)前列的列號例1:N=1CH=“VF程序設(shè)計(jì)”@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),假如是主程序就表達(dá)退出程序。主程序可缺省此命令返回(結(jié)束),即默認(rèn)使用了return注意:上述命令執(zhí)行完后都會(huì)自動(dòng)clearmemory。但是假如有數(shù)據(jù)庫和表打開不會(huì)自動(dòng)關(guān)閉,所以使用數(shù)據(jù)庫和表后在程序結(jié)束時(shí)我們經(jīng)常需要加命令:closeall(2)清屏命令CLEAR(3)注釋命令(

NOTE、*和&&)注釋的含義:程序員對程序語句功能的說明,執(zhí)行程序的時(shí)候不執(zhí)行注釋中的內(nèi)容,注釋只起到一個(gè)對語句說明的目的。一般復(fù)雜程序中應(yīng)有30%以上的注釋。(4)TEXT語句:原樣輸出(參考書143例4.15)(5)系統(tǒng)設(shè)立命令set…on/off或者是set…to1、設(shè)立會(huì)話狀態(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)提供的保護(hù)狀態(tài)SETSAFETYON/OFF8、設(shè)立刪除記錄標(biāo)記狀態(tài)(掌握)SETDELETEDON/OFF功能:屏蔽或解決有刪除標(biāo)記的記錄說明:在命令格式中選擇ON時(shí),各命令當(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)單向選擇分支例如:求任意一個(gè)數(shù)值的絕對值CLEARSETTALKOFFINPUT“請輸入數(shù)值:”TONIFN<0 N=-NENDIF?”|N|的絕對值為:”,NCANCEL(3)雙向選擇分支例1:用戶輸入數(shù)據(jù)表文獻(xiàn)名,判斷它存在否,假如存在則打開數(shù)據(jù)表文獻(xiàn)并顯示表中的所有記錄clearaccept'請輸入數(shù)據(jù)庫文獻(xiàn)名:'toheng&&想想為什么不用inputiffile(heng+‘.dbf’)&&了解file()的使用方法use&heng&&想想這兒為什么要用&代換listelse?'sorry,文獻(xiàn)不存在:('endifcloseall&&關(guān)閉所有打開的表,假如不涉及多工作區(qū),可以只使用use例2:判斷輸入的整數(shù)為奇數(shù)還是偶數(shù)。CLEARINPUT“請輸入整數(shù):”TONIFN%2=0&&該表達(dá)式還可用MOD(N,2)=0來表達(dá) ?STR(N,4)+”是偶數(shù)”ELSE?STR(N,4)+”是奇數(shù)”ENDIFCANCEL(4)IF語句的嵌套例如:將用戶輸入的小寫英文字母轉(zhuǎn)化成大寫CLEARACCEPT“請輸入1個(gè)字母:”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è)計(jì)1、條件循環(huán)格式一:DOWHILE條件命令序列ENDDO格式二:DOWHILE條件 語句序列[LOOP]語句序列[EXIT]語句序列ENDDO要退出循環(huán),需要條件為假的時(shí)候(條件=.F.時(shí))說明:(1)LOOP和EXIT命令一般放在IF條件中,也可以出現(xiàn)在循環(huán)體內(nèi)的任何位置。若執(zhí)行循環(huán)體時(shí)碰到LOOP命令,則直接返回執(zhí)行DO命令,測試條件以決定是否繼續(xù)循環(huán)。若碰到EXIT命令,則不執(zhí)行下面的命令序列,直接跳出循環(huán),執(zhí)行ENDDO后面的命令。(2)條件表達(dá)式的值擬定了循環(huán)是否繼續(xù),當(dāng)條件表達(dá)式的值始終為真(即永真循環(huán)),則應(yīng)使用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í)間由數(shù)值表達(dá)式擬定(單位為秒)返回由按鍵而產(chǎn)生的一個(gè)整數(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)語句中使用。例1:通過鍵盤輸入三角形的邊長,若邊長對的,立即在屏幕上顯示三角形的面積,若邊長不對的,重新輸入邊長,若輸入的邊長中任意一邊為0則程序立即結(jié)束。CLEAR?”現(xiàn)在計(jì)算三角型的面積,假如想退出程序請輸入0?!盌OWHILE.T. INPUT“請輸入邊長a:”TOA INPUT“請輸入邊長b:”TOB INPUT“請輸入邊長c:”TOC IFA=0ORB=0ORC=0?’結(jié)束’RETURNENDIFIFA+B<=CORA+C<=BORB+C<=A?’錯(cuò)誤的三角型,請重新輸入!’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“是否繼續(xù)查找?(Y/N)”TOMIFM$’nN’EXITENDIFCONTINUEENDDO ?”所有顯示完畢”ENDIF2、計(jì)數(shù)循環(huán)FOR循環(huán)變量=初值TO終值[STEP步長] 語句序列ENDFOR說明:(1)當(dāng)省略步長值時(shí),系統(tǒng)默認(rèn)步長值為1.當(dāng)初值小于終止值時(shí),步長值為正值,當(dāng)初值大于終值時(shí),步長值為負(fù)值.步長值不能為0,否則會(huì)導(dǎo)致死循環(huán).(2)可在循環(huán)體內(nèi)嵌入[LOOP]和[EXIT]命令,功能和用法與條件循環(huán)中該命令的用法相同.例1:求1~100的和SUM=0FORn=1TO100SUM=SUM+nENDFOR?’1~100的總和為:’,SUM使用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ù) 顯示這個(gè)數(shù)ENDFOR判斷一個(gè)數(shù)是不是質(zhì)數(shù),應(yīng)當(dāng)看它是否能被其它數(shù)整除.當(dāng)一個(gè)數(shù)I,從I從2到SQRT(X)都沒有數(shù)能被整除,那么它就是FORJ=2TOINT(SQRT(I)) IFIMODJ=0EXITENDIFENDFORIFJ>INT(SQRT(I))?I,’是質(zhì)數(shù)’ENDIF特別:2是個(gè)質(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、庫文獻(xiàn)掃描循環(huán)SCAN范圍FOR/WHILE條件語句序列ENDSCAN例1:查詢所有入校總分在570以上的人.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'你想繼續(xù)插入新記錄嗎?(Y/N):'TOXIFX='N'ORX='n'EXITENDIF CLEARENDDOCLEARLISTCLOSEALL例4:編寫程序,該程序可以順序修改表學(xué)生.DBF中的所有數(shù)據(jù)。(掌握)(規(guī)定:必須使用@行,列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入校總分READWAIT'你想繼續(xù)修改記錄嗎?(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說明:打印圖形時(shí),一般外循環(huán)控制打印行數(shù),內(nèi)循環(huán)控制每一行打印圖形個(gè)數(shù)。6數(shù)組的應(yīng)用一、數(shù)組的定義DIMENTION數(shù)組名(數(shù)值表達(dá)式1,[數(shù)組表達(dá)式2...])定義后單元默認(rèn)值為.F.二、一維數(shù)組1、定義一個(gè)一維數(shù)組:dimea(10)---定義一個(gè)10數(shù)組,且所有單元默認(rèn)值為.F.2、賦值:例如:a=''a(1)=20a(3)={^2023/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使用dowhile大家思考方法2:listmemolikea二、二維數(shù)組例如:dimes(5,4)1、賦值:例如:s=0s(3,4)=.t.s(12)=‘AYA'&&相稱于S(3,4)=‘AYA'2、循環(huán)賦值fori=1to5forj=1to4input'輸入值:'toa(i,j)endforendfor3、顯示值:fori=1to5forj=1to4??a(i,j)+space(2)endforendfor三、舉例輸入10個(gè)數(shù),將它們按照從大到小的順序排列算法研究:方法1:連續(xù)的兩兩比較方法2:將每個(gè)數(shù)和最后一個(gè)數(shù)比較程序cleardimea(10)?'輸入10個(gè)數(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:排序問題(規(guī)定:不一定能編寫,但是重點(diǎn)地方能填空,基本方法要能理解)

輸入5個(gè)數(shù),將它們按照從大到小的順序排列

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

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

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

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

不穩(wěn)定的算法:(相同數(shù)據(jù)位置也許互換)

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

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

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

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

(3)每次比較:

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

cleardimea(5)

?'輸入5個(gè)數(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個(gè)數(shù)排序(從小到大)

clear

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

dimea(n)

?'請輸入',n,'個(gè)數(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ù)和最后一個(gè)數(shù)據(jù)比clear

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

dimea(n)?'請輸入',n,'個(gè)數(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“請問你想對多少個(gè)數(shù)進(jìn)行排序?”ton

dimea(n)

?'請輸入',n,'個(gè)數(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的時(shí)候就會(huì)結(jié)束,不返回2、假如將a3.prg的return語句改成returntomaster想想結(jié)果會(huì)怎么樣呢?請先看看書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ù)表是個(gè)數(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)R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論