閆俊輝
(運城學院數學與信息技術學院,運城 044000)
《VB 程序設計》課程擺脫了其他高級語言枯燥的交互模式,增加了對象化設計模式,通過在桌面進行窗體設計后來編寫程序,大大提高了學生學習程序設計的興趣,是很多高校文史經管類各專業計算機通識教育課的重要組成部分。通過學習《VB 程序設計》不僅可以鍛煉學生的邏輯思維能力,還能提高學生利用所學知識解決實際問題的能力。
在《VB 程序設計》課程的學習中,由于涉及很多算法、數據結構和程序設計方法,因此,許多學生學起來較吃力,難度較大。其中算法是非常重要的組成部分。而算法中如何使用循環結構,使用那一種循環結構則是許多學生較難掌握的。
在《VB 程序設計》課程上課的過程中,如何讓學生更好地理解循環結構的思路,掌握循環方法的應用,成了我們講解循環結構的重中之重。只有深入淺出,才能讓學生在學習循環結構時碰到對算法設計、語句使用等各種問題得以順利解決。
VB 程序設計語言中循環結構的方法較多,大部分教師都會在第一課,利用數字累加和“S=1+2+3+…+100”來引入此結構。還會采用非常適合計算累加的最簡潔的算法語句“For…Next”作為第一種循環結構來講解,同時講述“For…Next”的語句所使用的語法和規則。因為此語句學生更容易理解,更容易完成程序編寫。
正是因為第一次課的講解,會讓學生對“For…Next”有著一定的依賴性,只要碰到使用循環結構,首先想到此結構,而忽略了循環中的其他方法的使用,造成使用不當。實際應用中,“For…Next”語句內涵豐富,注意條件較多,如果沒有深度理解,容易造成各種錯誤[1]。
因此,教師可以改變一下講解循環語句的順序,按照“While…Wend、Do While…loop、Do loop…While、Do Until…loop、Do loop…Until、For…Next”六種循環語句的先后順序依次講解,來提高教學效果。
第一類:“當型”循環,“While…Wend、Do While…loop、Do loop…While”
首先分析數字累加和“S=1+2+3+…+100”的算法(如圖1),使學生理解循環結構的四個組成部分:①初始化:給循環變量和其他變量賦初值;②循環體:要重復執行的操作;③修正部分:修改循環變量的值,為循環的下一次重復做準備;④檢查部分:測試循環條件,判斷循環是否還要重復[2](表1)。

圖1

表1
同時利用第一類“當型”循環去講解VB 中循環結構中代碼的詳細編寫過程,把代碼和循環中的四部分(初始變量如何賦值、循環條件判斷、循環體執行、循環變量改變)一一對應。三種“當型”循環代碼如A、B、C方法所示。


然后再通過:奇數和偶數的累加和(“S=1+3+5+…+99”和“S=2+4+6+…+100”)等類似例子,加以鞏固練習,讓學生掌握循環條件的設置和循環體的構建,以及“當型”循環的使用方法。
對于“當型”循環,While 子句的作用是:當指定的條件表達式為真時繼續執行循環體,當條件表達式為假時不再執行循環,如A、B 格式,是在循環體的入口處檢查指定的條件是否滿足,稱為“前測試”當型循環;C格式是在循環體的結束處檢查指定的條件是否為真,稱為“后測試”當型循環,因此使用這種結構,循環體至少要運行一次。
第二類:“直到型循環”,“Do Until…loop、Do loop…Until”
通過“S=1+2+3+…+100”累加和的變式,用“直到型”循環“求1+2+3+…+100”的和[3]。通過分析循環條件和循環體。由于“直到型”語句的條件判斷剛好與“當型”循環的判斷相反,因此得出判斷條件也是相反的,即“>100”,循環體沒有發生變化,可以得到兩種結構代碼如方法1、2。


對于“直到型”循環,Until 子句的作用是:當指定的條件表達式為真時就終止循環的執行,這是與While的最大區別。同樣也分為兩類:一類是“前測試”循環,即在循環開始時檢查指定的條件是否滿足,如圖3;另一類是“后測試”循環,即在循環體結束處測試條件,如圖2。這兩類的區別是:圖2 是無條件執行一次循環體,然后再測試條件;而圖3 中如果指定條件滿足時則一次也不執行循環體,即退出循環。
(2)培養過程不利于高技能人才的培養。高職教育注重理論夠用、實用,以學生為中心進行教學。當前很多專業課程的教學實施過程過于傳統化,學生實訓操作時間不足。沒有將崗位的素質要求融入課程,不利于高技能人才的職業能力培養。

圖2

圖3
由此我們可以得到看出,判斷一個循環結構是“當型”還是“直到型”,與是否執行了一次循環體無關,而是以跳出循環體的方式來確定,即:以“是”來脫離循環體的稱為“直到型”循環,以“否”來脫離循環體為“當型”循環。
通過相關例子,讓學生學會分析初始條件和循環體的構建,學會如何選擇合適的“Do…loop”語句來實現循環。
第三類:“計數型循環”,“For…Next”
通過對“Do…loop”結構的學習,學生已經對循環的每個組成部分有了一定的了解,這時在講解計數型循環,就可以把教學重點放在“For…Next”結構中較為復雜的語法上了。
我們還是用數字累加和“S=1+2+3+…+100”作為案例,計數型循環的基本結構如下:
For 循環的格式:
For 循環變量=初值To 終值[Step 步長]
Next[循環變量]
注意:
①當步長>0 時,循環執行的條件:循環變量<=終值
②當步長<0 時,循環執行的條件:循環變量>=終值
強行退出For 循環,請使用Exit For
通過基本格式了解計數型循環的詳細執行過程(與“Do…loop”語句來實現循環的過程相同)。然后進行比較,讓學生知道在For 循環中,循環變量初值、終值的設定及類型選擇、步長的正負值給條件判斷帶來什么影響,以及循環次數的判斷等不同之處,從而得到代碼全過程如下。

同時還要強調學生注意以下幾點:①For…Next 語句成對出現,循環變量名必須保持一致;②循環變量是數值型變量;③步長值可正可負,當步長為1 時,Step語句可省略;④初值、終值和步長值可以是常量,也可以是變量和表達式。從而得知For…Next 語句是一種非常適合已知條件的“當型計數”循環[4]。
通過對三類循環結構的對比講解,學生基本掌握了各類結構的適用范圍和語句中的注意事項。學生就可在編程時根據條件不同來選擇不同循環結構來解決實際問題了。
VB 程序設計中三種基本結構的流程,是符合人們的數學解題時的邏輯思維,容易理解掌握。只有循環結構“是在滿足某種條件下的語句重復執行”,而不是簡單意義下的復制,是會造成內部結構有規律的更新。如果直接讓學生進行循環結構的代碼編寫,會有一定難度,很多學生無法直接完成。因此,教師除了講解三類結構的基本規則外,可以多采取增加閱讀題和填空題的形式,和學生一起分析程序的執行過程。包括程序中變量的變化情況以及最后的執行結果,從而讓學生更深入了解循環結構的執行過程。以此來提高學生的邏輯思維、編程技巧和解決實際問題的能力[3]。