嚴貴林
(湖南省常德市湘北職業中專學校 湖南常德 415300)
循環就是在一定條件下重復某操作。中職C語言的循環語法比較復雜,學生不易理解和把握。要想保證C語言教學的效果,教師就需要讓學生牢牢把握C語言的三種循環結構,突破學習的重點與難點。
第一種是while循環結構:while(表達式){語句序列}。
第二種是do…while循環結構:do{語句序列} while(表達式)。
第三種是for循環結構:for(表達式1;表達式2;表達式3){語句序列}。
第一,while循環結構。如果表達式值為“真”(非零即為真),程序會執行后面語句序列內容;然后,第二次判斷該表達式的值,如果表達式的值為“真”,程序會繼續執行此執行語句塊里面的內容。如此一直重復(循環),直到條件表達式的值為“假”(零),循環結束,然后,執行程序中的下一條語句。
第二,do…while循環結構。在此種循環結構當中,while的后面必須使用分號,無論while(表達式)的表達式值是否為“真”,程序都會執行一次語句序列當中的內容。當第一次執行結束之后,程序會判斷該表達式的值是“真”還是“假”。若為“真”,則執行第二次語句序列;若值為“假”,便會執行程序中的下一條語句。
第三,for循環結構。在這個循環過程中,先執行表達式1(通常是初始化語句),之后,執行表達式2(通常是條件的判斷語句),判斷表達式2的值是否為“真”,若為“真”,便執行語言序列,最后,執行表達式3。在下次的循環中,先執行第二個表達式,判斷表達式2的值是否為“真”,若為“真”,便第二次執行語言序列,若為“假”,結束循環。
從整體分析上來說,while屬于先判斷再執行,do…while屬于先執行再判斷。與前兩種循環結構相比,for循環的語句表達更加緊湊。此種循環結構適宜應用在循環次數較為明確的條件下;while循環和do…while循環適合應用在明確循環結束的條件、循環次數很難判斷的情況下。
通過分析C語言的循環環節,我們可以發現,while屬于先判斷再執行,如果第1次的條件為假,那么,執行的次數便是0,也就是至少執行0次。同理,for循環結構的最少執行次數也為0。但是,do…while循環結構比較特殊,屬于先執行后判斷,因此,不論條件是真是假,都需要執行1次。因此,do…while循環結構的執行次數最少為1次[2]。
雖然while循環結構、do…while循環結構和for循環結構的格式不一樣,但是,三種循環結構也存在一些相同的特點,都可以用來設計循環結構程序。設計循環程序主要涉及以下3個關鍵因素:1.循環變量的賦初值;2.循環的條件;3.循環變量值的調整。循環語句能不能正確地執行,主要受循環條件的影響。而循環條件主要與循環入口的初始化工作有關,環環相扣。循環體當中設置哪幾種語句,應當具體問題具體分析,確保前后呼應,符合邏輯,還需要保證循環可以終止,結論的準確性有保障。在循環體的語句當中,我們必須設置能夠調整循環結束的語句,保證循環不會無休無止地進行下去,避免“死循環”。這是程序設計人員必須注意的問題。因此,為了確保循環的合理開展,我們必須要落實好循環的準備工作,在執行循環語句之前,合理設計循環的初始賦值[3]。
教師在課堂上可以對學生說:在正式上課之前,我們先來玩一個小游戲,看哪名同學可以在最短的時間里準確計算出1×2×3×……×10等于多少。因為這道題目涉及的數字比較多,計算的結果比較大,如果一步、一步地相乘計算,很容易出錯,所以,教師可以引導學生使用計算機解決這個問題,讓學生思考計算機在計算這道復雜的數學題時究竟是如何工作的,然后,順利引出t循環語句。這樣的教學活動把數學問題當作出發點,可以培養中職學生的數學計算思維,營造符合學生生活經驗的教學情境,提升他們利用計算機技術處理實際生活問題的能力與水平,增強他們的信息意識。
教師可以問學生:在計算1+2+3+4+……+100時,是否存在一些比較巧妙的計算公式呢?如果只能按順序一步、一步地計算這些數字之和,那么,每次相加的數是否存在規律呢?為了便于學生理解,教師可以定義這樣的循環條件,從1到100遍歷,然后累加,輸出結果。這道題比較簡單,學生很容易上手寫出循環:


教師可以對學生說:通過這道題目,我們不難發現for循環結構的使用方法。當然,我們還可以試著對該程序進行改寫,使用while循環達到計算的目的。誰能夠理解和循環相關的實例呢?學生以小組為單位展開互相討論和交流,紛紛闡述自己的觀點[4]。
學生可以參照教材上while語句的基本使用方法,利用while語句改寫程序,同時,結合自身的知識積累,積極地合作交流、探討,列舉循環的實例,如統計班里所有學生的平均成績等。
在上述教學活動中,教師通過向學生演示實例,歸納并總結循環結構的基本規律,帶領學生分析具體的問題。在自主探究環節,學生可以結合所學的內容展開自主創作,發揮他們的創意,列舉有關實例,深化自身對循環的理解和認識。
教師可以為學生設計如下3個例題:1.應用while循環輸出1到100之內的全部整數;2.使用do…while循環輸出1到100之內的全部奇數;3.應用for循環輸出1到100之內的全部偶數。教師可以利用數字化的資源,讓學生比較while循環、do…while循環及for循環結構,分析它們的表達式及執行環節的相同和不同點,幫助學生明晰三種循環結構的適用條件。教師還可以讓學生嘗試使用不同的方法解決相同類型的題目,發散思維,增強創新意識,促進學生綜合能力的發展[5]。
教師可以對學生說:若想在計算機當中輸出一個行數和列數均為3的正三角形,該怎樣實現?其實,這需要應用循環的嵌套,即在一個循環當中嵌套另一個完整的循環結構。然后,教師讓學生自主預習教材上的內容,了解嵌套的格式,再組織學生進行小組討論,引導他們動手實踐,最終在計算機屏幕上輸出一個行數和列數相同的正三角形。在學生討論期間,教師可以讓學生思考下列問題:1.程序應當設置多少個循環變量?各個循環變量之間存在哪些關系?2.闡述算法的基本步驟,用流程圖的形式呈現出來,然后轉變為算法。之后,教師可以安排學生在小組內展開交流和討論,分析問題,實際操作,探尋問題的解決方法。
教師的設疑與適度點撥引發了中職學生的高效思考,通過分組討論和合作學習,突破了比較復雜的問題。這樣的實踐活動可以讓學生從原本的感性認知上升為理性認知,可以深化他們對循環結構的認識和理解。
首先,深入探究。通過以上步驟,學生已經了解了循環結構的特點及實現方法,也已經有了一定的編寫循環語言的能力。因此,教師可以為學生設計幾個難度稍高的例子,引導學生展開深入探究。比如,輸入一個比3大的數n(n為整數),判斷n是不是素數,或列出1到100以內所有的素數。此種教學方式基于學生的認知水平,提高了練習的難度,既可以幫助學生鞏固課堂所學,又可以鍛煉他們的思維能力,加深他們對知識的印象[6]。
其次,總結和拓展。在中職計算機C語言教學中,循環結構是教學的重點與難點。在實際的教學活動中,教師可以借助游戲實現循環這一主題的導入,采取案例教學的方法,組織新課的教學活動,通過為學生展示比較簡單的實例,幫助學生理解while循環、do…while循環及for循環的基本內容,之后,將項目教學法與合作學習法結合,討論C語言學習的難點(循環嵌套),實現知識的鞏固,同時起到拔高的作用,提高學生對新知識的掌握程度,提高中職生的計算思維。最后,教師引導中職學生展開深入探究,并積極地總結、拓展,合理處理生活中的一些常見問題,發散學生的思維,確保學生對各個知識點能夠融會貫通,真正達到學以致用的目標[7]。
理論知識的學習效果必須要由具體的題目來檢驗。不同類型的題目有最適宜的循環結構。這需要學生仔細判斷(如以下兩道題目)。
題目1 在計算機中隨意輸入15個數,計算他們的和是多少?
通過分析,我們可以了解到這道題目的循環次數較為明確,因此,優先選用for循環結構。具體編程內容如下:

題目2 在計算機中隨意輸入幾個數,直至遇到2為止,求這幾個數的和是多少?
因為該循環的次數無法確定,所以,排除for循環。while循環屬于先判斷后執行,do…while循環屬于先執行后判斷。如果使用do…while循環,且第一個數是2,那么,這個2會被計算到里面,不符合題意。因此,此道題適宜采取while循環[8]。編程內容如下:

綜上所述,中職計算機C語言教學中的循環結構是學生必須掌握的內容。教師可以充分參考上述優化教學的方法,提升學習的趣味性,降低學習難度,循序漸進地提升學生的學習能力,確保C語言教學的有效性。