版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第8章VBA程序設計基礎程序概念維基解釋()/zh-cn/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E8%AF%AD%E8%A8%80另一種解釋參見Wiki解釋/wiki?title=%E7%A8%8B%E5%BA%8F&variant=zh-cn計算機程序或者軟件程序(通常簡稱程序)是指一組指示計算機每一步動作的指令,通常用某種程序設計語言編寫,運行于某種目標體系結構上。打個比方,一個程序就像一個用漢語(程序設計語言)寫下的紅燒肉菜譜(程序),用于指導懂漢語的人(體系結構)來做這個菜。通常,計算機程序要經(jīng)過編譯和鏈接而成為一種人們不易理解而計算機理解的格式,然后運行。未經(jīng)編譯就可運行的程序通常稱之為腳本程序。AJoke(SQL版)某女技術人員的征婚信息SELECT*FROM男人
WHERE(未婚=trueor離異=true) and窮光蛋=falseand有房=trueand有車=true結果有人回帖:(0row(s)affected)AJoke(C語言版)姑娘愛小伙(偽C語言版)resultlove(boy,girl){if(boy.有房()andboy.有車()){boy.set(nothing);returngirl.嫁給(boy);}姑娘愛小伙
(搞笑版)if(girl.愿意等()){while(!(boy.賺錢>100,000andgirl.感情>8)){for(day=1;day<=365;day++){if((day==情人節(jié)orday==girl.生日)&andboy.givegirl(玫瑰))girl.感情++;elsegirl.感情--;boy.拼命賺錢();}//for}//while姑娘愛小伙(搞笑版)if(boy.有房()andboy.有車()){boy.set(nothing);returngirl.嫁給(boy);}else{
年齡++;girl.感情--;}returngirl.goto(another_boy);}姑娘愛小伙(搞笑版)完整版resultlove(boy,girl){if(boy.有房()andboy.有車()){boy.set(nothing);returngirl.嫁給(boy);}if(girl.愿意等()){while(!(boy.賺錢>100,000andgirl.感情>8)){for(day=1;day<=365;day++){if((day==情人節(jié)orday==girl.生日)&andboy.givegirl(玫瑰))girl.感情++;elsegirl.感情--;boy.拼命賺錢();}//for}//whileif(boy.有房()andboy.有車()){boy.set(nothing);returngirl.嫁給(boy);}else{
年齡++;girl.感情--;}//if愿意等
returngirl.goto(another_boy);}程序可讀性縮格對齊注釋8結構化程序設計基礎程序設計過程算法程序流程圖及示例8.1程序設計過程程序設計即是計算機用戶根據(jù)解決某一問題的步驟,按一定的邏輯關系,將一系列的指令組合在一起。8.2算法(1)程序的設計過程,核心問題是設計一個合理、有效的算法。一般認為,算法就是在有限的時間內(nèi),可以根據(jù)明確規(guī)定的運算規(guī)則,在有窮步驟內(nèi)得出確切計算結果的機械步驟或能運行的計算程序。8.2算法(2)算法特性:(1)有序性:每個步驟被執(zhí)行的順序是確定的。(2)有限性:即解題步驟是有限的,無窮的步驟意味無解。(3)確定性:多次運行同樣一個程序,其結果相同。此外,算法可以沒有輸入(因為輸入由計算機自動產(chǎn)生),但一定要有輸出,輸出用來表示問題是否有解。8.2算法(3)三種基本控制結構:順序、分支、循環(huán)順序結構是程序設計中最基本的結構。在該結構中,程序的執(zhí)行是按命令出現(xiàn)的先后順序依次執(zhí)行的。分支結構是按給定的選擇條件成立與否來確定程序的走向。分支結構可分為雙重分支選擇和多重分支選擇。在任何條件下,無論分支多少,只能選擇其一。8.2算法(4)三種基本控制結構:順序、分支、循環(huán)循環(huán)結構是一種重復結構,即某一程序段將被反復執(zhí)行若干次。按循環(huán)的嵌套層次,循環(huán)可分為簡單循環(huán)結構和循環(huán)嵌套(也稱為多重循環(huán))結構。按循環(huán)體執(zhí)行的條件性質(zhì),循環(huán)又可分為While循環(huán)和Until循環(huán)。無論何種類型的循環(huán)結構,都要確保循環(huán)的重復執(zhí)行能夠終止。8.2算法(5)結構化程序是指僅由三種基本控制結構組成的程序,它具有以下特點:(1)整個程序模塊化。(2)每個模塊只有一個入口和一個出口。(3)每個模塊都應能單獨執(zhí)行,且無死循環(huán)。(4)采用黑箱的思想,宏觀地描述任何一個程序,可以將它看成為順序結構。8.3程序流程圖及示例ANSI流程圖N-S圖1.ANSI流程圖(1)判斷框箭頭:表示程序流向連接符號:表示圖標之間相互連接關系判斷框:表示根據(jù)條件決定程序走向過程:表示該流程部分是一個過程輸入/輸出框:表示數(shù)據(jù)的輸入、輸出操作處理框:表示對數(shù)據(jù)進行處理起止框:表示程序的開始或結束1.ANSI流程圖(2)順序結構1.ANSI流程圖(3)條件分支結構1.ANSI流程圖(4)循環(huán)結構Until型循環(huán)結構While型循環(huán)結構1.ANSI流程圖(5)多重條件分支結構2.N-S圖(1)順序結構語句塊1語句塊2語句塊32.N-S圖(2)條件分支結構2.N-S圖(3)多重分支選擇語句2.N-S圖(4)循環(huán)結構Until型循環(huán)結構While型循環(huán)結構8.3程序的控制語句結構順序結構程序分支結構程序循環(huán)結構程序2.分支結構程序(1)雙重分支選擇語句語句格式:If<條件>Then <語句塊1>[Else <語句塊2>]EndIf假真條件語句塊1語句塊22.分支結構程序(2)
語句塊1語句塊2雙重分支選擇語句條件真假語句格式:If<條件>Then <語句塊1>[Else <語句塊2>]EndIf2.分支結構程序(3)多重分支選擇語句If<條件1>Then [<語句塊1>][ElseIf<條件2>Then [<語句塊2>]] ...[ElseIf<條件n>Then [<語句塊n>]][Else [<語句塊>]]EndIf
2.分支結構程序(4)多重分支選擇語句If<條件1>Then [<語句塊1>][ElseIf<條件2>Then [<語句塊2>]] ...[ElseIf<條件n>Then [<語句塊n>]][Else [<語句塊>]]EndIf例:根據(jù)輸入的X值,決定輸出Y的值。Y=1(x>0)0(x=0)-1(x<0)輸入XX>0是否Y=1X=0是否Y=0Y=-1輸出YN---S流程圖.《數(shù)據(jù)庫應用》課程組200735PublicSub求Y的值()DimxAsDoublex=InputBox("請輸入x的值","輸入x")Ifx>0ThenDebug.Print"y=1"ElseIfx=0ThenDebug.Print"y=0"ElseDebug.Print"y=-1"EndIfEndSub例:根據(jù)輸入的X值,決定輸出Y的值。PublicSub判斷奇偶性()DimstrxAsStringDimxAsIntegerstrx=InputBox("請輸入x","提示")x=Val(strx)IfxMod2=0ThenDebug.Print"該數(shù)為偶數(shù)!"ElseDebug.Print"該數(shù)為奇數(shù)!"EndIfEndSub例:輸入一個數(shù),判別其奇偶性。&&這是一個表示X/2為整數(shù)(即X可被2整除)的方法,另一個表示方法為:xMOD2=0;另外,表示X能被2整除的方法還有:INT(X/2)=X/2【例1】輸入任意的兩個數(shù),將它們按升序輸出。方法一:比較大小,按大小順序輸出,,共有多少種輸出??(2種)方法二:能否只有一種輸出??算法應用舉例—分支結構
.《數(shù)據(jù)庫應用》課程組200738算法應用舉例結束【例】輸入任意的三個數(shù),將它們按升序輸出。方法一:思想:比較大小,按大小順序輸出。??共有多少種輸出算法應用舉例用流程圖表示以下算法a,b,c?a,c,b?c,a,b?Fb<cTFa<cTT?a,b,cFa<bb,a,c?c,b,a?b,c,a?Fa<cTFc<bT輸入任意的三個數(shù),將它們按升序輸出。(方法一)輸出Y,Z,X輸出Y,X,ZX>YFX>ZFT輸入X,Y,ZTFY>ZT輸出Z,Y,XX>ZTFY>ZFT輸出Z,X,Y輸出X,Y,Z輸出X,Z,Y輸入任意的三個數(shù),將它們按升序輸出。(方法二:即最終輸出時按X,Y,Z的順序顯示)XYZ1.X與Y比較,X中放小數(shù),Y中放大數(shù)2.X與Z比較,X中放小數(shù),Z中放大數(shù)3.Y與Z比較,Y中放小數(shù),Z中放大數(shù)第1步與第2步比較,保證了X中放的是最小數(shù);第3步比較保證了Y中放的是次小數(shù)。輸入任意的三個數(shù),將它們按升序輸出。(P145例8-2)輸入三個數(shù)X,Y,ZX>YTFX與Y交換X>ZTFX與Z交換Y>ZFTY與Z交換輸出X,Y,ZX為最小數(shù)Y為次小數(shù)如何交換變量對X,Y的值:1:ZX2:XY3:YZXYZ1232.分支結構程序(5)例6-8:從鍵盤隨機輸入成績分數(shù),根據(jù)成績分數(shù)來判斷該成績屬于優(yōu)、良、中還是差。規(guī)定:90≤成績≤100為優(yōu);80≤成績<90為良;60≤成績<80為中;成績<60為差;其它為非法輸入。例4:輸入一個百分制成績到變量x,輸出對應的等級A,B,C,D或E。開始結束x>=90y?Fx>=80TFx>=70Fx>=60Fy=‘A’y=‘B’y=‘C’y=‘D’y=‘E’TTT思考以下問題:①x>100||x<0?稱為異常處理(完備?)②注意條件的書寫順序,一般采用的方法是從一端到另一端的排斥法。
?x開始結束x>=90y?Fx>=80TFx>=70Fx>=60Fy=‘A’y=‘B’y=‘C’y=‘D’y=‘E’TTTx>100||x<0FTy=‘O’[90,100][80,90)[70,80)[60,70)[0,60)改進后的流程圖為:?x2.分支結構程序(6)PublicSubmulticase()DimgradeAsIntegergrade=Val(InputBox("請輸入成績"))Ifgrade<=100Andgrade>=90ThenDebug.PrintStr(grade)&"的成績?yōu)?"&"優(yōu)"'縮格的目的是增加可讀性ElseIfgrade<90Andgrade>=80ThenDebug.PrintStr(grade)&"的成績?yōu)?"&"良"ElseIfgrade<80Andgrade>=60ThenDebug.PrintStr(grade)&"的成績?yōu)?"&"中"ElseIfgrade<60Andgrade>0ThenDebug.PrintStr(grade)&"的成績?yōu)?"&"差"ElseDebug.Print"您輸入的成績不對!"EndIfEndSub2.分支結構程序(3)多重分支選擇語句SelectCase<測試表達式> [Case<條件表達式1> [<語句塊1>]] ... [CaseElse [<語句塊>]]EndSelect
2.分支結構程序(4)多重分支選擇語句SelectCase<測試表達式> [Case<條件表達式1> [<語句塊1>]] ... [CaseElse [<語句塊>]]EndSelect例子【例8-4】從鍵盤隨機輸入成績分數(shù),根據(jù)成績分數(shù)來判斷該成績屬于優(yōu)、良、中還是差。規(guī)定:90≤成績≤100為優(yōu);80≤成績<90為良;60≤成績<80為中;成績<60為差;其他為非法輸入。PublicSubmulticase()DimgradeAsIntegergrade=Val(InputBox("請輸入成績"))SelectCasegradeCase90To100MsgBox(Str(grade)&"的成績?yōu)?"&"優(yōu)")Case80To90MsgBox(Str(grade)&"的成績?yōu)?"&"良")Case60To80MsgBox(Str(grade)&"的成績?yōu)?"&"中")Case0To60MsgBox(Str(grade)&"的成績?yōu)?"&"差")CaseElseMsgBox("您輸入的成績不對!")EndSelectEndSub分支嵌套VBA允許在If…Else…EndIf的<語句塊>中使用If…Else…EndIf語句If語句的嵌套【例8-6】隨機輸入年份,判斷該年是否為閏年。判斷閏年的條件是:年份如能被4整除但不能被100整除,是閏年;若年份能被400整除,則是閏年。分析:當隨意輸入一年份時,該年份如不能被4整除,則該年肯定不是閏年。問題是當該年份能被4整除時,有可能是閏年,也可能不是閏年。因為100是4的倍數(shù),400又是100的倍數(shù)。因此我們首先判斷該年份是否被4整除,再判斷是否被100整除,最后判斷是否被400整除。PublicSubLeapYear1()DimnyearAsIntegernyear=Val(InputBox("請輸入年份"))Ifnyear/4=Int(nyear/4)ThenIfnyear/100=Int(nyear/100)ThenIfnyear/400=Int(nyear/400)ThenDebug.Print"閏年"ElseDebug.Print"非閏年"EndIfElseDebug.Print"閏年"EndIfElseDebug.Print"非閏年"EndIfEndSub課后練習從鍵盤上輸入一個數(shù),若它既能被3又能被5整除則輸出該數(shù)。.《數(shù)據(jù)庫應用》課程組200757PublicSubt1112()DimaAsIntegera=Val(InputBox("輸入a"))IfaMod3=0ThenIfaMod5=0ThenDebug.PrintaElseDebug.Print"重新輸入"EndIfElseDebug.Print"重新輸入"EndIfEndSubPublicSubt1112()DimaAsIntegera=Val(InputBox("輸入a"))IfaMod3=0AndaMod5=0ThenDebug.PrintaElseDebug.Print"重新輸入"EndIfEndSub3.循環(huán)結構程序DOWHILE循環(huán)DOWHILE循環(huán)語句格式:DoWhile<條件表達式> <語句塊> [ExitDo]Loop3.循環(huán)結構程序DOWHILE循環(huán)循環(huán)語句的使用要注意下列幾點:(1)DoWhile和Loop子句要配對使用,Loop的作用是使循環(huán)回到循環(huán)的開始,即到DoWhile語句。(2)在第一次執(zhí)行到DoWhile語句時,循環(huán)條件必須為真,才能進入循環(huán)體。在執(zhí)行完成循環(huán)體語句后,再判斷循環(huán)條件是否為真,如果為真,則繼續(xù)循環(huán),直到循環(huán)條件為假時,才退出循環(huán)語句,執(zhí)行Loop后面的語句。3.循環(huán)結構程序DOWHILE循環(huán)循環(huán)語句的使用要注意下列幾點:(3)循環(huán)體中,一定存在一條或若干條語句在改變循環(huán)條件。如果循環(huán)條件恒為真,則是死循環(huán)。(4)要小心改變循環(huán)條件,如果不適當?shù)男薷难h(huán)條件,則循環(huán)將不能按預先的設想進行,程序也達不到預期的效果。(5)為增加程序的可讀性,使程序清晰易懂,必須使用縮格。(6)關于ExitDo語句使用參見本節(jié)后面的內(nèi)容。3.循環(huán)結構程序DOWHILE循環(huán)例6-11:求1加到10的累加和S=1+2+3+…+8+9+10PublicSubsum_example()s=0'求累加和的變量
i=1'循環(huán)變量賦初值
DoWhilei<=10'循環(huán)條件,使用縮格,提高可讀性
Debug.Printi'此處輸出變量i的值是方便理解循環(huán)的過程
s=s+i
'求累加,即循環(huán)不變式
Debug.Prints;'輸出s的結果,理解每次累加結果的變化
i=i+1
'改變循環(huán)變量的值
LoopDebug.Prints'循環(huán)體外輸出結果EndSub3.循環(huán)結構程序DOWHILE循環(huán)循環(huán)閱讀理解循環(huán)條件是什么?什么時候進入循環(huán)?什么時候退出循環(huán)?循環(huán)體內(nèi)如何改變循環(huán)條件?循環(huán)變量的作用?2023/4/21.63
求1至N之間的所有自然數(shù)之和。i=1,s=0i<=Ns=s+ii=i+1Y結束輸出sN開始輸入N1、前后項的關系2、初始值、循環(huán)條件與循環(huán)體的關系循環(huán)結構的關鍵初始值、循環(huán)條件與循環(huán)體是不是唯一的?s=1?i=i+1s=s+ii<N?PublicSubs1()DimnAsInteger
n=Val(InputBox("請輸入一個正整數(shù):"))s=0i=1DoWhilei<=ns=s+ii=i+1LoopDebug.Printi;sEndSub.《數(shù)據(jù)庫應用》課程組2007643.循環(huán)結構程序DOWHILE循環(huán)2023/4/21.65i<=N結束輸出sNi=1,s=0s=s+1/ii=i+1Y開始輸入N簡單,代碼我會了!2023/4/21.66開始n=100,m=0Nn<1000?n=n+1n能被3和5整除嗎?YYm=m+1輸出n結束輸出mN
例:輸出3位數(shù)中所有既能被3整除又能被5整除的數(shù),并統(tǒng)計其個數(shù)。循環(huán)?分支?回顧解題思路混合結構:循環(huán)中包含分支任何分支結束后都要為下一次循環(huán)做準備!PublicSubs1()Dimm,nAsIntegerm=0n=100DoWhilen<=999
IfnMod3=0AndnMod5=0Thenm=m+1Debug.PrintnEndIfn=n+1
LoopDebug.PrintmEndSub67.《數(shù)據(jù)庫應用》課程組20073.循環(huán)結構程序DOWHILE循環(huán)PublicSubs1()Dimm,nAsIntegerm=0n=100DoWhilen<=999
IfInt(n/15)=n/15Thenm=m+1Debug.PrintnEndIfn=n+1
LoopDebug.PrintmEndSub課后練習從鍵盤上輸入一個數(shù),若它既能被3又能被5整除則輸出該數(shù),否則,最多允許出錯3次。.《數(shù)據(jù)庫應用》課程組200768PublicSubthree()Dima,b,iAsIntegeri=0DoWhilei<3a=Val(InputBox("pleaseinputanumber"))b=aMod15Ifb=0ThenDebug.Printa,"可以被15整除";
ExitDoElsei=i+1Debug.Printa,"不可以被15整除,請重新輸入"EndIfLoopEndSub3.循環(huán)結構程序For循環(huán)For循環(huán)語句格式:For<循環(huán)變量>=<循環(huán)初值>To<循環(huán)終值>[Step<步長>] <語句塊> [ExitFor]Next求:S=1+2+3+…..+100PublicSubs1for()s=0
Fori=1To100Debug.Printis=s+iDebug.Prints;
NextDebug.PrintsEndSubPublicSubsum_example()s=0
i=1
DoWhile
i<=100
Debug.Printi
s=s+i
Debug.Prints;
i=i+1
LoopDebug.PrintsEndSub3.循環(huán)結構程序For循環(huán)如果在上述FOR循環(huán)體內(nèi)部再添加i=i+1,則輸出結果將如何呢?s=0
Fori=1To100Debug.Printis=s+iDebug.Prints;
NextDebug.Printss=0
Fori=1To100Debug.Printis=s+Ii=i+1Debug.Prints;
NextDebug.Prints結果為5050結果為?25003.循環(huán)結構程序For循環(huán)2023/4/21.72
求N!i=1,p=1i<=Np=p*ii=i+1Y結束輸出pN開始輸入N3.循環(huán)結構程序For循環(huán)
求s=1!+2!+…..N!例6-15:求N!,即求N的階乘。PublicSub求階乘()Dimi,n,pAsIntegerp=1n=Val(InputBox("請輸入n的值:"))
Fori=1TonStep1'Step1可以省略。
p=p*i'循環(huán)不變式,完成累乘。
NextDebug.PrintStr(n)&"的階乘是:"&Str(p)EndSub3.循環(huán)結構程序For循環(huán)3.循環(huán)結構程序WhileWend循環(huán)While<循環(huán)條件> [<語句塊>]Wend例PublicSubWhileWend()DimiAsIntegerDimsAsDoublei=1
Whilei<=100s=s+(-1)^(i+1)/ii=i+1
WendDebug.Print"s=";sEndSubPublicSubs1()DimiAsIntegerDimsAsDoublei=1
s=1Whilei<=99
s=s+(-1)^i*(1/(i+1))i=i+1WendDebug.Print"s=";sEndSub2023/4/21.76作業(yè)1、求1000以內(nèi)既能被5整除又能被7整除的數(shù)之和,并統(tǒng)計這些數(shù)的個數(shù)。
2、求
3、求1+(1+2)+(1+2+3)+……+(1+2+3+…10)。
提示:在循環(huán)中每次計算(1+2+…+n)
4、求
求1000以內(nèi)既能被5整除又能被7整除的數(shù)之和,并統(tǒng)計這些數(shù)的個數(shù)。PublicSub統(tǒng)計57()Dimn,i,sAsDoublei=0s=0Forn=1To1000IfnMod35=0Theni=i+1s=s+nEndIfNextDebug.Printi,s
EndSub.《數(shù)據(jù)庫應用》課程組200777PublicSub統(tǒng)計57()Dimn,i,sAsStringi=0s=0Forn=35To1000Step35
i=i+1s=s+n
NextDebug.Printi,s
EndSub3.循環(huán)結構程序含EXIT循環(huán)結構中的ExitDo命令DoWhile<循環(huán)條件> <循環(huán)體1> If<條件>
ExitDo EndIf <循環(huán)體2>LoopDoUntil<條件表達式> <循環(huán)體> [ExitDo]Loop3.循環(huán)結構程序含EXIT循環(huán)的嵌套循環(huán)體內(nèi)又嵌套循環(huán)的情況稱為多重循環(huán)或循環(huán)嵌套。處于循環(huán)體內(nèi)的循環(huán)稱為內(nèi)循環(huán),處于外層的循環(huán)稱為外循環(huán)。內(nèi)外循環(huán)的層次必須分明,不允許有交叉現(xiàn)象出現(xiàn)。內(nèi)外循環(huán)的循環(huán)變量不要同名。在嵌套情況下,ExitDo語句使控制跳到下方離其最近的Loop之后。3.循環(huán)結構程序含EXIT求S=1+2+3+…+8+9+100PublicSubexitdo()s=0i=1
DoWhileTrueIfi>100Then
ExitDoEndIfs=s+ii=i+1LoopDebug.Print"s=";sEndSub3.循環(huán)結構程序含EXITPublicSubsum_example()s=0
i=1
DoWhile
i<=100
s=s+i
i=i+1
LoopDebug.PrintsEndSubPublicSub求階乘()Dimi,n,pAsIntegerp=1n=Val(InputBox("請輸入n的值:"))DoWhileTrueIfn<=0ThenExitDo
EndIf
Fori=1Tonp=p*i
NextDebug.PrintStr(n)&"的階乘是:"&Str(p)ExitDoLoopEndSub從鍵盤上輸入一個數(shù)n,求p=n!3.循環(huán)結構程序含EXITPublicSub求階乘()Dimi,n,pAsIntegerp=1n=Val(InputBox("請輸入n的值:"))
Fori=1TonStep1
p=p*i
Next
Debug.PrintStr(n)&"的階乘是:"&Str(p)EndSub例如:統(tǒng)計一次捐款活動中捐款人數(shù)和捐款總金額OptionCompareDatabaseOptionExplicitPublicSubaa()Dimn,s,xAsIntegern=0s=0DoWhileTruex=Val(InputBox("請輸入數(shù)據(jù)x"))Ifx>0Thens=s+xn=n+1ElseExitDoEndIfLoopDebug.Print"捐款人數(shù)為:",nDebug.Print"捐款金額為:",sEndSub3.循環(huán)結構程序含EXIT求素數(shù)例8-14:輸入一個大于1的正整數(shù),判斷該數(shù)是否是素數(shù)。分析:所謂素數(shù)又稱為質(zhì)數(shù),是指只能被1和它自身整除的數(shù)。要判斷x是否能夠被3整除使用條件表達式:x/3=int(x/3)。3.循環(huán)結構程序含EXIT分析對于輸入的數(shù)據(jù)x,判斷它是否為素數(shù)的過程,就是修改上面條件表達式的分母,讓分母的數(shù)值從2變到x-1,如果分母從2到x-1都不能整除x,則x是素數(shù)。實際上程序可以改進,只需讓分母從2變到int(x/2)。PublicSub求素數(shù)()DimflagAsBooleanDimi,xAsIntegerflag=True'設置標志,假定為素數(shù)
x=Val(InputBox(“請輸入整數(shù)數(shù)據(jù)”))
Fori=2ToInt(x/2)‘通過循環(huán)將x除以2到int(x/2)的數(shù),如果有整除發(fā)生,則x不是素數(shù),退出循環(huán)。Ifx/i=Int(x/i)Then'另一種條件表達式為xmodi=0flag=False
ExitForEndIfNextIfflagThen'if語句為輸出結果,'通過判斷標志flag來決定x是否為素數(shù)。
Debug.PrintStr(x)+"是素數(shù)。"ElseDebug.PrintStr(x)+"不是素數(shù)。"EndIfEndSub求水仙花數(shù).《數(shù)據(jù)庫應用》課程組200787PublicSubt10()Dima,b,c,nAsIntegerForn=100To999a=Int(n/100)b=Int((nMod100)/10)c=nMod10Ifn=a^3+b^3+c^3ThenDebug.PrintnEndIfNextEndSubPublicSubT10水仙花數(shù)()Forx=1To9Fory=0To9Forz=0To9Ifx*100+y*10+z=x^3+y^3+z^3ThenDebug.Printx*100+y*10+zEndIfNextNextNextEndSub2212①2215②2220③2322④2315⑤2318⑥2523⑦以8個數(shù)為例說明:
1222152023151825[例]輸入10個數(shù),要求輸出其中最大的一個數(shù)。總結:1、將第一位置上的數(shù)分別與后面的數(shù)進行比較;2、第①個位置上始終放相對較大數(shù);3、比較一次,向后移一位數(shù);4、重復執(zhí)行2、3步的操作;5、若有N個數(shù),共進行N-1次比較?!纠枯斎?0個數(shù),要求輸出其中最大的一個數(shù)。①②③④⑤⑥⑦⑧⑨⑩……??:這里選擇的是拿第①個位置上的數(shù)來比較??刹豢梢赃x擇一個小的數(shù),如:0,來進行比較;??:當?shù)冖賯€位置上的數(shù)與第②個位置上的數(shù)比較時,若第①個位置上的數(shù)比第②個位置上的數(shù)小,這時第①個位置上的數(shù)與第②個位置上的數(shù)是交換,還是只用把第②個位置上的數(shù)賦值給第①個位置上的數(shù)即可;??:若為交換需要多少個變量?若為賦值需要多少個變量?【例】輸入10個數(shù),要求輸出其中最大的一個數(shù)。①②③④⑤⑥⑦⑧⑨⑩……BEGIN輸入第一個數(shù)給MAXENDN=1N<10N=N+1T輸出MAXF輸入下一個數(shù)給XX>MAXMAX=XTF【例】任意輸入10個數(shù),找出并顯示其中最大的一個數(shù)。PublicSubpx()Dimx,y,iAsIntegeri=0x=Val(InputBox("輸入數(shù)據(jù)"))Debug.PrintxDoWhilei<10y=Val(InputBox("輸入數(shù)據(jù)"))Debug.PrintyIfx<yThenx=yEndIfi=i+1LoopDebug.Print"所輸入數(shù)據(jù)最大值為:"&xEndSub作業(yè)1、求2~100之間所有素數(shù)的和。2、求在0~999之間的水仙花數(shù),這些數(shù)的值等于各位數(shù)字的立方和,如153=1^3+5^3+3^33、求s=1+1/2+2/3+3/5+.....前20項之和.《數(shù)據(jù)庫應用》課程組200793PublicSubt9()'2-100間的素數(shù)和s為'Dimi,j,sAsIntegerDimflagAsBooleans=0Fori=2To100
flag=True
Forj=2ToInt(i/2)Ifi/j=Int(i/j)Thenflag=FalseExitForEndIf
NextIfflagThenDebug.Printi;s=s+iEndIfNextDebug.PrintDebug.Print"2-100間的素數(shù)和s為";s.《數(shù)據(jù)庫應用》課程組200794求s=1+1/2+2/3+3/5+....前20項之和PublicSubt11()Dimm,n,t,i,sAsDoubles=0m=1n=2Fori=1To20s=s+n/mt=nn=n+mm=tNextDebug.PrintsEndSub.《數(shù)據(jù)庫應用》課程組200795
如何采用雙重循環(huán)編程打印有規(guī)則的圖形?小專題:3.循環(huán)結構程序(14)例8-13:打印如圖所示對稱三角圖形,要求第一行的*在第10列。PublicSub三角狀星型輸出()Dimi,jAsIntegerFori=1To4'控制輸出的行數(shù)
Debug.PrintTab(11-i);"*";'確定每行第一個*所在的列數(shù)
Forj=1To2*i-2'控制每行除第一個以外的星號的個數(shù)
Debug.Print"*";'輸出后繼的*
NextjDebug.Print'輸出另起一行
NextiEndSub
****************.《數(shù)據(jù)庫應用》課程組200798PublicSub三角狀星型輸出1()Dimi,jAsIntegerFori=1To4
Debug.PrintTab(11-i);
Forj=1To2*i-2
Debug.Print"*";
NextjDebug.Print
NextiEndSubPublicSub三角狀星型輸出2()Dimi,jAsIntegerFori=1To4Debug.PrintTab(i);"*";Forj=1To2*(4-i)Debug.Print"*";NextjDebug.PrintNextiEndSub
PublicSub三角狀星型輸出3()Dimi,jAsIntegerFori=1To4
Debug.PrintTab(13-2*i);"*";Forj=1To2*i-2Debug.Print"*";NextjDebug.PrintNextiEndSub
PublicSub三角狀星型輸出4()Dimi,jAsIntegerFori=1To4
Debug.PrintTab(11);"*";Forj=1To2*i-2Debug.Print"*";NextjDebug.PrintNextiEndSub
PublicSub三角狀星型輸出5()Dimi,jAsIntegerFori=1To4Debug.PrintTab(11-i);Str(i);Forj=1To2*i-1Debug.PrintStr(i);NextjDebug.PrintNextiEndSub
PublicSub三角狀星型輸出6()Dimi,jAsIntegerFori=1To4Debug.PrintTab(i);Str(5-i);Forj=1To2*(4-i)+1Debug.PrintStr(5-i);NextjDebug.PrintNextiEndSubPublicSub三角狀星型輸出7()Dimi,jAsIntegerFori=1To4Debug.PrintTab(i);Chr(64+i);Forj=1To2*(4-i)Debug.PrintChr(64+i);NextjDebug.PrintNextiEndSubPublicSub三角狀星型輸出8()Dimi,jAsIntegerFori=1To4Debug.PrintTab(13-i);Chr(64+i);Forj=1To2*i-2Debug.PrintChr(64+i);NextjDebug.PrintNextiEndSub8.3數(shù)組的應用數(shù)組在使用之前,必須加以定義,然后才能使用該數(shù)組。數(shù)組定義或數(shù)組說明語句格式為:DIMENSION
<數(shù)組名1>(<數(shù)值表達式1>[,<數(shù)值表達式2>,...])
[,<數(shù)組名2>(<數(shù)值表達式1>[,<數(shù)值表達式2>,...])...]例子dimensionA(N)dimensionB(n,m)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)匯編職員管理篇
- 單位管理制度呈現(xiàn)大全人員管理篇
- 藝術節(jié)主持詞
- 70MW光伏發(fā)電項目工程(EPC)總承包投標文件 承包人實施計劃
- 《市場營銷學導言》課件
- 《天貓規(guī)則學習》課件
- 空調(diào)維修公司保安工作總結
- 財務工作品質(zhì)提升總結
- 兒童新媒體編輯工作總結
- 2003年廣東高考語文真題及答案
- 總經(jīng)理年會發(fā)言稿模板怎么寫(8篇素材參考)
- 《完善中國特色社會主義法治體系》課件
- 2024年人教版小學四年級信息技術(上冊)期末試卷附答案
- 空氣動力學優(yōu)化技術:拓撲優(yōu)化:拓撲優(yōu)化項目設計與實踐
- 數(shù)據(jù)庫原理-期末考試題和答案
- 醫(yī)療健康咨詢服務合同
- (高清版)AQ 1056-2008 煤礦通風能力核定標準
- 新材料專利申請與保護考核試卷
- NB-T+10131-2019水電工程水庫區(qū)工程地質(zhì)勘察規(guī)程
- 南京市聯(lián)合體2022-2023學年七年級上學期期末生物試題
- 熱性驚厥診斷治療與管理專家共識
評論
0/150
提交評論