《程序設(shè)計算法》word版_第1頁
《程序設(shè)計算法》word版_第2頁
《程序設(shè)計算法》word版_第3頁
《程序設(shè)計算法》word版_第4頁
《程序設(shè)計算法》word版_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.;第四章 程序設(shè)計算法本章教學目標:使學生理解和掌握程序設(shè)計的概念,掌握程序的順序結(jié)構(gòu)、選擇和分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。本章學習內(nèi)容:Visual Basic語言與其它任何程序設(shè)計語言一樣,都要涉及到程序設(shè)計的算法問題。本章中將介紹Visual Basic程序設(shè)計的基本語句以及程序設(shè)計的一般過程和方法。主要內(nèi)容有:算法的概念、程序的順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。本節(jié)教學內(nèi)容:講授45分鐘4.1算法的概念一、程序設(shè)計的概念計算機之所以能夠進行科學計算和信息處理,是由于人們事先確定了處理問題的方法和步驟,并將這些方法和步驟編寫成計算機能識別的執(zhí)行過程的先后順序指令。執(zhí)行時,計算機是按照人們事先確定的方

2、案,按照指定的順序步驟執(zhí)行,才能得到正確的結(jié)果。這種確定方案、編寫計算機執(zhí)行過程順序的工作稱為程序設(shè)計。通過前面的學習,我們已經(jīng)知道:Visual Basic的程序設(shè)計是一種可視化的程序設(shè)計語言。可視化的程序設(shè)計的一般步驟是:工程分析對象設(shè)置編寫程序代碼調(diào)試和修改。1、工程分析工程分析就是對所處理的問題進行分析,主要是搞清楚所給定的已知數(shù)據(jù)和條件,弄清楚要解決或求知什么問題或要得出什么樣的處理結(jié)果數(shù)據(jù)(包括數(shù)據(jù)本身和數(shù)據(jù)輸出的形式)。根據(jù)問題的類型和內(nèi)容,找出解決問題所遵循的物理規(guī)律,若是數(shù)值計算問題,要建立數(shù)學模型。2、界面設(shè)置界面設(shè)置是根據(jù)工程分析,確定工程的外觀,恰當合理地利用VB系統(tǒng)提

3、供的對象工具和控件在窗體視窗中設(shè)計和布局出好的用戶交互界面。3、編寫程序代碼編寫程序代碼是擬訂有關(guān)計算機進行運算操作的算法步驟。如已知數(shù)據(jù)輸入的先后順序、輸入數(shù)據(jù)的方法;輸出數(shù)據(jù)和信息的計算順序、計算方法和輸出方式;用什么辦法來引導(dǎo)計算機對不同過程的運行操作等。不同的問題其算法步驟有很大不同。有的問題可以使用簡單的順序結(jié)構(gòu)就可以完成;有的問題在不同的條件下可能需要不同的處理方法,這就需要用到選擇結(jié)構(gòu)或分支結(jié)構(gòu);當對于有些問題可能需要計算機依據(jù)某一規(guī)律進行多次重復(fù)的操作時,就需要用到循環(huán)結(jié)構(gòu)或重復(fù)結(jié)構(gòu);在大批量數(shù)據(jù)處理時,可能還需要進行篩選或排序等算法。在編寫一個工程的程序代碼之前,先用某種算法

4、語言擬訂計算機的操作步驟是一個很好的措施。一個合理優(yōu)化的算法可以達到事半功倍的效果。最常使用的算法語言是流程框圖算法。4、調(diào)試和修改調(diào)試和修改,一般來說,一個程序的設(shè)計不一定會一次成功,往往需要進行多次的調(diào)試和修改才能完成。程序的調(diào)試和修改就是在基本設(shè)計完成后,用適合的數(shù)據(jù)來運行程序,對程序運行過程中發(fā)現(xiàn)的問題進行反復(fù)修改,直至運行的結(jié)果與所要解決問題的要求相符合。二、流程框圖起止框一般處理框判斷框輸入輸出框流程線連接點流程線流程框圖是指使用帶有方向的線段把不同形狀的框圖連接而成的有序圖形。常用的傳統(tǒng)流程框圖的基本流程圖符號如下圖所示。1、起止框,表示算法流程的開始和結(jié)束2、一般處理框,主要用

5、來表示“賦值”計算等類操作3、輸入輸出框,表示對數(shù)據(jù)輸入輸出的操作。4、判斷框,表示讓計算機根據(jù)判斷給定的條件的是否成立決定執(zhí)行兩種操作中的哪一種。5、流程線,用箭頭表示程序執(zhí)行的流向6、連接點,表示兩個具有同一標記的連接點應(yīng)連接在一起,通常用于一個流程圖被分劃成幾個子圖或流程線斷開。4.2 程序的順序結(jié)構(gòu)一、賦值語句在程序設(shè)計中,通常是應(yīng)用常量或變量編寫程序語句,同時在程序設(shè)計時或運行時對變量進行賦值。賦值語句由變量名、賦值運算符()和某種類型的表達式組成。賦值語句的一般格式為:Let 變量=表達式或:Let對象名.屬性=表達式賦值語句有兩個基本功能:對表達式進行計算和保存表達式的值。通常,

6、Let關(guān)鍵字通??杀皇÷?。賦值語句被執(zhí)行時,它先對賦值運算符右邊的表達式進行計算,然后將結(jié)果存儲在運算符左邊的變量中。若事先定義了變量的類型,變量的類型和表達式計算結(jié)果的值必須相匹配。例如,字符串常量或字符串表達式的值不能存儲在一個整型變量或一個雙精度實數(shù)型變量中。如果數(shù)據(jù)類型相關(guān)但不完全相同,則VB會將數(shù)據(jù)類型進行轉(zhuǎn)換。例如,希望在一個浮點變量中存儲一個整型值、VB會將表達式計算的結(jié)果轉(zhuǎn)換為該變量類型。如果將一個表達式的計算結(jié)果存儲在一個變體變量中,則VB會保存表達式的類型,即將變體變量的類型設(shè)置為表達式計算結(jié)果的類型。變體變量既保存表達式計算結(jié)果的值,又保存表達式計算結(jié)果的類型。以下的賦值

7、語句是合法的賦值語句:XX+1TNow Now為時間函數(shù)Y=SIN(X)+COS(X)S$= 計算機應(yīng)用專業(yè)以下賦值語句是不合法的賦值語句:1091賦值符左邊不能是常量;是錯誤的。數(shù)字和字符串不能進行加法運算。X=”學?!?12345 是錯誤的。同一行內(nèi)有多個語句,語句間用冒號“:”分隔。如:A=5:B=A+5:C=2*A+B二、順序結(jié)構(gòu)程序的順序結(jié)構(gòu)是指:按程序中語句的先后順序執(zhí)行。任何程序,總的來說都要遵循順序結(jié)構(gòu)。程序的流程見下圖:開始語句語句1語句2結(jié)束語句1、End結(jié)束語句計算機一旦執(zhí)行到此語句,就結(jié)束計算機對該程序的執(zhí)行,返回到Windows系統(tǒng);若是在調(diào)試運行狀態(tài)則返回到VB系統(tǒng)

8、設(shè)計界面,嚴格說來,它不屬于順序結(jié)構(gòu)語句。2、注釋語句為了方便理解程序中語句的意思,可用注釋語句來說明。(1)Rem說明或注釋內(nèi)容在VB的程序中可以加入注釋,而且可以加在程序的任何地方。程序的注釋方法是在注釋內(nèi)容前加Rem關(guān)鍵字(2)一個單引號()作為注釋符。例子:rem 計算一個角度的正弦DIM a AS SingleY=SIN(a) 計算a的正弦值,a為弧度。Print Y3、Print顯示或輸出語句(1)Print語句的語法:Print 變量|表達式,|;對象.Print 表達式,|; 對象是圖片框、打印機。(2)該語句的作用:能夠把“輸出內(nèi)容”顯示或輸出到一個對象上。內(nèi)容的輸出格式后面

9、會講到。Print語句有計算功能,在輸出多個表達式,各表達式間用“,|;”分隔。例子:Print ”Visual Basic 6.0”,”計算結(jié)果”; 123+456 輸出三項Print 輸出一空行(3)與Print語句有關(guān)的函數(shù):Tab函數(shù)格式:Tab(n)功能:在指定位置上輸出。例子:Print Tab(8);”姓名”; Tab(16);”性別”; Tab(24);”年齡”;格式輸出函數(shù)格式:Format$(數(shù)值表達式,格式字符串)功能:按一定格式輸出例子:a=123456789b=12/24Print format$(a,”0000000000”) 前面補0Print format$(a

10、,”#,#,#.00”) 分節(jié)與小數(shù)點Print format$(b,”%”) 輸出百分數(shù)Print format$(a,”-#”) 輸出負數(shù)Print format$(2345,”#E+5”) 輸出浮點數(shù)4、Cls清除命令格式:對象.Cls作用:清除對象內(nèi)容例子:Picture1.Cls 清除圖片框內(nèi)容Cls 清除窗體內(nèi)容4.3 程序的選擇結(jié)構(gòu)與多分支結(jié)構(gòu)一、選擇結(jié)構(gòu)Visual Basic的選擇結(jié)構(gòu)程序是應(yīng)用“行IF”語句和“塊IF”語句來實現(xiàn)的。1、行IF語句語句格式1:If 條件 Then Else 功能:判斷條件,為真則執(zhí)行語句體1,否則執(zhí)行語句體2。然后執(zhí)行下面的語句。語句格式2:

11、If 條件 Then 功能:判斷條件,為真則執(zhí)行語句體;否則執(zhí)行后面的語句。兩種語句格式的流程圖見下圖:Flase語句條件后續(xù)語句前一語句TrueTrue語句1條件語句2后續(xù)語句前一語句FlaseFlase例子:在窗體上設(shè)置三個命令按鈕,當點擊其中一個時,另兩個即失效。程序如下:Private Sub Form_Click()Command1.Enabled = True Command2.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command1_Click() If Command1.Enabled = True The

12、n Command2.Enabled = False: Command3.Enabled = FalseEnd SubPrivate Sub Command2_Click() If Command2.Enabled = True Then Command1.Enabled = False: Command3.Enabled = FalseEnd SubPrivate Sub Command3_Click() If Command3.Enabled = True Then Command1.Enabled = False: Command2.Enabled = FalseEnd Sub2、塊If

13、 語句(1)語句格式:If 條件 Then 語句塊1Else 語句塊2End If(2)功能:判斷條件,若條件為真,執(zhí)行語句塊1;條件為假,執(zhí)行語句塊2。即在兩個語句塊中選擇一個。程序流程見下圖:True語句1條件語句2后續(xù)語句前一語句Flase例子:設(shè)計一個程序,計算一元二次方程的實數(shù)根。Dim a As StringDim b As StringDim c As StringPrivate Sub Form_Load() Label2.FontSize = 10End SubPrivate Sub Command1_Click() a1 = InputBox$(輸入?yún)?shù)A的值) a2 =

14、InputBox$(輸入?yún)?shù)B的值) a3 = InputBox$(輸入?yún)?shù)C的值) a = Val(a1) b = Val(a2) c = Val(a3) q = b * b - 4 * a * c If a = 0 Then End Else If q 0 Then X1 = (-b + Sqr(q) / (2 * a) X2 = (-b - Sqr(q) / (2 * a) Label2.Caption = X1= + Str$(X1) + + X2= + Str$(X2) Else If q = 0 Then X1 = -b / (2 * a) X2 = X1 Label2.Capti

15、on = X1=X2= + Str$(X1) Else Label2.Caption = 無實數(shù)根! End If End If End IfEnd SubPrivate Sub Command2_Click() EndEnd Sub講授35分鐘:3、帶Elseif子句的If語句(1)語句格式If 條件1 Then 語句塊1Elseif 條件2 Then 語句塊2Elseif 條件3 Then 語句塊3 Else 語句塊nEnd If(2)語句功能條件k(k=1,2,3 )成立,執(zhí)行語句塊k(k=1,2,3 ),否則執(zhí)行語句塊n。程序執(zhí)行的流程見下圖:語句2條件2語句1后續(xù)語句前一語句前面的條

16、件均為假語句n條件1TrueTrue例子:設(shè)計一個程序,從鍵盤上輸入成績,統(tǒng)計60分以下,60-75,75-90,90分以上的學生數(shù),并計算及格與不及格的人數(shù)及平均分數(shù)。程序界面見下圖所示:程序代碼:Dim n, n1, n2, n3, n4 As IntegerDim A, T As SinglePrivate Sub Command1_Click()n = 0: n1 = 0: n2 = 0: n3 = 0: n4 = 0: A = 0: T = 0 msg$ = 輸入分數(shù)(-1結(jié)束) msgtitle$ = 輸入數(shù)據(jù)start: x = InputBox(msg$, msgtitle$)

17、 If x 100 Then GoTo finish Else T = T + x n = n + 1 If x 60 Then n1 = n1 + 1 ElseIf x 75 Then n2 = n2 + 1 ElseIf x = 60, 及格, 不及格) Text1.Text = yEnd Sub二、多分支結(jié)構(gòu)Visual Basic語言中,多分支結(jié)構(gòu)是通過情況語句實現(xiàn)的。1、情況語句的格式Select Case 測試表達式Case 表達式1語句塊1Case 表達式2語句塊2 Case 表達式n語句塊nCase Else語句塊n+1End Case2、語句執(zhí)行的說明(1)程序運行時會判斷哪

18、個“表達式”與“測試表達式”相符,若相符則執(zhí)行“表達式”后面的語句塊??梢?這種程序結(jié)構(gòu)與前面的帶Elseif子句的If語句類似.(2)有三種描述形式第一:可以是單值常量(數(shù)值或字符串) 例:輸入一個月份值,顯示該月的天數(shù)(不考慮閏年)。Dim Month As IntegerDim x As StringPrivate Sub Form_Load() Text1.FontSize = 18End SubPrivate Sub Command1_Click() Month = InputBox(輸入月份數(shù):) Select Case Month Case 1, 3, 5, 7, 8, 10, 12 x = 本月有31天。 Case 4, 6, 9, 11 x = 本月有30天。 Case 2 x = 本月有28天。 Case Else x = 輸入數(shù)值錯誤! End Select Text1.Text = xEnd SubPrivate Sub Command2_Click() EndEnd Sub第二:條件是一個用TO說明的數(shù)值范圍例:輸入一個考試分數(shù)(百分制),判斷該分數(shù)是優(yōu)秀(90-100),良好(80-90),中(70-80)及格(60-70),不及格(60以下)。Dim x As SingleDim a As Strin

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論