楊松清
(懷化工業學校,湖南 懷化418000)
51單片機的應用非常廣泛,電子、通信、自動控制、汽車、航空、娛樂等等均涉及到,就業前景好;因而學習者逐年加增。在許多中專、職高、大專、本科等層次的學?;驅W院開設了單片機這門課程。但是有些學校沒有開設C語言課程;還有些是社會愛好者或者非專業愛好者,因而造成了他們對其理解存在很大困難。然而,雙重循環語句本身較為復雜,許多人雖然能夠應用這條語句,但是對其基本原理無法正確理解。當遇到精確的程序時,則無從下手。所以,正確理解程序的內在運行是基礎中的基礎。
雙重循環語句,在單片機C語言編程或其它C語言類編程中是比較常見的,也是相當重要的語句。雙重循環是一個循環的循環體內包含另一個循環(內循環)。當然,內循環的循環體內也可以包含循環構成多重循環,但本文對多重循環不進行分析,但可以按雙重循環的思路進行分析。
雙重循環可由while、do—while、for三種循環結構進行互相嵌套實現。本文只對for循環結構進行分析。其語句格式如下:
for(循環變量初值;循環條件;修改循環變量)

for語句循環的執行過程:
①先執行第一個表達式,給循環變量賦初值,通常這是一個賦值表達式。
②利用第二個表達式判斷循環條件是否滿足,通常是關系表達式或邏輯表達式,若其值為“真”(非0),則執行循環體“語句組”一次,再執行下面的第③步;若為假(為0),則轉到第⑤步,結束循環。
③計算第三個表達式,修改循環控制變量,一般也是賦值語句。
④跳到上面的第②步,繼續執行。
⑤循環結束,執行for語句下面的貌一個語句。
這只是一個循環結構,沒有雙重循環,當要做到雙循環,只要往循環體中嵌
For循環語句執行圖
套一個循環結構即可。那么怎么套?那我們看下面的雙重循環結構的表達式組成。
for(循環變量初值;循環條件;修改循環變量)

雙重循環的每一個循環(內或外循環)的執行步驟與上述圖中相同,其原理也是一樣。只是,先把內循環執行完了之后,再去執行外循環,如此循環,直到最后跳出循環為止。
下面是一段雙重循環程序。

此程序大家都知道是循環了i×255次,教師上單片機課時就會說,這是一個雙重循環,先執行內循環,再執行外循環,總共執行了i×255,每次調用循環雙重就可以了。書本也是這么寫,看似不錯,但是對于一個中職學生或者對C語言初學者來說,恐怕沒這么順利了。據了解,有部分大學生剛開始時也有些迷惑,更何況是中職類學生。他們就會問為什么會是這樣?大家回答這樣的問題,較多會趨向這樣說:先執行內循環,再執行外循環,總共執行了i×255,其中有一個是空語句。學生們仍不懂時,又不好意思再次問老師,于是就去查書,結果書本上都是這樣寫的,最終還是無法透徹地理解它,甚至沒有信心去弄懂它了。最終,還是只知道是這么用,不知其理。
既然存在上述問題,我們總應拿出解決方案來。從上文中雙重循環的原理我們就會發現,其實,我們的課本,編程者是站在一個對C語言相當熟練或有一定功底的一個角度進行編寫的。然而,那些中職學生是在C語言上是零基礎的,再加上,大多數是初中畢業生,本身的知識面還不夠廣、理解能力、自學能力等等因素造成他們對單片機這門學科學習起來較難。
那么怎么解決雙重循環這個問題?其實,從原理上講,答案就很明顯了。只要我們寫清楚、寫詳細問題就解決了??聪旅嫘薷暮蟮某绦颍?/p>

從這段程序可以很明顯的看出,是按文中的基本語句格式進行編寫的。不難看出,先執行for(j=0;j<255;j++){;}完之后再執行for(k=0;k
總之,基于中職學生的特殊性,在編寫單片機相關教材或教學中的編程語言應盡量做到詳細,有時還要把細節的東西單獨進行分析或講解。切記為了精煉程序而省略部分程序或某些字符等等,因為在教學中發現初學者一開始只知道其結論和運用,但其原理能說得出來的人不多,更何況是知識面還不廣、理解能力相對較薄弱、信心不是很足的中職學生。建議,在今后的式作中盡量做到細化、讓讀者、學生能夠輕松地學會、真正地學好它。
[1]李亞寧.C語言中計數循環語句幾種形式的處理方法[J].科技資訊,2007,(10).
[2]鄭小樂.C語言中循環語句的分析[J].硅谷,2010,(3).