劉麗
摘要:程序的控制結(jié)構(gòu)是任何一門程序語言都要學(xué)習(xí)和掌握的內(nèi)容,作為一門面向?qū)ο笳Z言Visual Basic是全國計算機(jī)等級考試科目被納入教學(xué)必修課,從事教學(xué)多年,如何讓學(xué)生學(xué)好程序語言的控制結(jié)構(gòu),掌握編寫程序的技巧一直是教學(xué)過程中的需要思考的問題。本文集中在講解了三種結(jié)構(gòu)的基礎(chǔ)上,結(jié)合教學(xué)經(jīng)驗(yàn),自創(chuàng)了妙解三法,包括層次發(fā)、勾叉法和跑圈法,讓學(xué)生能很快理解和掌握VB的三種控制結(jié)構(gòu),并將解題思路運(yùn)用到二級考試當(dāng)中,還能為掌握其他面向?qū)ο笳Z言提供便捷的編程思路。
關(guān)鍵詞:面向?qū)ο?程序控制結(jié)構(gòu);教學(xué)方法
1 引言
Visual Basic是一門面向?qū)ο蟪绦蛟O(shè)計語言(OOP,Object Oriented Programming)。從任何標(biāo)準(zhǔn)來說,VB都是世界上使用人數(shù)最多的語言——不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個應(yīng)用程序[1]。作為一名有著多年使用經(jīng)驗(yàn)和教學(xué)經(jīng)驗(yàn)的教師,對Visual Basic有著豐富的經(jīng)驗(yàn)和體會,通常新接觸一門面向?qū)ο笳Z言,都一定會學(xué)習(xí)程序控制結(jié)構(gòu),而這些面向?qū)ο笳Z言無論其編程基礎(chǔ)內(nèi)容有多少不同,程序控制結(jié)構(gòu)都大致是相同和相通的,分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這三種結(jié)構(gòu)的組合和嵌套再形成更為復(fù)雜的程序結(jié)構(gòu)。如何真正理解和掌握程序控制結(jié)構(gòu)是一個重要的環(huán)節(jié)和難點(diǎn),通過研究和思考,總結(jié)和創(chuàng)發(fā)了妙解三法來學(xué)習(xí)和掌握程序的編寫和讀取。
2 ?程序三種控制結(jié)構(gòu)
面向?qū)ο笳Z言是從結(jié)構(gòu)語言發(fā)展而來的,所以同樣具備三種基本的控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)比較好理解,順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),也是最常用的程序結(jié)構(gòu),只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行【2】。而選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)較之就復(fù)雜和困難很多。
2.1 選擇結(jié)構(gòu)(條件結(jié)構(gòu))
顧名思義,選擇就是進(jìn)行決策再執(zhí)行操作。人們生活中時時刻刻在進(jìn)行選擇,如:如果天看起來要下雨,那么我們出門前就要帶上傘,否則就不用帶傘。設(shè)計計算機(jī)軟件的最終目的是幫助人們處理事情,那么在程序設(shè)計語言中,也同樣有這種表示“決策”的語句,那就是條件結(jié)構(gòu)。在Visual Basic 中,最主要的條件語句是If…Then…Else,這幾個詞正是英語當(dāng)中的“如果……那么……否則……”,實(shí)際上它表達(dá)的意思也就是這個。帶傘的決策過程可表達(dá)為:
If (天要下雨) Then
出門帶傘
Else
出門不必帶傘
End If
最后的End If表示整個決策過程結(jié)束。這實(shí)際上是對一段程序的自然語言描述,可以看到,它在主體框架上使用了計算機(jī)語言,而在細(xì)節(jié)上使用了自然語言,這樣的代碼叫做“偽碼”,它并不是真正的代碼。上面是一個簡單的決策,只包含一個判斷(天會不會下雨)。有時候,一個決策會包含很多判斷,比如當(dāng)一次考試的分?jǐn)?shù)(百分制)出來以后,根據(jù)分?jǐn)?shù)來判斷考得如何:
If (分?jǐn)?shù)是100) Then
考得太好了
ElseIf (分?jǐn)?shù)高于85) Then
優(yōu)秀
ElseIf (分?jǐn)?shù)高于60) Then
及格
Else
不及格
End If
很顯然,這里的ElseIf就是把另外一個If語句接在前面的Else語句后面,也就是在第一個決策后面再跟上一個決策,這種連接可以是無限的。VB的選擇結(jié)構(gòu)還有Selec......end Select分支結(jié)構(gòu),無論決策結(jié)構(gòu)是什么樣的,程序運(yùn)行的E-R圖是一樣的。
2.2 ?循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機(jī)特長的程序結(jié)構(gòu)【3】 。VB中有三種循環(huán)結(jié)構(gòu):計數(shù)循環(huán)(For—Next)、當(dāng)循環(huán)(While—Wend)和Do循環(huán)(Do—Loop),學(xué)習(xí)的要點(diǎn)是真正理解什么是循環(huán),循環(huán)的掌握關(guān)鍵是找到循環(huán)結(jié)構(gòu)的三要素:循環(huán)變量、循環(huán)條件和循環(huán)體。以For結(jié)構(gòu)為例,該小程序的循環(huán)變量是X,循環(huán)條件是1 to 5 step 1,循環(huán)體是sum = sum + x ,分析該程序就是滿足條件的話,循環(huán)體重復(fù)執(zhí)行5次。
For x=1 to 5 Step 1
sum = sum + x
Next x
3. ? 層次法
無論是選擇還是循環(huán)如果只是單一的一種或一層結(jié)構(gòu)都是比較好理解和掌握的,但往往的情況確實(shí)嵌套的出現(xiàn)或者組合使用,這個時候能清晰程序結(jié)構(gòu)和層次是尤為重要的。層次法就是用于判斷和清晰程序結(jié)構(gòu)時使用的,層次法的口訣為:由內(nèi)向外畫括號,由上向下讀程序。由圖4所示,以條件嵌套為例,首先找到程序中最里一個層次IF(選擇和循環(huán)都是如此),并用括號將離它最近一個結(jié)束end if 于之關(guān)聯(lián),往外推找到第二個IF和endif畫括號,以此類推時候,再由上往下讀取程序,即可清晰判斷出本程序的程序結(jié)構(gòu)。
4. ?勾叉法
勾叉法通常用于判斷選擇結(jié)構(gòu)的程序執(zhí)行輸出情況。觀察選擇結(jié)構(gòu)的E-R圖,總結(jié)出勾叉法,將程序輸入值進(jìn)行判斷,條件真假用勾叉標(biāo)注,選擇結(jié)構(gòu)只以第一個“勾”條件執(zhí)行其Then后面的程序塊,“X”處條件將不予以執(zhí)行,可以理解為條件結(jié)構(gòu)條件一判斷為真,執(zhí)行完真語句塊就跳出該條件結(jié)構(gòu)。
5. ?操場法
顧名思義,用跑操場的實(shí)例來理解和判斷程序結(jié)構(gòu),通常都是使用在循環(huán)和循環(huán)嵌套中。如圖2所示,循環(huán)可以理解為重復(fù)做某事,循環(huán)變量是包(N)、循環(huán)條件是只有兩只手(N<=2),循環(huán)體是每跑一圈那一個包(N=N+1),那么跑第一圈可以表示為如圖3所示;跑第二圈時循環(huán)變量N為1,判斷后條件為真,跑第三圈,執(zhí)行循環(huán)體,循環(huán)變量N變?yōu)?;第三圈循環(huán)變量為2,判斷條件為假,不執(zhí)行循環(huán)體。無論是哪種循環(huán),只要能明確程序循環(huán)三要素,理解起來都不困難,結(jié)合跑圈法和層次法,讀寫程序結(jié)構(gòu)都變得很便捷了,
6. ?妙解三法綜合示例
該程序是一個結(jié)合了三種程序結(jié)構(gòu),并且有循環(huán)嵌套和多條件判斷的小程序,如圖所示,使用妙解三法即可輕松讀懂程序結(jié)構(gòu)。
7. ?結(jié)束語
妙解三法可以幫助快速有效的理清程序脈絡(luò),掌握好該程序語言的控制結(jié)構(gòu),并且是萬變不離其宗的,只要勤加練習(xí),編寫出復(fù)雜的控制結(jié)構(gòu)程序只是一個時間問題,目前運(yùn)用在教學(xué)中效果還是很明顯的。妙解三法還可能存在一些小瑕疵,會在今后予以完善。
參考文獻(xiàn):
[1]http://baike.baidu.com/item/Visual+Basic?from_id=6044&type=syn&fromtitle=VB&fr=aladdin
[2] http://baike.baidu.com/view/552878.htm
[3] http://baike.baidu.com/view/552876.htm
[4]聶鈺楨.全國計算機(jī)等級考試教程二級VB【M】.人民郵電出版社,2013