閆俊輝
(運(yùn)城學(xué)院數(shù)學(xué)與信息技術(shù)學(xué)院,運(yùn)城 044000)
《VB 程序設(shè)計(jì)》課程擺脫了其他高級語言枯燥的交互模式,增加了對象化設(shè)計(jì)模式,通過在桌面進(jìn)行窗體設(shè)計(jì)后來編寫程序,大大提高了學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣,是很多高校文史經(jīng)管類各專業(yè)計(jì)算機(jī)通識教育課的重要組成部分。通過學(xué)習(xí)《VB 程序設(shè)計(jì)》不僅可以鍛煉學(xué)生的邏輯思維能力,還能提高學(xué)生利用所學(xué)知識解決實(shí)際問題的能力。
在《VB 程序設(shè)計(jì)》課程的學(xué)習(xí)中,由于涉及很多算法、數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計(jì)方法,因此,許多學(xué)生學(xué)起來較吃力,難度較大。其中算法是非常重要的組成部分。而算法中如何使用循環(huán)結(jié)構(gòu),使用那一種循環(huán)結(jié)構(gòu)則是許多學(xué)生較難掌握的。
在《VB 程序設(shè)計(jì)》課程上課的過程中,如何讓學(xué)生更好地理解循環(huán)結(jié)構(gòu)的思路,掌握循環(huán)方法的應(yīng)用,成了我們講解循環(huán)結(jié)構(gòu)的重中之重。只有深入淺出,才能讓學(xué)生在學(xué)習(xí)循環(huán)結(jié)構(gòu)時(shí)碰到對算法設(shè)計(jì)、語句使用等各種問題得以順利解決。
VB 程序設(shè)計(jì)語言中循環(huán)結(jié)構(gòu)的方法較多,大部分教師都會在第一課,利用數(shù)字累加和“S=1+2+3+…+100”來引入此結(jié)構(gòu)。還會采用非常適合計(jì)算累加的最簡潔的算法語句“For…Next”作為第一種循環(huán)結(jié)構(gòu)來講解,同時(shí)講述“For…Next”的語句所使用的語法和規(guī)則。因?yàn)榇苏Z句學(xué)生更容易理解,更容易完成程序編寫。
正是因?yàn)榈谝淮握n的講解,會讓學(xué)生對“For…Next”有著一定的依賴性,只要碰到使用循環(huán)結(jié)構(gòu),首先想到此結(jié)構(gòu),而忽略了循環(huán)中的其他方法的使用,造成使用不當(dāng)。實(shí)際應(yīng)用中,“For…Next”語句內(nèi)涵豐富,注意條件較多,如果沒有深度理解,容易造成各種錯(cuò)誤[1]。
因此,教師可以改變一下講解循環(huán)語句的順序,按照“While…Wend、Do While…loop、Do loop…While、Do Until…loop、Do loop…Until、For…Next”六種循環(huán)語句的先后順序依次講解,來提高教學(xué)效果。
第一類:“當(dāng)型”循環(huán),“While…Wend、Do While…loop、Do loop…While”
首先分析數(shù)字累加和“S=1+2+3+…+100”的算法(如圖1),使學(xué)生理解循環(huán)結(jié)構(gòu)的四個(gè)組成部分:①初始化:給循環(huán)變量和其他變量賦初值;②循環(huán)體:要重復(fù)執(zhí)行的操作;③修正部分:修改循環(huán)變量的值,為循環(huán)的下一次重復(fù)做準(zhǔn)備;④檢查部分:測試循環(huán)條件,判斷循環(huán)是否還要重復(fù)[2](表1)。
圖1
表1
同時(shí)利用第一類“當(dāng)型”循環(huán)去講解VB 中循環(huán)結(jié)構(gòu)中代碼的詳細(xì)編寫過程,把代碼和循環(huán)中的四部分(初始變量如何賦值、循環(huán)條件判斷、循環(huán)體執(zhí)行、循環(huán)變量改變)一一對應(yīng)。三種“當(dāng)型”循環(huán)代碼如A、B、C方法所示。
然后再通過:奇數(shù)和偶數(shù)的累加和(“S=1+3+5+…+99”和“S=2+4+6+…+100”)等類似例子,加以鞏固練習(xí),讓學(xué)生掌握循環(huán)條件的設(shè)置和循環(huán)體的構(gòu)建,以及“當(dāng)型”循環(huán)的使用方法。
對于“當(dāng)型”循環(huán),While 子句的作用是:當(dāng)指定的條件表達(dá)式為真時(shí)繼續(xù)執(zhí)行循環(huán)體,當(dāng)條件表達(dá)式為假時(shí)不再執(zhí)行循環(huán),如A、B 格式,是在循環(huán)體的入口處檢查指定的條件是否滿足,稱為“前測試”當(dāng)型循環(huán);C格式是在循環(huán)體的結(jié)束處檢查指定的條件是否為真,稱為“后測試”當(dāng)型循環(huán),因此使用這種結(jié)構(gòu),循環(huán)體至少要運(yùn)行一次。
第二類:“直到型循環(huán)”,“Do Until…loop、Do loop…Until”
通過“S=1+2+3+…+100”累加和的變式,用“直到型”循環(huán)“求1+2+3+…+100”的和[3]。通過分析循環(huán)條件和循環(huán)體。由于“直到型”語句的條件判斷剛好與“當(dāng)型”循環(huán)的判斷相反,因此得出判斷條件也是相反的,即“>100”,循環(huán)體沒有發(fā)生變化,可以得到兩種結(jié)構(gòu)代碼如方法1、2。
對于“直到型”循環(huán),Until 子句的作用是:當(dāng)指定的條件表達(dá)式為真時(shí)就終止循環(huán)的執(zhí)行,這是與While的最大區(qū)別。同樣也分為兩類:一類是“前測試”循環(huán),即在循環(huán)開始時(shí)檢查指定的條件是否滿足,如圖3;另一類是“后測試”循環(huán),即在循環(huán)體結(jié)束處測試條件,如圖2。這兩類的區(qū)別是:圖2 是無條件執(zhí)行一次循環(huán)體,然后再測試條件;而圖3 中如果指定條件滿足時(shí)則一次也不執(zhí)行循環(huán)體,即退出循環(huán)。
(2)培養(yǎng)過程不利于高技能人才的培養(yǎng)。高職教育注重理論夠用、實(shí)用,以學(xué)生為中心進(jìn)行教學(xué)。當(dāng)前很多專業(yè)課程的教學(xué)實(shí)施過程過于傳統(tǒng)化,學(xué)生實(shí)訓(xùn)操作時(shí)間不足。沒有將崗位的素質(zhì)要求融入課程,不利于高技能人才的職業(yè)能力培養(yǎng)。
圖2
圖3
由此我們可以得到看出,判斷一個(gè)循環(huán)結(jié)構(gòu)是“當(dāng)型”還是“直到型”,與是否執(zhí)行了一次循環(huán)體無關(guān),而是以跳出循環(huán)體的方式來確定,即:以“是”來脫離循環(huán)體的稱為“直到型”循環(huán),以“否”來脫離循環(huán)體為“當(dāng)型”循環(huán)。
通過相關(guān)例子,讓學(xué)生學(xué)會分析初始條件和循環(huán)體的構(gòu)建,學(xué)會如何選擇合適的“Do…loop”語句來實(shí)現(xiàn)循環(huán)。
第三類:“計(jì)數(shù)型循環(huán)”,“For…Next”
通過對“Do…loop”結(jié)構(gòu)的學(xué)習(xí),學(xué)生已經(jīng)對循環(huán)的每個(gè)組成部分有了一定的了解,這時(shí)在講解計(jì)數(shù)型循環(huán),就可以把教學(xué)重點(diǎn)放在“For…Next”結(jié)構(gòu)中較為復(fù)雜的語法上了。
我們還是用數(shù)字累加和“S=1+2+3+…+100”作為案例,計(jì)數(shù)型循環(huán)的基本結(jié)構(gòu)如下:
For 循環(huán)的格式:
For 循環(huán)變量=初值To 終值[Step 步長]
Next[循環(huán)變量]
注意:
①當(dāng)步長>0 時(shí),循環(huán)執(zhí)行的條件:循環(huán)變量<=終值
②當(dāng)步長<0 時(shí),循環(huán)執(zhí)行的條件:循環(huán)變量>=終值
強(qiáng)行退出For 循環(huán),請使用Exit For
通過基本格式了解計(jì)數(shù)型循環(huán)的詳細(xì)執(zhí)行過程(與“Do…loop”語句來實(shí)現(xiàn)循環(huán)的過程相同)。然后進(jìn)行比較,讓學(xué)生知道在For 循環(huán)中,循環(huán)變量初值、終值的設(shè)定及類型選擇、步長的正負(fù)值給條件判斷帶來什么影響,以及循環(huán)次數(shù)的判斷等不同之處,從而得到代碼全過程如下。
同時(shí)還要強(qiáng)調(diào)學(xué)生注意以下幾點(diǎn):①For…Next 語句成對出現(xiàn),循環(huán)變量名必須保持一致;②循環(huán)變量是數(shù)值型變量;③步長值可正可負(fù),當(dāng)步長為1 時(shí),Step語句可省略;④初值、終值和步長值可以是常量,也可以是變量和表達(dá)式。從而得知For…Next 語句是一種非常適合已知條件的“當(dāng)型計(jì)數(shù)”循環(huán)[4]。
通過對三類循環(huán)結(jié)構(gòu)的對比講解,學(xué)生基本掌握了各類結(jié)構(gòu)的適用范圍和語句中的注意事項(xiàng)。學(xué)生就可在編程時(shí)根據(jù)條件不同來選擇不同循環(huán)結(jié)構(gòu)來解決實(shí)際問題了。
VB 程序設(shè)計(jì)中三種基本結(jié)構(gòu)的流程,是符合人們的數(shù)學(xué)解題時(shí)的邏輯思維,容易理解掌握。只有循環(huán)結(jié)構(gòu)“是在滿足某種條件下的語句重復(fù)執(zhí)行”,而不是簡單意義下的復(fù)制,是會造成內(nèi)部結(jié)構(gòu)有規(guī)律的更新。如果直接讓學(xué)生進(jìn)行循環(huán)結(jié)構(gòu)的代碼編寫,會有一定難度,很多學(xué)生無法直接完成。因此,教師除了講解三類結(jié)構(gòu)的基本規(guī)則外,可以多采取增加閱讀題和填空題的形式,和學(xué)生一起分析程序的執(zhí)行過程。包括程序中變量的變化情況以及最后的執(zhí)行結(jié)果,從而讓學(xué)生更深入了解循環(huán)結(jié)構(gòu)的執(zhí)行過程。以此來提高學(xué)生的邏輯思維、編程技巧和解決實(shí)際問題的能力[3]。