版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第六章基本程序結構本章內容及要求:
1.了解算法概念及算法的表示,掌握用N—S流程序表示算法
2.熟練掌握賦值語句、End語句和注釋語句等語句及輸入/輸出消息框函數(shù)的使用;
3.熟練掌握行if語句、塊if結構、SelectCase情況選擇結構有使用,掌握選擇的嵌套結構;
4.熟練掌握實現(xiàn)循環(huán)結構的For/Next循環(huán)結構及ExitFor語句、Do/Loop循環(huán)結構的使用,掌握多重循環(huán)。重點:選擇結構及循環(huán)結構的實現(xiàn)及其應用難點:選擇的嵌套及多重循環(huán)結構6.1算法及算法的表示6.1.1算法概述什么是算法:廣義地講:算法是為完成一項任務所應當遵循的一步一步的規(guī)則的、精確的、無歧義的描述,它的總步數(shù)是有限的。狹義地講:算法是解決一個問題采取的方法和步驟的描述。下面通過兩個簡單的例子加以說明:例6.1輸入三個數(shù),然后輸出其中最大的數(shù)。將三個數(shù)依次輸入到變量A、B、C中,設變量MAX存放最大數(shù)。其算法如下:例6.2輸入10個數(shù),打印輸出其中最大的數(shù)。算法設計如下:(1)輸入1個數(shù),存入變量A中,將記錄數(shù)據(jù)個數(shù)的變量N賦值為1,即N=1(2)將A存入表示最大值的變量Max中,即Max=A(3)再輸入一個值給A,如果A>Max則
Max=A,否則Max不變(4)讓記錄數(shù)據(jù)個數(shù)的變量增加1,即N=N+1(5)判斷N是否小于10,若成立則轉到第(3)步執(zhí)行,否則轉到第(6)步。(6)打印輸出max1)輸入A、B、C。2)A與B中大的一個放入MAX中。3)把C與MAX中大的一個放入MAX中。4)輸出MAX,MAX即為最大數(shù)。6.1.2算法的特性有窮性確定性有0個或多個輸入有一個或多個輸出有效性6.1.3算法的表示一、自然語言與偽代碼表示算法自然語言:就是指人們日常使用的語言,可以是漢語、英語或其它語言。偽代碼:是用介于自然語言和計算機語言之間的文字和符號(包括數(shù)學符號)來描述算法。例如:例6.1可用如下的偽代碼表示Begin(算法開始)
輸入
A,B,CIFA>B則
A→Max
否則
B→MaxIFC>Max則
C→MaxPrintMaxEnd(算法結束)二、用傳統(tǒng)流程圖表示算法處理框起止框I/O框判斷框流程線連接點1、傳統(tǒng)流程圖中的基本符號2、三種基本結構的傳統(tǒng)表示(1)順序結構條件語句1語句2YN語句1語句2(2)選擇結構條件(a)條件語句組(3)循環(huán)結構a)當型循環(huán)b)直到循環(huán)YNYN(b)語句組三種基本結構的特點:(1)只有一個入口(2)只有一個出口(3)不存在死語句(4)不存在死循環(huán)例:例6.2輸入10個數(shù),打印輸出其中的最大的數(shù)的流程圖從10個數(shù)中選出最大的數(shù)的流程圖N<10Max=AN=1A>MaxMax=A輸入A開始再輸入給AN=N+1打印Max結束YNNY6.1.4用N—S流程圖表示算法將全部算法寫在一個矩形框內,在矩形內還可包含其它從屬于它的框三種基本結構的N—S圖表示:語句A語句B語句A語句B條件YN1、順序結構2、選擇結構語句組(3)循環(huán)結構a)當型循環(huán)b)直到循環(huán)當條件成立語句組直到當條件成立例:畫出從10個數(shù)中選出最大的數(shù)的N—S流程圖(a)(b)傳統(tǒng)流程圖N<10Max=AN=1A>MaxMax=A輸入A開始再輸入給AN=N+1打印Max結束YNNY輸入A當N<=10Max=AN=N+1打印Max輸入AN—S流程圖A>=MaxYNPrivateSubForm_Click()Dima%,max%,i%max=aFori=1To10a=Val(InputBox("A=?"))Ifa>maxThenmax=aNextiPrint"Max=";maxEndSub
最后需要說明的是:上面介紹的算法表示是給人看的,即是為幫助程序開發(fā)人員閱讀、編寫程序而設計的一種輔助工具,程序則必須符一計算機語言的語法規(guī)則。下面是例6.2的計算機程序,即為用計算機語言表示算法:6.1.5結構化程序設計方法(補充)(一)用計算機解決問題的過程提出、分析問題確定算法模型設計算法編寫程序調試程序分析輸出結果正確合理結束不正確(二)結構化程序設計思想自頂向下、逐步細化、模塊化自頂向下:先從全局、整體設計逐步細化:將一個問題分解成幾個較小的問題解決模塊化:將一個大任務分解成若干個較小的部分,每個部分承擔一定功能,稱為“功能模塊”例:給100個整數(shù),打印輸出其中的素數(shù)S1N—S流程圖輸入100個數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,x2,……x100中的非素變?yōu)?S3S2輸入xi當i<=100i=i+1i=1S1細化xi≠0當i<=100i=i+1i=1YN打印xiS3細化S1N—S流程圖輸入100個數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,……x100中的非素變?yōu)?S3S2S2細化判斷xi是否是素數(shù),若不是則將xi=0當i<=100i=i+1i=1S21r=0r<=將x1除j的余j=j+1j=2YNxi=0直到j>xi/2S21細化輸入100個數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,……x100中的非素變?yōu)?細化后的流程圖輸入xi當i<=100i=i+1i=1當i<=100i=1r=0r=xi%jj=j+1j=2YNxi=0直到j>xi/2i=i+1xi≠0當i<=100i=1YN打印xii=i+16.2順序結構6.2.1賦值語句
形式:變量名=表達式對象.屬性=表達式
功能:將表達式的值賦值給變量名或指定對象的屬性。一般用于給變量賦值或對控件設定屬性值.
例:sRate!=0.1Text1.Text="歡迎使用VisualBasic6.0”說明:
1.執(zhí)行過程:先求表達式的值,然后將值賦值給左邊的變量。
2.右邊表達式可以是變量、常量、函數(shù)調用等特殊的表達式。
3.不要將“=”理解為數(shù)學上的等號:
A=A+1是表示將A單元的值加1后以放回到A單元。執(zhí)行過程如右圖4.賦值符號“=”左邊一定只能是變量名或對象的屬性引用,不能是常量、符號常量、表達式。下面的賦值語句都是錯的:5=X'左邊是常量。Abs(X)=20'左邊是函數(shù)調用,即是表達式。5.賦值符號“=”兩邊的數(shù)據(jù)類型一般要求應一致。具體規(guī)則(P77)6.2.2注釋語句其語法格式為:Rem<注釋內容>或
'<注釋內容>說明:1.<注釋內容>指要包括的任何注釋文本。在Rem關鍵字和注釋內容之間要加一個空格??梢杂靡粋€英文單引號“'”來代替Rem關鍵字。2.如果在其他語句行后面使用Rem關鍵字,必需用冒號(:)與語句隔開。若用英文單引號“'”,則在其他語句行后面不必加冒號(:)。例如:ConstPI=3.1415925'符號常量PIS=PI*r*r :Rem計算圓的面積6.3選擇結構
1.If…Then語句(單分支結構)
If<表達式>Then
語句塊
EndIf
或
If<表達式>Then<語句>
例:已知兩個數(shù)x和y,比較它們的大小,使得x大于y.
Ifx<yThent=x:x=y:y=tEndIf
或Ifx<yThent=x:x=y:y=t2.If…Then…Else語句(雙分支結構)
If<表達式>Then<語句塊1>Else<語句塊2>EndIf
If<表達式>Then<語句1>Else<語句2>
例如:輸出x,y兩個中值較大的一個值。IFX>YThenPrintXElsePrintYEndIf也可以寫成如下的單行形式:
IFX>YThenPrintXElsePrintY
雙分支選擇結構執(zhí)行過程3.If…Then…ElseIf語句(多分支結構)
形式:
If<表達式1>Then <語句塊1> ElseIf<表達式2>Then <語句塊2> … [Else
語句塊n+1] EndIf
例:輸入一學生成績,評定其等級。方法是:90~100分為“優(yōu)秀”,80~89分為“良好”,70~79分為“中等”,60~69分為“及格”,60分以為“不合格”執(zhí)行過程使用IF語句實現(xiàn)的程序段如下:Ifx>=90then Print"優(yōu)秀"ElseIfx>=80Then Print"良好"ElseIfx>=70Then Print"中等"ElseIfx>=60Then Print"及格"Else Print"不及格"EndIf6.3.2SelectCase語句(條件分支)形式:
SelectCase變量或表達式
Case表達式列表1
語句塊1 Case表達式列表2
語句塊2 … [CaseElse
語句塊n+1] EndSelect<表達式列表>:與<變量或表達式>同類型的下面四種形式之一:表達式
A+5
一組枚舉表達式(用逗號分隔)
2,4,6,8
表達式1To表達式2
60to100 Is關系運算符表達式
Is<60數(shù)值型或字符串表達式將例6.3使用selectcase…..語句來實現(xiàn)的程序段如下:SelectCasexCase90to100Print"優(yōu)秀"Case80to89Print"良好"Case70to79Print"中等"Case60to69Print"及格"CaseElsePrint"不及格"EndSelect補充例題:設計一個由計算機來當小學低年級學生算術老師的VB應用程序,要求給出一系列的兩個1~10數(shù)的四則運算的算術題,學生輸入該題的答案,計算機根據(jù)學生的答案判斷正確與否,并給出成績,單擊結束命令按鈕,退出應用程序。分析:產生1~10操作數(shù),可通過Int(10*Rnd+1)實現(xiàn)6.3.3選擇結構的嵌套在IF語句的Then分支和Else分支中可以完整地嵌套另一IF語句或SelectCase語句,同樣SelectCase語句每一個Case分支中都可嵌套另一IF語句或另一SelectCase語句。下面是兩種正確的嵌套形式:(1)IF<條件1>Then…..
if<條件2>Then……Else…..EndIf….Else….
IF<條件3>Then…..Else…..EndIf…..EndIF(2)IF<條件1>Then…..SelectCase…Case……
IF<條件1>Then……Else…..EndIf……Case….…..EndSelect….EndIF注意:只要在一個分支內嵌套,不出現(xiàn)交叉,滿足結構規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多。對于多層IF嵌套結構中,要特別注意IF與Else的配對關系,一個Else必須與IF配結,配對的原則是:在寫含有多層嵌套的程序時,建議使用縮進對齊方式,這樣容易閱讀和維護。6.4循環(huán)結構1.For循環(huán)語句(一般用于循環(huán)次數(shù)已知)形式
For循環(huán)變量=初值to終值[Step步長]
語句塊
[ExitFor]
語句塊
Next循環(huán)變量循環(huán)體>0初值<終值=1時,可省略<0初值>終值=0死循環(huán)
步長循環(huán)次數(shù)例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循環(huán)執(zhí)行次數(shù)輸出I的值分別為:25811出了循環(huán)輸出為:I=14例6.5編程計算:S=1+2+3+…+100DimS%,I%S=0'累加前變量S為0ForI=1to100S=S+INextIPrint"S=",S當N<=100N=N+1打印SS=0,N=1S=S+N例4-5的算法流程圖形式1:(當型循環(huán))
Do{While|Until}<條件>
語句塊
[ExitDo]
語句塊
Loop6.4.2Do…Loop循環(huán)語句
形式2:(直到循環(huán))
Do
語句塊
[ExitDo]
語句塊
Loop{While|Until}<條件>條件語句塊語句塊TFExitDo條件語句塊語句塊TFExitDoDoUntil…Loop執(zhí)行過程Do…LoopUntil執(zhí)行過程說明:(1)當使用While<條件>構成循環(huán)時,當條件為“真”則反復執(zhí)行循環(huán)體,當條件為“假”,則退出循環(huán)。(2)當使用Until<條件>構成循環(huán)時,當條件為“假”,則反復執(zhí)行循環(huán)體,直到條件成立,即為“真”時,則退出循環(huán)。(3)在循環(huán)體內一般應有一個專門用來改變條件表達式中變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成立),最后達到退出循環(huán)。(4)語句ExitDo的作用是退出它所在的循環(huán)結構,它只能用在DO/Loop結構中,并且常常是同選擇結構一起出現(xiàn)在循環(huán)結構中,用來實現(xiàn)當滿足某一條件時提前退出循環(huán)。6.4.3While…Wend語句使用格式如下:While<條件><循環(huán)塊>Wend
說明:該語句的功能與DoWhile<條件>….Loop實現(xiàn)的循環(huán)完全相同。例:用do…Loop語句改寫前面的例題6.5例6.7求兩個整數(shù)的最大公約數(shù)、最小公倍數(shù)Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公約數(shù)=",nPrint"最小公倍數(shù)=",nm/n
算法使用轉碾除法,流程圖如右,實現(xiàn)的程序代碼如下:
6.4.4循環(huán)的嵌套——多重循環(huán)結構
如果在一個循環(huán)內完整地包含另一個循環(huán)結構,則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。上面介紹的幾種循環(huán)控制結構可以相互嵌套,下面是幾種常見的二重嵌套形式:(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop例如:打印九九乘法表.
Fori=1To9
Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti對于循環(huán)的嵌套,要注意以下事項:(1)內循環(huán)變量與外循環(huán)變量不能同名;(2)外循環(huán)必須完全包含內循環(huán),不能交叉;
(3)不能從循環(huán)體外轉向循環(huán)體內,也不能從外循環(huán)轉向內循環(huán).
正確
錯誤
Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii6.4.5幾種循環(huán)語句比較6.4.6循環(huán)結構與選擇結構的嵌套
在循環(huán)結構中可以完整嵌套選擇結構即整個選擇結構都屬于循環(huán)體。在選擇結構中嵌套循環(huán)結構時,則要求整個循環(huán)結構必須完整地嵌套在一個分支內,一個循環(huán)結構不允許出現(xiàn)在兩個或兩個以上的分支內。(1)ForI=…………
IF…Then……EndIF……NextI(6)IF…Then……ForI=…………EndIF……NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect(3)ForI=…………IF…Then……NextI……EndIF(2)IF…Then……
ForI=…………NextI……EndIF0(4)ForI=…………
SelectCase…Case…………Case…………EndSelect……NextI×××6.5其它控制語句
6.5.1Goto語句形式:GoTo{標號|行號}
作用是無條件地轉移到標號或行號指定的那行語句.
標號是一個字符序列,行號是一個數(shù)字序列。例求100以內的素數(shù)判別某數(shù)m是否為素數(shù)最簡單的方法是:
對于m
從i=2,3,…,m-1判別m能否被i整除,只要有一個能整除,m不是素數(shù),否則m是素數(shù)。
Form=2To100Fori=2Tom-1If(mModi)=0ThenGoToNotNextMNextiPrintmNotNextM:Nextm6.5.2Exit語句Exit語句用于退出Do...Loop、For...Next、Function或Sub代碼塊。對應的使用格式為:ExitDo、ExitFor、ExitFunction、ExitSub。分別表示退出DO循環(huán)、For循環(huán)、函數(shù)過程、子過程。例如:下面的例子是使用
Exit語句退出
For...Next循環(huán)、Do...Loop循環(huán)及子過程。PrivateSubForm_Click()DimI%,Num%Do'建立無窮循環(huán)。
ForI=1To100'循環(huán)
100次。
Num=Int(Rnd*100)'生成一個0~99的隨機數(shù)。
SelectCaseNumCase10:ExitFor'退出
For...Next循環(huán)。
Case50:ExitDo'退出
Do...Loop循環(huán)。
Case64:ExitSub'退出子過程。
EndSelectNextILoopEndSub6.5.3End語句形式:End
功能:結束一個程序的運行。在VisualBasic中還有多種形式的End語句,用于結束一個程序塊或過程。其形式有:
EndIfEndSelectEndTypeEndWithEndSubEndFunction等它們與對應的語句配對使用。
6.5.4暫停語句
Stop語句用來暫停程序的執(zhí)行,相當于在事件代碼中設置斷點。語法格式為:
Stop說明:1.Stop語句的主要作用是把解釋程序置為中斷(Break)模式,以便對程序進行檢查和調試??梢栽诔绦虻娜魏蔚胤椒胖肧top語句,當執(zhí)行Stop語句時,系統(tǒng)將自動打開立即窗口。2.與End語句不同。6.5.5With...EndWith語句形式:
With對象名語句塊
EndWith
說明:With語句可以對某個對象執(zhí)行一系列的語句,而不用重復指出對象的名稱。例如,要改變一個對象的多個屬性,可以在With控制結構中加上屬性的賦值語句,這時候只是引用對象一次而不是在每個屬性賦值時都要引用它。下面的例子顯示了如何使用
With語句來給同一個對象的幾個屬性賦值。例如,需要對同一對象設置幾個屬性。途徑之一是使用多條語句。PrivateSubForm_Load()Command1.Caption="退出(E&xit)"Command1.Top=500Command1.Left=4500Command1.Enabled=TrueEndSub使用With...EndWith語句,上面程序的代碼如下。PrivateSubForm_Load()WithCommand1.Caption="OK".Top=500.Left=4500.Enabled=TrueEndWithEndSub6.6應用程序舉例6.6.1素數(shù)與哥德巴赫猜想判斷一個給定的整數(shù)是否為素數(shù)。
算法思路:素數(shù)指除了能被1和自身外,不能被其他整數(shù)整除的自然數(shù)。判斷整數(shù)N是不是素數(shù)的基本方法是:將N分別除以2,3,…,N-1,若都不能整除,則N為素數(shù)。因為N=Sqr(N)*Sqr(N),所以,當N能被大于等于Sqr(N)的整數(shù)整除時,一定存在一個小于等于Sqr(N)的整數(shù),使N能被它整除,因此只要判斷N能否被2,3,…,Sqr(N)整除即可。算法流程圖如下:DimN%,I%,K%N=Val(InputBox("N=?"))K=Int(Sqr(N))ForI=2ToKIfNModI=0ThenExitForNextIIfI>KThenPrintN;"是素數(shù)"ElsePrintN;"不是素數(shù)"EndIf
驗證哥德巴赫猜想:一個大于等于6的偶數(shù)可以表示為兩個素數(shù)之和。例如:
6=3+38=3+510=3+7
算法設計:設N為大于等于6的任一偶數(shù),將其分解為N1和N2兩個數(shù),使用N1+N2=N,分別判斷N1和N2是否為素數(shù),若都是,則為一組解。若N1不是素數(shù),就不必再檢查N2是否素數(shù)。先從N1=3開始,直到N1=N/2為止。算法流程圖如圖4-29所示。將程序代碼寫到窗體的單擊事件中。實現(xiàn)上面算法的程序代碼如下:PrivateSubForm_Click()DimN%,N1%,N2%,I%,K1%,K
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南工程職業(yè)學院《流行音樂器樂演奏(1)》2023-2024學年第一學期期末試卷
- 新媒體時代下信息傳播速度與范圍
- 公司年度總結與展望模板
- 市場營銷成果報告模板
- 業(yè)務操作-房地產經紀人《業(yè)務操作》模擬試卷2
- 房地產交易制度政策-《房地產基本制度與政策》預測試卷3
- 醫(yī)生辭職報告怎么寫
- 二零二五年度軌道交通信號系統(tǒng)安裝合同6篇
- 山東省菏澤市2024-2025學年高二上學期期末教學質量檢測數(shù)學試題參考答案
- 2024-2025學年四川省瀘州市老窖天府中學高一(上)期末數(shù)學試卷(含答案)
- 第22單元(二次函數(shù))-單元測試卷(2)-2024-2025學年數(shù)學人教版九年級上冊(含答案解析)
- 藍色3D風工作總結匯報模板
- 安全常識課件
- 小王子-英文原版
- 2024年江蘇省導游服務技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學2025屆數(shù)學高二上期末綜合測試試題含解析
- 保安公司市場拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網絡安全技術實體鑒別第2部分:采用鑒別式加密的機制
- 10以內加減法(直接打印,20篇)
評論
0/150
提交評論