《高等教育循環(huán)》課件_第1頁
《高等教育循環(huán)》課件_第2頁
《高等教育循環(huán)》課件_第3頁
《高等教育循環(huán)》課件_第4頁
《高等教育循環(huán)》課件_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5循環(huán)結構程序設計計算機具有速度快、精度高的特點,特別適于進行重復性的工作,重復次數(shù)越多越能顯示它的威力。所以,使用計算機時,應盡量把問題歸納為簡單而有規(guī)則的重復運算和操作,以充分發(fā)揮計算機的特長。

采用循環(huán)程序可以解決一些按一定規(guī)則重復執(zhí)行的問題。例如,統(tǒng)計一個班幾十名學生,甚至全校幾千名學生的學期成績,如求平均分、不及格人數(shù)等

本章主要內容

第5章循環(huán)結構程序設計Do...LoopFor...Next退出循環(huán)出口語句(Exit)循環(huán)語句多重循環(huán)列表框與組合框常用算法程序舉例

循環(huán)是指在指定的條件下多次重復執(zhí)行一組語句被重復執(zhí)行的一組語句稱為循環(huán)體VB提供的循環(huán)語句有

For...NextDo...LoopWhile...WendForEach...Next最常用的是For...Next和Do...Loop語句

假真循環(huán)體循環(huán)條件

For...Next循環(huán)主要是用在知道循環(huán)次數(shù)的情況下;若事先不知道循環(huán)次數(shù),可以使用當型循環(huán)Do...Loop1.For...Next循環(huán)語句(計數(shù)控制)

For循環(huán)變量=初值To終值[Step步長值]

循環(huán)體

Next循環(huán)變量

2.DoWhile...Loop語句(條件控制)

Do[{While|Until}條件]

循環(huán)體Loop5.1循環(huán)語句示例

求S=1+2+3+…+8s=0Fork=1To8s=s+kNextkPrint"s=";s程序運行結果如下:

s=36n=1:s=0DoWhilen<=8s=s+nn=n+1LoopPrint"s=";s例5.2K為循環(huán)變量專設變量n來控制循環(huán)

例5.2求S=1+2+3+…8,把結果顯示在窗體上。

s=0

'累加器初值為0

Fork=1To8s=s+k

'累加器,在原有和的基礎上每次加一個數(shù)

NextPrint"s=";s程序執(zhí)行結果是:s=36

分析累加器s=s+k舊值。前n項之和新加的數(shù)k=1s

s+k

01k=3s

s+k1+23k=2s←

s+

k

12k=8s

s+k1+2+…7

8……算法:通常采用重復運算來解決問題累加、累乘等如用級數(shù)π/4=1-1/3+1/5-1/7+……來求π設置循環(huán)變量

使每次運算變量值有所不同控制循環(huán)計數(shù)控制或條件控制

循環(huán)結構程序的實現(xiàn)求S=1+2+3+…+8s=0Fork=1To8s=s+kNextkPrint"s=";s

把長式子改為8次加

采用Print直接在窗體上輸出結果,程序代碼:

PrivateSubForm_Load()Showt=1Forc=1To8t=t*cNextcPrint"T=";tEndSub程序運行結果是:

T=40320

語句t=t*c稱為乘法器。先將t置1(不能置0)。

在循環(huán)程序中,常用累加和累乘來完成各種計算任務例5.3求T=8!=1×2×3×…×8例5.3

例5.3

T=8!=1×2×3×…8,把結果顯示在網(wǎng)頁上。

t=1

'累乘器初值為1

Forc=1To8t=t*c

'累乘器,在原有積的基礎上每次乘一個數(shù)

NextPrint"T=";t程序執(zhí)行結果是:T=40320分析c=1t

t*c

11c=3t

t*c

1*23c=2t

t*c

12c=8t

t*c

1*2*

…78……累乘器t=t*k舊值。前n項之積新乘的數(shù)

采用Print直接在窗體上輸出結果,程序代碼如下:PrivateSubForm_Load()ShowDimpiAsSingle,cAsInteger,sAsIntegerpi=0s=1's表示加或減運算Forc=1To10000Step2pi=pi+s/cs=-s'交替改變加、減號NextcPrint"π=";pi*4EndSub

程序運行結果是:

π=3.141397

例5.4用π/4=1-1/3+1/5-1/7+……級數(shù)求π的近似值(取前5000項來進行計算)例5.4

Fort=1To3Ift<=1Thena=3Ift<=2Thena=2Ift<=3Thena=1Printa;NexttPrinttA.3333B.1234C.3214D.1114

下列程序的運行結果是?想一想思考題DFort=1To3Ift>=1Thena=3Ift>=2Thena=2Ift>=3Thena=1Printa;NexttPrinttA.3334B.1234C.3214D.1114

下列程序的運行結果是?想一想思考題C

運行下面程序后,循環(huán)體執(zhí)行了______次。

i=0:n=1DoWhilei<32i=(i+1)*(i+1)n=n+1LoopPrintnA.2B.3C.4D.5請回答問題想一想思考題Cs="ABCDEFGHIJ":c=""Fork=2ToLen(s)Step3a=Mid(s,k)c=c+Left(a,1)NextkPrintc

A.BDFB.CFIC.BEHD.BEI

下列程序的運行結果是?想一想思考題C

采用DoWhile...Loop語句

采用Print直接在窗體上輸出結果,程序代碼:PrivateSubForm_Load()DimnAsInteger,sAsLongShown=1:s=0DoWhilen<=100s=s+n*nn=n+1LoopPrint"s=";sEndSub

程序運行結果:

S=338350例5.5求S=12+22+…+1002例5.5

“輾轉相除法”算法:求出m/n余數(shù)p,若p=0,n即為最大公約數(shù);若p非0,則把原來的分母n作為新的分子m,把余數(shù)p作為新的分母n繼續(xù)求解設計步驟如下:

(1)創(chuàng)建應用程序的用戶界面和設置對象屬性例5.7輸入兩個正整數(shù),求它們的最大公約數(shù)例5.7

編寫的“計算”按鈕Click事件過程代碼如下:PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,pAsIntegerm=Val(Text1.Text):n=Val(Text2.Text)Ifm<=0Orn<=0ThenMsgBox("數(shù)據(jù)錯誤!")EndEndIfDop=mModnm=nn=pLoopWhilep<>0Text3.Text=mEndSub

若輸入的m和n的值為85和68,則運行結果如上圖語句格式:

While條件循環(huán)體Wend功能:當條件成立(為真)時,執(zhí)行循環(huán)體;當條件不成立(為假)時,終止循環(huán)。本語句與上述DoWhile...Loop循環(huán)語句相似,其差別是:While...Wend語句中不能使用Exit語句跳出循環(huán)。5.1.3While...Wend循環(huán)語句

用于提前退出循環(huán)

格式:Exit{For|Do}

功能:直接從For循環(huán)或Do循環(huán)中退出

當程序運行時遇到Exit語句時,就不再執(zhí)行循環(huán)體中的任何語句而直接退出,轉到循環(huán)語句(Next、Loop)的下面繼續(xù)執(zhí)行5.1.4循環(huán)出口語句

把每次輸入的數(shù)累加。當輸入-1時結束程序的運行

創(chuàng)建應用程序的用戶界面和設置對象屬性

編寫程序代碼

PrivateSubForm_Load()ShowSum=0DoWhileTrue'條件為真,循環(huán)無終止進行下去x=Val(InputBox("請輸入要加入的數(shù)(-1表示結束)","輸入數(shù)據(jù)"))Ifx=-1ThenExitDoEndIfSum=Sum+xText1.Text=SumLoopMsgBox("累加運算結束")EndSub

以-1作為“終止循環(huán)標志”例5.8設計一個“加法器”程序例5.8

多重循環(huán)是指循環(huán)體內含有循環(huán)語句的循環(huán)

例5.9多重循環(huán)程序示例程序運行結果

PrivateSubForm_Load()15Show16

Fori=1To3‘外循環(huán)17

Forj=5To7’內循環(huán)25Printi,j26Nextj27Nexti35EndSub3637

注意內、外循環(huán)層次要分清,不能交叉

5.2

多重循環(huán)例5.9

本例可采用兩重循環(huán)來實現(xiàn)。外循環(huán)控制輸出7行,內循環(huán)控制每行輸出要求的字符數(shù)。在進入內循環(huán)之前,使用PrintTab()來對起始輸出位置定位,退出內循環(huán)后,使用Print來控制換行。例5.10

編一程序,輸出下列所示的圖形例5.10

采用Print直接在窗體上輸出結果,程序代碼如下:

PrivateSubForm_Load()

ShowFori=1To7PrintTab(10-i);Forj=1To2*i-1PrintChr(i+48);NextjPrintNextiEndSub

PrintChr(i+48)與Printi有所不同

(1)分析:設一元硬幣為a枚,二元硬幣為b枚,五元硬幣為c枚,可列出方程

a+b+c=10

a+2b+5c=25

采用兩重循環(huán),外循環(huán)變量a從0~10,內循環(huán)變量b從0~10

(2)創(chuàng)建應用程序的用戶界面例5.11

取一元、二元、五元的硬幣共十枚,付

給25元錢,有多少種不同的取法?例5.11

(3)編寫程序代碼

程序通過Print方法把處理結果輸出在標簽的下方。PrivateSubForm_Load()ShowCurrentX=0:CurrentY=1500'確定開始顯示的坐標Print,"五元","二元","一元"n=0'記錄解的組數(shù)Fora=0To10Forb=0To10c=10-b-aIfa+2*b+5*c=25Andc>=0Thenn=n+1Print"(";n;")",c,b,aEndIfNextb,aEndSub執(zhí)行下列程序段后,變量t的值是______。t=0Forx=2To3n=1DoWhilen<=xt=t+nn=n+1LoopNextxA.8 B.9C.10 D.11

請回答問題想一想思考題B

請回答問題想一想思考題顯示結果為:16執(zhí)行下列程序段后,顯示的結果是______s=0Form=1To4Step2n=1DoWhilen<=ms=s+nn=n+1LoopNextmPrints+m+n例5.12a5.3列表框與組合框列表框和組合框都能為用戶提供若干個選項,供用戶從中任意選擇5.3.1列表框(ListBox)

List屬性:字符型數(shù)組,存放列表框的表項數(shù)組的下標從0開始。例如,List1.List(0)的值為“教授”,List1.List(1)的值為“副教授”。ListCount屬性:表項數(shù)目Text屬性:當前選定表項的文本內容ListIndex屬性:返回已選定表項的順序號(索引)。若未選定任何項,則ListIndex的值為-1Selected屬性:邏輯型數(shù)組,表示列表框中某一表項是否被選中例5.12b

假設列表框List1中有四個表項,并已選定第2項,則有:List1.ListIndex為1List1.Text的值為”副教授”List1.Selected(1)為True

方法

(1)AddItem方法:用于把一個列表項加入列表框

格式:[對象.]AddItem列表項[,索引]

舉例:List1.AddItem"海南省",28(2)Clear方法:用于清除列表框中的所有項目(3)RemoveItem方法:用于刪除指定的列表項采用以下方法,可為列表框List1賦值:

(1)在屬性窗口中設置

(2)利用AddItem賦值(3)利用List屬性賦值

List1.AddItem“教授”List1.List(0)=“教授”List1.AddItem“副教授”List1.List(1)=“副教授”List1.AddItem“講師”List1.List(2)=“講師”List1.AddItem“助教”List1.List(3)=“助教”

列表框表項的輸出

(1)用鼠標單擊列表框內某一表項,則該表項值存放在Text屬性中。例如:x=List1.Text′把表項值存放在x變量中

(2)指定索引號來取表項的內容,例如:

List1.ListIndex=3

x=List1.Text(3)直接從數(shù)組List()中讀取,例如:

x=List1.List(5)

(1)分析:判別條件為(nMod14=0)And(nMod10=8)

(2)創(chuàng)建應用程序的用戶界面和設置對象屬性

例5.12設計一程序,找出三位數(shù)中能被14整除且個位數(shù)為8的自然數(shù),把這些自然數(shù)顯示在列表框中,其個數(shù)顯示在標簽中。例5.12

(3)編寫程序代碼

編寫的“顯示”按鈕Click事件過程代碼:PrivateSubCommand1_Click()′“顯示”List1.ClearForn=100To999If(nMod14=0)And(nMod10=8)ThenList1.AddItemnEndIfNextnLabel1.Caption="符合條件的自然數(shù)的個數(shù)為:"_&List1.ListCountEndSub

(1)創(chuàng)建應用程序的用戶界面和設置對象屬性

用戶先在左列表框(List1)選擇一個或多個選修課,當單擊“顯示”按鈕時,在右列表框(List2)中將顯示出用戶選中的所有課程。單擊“清除”按鈕時,將清除右列表框中的內容

(2)編寫程序代碼例5.13設計一個選課程序MultiSelect屬性值為2例5.13PrivateSubForm_Load()List1.AddItem"電子商務"List1.AddItem"網(wǎng)頁制作"List1.AddItem"Internet簡明教程"List1.AddItem"計算機網(wǎng)絡基礎"List1.AddItem"多媒體技術“EndSubPrivateSubCommand1_Click()

'"顯示"按鈕單擊事件List2.Clear'清除列表框的內容Fori=0ToList1.ListCount-1'逐項判斷IfList1.Selected(i)Then'真時為選定

List2.AddItemList1.List(i)EndIfNextiEndSubPrivateSubCommand2_Click()

'"清除"按鈕單擊事件List2.ClearEndSub

允許從已有的選項中進行選擇,還允許輸入列表中不包括的內容

列表框和文本框的組合具有列表框和文本框的大部分屬性和方法。獨有的一些屬性:

(1)Style屬性:該屬性取值為0,1或2,分別決定了組合框的三種不同類型

下拉組合框(DropdownCombo):允許選擇或輸入新數(shù)據(jù)

簡單組合框(SimpleCombo):允許選擇或輸入新數(shù)據(jù)

下拉列表框(DropdownList):只允許選擇,不能輸入新數(shù)據(jù)5.3.2組合框

(2)Text屬性:該屬性是用戶所選定項目的文本或直接從文本框輸入的文本

(1)創(chuàng)建應用程序的用戶界面和設置對象屬性

窗體上含有Combo1,Combo2,Combo3三個組合框,其Style屬性從左至右分別為0、1和2,即除了“內存”容量大小只能從列表中選擇外,其余內容既可以從列表中選擇,也可以由用戶輸入。在屬性窗口中輸入相關數(shù)據(jù)

例5.14在窗體上設置3個組合框,用于選擇微機部分配置,

包括CPU/主頻、硬盤及內存。

Style=0下拉組合框Style=1簡單組合框Style=2下拉列表框圖片框設計界面運行界面例5.14(2)編寫程序代碼PrivateSubForm_Load()Combo1.Text=Combo1.List(0)Combo2.Text=Combo2.List(0)Combo3.Text=Combo3.List(0)EndSubPrivateSubCommand1_Click()

'“確定”按鈕的事件過程Picture1.ClsPicture1.Print"微機的基本配置"Picture1.PrintString(20,"=")Picture1.Print"CPU:";Combo1.TextPicture1.Print"硬盤(GB):";Combo2.TextPicture1.Print"內存(MB):";Combo3.TextEndSub5.4常用算法

算法是對某個問題求解過程的描述。常用的算法有:窮舉法、遞推法、排序法、查找法、遞歸法等。

1.累加、連乘和計數(shù)累加(如s=s+k)是在原有和的基礎上一次一次地每次加一個數(shù),連乘(如t=t*c)則是在原有積的基礎上一次一次地每次乘一個數(shù)。計數(shù)通常每次增加的值不是一個加數(shù),而是1。

例5.15找出100~999三位數(shù)中的“水仙花”數(shù),計算其個數(shù)。所謂水仙花數(shù),是指各位數(shù)字立方和等于該數(shù)本身,如153是一個水仙花數(shù),因為153=13+53+33。

程序中采用計數(shù)方法n=n+1(或稱“計數(shù)器”)來記錄有多少個“水仙花”數(shù)。找水仙花數(shù)PrivateSubForm_load()DimkAsInteger,aAsInteger,bAsIntegerDimcAsInteger,nAsIntegeShown=0Print"三位數(shù)的水仙花數(shù)是:"Fork=100To999a=Int(k/100)'求百位數(shù)b=Int((k-100*a)/10)'求十位數(shù)c=kMod10'求個位數(shù)Ifk=a^3+b^3+c^3ThenPrintk‘輸出水仙花數(shù)n=n+1'對滿足條件的數(shù)進行計數(shù)EndIfNextkPrint"一共有"&n&"個水仙花數(shù)"EndSub例5.152.窮舉法“窮舉法”也稱為“枚舉法”,它是計算機解題常用的一種方法。其做法是:從所有可能解中,逐個進行試驗,若滿足條件,就得到一個解,否則不是。直到條件滿足或判別出無解為止。

例5.16用100元買100只雞,母雞3元1只,小雞1元3只,問各應買多少只?下面采用窮舉法來解此題。對于此題,令母雞為x只,小雞為y只,根據(jù)題意可知y=100-x,開始先讓x初值為1,以后逐次加1,求x為何值時,條件3x+y/3=100成立。如果當x達到30時還不能使條件成立,則可以斷定此題無解。因為買的母雞數(shù)不可能超過30,超過30就不能買到100只雞。100元買100只雞PrivateSubForm_Load()DimxAsInteger,yAsIntegerShowForx=1To30y=100-xIf3*x+y/3=100ThenPrint“母雞只數(shù)為:”;x,Print“小雞只數(shù)為:”;yEndIfNextxEndSub例5.165.5程序舉例

例5.18

從鍵盤輸入一個正整數(shù),然后把該數(shù)的每位數(shù)字按逆序輸出。例如:輸入3485,則輸出5843;輸入100000,則輸出000001。以下采用兩種不同解法。(1)數(shù)值處理方法①通過表達式xMod10取出該整數(shù)x的個位數(shù)并輸出,如對于x=3485,則取出5;②利用賦值語句x=x\10截去x的個位數(shù),如對于x=3485,處理后x=348;③重復執(zhí)行①和②,直到x<10和最后輸出一次x。DimxAsLongx=Val(InputBox("請輸入一個正整數(shù)"))DoWhilex>=10PrintxMod10;x=x\10Loop例5.18A(2)字符串處理方法

把該整數(shù)作為一個數(shù)字字符串,從字符串后部往前逐個取出字符,即可實現(xiàn)按逆序輸出。DimxAsStringx=InputBox("請輸入一個正整數(shù)")

'把該數(shù)以字符串方式賦給變量xFork=Len(x)To1Step-1PrintMid(x,k,1);

'從后部往前逐個取出字符并顯示Nextk例5.18B例5.19求解s=1!+2!+3!+…+10!的值采用兩種不同解法

(1)解法一:采用兩重循環(huán),外循環(huán)10次,每次循環(huán)計算一次階乘,把每次階乘值累加起來,即得求解結果。DimsAsLong,tAsLongs=0Forj=1To10'計算10個階乘t=1'計算1個階乘前,先賦初值Fork=1Toj'計算j!,需要循環(huán)j次t=t*k'連乘j次Nextks=s+t'把每次計算得到的階乘值t累加NextjPrints例5.19A(2)解法二這10個階乘有一個特點,后一個階乘為上一個階乘再乘以一個數(shù),如2!=1!*2,3!=2!*3,4!=3!*4,…,k!=(k-1)!*k。根據(jù)這一特點,程序只須采用單重循環(huán)就可以求解。把該整數(shù)作為一個數(shù)字字符串,從字符串后部往前逐個取出字符,即可實現(xiàn)按逆序輸出。DimsAsLong,tAsLongs=0t=1Fork=1To10'循環(huán)10次,每次求1個階乘t=t*k'求k!,其值等于(k-1)!*k,即t*ks=s+t'每次加入一個階乘值tNextkPrints例5.19B

(1)創(chuàng)建應用程序的用戶界面

(2)設置對象屬性

組合框的Style屬性為0,TabI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論