摘要:循環結構是算法中的重要內容,也是最易混淆的結構。學習的關鍵是掌握循環結構的最基本類型和結構形式。
關鍵詞:算法 循環結構
算法是計算機理論和技術的核心,也是數學的最基本的內容之一。隨著現代信息技術飛速發展,算法在科學技術、社會發展中發揮著越來越大的作用,算法的基本知識、基本思想、基本方法日益融入社會生活的方方面面,成為現代人應具備的一種基本素養。算法作為高中數學必修內容的一部分,反映了數學與其他學科知識之間的廣泛聯系,反映了現代社會人們對數學的重視。算法在數學中的地位得以提高,算法進入中學數學成為時代的要求。
算法初步是中學數學的新增內容,大部分數學教師初步接觸這部分內容,計算機基礎薄弱,沒有程序設計基礎,對新知識不易理解。算法是廣大數學教師教學中普遍感到比較困難的一章,特別是循環結構,是廣大師生學習中感到最困難的地方,也是最容易出錯的地方。下面以我教學中的體會談談算法學習中的幾個容易出錯的地方。
一、認識上錯誤
在算法初步第一章第二節《流程圖》中我們學習了兩種循環結構:當型循環結構和直到型循環結構。
當型循環結構:先判斷所給條件P是否成立,若P成立,則執行A,再判斷條件p是否成立,若P仍成立,則又執行A,如此反復,直到某一次條件P不成立時為止。如圖(3)。
直到型循環結構:先執行A即循環體,再判斷所給條件P是否成立,若P不成立,則再執行循環體,如此反復,直到P成立,該循環過程結束。如圖(2)。
這兩種循環結構的相同點是:都對一定條件進行判斷,都有重復執行的循環體。
它們的區別是:1.判斷與執行循環體的先后順序不同。2.控制循環條件的不同。
如果判斷與執行循環體的先后順序改變就由當型循環變成直到循環或由直到型轉變成當型循環。
如果只改變判斷條件,則循環結構就會由上兩種形式分別轉變成如下形式:
形式①:先判斷所給條件P是否成立,若P不成立,則執行A,再判斷條件P是否成立,若P仍不成立,則又執行A,如此反復,直到某一次條件P成立時為止。如圖(4)。
形式②:先執行A即循環體,再判斷所給條件P是否成立,若P成立,則再執行循環體,如此反復,直到P不成立,該循環過程結束。如圖(1)。
許多教師認為這兩種結構既不是當型也不是直到型循環,從而把它否定,這種看法是片面的。雖然上述兩種結構的形式不是教材中當型循環和直到型循環,但在執行后同當型、直到型一樣能得到正確結果。由前面學習的算法概念,一個算法只要在執行有限個步驟后結束,并能得到正確的結果,就是正確的算法。就此我向計算機專業教師請教,并查閱了大量資料。在VB語言中循環語句分兩大類型:一類是計數循環語句,指的是循環次數已知的循環結構,即我們教材中“For…”循環結構。另一類是條件型循環語句。條件型語句分兩種格式:一種是“Do…While(until)…”語句。其流程圖如下:

圖(2)即教材中的直型循環,圖(3)即教材中的當型循環,圖(1)、圖(4)這兩種教材中沒有介紹。不能因為我們教材中沒有就說它是錯誤的。在高考題中2007年山東高考試題考查算法流程圖的題目就是圖(4)類型,其他各種資料的循環結構中也常見這兩種類型,我們要改變認識上的錯誤。這兩種類型的循環結構也是正確的。
二、控制循環易錯
在循環結構教學中要加深學生對循環的形成與控制的理解。在循環結構中控制循環有以下幾個環節:變量的初始值、計數變量、累積變量、判斷條件。其中一個環節出錯將會影響循環的正常進行。設計時容易出現下列錯誤。
(一)學生容易遺漏計數變量或累積變量
在循環結構學習中,如何能夠有效地保證循環,關鍵要設計累積變量,記數變量。在表示時利用計算機特有的替代方式,如:1←1+1,S←S+I,T←TxN等等。開始學習時學生理解很困難,在教學中我們可從數列的迭代、遞推角度引導學生理解,再讓學生明白計算機的替代功能,理解1←1+1,S←S+I的實際意義。通過簡單的例子來弄清楚,最后再解決復雜的問題。對于累積變量、計數變量,學生開始學習時易遺漏,造成不循環、死循環。
(二)計數變量或累積變量的設置易錯
計數變量、累積變量的初始值,學生設置的時候容易遺漏,造成不能正確循環,所以在設計算法時要準確設置初始值。
(三)在循環開始和結束控制上易錯
對循環的開始與結束的控制,學生設計時易遺漏一些運算數值。
例如:求2+4+6+…+100的和時,個別學生所畫的流程圖如下圖(5),這種畫法是錯誤的。流程圖中的計算是從4開始漏掉了數字2。要控制從2開始,應賦值0或調整1←1+2與S←S+I這兩個運算步驟的先后順序。
(四)判斷條件易錯
不同的結構形式判斷條件不同。解決的關鍵是看清:是在滿足條件下執行循環,還是在需要的條件下結束循環。
(五)輸出結果易錯
例:求使不等式2+6+10+…+(4n-2)<2008成立的最大正整數n?流程圖如圖(6)輸出。結果很多同學認為是n,這是錯誤的,在本題中最后一次加法不是使得S<2008,而是和s已經大于2008,故不是最后一次的n,而是它前面的一個n,大多數人認為應該是n-1,也不對,因為計算機最后保存的是最后一次加法中的n加上1,所以正確結果是n-2。要確定輸出結果關鍵看循環運算的最后一次循環。
我們在學習循環結構時,要注意抓住循環結構的關鍵點:確定循環變量和初始值、循環體、循環的終止條件,保證每個環節正確才能不出錯誤,才能寫出正確的流程圖和算法語句,保證循環正常進行。
