高中信息關(guān)鍵技術(shù)算法與程序設(shè)計VB選修_第1頁
高中信息關(guān)鍵技術(shù)算法與程序設(shè)計VB選修_第2頁
高中信息關(guān)鍵技術(shù)算法與程序設(shè)計VB選修_第3頁
高中信息關(guān)鍵技術(shù)算法與程序設(shè)計VB選修_第4頁
高中信息關(guān)鍵技術(shù)算法與程序設(shè)計VB選修_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、算法(1)、計算機解決問題過程計算機程序(ComputerProgram)是計算機如何去解決問題完畢任務(wù)一組可執(zhí)行指令。程序設(shè)計(ProgramDesign)是尋找解決問題辦法,并將其實現(xiàn)環(huán)節(jié)編寫成計算機可執(zhí)行程序過程。程序設(shè)計語言(ProgramLanguage)泛指一切用于書寫計算機程序語言。計算機解決問題和人解決問題有著本質(zhì)區(qū)別:計算機解決問題要經(jīng)歷分析問題、擬定算法、編程求解等基本過程主。計算機解決問題流程如下:開始→分析問題→設(shè)計算法→編寫程序→運營程序→結(jié)束編寫程序時,一方面要對問題進行詳細(xì)分析,明確已知條件下初始狀態(tài)及要達到目的,找出解決問題辦法和過程,并抽取出一種數(shù)學(xué)模型,形成算法;然后將這個數(shù)學(xué)模型連同它要解決數(shù)據(jù),用計算機能辨認(rèn)方式描述出來,使之成為計算機能解決對像;最后用程序設(shè)計語言設(shè)計出詳細(xì)問題求解過程,形成計算機程序。(2)算法描述辦法①、算法定義及其特性算法:就是解決問題思想辦法,對解題過程精準(zhǔn)描述。計算機解決問題環(huán)節(jié)為分析問題、設(shè)計算法、編寫程序、調(diào)試程序。算法是程序設(shè)計“靈魂”,世界知名計算機科學(xué)家尼克勞斯·沃斯(N.With)指出:算法+數(shù)據(jù)構(gòu)造(DataStructure)=程序。算法具備如下特性。1、有窮性:一種算法必要保證執(zhí)行有限步之后結(jié)束;2、擬定性:算法每一環(huán)節(jié)必要有確切定義;3、輸入:一種算法有0個或各種輸入,以刻畫運算對象初始狀況,所謂0個輸入是指算法自身定出了初始條件;4、輸出:一種算法有一種或各種輸出,以反映對輸入數(shù)據(jù)加工后成果。沒有輸出算法是毫無意義;5、可行性:算法中執(zhí)行任何計算步都是可以被分解為基本可執(zhí)行操作步,即每個計算步都可以在有限時間內(nèi)完畢;(也稱之為有效性)②、算法描述辦法有自然語言、流程圖、偽代碼三種形式自然語言描述法:指用人們尋常生活中使用語言(本國語言),用自然語言描述符合咱們習(xí)慣,且容易理解。例1:求圓周長和面積算法如下:(自然語言描述法)(1)輸入半徑r;(2)計算周長c=2*π*r;(3)計算面積s=π*r*r;(4)輸出周長c,輸出面積s;(5)結(jié)束流程圖描述:也稱程序框圖,它是算法一種圖形化表達辦法。且描述算法形象、直觀,更易理解。慣用“流程圖”所用基本符號及功能程序框名稱功能

開始/結(jié)束框表達算法開始或結(jié)束

輸入/輸出框表達算法中變量輸入或輸出

解決框表達算法中變量賦值與計算

判斷框表達算法中條件判斷

流程線表達算法中流向

連接點表達算法中連接例1:求圓周長和面積cc←2*π*rs←π*r*r輸出c,s輸入r結(jié)束開始輸出c,s輸入r結(jié)束開始偽代碼描述法:是介于自然語言和計算機程序語言之間一種算法描述。是專業(yè)軟件開發(fā)人員慣用辦法。流程圖基本圖形及功能:SHAPE例1:求圓周長和面積inputrc=2*π*rs=π*r*rprintc,s二、程序設(shè)計基本1.程序設(shè)計語言程序設(shè)計語言經(jīng)了機器語言、匯編語言、高檔語言三個階段。高檔語言又分解釋型語言和編譯型語言。1、機器語言:是計算機能直接辨認(rèn)語言,機器語言是由一串由“0”和“1”構(gòu)成二進制代碼。2、匯編語言:是一種符號化機器語言,用英文助記符代替機器語言,比機器語言容易辨認(rèn)和記憶,提高了程序可讀性。它缺陷是依賴機器,不同機器有不同指令集,通用性差,使用時還必要翻譯成目的程序執(zhí)行。3、高檔語言:是更接近自然語言和數(shù)學(xué)語言編程語言,它不依賴機器,通用性好,更容易掌握。高檔語言程序可讀性強,更于修改和維護。常用高檔語言:C語言、C++、pascal、java、C#、VB、Basic結(jié)識可視化編程工具-VB語言VisualBasic是基于Basic可視化程序語言,所謂可視化程序設(shè)計,重要是指程序設(shè)計人員運用軟件自身提供各種控件,像搭積木式地應(yīng)用程序各種界面,然后編寫少量代碼就可以構(gòu)建應(yīng)用程序??梢暬幊唐胀ōh(huán)節(jié):設(shè)計程序界面→編寫程序代碼→調(diào)試、運營程序面向?qū)ο蟪绦蛟O(shè)計就是以對象為中心,以事件為過程執(zhí)行起點。VB可提供事件有單擊(Click)、雙擊(DbClick)、加載(Load)、按鍵(KeyPress)等,辦法是對象可以操作,這些操作普通是一種動作或一段程序?qū)ο箢愋鸵饬x前輟名稱舉例Form窗體FrmFrmfindCommand命令按鈕CmdCmdokLabel標(biāo)簽LblLblinputtextbox文本框txttxtsource下面是幾種應(yīng)理解文獻。.vbp文獻:與VB工程關(guān)于文獻和對象清單,是一種文本文獻。.frm文獻:是包括窗體及控件屬性設(shè)立、有關(guān)程序代碼文獻。.ocx文獻:是VB擴展文獻。.bas文獻:是原則模塊文獻。2.?dāng)?shù)據(jù)及運算①.數(shù)據(jù)類型VB提供了數(shù)值型、字符型、布爾型、日期型等基本數(shù)據(jù)類型。慣用數(shù)據(jù)類型整型Integer從-32768到32767長整型Long從-到單精度實型Single負(fù)數(shù)-3.402823E+38到-1.401298E-45正數(shù)1.40129E-45到3.402823E38但它只有7位有效數(shù)字雙精度實型Double絕對值不大于10308數(shù),它有15位有效數(shù)字日期型Date(Time)如:#-01-31##01/31/#字符型String如:“中華人民共和國”,“zhongguo”布爾型BooleanTrue或False注意:(1)、浮點型(單精度型和雙精度型合稱)數(shù)據(jù)表達辦法:浮點數(shù)在計算機中類似于數(shù)學(xué)中實數(shù),例如304707表達到3.04707E5(2)字符串表達法:“VisualBasic”、“245”、“=33+2”等。(3)日期型數(shù)據(jù)表達辦法:用一對“#”號把日期或時間括起來,如#/12/25#表達12月25日。②.常量與變量(1)、在VB中用常量()表達程序運營過程中事先設(shè)立、其值不能變化數(shù)據(jù)。VB中常量有數(shù)值常量、字符串常量等。常量定義形式如下Const常量名[As常量類型]=表達式如:ConstpiAsSingle=3.14159常量名為pi(2)、變量()是內(nèi)存中存儲數(shù)據(jù)存儲單元,其中存儲數(shù)據(jù)稱為變量值。變量聲明:Dim<變量名>As<變量類型>如:DimaAsInteger定義一種整型變量,變量名為a變量命名注意要點:1、必要以字母開頭,不能以數(shù)字或其她字符開頭。2、只能由字母、中文、數(shù)字學(xué)或下劃線構(gòu)成,不能具有小數(shù)點、空格等字符。3、最長不超過255個字符4、不能以VB保存字作變量名,如語句定義符、函數(shù)名等。5、VB不區(qū)別變量名中字母大小寫。如HELLO和Hello是同一種變量。6、變量名最佳取故意義名稱,普通在前面加上類型縮寫。慣用前輟有:字符型(str)、整型(int)、長整型(lng)、單精度(sng)、雙精度(dbl)、布爾型(bln)、日期型(dtm)。③.運算符與表達式1.在VB中依照運算功能不同將運算符分為算術(shù)運算符、字符串運算符、日期運算符、關(guān)系運算符和邏輯運算符等。2.表達式是由變量、常量、運算符、函數(shù)和圓括號按一定規(guī)律組合而成。VB中慣用表達式有算術(shù)表達式、字符串表達式、日期表達式、關(guān)系表達式、邏輯表達式等。算術(shù)運算:+-*^/\mod加減乘乘方除整除取余算術(shù)運算符規(guī)定參加運算量是數(shù)值型,運算優(yōu)先級為:指數(shù)>取負(fù)>乘除法>整除>加減,運算成果是數(shù)值型。關(guān)系運算:=><>=<=<>等于不不大于不大于不不大于等于不大于等于不等于關(guān)系表達式運算成果為布爾值True或False邏輯運算:Not(取反)And(與)Or(或),運算成果為布爾型(Boolean)True或False,邏輯運算符優(yōu)先級為:No>And>Or日期運算符與日期表達式:日期表達式是用日期運算符“+”或“-”將算式表達式、日期型常量、日期型變量、日期函數(shù)等連接起來式子,如表達式“#/09/01#+30”運算成果是“-10-1”;表達式“#/10/20#-#/10/10#”運算成果為整數(shù)10字符運算:字符串連接符為“+”和“&”“123”+“45”=“12345”“123”&“45”=“12345”123+“45”=168“123”+45=168運算符執(zhí)行順序:在VB中,當(dāng)一種表達式中同步浮現(xiàn)各種運算符時,運算順序由運算符優(yōu)先級決定,優(yōu)先級高運算符先運算,優(yōu)先級相似從左向右進行運算。不同性質(zhì)運算符優(yōu)先級如下。算術(shù)運算符>字符串運算符>

關(guān)系運算符>

邏輯運算符④.慣用語句1.賦值語句格式:變量名=表達式把右邊數(shù)或表達式值賦給左邊變量。2.Print語句格式為:[對象名.]Print[表達式列表]Print語句是VB中輸出語句,其功能是在指定對象上輸出成果,默認(rèn)對象為當(dāng)前窗體。Print語句背面無表達式時,表達換行;Print顯示項背面沒有符號,表達顯示完換行;Print語句顯示項用分號分隔,表達后續(xù)顯示項緊湊顯示;Print語句顯示項用逗號分隔,表達后續(xù)顯示項分區(qū)顯示,每區(qū)14個字符位。3.注釋語句格式:Rem注釋內(nèi)容,當(dāng)使用Rem語句時,必要單獨寫一行。使用“‘”注釋語句時,可以單獨寫一行,也可以跟在其他語句背面。4.結(jié)束語名有格式:End。是VB強制結(jié)束語句,⑤.慣用函數(shù)1.交互函數(shù)。(1)InputBox()函數(shù)是一種輸入函數(shù)。格式:InputBox(提示[,標(biāo)題][,默認(rèn)值][,x坐標(biāo)][,y坐標(biāo)])例:InputBox(“請輸入一種數(shù)”)(2)Msgbox()函數(shù)重要來顯示各種樣式消息對話框。格式:Msgbox(提示信息[,按鈕][,標(biāo)題])例:Msgbox(““輸入顧客名不對的”,16,“提示”)2.數(shù)學(xué)函數(shù)。數(shù)學(xué)函數(shù)用于數(shù)學(xué)運算,數(shù)學(xué)函數(shù)重要有如下幾種:函數(shù)名闡明示例成果Sin(X)X弧度正弦Sin(0)0Cos(X)X弧度余弦Cos(0)1Tan(X)X弧度正切Tan(0)0Atn(X)X用弧度表達反正切值A(chǔ)tn(0)0Abs(X)X絕對值A(chǔ)bs(-3.5)3.5Exp(X)e指定次冪,即exExp(3)20.086Log(X)一種數(shù)值X自然對數(shù)Log(10)2.3Sqr(X)X平方根Sqr(9)3Sgn(X)符號函數(shù):X>0,得到1,X<0,得到-1,X=0得到0Sgn(-3.5)-1Int(X)不不不大于給定數(shù)X最大整數(shù)Int(-1.6)-2Rnd產(chǎn)生[0,1]之間小數(shù)Rnd返回1隨機數(shù)Fix(X)X整數(shù)某些Fix(-1.6)-1Cint(X)類型為:Integer-322768~32767小數(shù)某些四舍五入CLng(X)類型為:Long-~小數(shù)某些四舍五入注意:三角函數(shù)中參數(shù)使用弧度數(shù),Rnd函數(shù)返回[0,1]之間一種隨機實數(shù),普通和Randomize為初始化隨機數(shù)生成器。3.字符串函數(shù)VB提供了豐富字符串解決函數(shù),學(xué)用字符串函數(shù)有如下幾種Mid(C,N1,N2)從C中N1位開始取出長度為N2子串Mid(“ABCDEFG”,3,2)“CD”Right(C,N)返回字符串右邊N個字符Right(“ABCDEFG”,3)“EFG”Left(C,N)返回字符串左邊N個字符Left(“ABCDEFG”,3)“ABC”Len(C,N)測量字符串長度Len(“VB學(xué)習(xí)開始”)7Space(N)產(chǎn)生N個空格構(gòu)成字符串“ABC”&“Space(N)”&“113”“ABC123”4.日期函數(shù)Date()返回當(dāng)前系統(tǒng)日期(yy-mm-dd)Date()或Date04-12-18Day()反回指定日期日數(shù)Day(“10/22/”)22Month()反回指定日期月數(shù)Month(“10/22/”)10Year()反回指定日期年份Year(“10/22/”)Time()返回系統(tǒng)時間Time()或Time10:36:083.程序設(shè)計順序構(gòu)造VB程序有三種基本構(gòu)造,即順序構(gòu)造、選取構(gòu)造和循環(huán)構(gòu)造。順序構(gòu)造是三種構(gòu)造中最基本構(gòu)造,在順序構(gòu)造中,算法各個環(huán)節(jié)是按語句先后順序執(zhí)行。4.程序設(shè)計分支構(gòu)造(1)、If語句1.單分支If格式為:If<關(guān)系表達式>Then語句塊Endif2.雙分支If語句格式:If<關(guān)系表達式>Then語句塊1Else語句塊2Endif例:在Text1文本框中輸入一種年號,判斷它與否是閏年,并輸出判斷成果“是閏年”或“不是閏年”。判斷閏年算法是:如果此年號能被400除盡,則它是閏年,否則如果它能被4整除而不能被100整除,則它是閏年,否則它不是閏年。打開文獻“Z:\38\工程1.vbp”,完善程序后并保存。PrivateSubCommand1_Click()DimyearAsIntegeryear=Val(InputBox("請輸入年號:"))If((yearMod4=0)And(yearMod100<>0))or(yearMod400=0)ThenPrint"是閏年"ElsePrint"不是閏年"EndIfEndSub3.使用If語句多層嵌套還可以實現(xiàn)程序多分支構(gòu)造,但程序構(gòu)造較啰嗦。(2)、SelectCaseSelectCase語句格式:SelectCase表達式Case表達式列表1語句塊1Case表達式列表1語句塊2……Case表達式列表n語句塊nEndSelect“表達式列表”普通是一組常量值,每個值擬定一種分支。表達式列表可以使用下面格式:(1)一組用逗號隔開若干表達式,如Case1,2,3表達1,2,3滿足指定條件。(2)表達式1to表達式2,如:Case70to80這一取值范疇滿足指定條件。(3)Is關(guān)系運算符表達式,如:CaseIs>30,表達不不大于30滿足指定條件。例:輸入不同飛船速度后,判斷出它飛行狀況。在“神州九號載人飛船”飛行程序中,其飛行狀況與飛行速度關(guān)系如下表:飛船速度(V)單位(km/s)飛行狀況7.91<=V<11.19飛船繞地球似做勻速圓周運動11.19<=V<16.67飛船離開地球控制,環(huán)繞太陽轉(zhuǎn)V>16.67飛船掙脫太陽引力飛出太陽系PrivateSubCommand1_Click()DimvAsSinglev=Val(InputBox("請輸入飛船速度值"))SelectCasevCaseIs>16.67Label1.Caption="飛船掙脫太陽引力飛出太陽系"CaseIs>=11.19Label1.Caption="飛船離開地球控制,環(huán)繞太陽轉(zhuǎn)"CaseIs>=7.91Label1.Caption="飛船繞地球似做勻速圓周運動"CaseElseLabel1.Caption="輸入數(shù)據(jù)錯誤!"EndSelectEndSub5.程序設(shè)計循環(huán)構(gòu)造1.For/Next循環(huán)語句For/Next循環(huán)語句學(xué)用來解決已知循環(huán)次數(shù)程序設(shè)計問題。格式:For循環(huán)變量=初值To終值[Step步長值]<循環(huán)體>Next[循環(huán)變量]Next后循環(huán)變量與For后循環(huán)變量必要相似例1:求s=1+2+3+4.....+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegersum=0Fori=1To100step1sum=sum+i'循環(huán)體NextiPrint"sum=";sumEndSub循環(huán)變量初值、終值、循環(huán)變量增量都是數(shù)值型。其中要重復(fù)執(zhí)行操作稱為循環(huán)體,增量可正可負(fù),如果沒有設(shè)立Step,則增量缺省值為1a循環(huán)變量取初值;b循環(huán)變量與終值比較,沒有超過終值轉(zhuǎn)3,否則循結(jié)束,接著執(zhí)行循環(huán)語句后繼語句;c執(zhí)行一次循環(huán)體d循環(huán)變量增長一種增量e重復(fù)環(huán)節(jié)2~4。以上可以看出,F(xiàn)or-Next循環(huán)變量是一種當(dāng)型循環(huán)。闡明1、For語句與Next語句必要成對浮現(xiàn),并且它們當(dāng)中“循環(huán)變量”必要是同一種變量,如上例中均為I。2、當(dāng)循環(huán)變量為正時,循環(huán)變量超過終值,是指循環(huán)變量值不不大于終值時;若為負(fù),則是指循環(huán)變量值不大于終值。例2:編寫程序,使能打印下面所示圖案。@@@@@@@@@@@@@@@@@@@@@程序:PrivateSubForm_Click()DimiAsIntegerDimjAsIntegerFori=1To6‘外循環(huán)打印6行Forj=1Toi‘內(nèi)循環(huán)打印個數(shù)Print“@”;NextjPrintNextiEndSub一種FOR循環(huán)里包括了另一種FOR,咱們稱它為嵌套循環(huán)。2.Do/Loop循環(huán)語句Do/Loop循環(huán)語句慣用來解決未知循環(huán)次數(shù)程序設(shè)計設(shè)計問題,可分為當(dāng)型循環(huán)和直到型循環(huán)兩種。當(dāng)型循環(huán)是指當(dāng)條件成立時才執(zhí)行循環(huán),慣用DoWhile/Loop或Do/LoopWhile循環(huán)語句;而直到型循環(huán)是指直到條件成立時才跳出循環(huán),慣用Do/LoopUntil循環(huán)語句。DoWhile/Loop循環(huán)語句格式:DoWhile<條件><循環(huán)體>Loop“條件”是關(guān)系表達式或邏輯表達式。DoWhile/Loop循環(huán)就是當(dāng)給定“條件”為True時,執(zhí)行循環(huán)體,給定“條件”為False時,不執(zhí)行循環(huán)體。DoWhile/Loop循環(huán)執(zhí)行過程如下:(1)執(zhí)行Do語句;(2)執(zhí)行循環(huán)體;(3)執(zhí)行LoopUntil語句,如果“條件”不成立,轉(zhuǎn)到(1)執(zhí)行,否則轉(zhuǎn)到(2)執(zhí)行;(4)執(zhí)行Loop語句后語句。例1:求最大公約數(shù)PrivateSubCommand1_Click()DimaAsIntegerDimbAsIntegerDimrAsIntegera=InputBox("輸入a")b=InputBox("輸入b")r=aModbDoWhiler<>0a=bb=rr=aModbLoopPrintbEndSub例2:如果國內(nèi)人口每年以平均1.5%速度增長,問多少年后國內(nèi)人口達到或超過15億?設(shè)當(dāng)前人口為12.3億。PrivateSubForm_Click()DimpAsSingleDimrAsSingleDimnAsIntegerp=r=0.015n=0Dop=p*(1+r)n=n+1LoopUntilp>=Printn;"年后","人口=";pEndSub例3完畢下面程序,使得程序運營時單擊窗體后,計算1+2+3+……+n<500n最大值,并在文本框Texe1中顯示成果。DimsAsIntegerDimnAsIntegerDoWhiles<500n=n+1s=s+nLoopText1.text=str(n-1)6.構(gòu)造化程序設(shè)計思想構(gòu)造化程序設(shè)計思想規(guī)定了一套辦法,規(guī)定程序設(shè)計者按照一定構(gòu)造形式來設(shè)計和編寫。1.一種大程序可劃為若干個模塊,每個模塊又可以繼續(xù)分為更小子模塊,最后分出模塊能完畢一種獨立功能,模塊之間按層次關(guān)系進行組織。2.程序由某些基本構(gòu)造構(gòu)成,任何一種復(fù)雜程序都可以由三種基本構(gòu)造構(gòu)成,即順序構(gòu)造、選取構(gòu)造、循環(huán)構(gòu)造。3.程序設(shè)計時應(yīng)由頂向下,逐漸細(xì)化實行辦法。使整個問題可用程序設(shè)計語言明確地描述來為止。例:下面是用VB編寫求1+1/2+1/3+……+1/100和程序段,其構(gòu)造屬于()DimiAsIeteger,sunAsIntegerSun=0Fori=1to100Sum=sum+1/iNextIPrint“sum=”;sum7.面向?qū)ο蟪绦蛟O(shè)計思想面向?qū)ο蟪绦蛟O(shè)計環(huán)繞真實世界概念來組織模型,采用對象來描述客觀實體,從所解決數(shù)據(jù)入手,以數(shù)據(jù)為中心來描述系統(tǒng)。例:VB是面向?qū)ο蟪绦蛟O(shè)計語言,對象三個要素分別是什么?在VB中經(jīng)常使用哪些事件?在VB中對象普通具備哪些屬性?分析:本題考核對對象結(jié)識,理解對象屬性、辦法和事件三大要素內(nèi)涵。在編寫程序時慣用事件有“單擊(Click)”、“雙擊(DbClick)”等,VB對象普通具備名稱、位置、大小、字體、顏色等屬性。三、算法與問題解決1、解析法:是指通過度析問題中各要素之間關(guān)系,用最簡潔語言或形式化得符號來表達她們關(guān)系,得出解決問題所需表達式,然后設(shè)計程序求解問題辦法。使用解析法包括四個環(huán)節(jié):分析問題、建立數(shù)學(xué)模型、寫出解析表達式、解決問題。如:京滬動車以每小時300km/h速度從北京開往上海(全程1400km)跑完全程所需時間用t=s/v計算。這種解決問題辦法就是算法。雞兔同籠問題是國內(nèi)古代有名數(shù)學(xué)題,即籠子中有雞和兔若干,已知雞和兔總頭數(shù)是m,總腳法是n,問籠中有雞、各多少只?(注意:n>2m,n為偶數(shù))。DimxAsInteger,yAsInteger,mAsInteger,nAsInteger'x:雞;y:兔;m:頭數(shù);n腿數(shù)m=Val(InputBox("輸入m值","解析法"))m=Val(InputBox("輸入n值","解析法"))X=①Y=②Print"雞:";x;"兔:";y分析:本題為完美程序題,重要寫出求雞、兔數(shù)量公式。由題意可知,設(shè)雞為x只,兔為y只,用數(shù)學(xué)辦法可列出方程組m=x+yn=2x+4y解這個方程組可得x=(4m-n)/2,y=m-x2、窮舉法:是例舉一切與命題有關(guān)狀況,然后依照問題設(shè)定條件,逐個加以檢查,找到滿足條件解。例1:公元6世紀(jì),中華人民共和國《張丘建算經(jīng)》有一道知名百雞問題:公雞5錢1只,母雞3錢1只,小雞三只1錢,有人用100錢買了100只雞,請完美程序,求其中公雞、母雞、小雞各多少只。Fori=0to20Forj=0to33K=①If5*I+3*j+k/3=②thenPrinti,j,kNextjNexti分析:本題使用是窮舉法,從if語名可以看出,i代表公雞數(shù),j代表母雞數(shù),k代表小雞數(shù),故第一種填空為100-i-j,if語句是判斷錢數(shù),按題意第二空為100。例2:雞兔同籠,共有100條腿,40個頭,問雞有幾只,兔有幾只?DimJiAsInteger'Ji變量表達雞個數(shù)DimTuAsInteger'Tu變量表達兔個數(shù)DimLegAsInteger'Leg變量表達腿數(shù)ForJi=1To40Tu=①'計算腿數(shù)Leg=②+Tu*4'如果腿正好100只,則打印。IfLeg=③ThenPrint"雞=";Ji;"只","兔=";Tu;"只"EndIfNextJi分析:本題使用是窮舉法,雞從1到40列舉,兔數(shù)量就是40-雞數(shù)量,故第一處為40-ji,接著計算腳總數(shù),第二處應(yīng)是雞腳數(shù)為ji*2,第三處判斷當(dāng)雞從1到40列舉時依照其中某一雞數(shù)量值計算總腳數(shù)與否為100,是100就打印雞與兔只數(shù)。3、遞歸法:如果一種函數(shù)自己調(diào)用了自己,這種算法叫遞歸算法。例如函數(shù)A自己調(diào)用了自己,這就是遞歸算法。此外,例如函數(shù)A調(diào)用了函數(shù)B,函數(shù)B反過來調(diào)用了函數(shù)A算法,也是遞歸算法。遞歸算法特性是設(shè)法將規(guī)模較大問題分解為規(guī)模較小問題,然后通過這些規(guī)模較小問題也能采用同樣辦法分解規(guī)模成更小問題,并通過這些更小問題解構(gòu)造出規(guī)模更大問題解。當(dāng)規(guī)模為1時,能直接得解。由于遞歸算法能引起一系列函數(shù)調(diào)用,并且也許有一系列重復(fù)計算,因此遞歸算法執(zhí)行效率相對較低。運用遞歸算法解決問題時,一方面要對問題如下三方面進行分析。(1)找出決定問題更大規(guī)模。(2)找出解決問題邊界條件及邊界值。(3)構(gòu)造解決問題通式。1.自定義函數(shù)。[Public|private]Function<函數(shù)名稱>([<參數(shù)列表>])[As<類型>]<局部常量、變量定義><語句組>[函數(shù)名=返回值]EndFunction自定義函數(shù)調(diào)用有如下三種格式。格式1:變量=函數(shù)名稱(參數(shù))格式2:Call函數(shù)名稱(參數(shù))格式3:函數(shù)名稱(參數(shù))2.在子過程中調(diào)用遞歸調(diào)用。普通格式如下。If邊界條件1成立Then賦予邊界值1[Else賦予邊界值2……]Else調(diào)用解決問題通式EndIf例1:用遞歸算法求6!.PublicFunctiona(nAsInteger)AsLongIfn=1Thena=①Elsea=②EndIfEndFunctionPrivateSubCommand1Click()Print“a(6)=”;a③EndSub分析:遞歸算法是程序設(shè)計一種難點,遞歸程序核心是要找出問題遞歸關(guān)系和初始值。辦法之一就是運用遞歸法依照問題歸納總結(jié)出遞歸式,加上初始條件,從而編寫遞歸函數(shù)。這里邊界條件是當(dāng)n=1時,1階乘等于1,故第一空為1,當(dāng)沒用邊界條件時,如當(dāng)n=6時,6=6*5!,故第二空應(yīng)是a(n-1)*n,第三空應(yīng)是(6)。例2:用遞歸法求斐波那契數(shù)列1,1,2,3,5,8,…第10項值。PublicFunctionFib(nAsInteger)AsIntegerIf(n=1)Or(n=2)ThenFib=①ElseFib=Fib(n-1)+Fib(n-2)②EndFunctionPrivateSubCommand1_Click()DimSAsIntegerS=Fib(③)Print"S="&CStr(S)EndSub分析:這里邊界條件是當(dāng)n=1時,1斐波那契數(shù)列值為1,故①處填1,當(dāng)沒用邊界條件時,如n=3時,F(xiàn)ib=Fib(3-1)+Fib(3-2),第3項值為第二項值加第一項值。②處應(yīng)是判斷結(jié)束標(biāo)志EndIf,s為第10項值,故③值為10。4、排序與查找數(shù)據(jù)數(shù)組:數(shù)組是在程序設(shè)計中,為了解決以便,把具備相似類型若干變量按有序形式組織起來一種形式。定義數(shù)組格式如下:Dim數(shù)組名(常量)As數(shù)據(jù)類型例:DimArray(9)AsInteger定義數(shù)組包括10個元素下標(biāo)從0到9。定義數(shù)組時也可以指寫上下標(biāo)起始值。例:DimIntegerArray(2to10)AsInteger定義數(shù)組具有9個元素,下標(biāo)從0到10.還可定義多維數(shù)組,如:DimThreeD(1to4,2to5,3to6)AsInteger,定義了一種三維數(shù)組(4×4×4)。①.順序查找數(shù)據(jù)查找分為順序查找和二分查找兩種。順序查找時,普通從數(shù)據(jù)第一種元素開始中,按照數(shù)據(jù)順序查找指定核心值;如果被查數(shù)據(jù)和該核心值匹配,則表達找到,如果所有數(shù)據(jù)與核心值都不匹配,則表達被查數(shù)據(jù)中不存在該核心值。例1:學(xué)校秋季運動會100米短跑比賽后,要查找運動員成績,數(shù)組a中存儲是20名運動員號碼,數(shù)組b中存儲是運動員相應(yīng)成績,現(xiàn)輸入運動員號碼來查找運動員成績,如果找到則顯示成績。下列程序中空白處代碼應(yīng)為()。Dima(19)AsIntegerDimb(19)AsIntegerPrivateSubCommand1_Click()Randomize‘打開隨機數(shù)開關(guān)Fori=0to19a(i)=100+i‘生成20名運動員號碼,用于測試程序a(i)=10+Int(Rnd*10)/10‘生成20名運動員隨機成績,用于測試程序NextIEndSubPrivateSubCommand2_Click()DimretAsBooleanRet=FalseKey=Val(Text1.Text)ForI=0to10If①ThenPrint“運動員”;Key;”成績是:”;b(i)Ret=②EndIfNextIIFNotretThenPrint“沒有找到這個運動員成績”EndSub分析:查找事實上就是進行比較,順序查找就是從第一種數(shù)組元素開始,比較每一種元素中值跟核心值與否相似,相似表達找到,①是a(i)=key②是True.②.二分法查找二分法查找也叫折半查找,它規(guī)定被查找數(shù)據(jù)是有序,否則無法使用二分法查找。運用二分法查找時,一方面設(shè)立一種上邊界和一種下界,然后取上下界中間元素與指定核心值進行比對。如果兩者相符,表達找到,結(jié)束查找。如果不相符,再判斷核心值落在中間元素左半部還是右半部,如果在左部,則保持下界位置不變,將上界設(shè)在中間元素前一種位置,重新查找;如果在右部,則保持上界位置不變,將下界設(shè)在中間元素后一種位置,重新查找。如此重復(fù)進行,若下界不不大于上界,表白沒用元素與核心值相匹配,查找結(jié)束。例如:數(shù)組a(9)中存儲從小到大10個數(shù)字字符:2,4,7,9,10,14,18,26,32,40,查找核心字是7元素。PrivateSubCommand1_Click()Dima(9)AsInteger‘定義數(shù)組DimlowAsInteger,hightAsInteger,midAsInteger‘定義下界、上界、中間數(shù)值類型DimflgAsBoolean‘定義查找標(biāo)志為邏輯數(shù)據(jù)a(0)=2:a(1)=4:a(2)=7:a(3)=9:a(4)=10a(5)=14:a(6)=18:a(7)=26:a(8)=32:a(9)=40‘?dāng)?shù)組賦值low=0‘設(shè)立下界初始值hight=9‘設(shè)立上界初始值flg=False‘設(shè)立查找標(biāo)志初始為否DoWhilelow<=hight‘設(shè)立循環(huán)查找條件為下界不大于等于上界mid=(hight+low)/2取下上界中間值Ifa(mid)=Val(Text1.Text)Then‘查找輸入值與數(shù)組中值與否匹配flg=True‘標(biāo)志為trueExitDo‘退出循環(huán)ElseIfVal(Text1.Text)<a(mid)Then‘如果輸入值不大于下上界中間位值hight=mid–1‘下界不變、上界由中間位前移一位Else‘如果輸入值不不大于中間位值low=mid+1‘上界不變、下界由中間位后移一位EndIfLoopIfflgThenText2.Text="要找數(shù)"&(Text1.Text)&"是數(shù)組第"&mid+1&"個位置數(shù)"ElseText2.Text=(Text1.Text)&"不在數(shù)組中"EndIfEndSub③.冒泡法排序算法所謂排序法,就是批將一種無序序列排成一種有序序列過程。排序算法在計算機編程中使用非常頻繁。在實踐中,人們設(shè)計出了許多好排序算法,如互換排序、插入排序、選取排序、歸并排序、基數(shù)排序。各種算法均有其自身特點與合用范疇?!懊芭莘ㄅ判颉币步小捌鹋莘ㄅ判颉?,是一種比較簡樸、易懂互換排序辦法,它通過相鄰元素進行比較和互換,逐漸將一種無序序列排成一種有序序列。將元素按從小到大順序排序列為升序排列,反之稱為降序排序。例1:將10個無序數(shù)據(jù)存儲在數(shù)組元素a(0)到a(9)中,若要將這些數(shù)據(jù)按升序排序,下面一段用冒泡法排序程序代碼,其中空白處代碼應(yīng)為()。Dima(10)AsInteger‘要定義為有11個元素數(shù)組Fori=0to9Forj=0to9-iIfthent=a(j)a(j)=a(j+1)a(j+1)=tEndifNextjNexti分析:本題中規(guī)定升序排序,即數(shù)據(jù)由小到大冒泡法排序,程序中使用了兩重循環(huán),外循環(huán)是控制排序趟數(shù),每執(zhí)行一趟外循環(huán),有序某些數(shù)據(jù)就多一種;內(nèi)循環(huán)控制每趟排序時數(shù)組元素比較和互換,也就是只對無序某些元素進行比較和互換。If語句中條件是判斷相鄰兩個元素大小,如果前面元素a(j)不不大于背面元素a(j+1),則互換兩個元素值,即較大元素向后移(如果是降序排列,則剛好相反)。故空白處應(yīng)是a(j)>a(j+1)。例2:用選取排序法將數(shù)組a中隨機生成10個整數(shù)按升序排列。PrivateSubCommand1_Click()Dima(10)AsIntegerFori=1To10a(i)=Int(Rnd*1000)NextiFori=1To10Forj=1toiIfa(i)<a(j)Then‘如果背面數(shù)a(i)不大于前面數(shù)a(j)a(0)=a(i)‘a(chǎn)(0)作為中間變量,把背面小數(shù)先放入中間變量中a(i)=a(j)‘把前面大數(shù)移入背面a(j)=a(0)‘把中間變量數(shù)賦給前面數(shù),把小數(shù)移入前面EndIfNextjNextiFori=1To10PrintCStr(a(i))NextiEndSub④插入排序法插入排序法也是一種慣用排序算法,其基本思想是將一種數(shù)據(jù)序列看做兩某些,前一某些是有序,后一某些是無序,排序時把無序某些數(shù)據(jù)元素逐個插入到有序某些,使得有序某些元素不斷增長,無序某些元素相應(yīng)減少,最后所有元素志為有序序列。普通將無序某些中第一種數(shù)賦給哨兵,然后哨兵分別跟有序某些數(shù)進行比較。插入排序直接插入排序、折半插入排序、鏈表插入排序和希爾排序等。時間復(fù)雜度是指對一組無序數(shù)列排序所

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論