楊松清
(懷化工業(yè)學校,湖南 懷化418000)
51單片機的應用非常廣泛,電子、通信、自動控制、汽車、航空、娛樂等等均涉及到,就業(yè)前景好;因而學習者逐年加增。在許多中專、職高、大專、本科等層次的學?;驅W院開設了單片機這門課程。但是有些學校沒有開設C語言課程;還有些是社會愛好者或者非專業(yè)愛好者,因而造成了他們對其理解存在很大困難。然而,雙重循環(huán)語句本身較為復雜,許多人雖然能夠應用這條語句,但是對其基本原理無法正確理解。當遇到精確的程序時,則無從下手。所以,正確理解程序的內在運行是基礎中的基礎。
雙重循環(huán)語句,在單片機C語言編程或其它C語言類編程中是比較常見的,也是相當重要的語句。雙重循環(huán)是一個循環(huán)的循環(huán)體內包含另一個循環(huán)(內循環(huán))。當然,內循環(huán)的循環(huán)體內也可以包含循環(huán)構成多重循環(huán),但本文對多重循環(huán)不進行分析,但可以按雙重循環(huán)的思路進行分析。
雙重循環(huán)可由while、do—while、for三種循環(huán)結構進行互相嵌套實現(xiàn)。本文只對for循環(huán)結構進行分析。其語句格式如下:
for(循環(huán)變量初值;循環(huán)條件;修改循環(huán)變量)
for語句循環(huán)的執(zhí)行過程:
①先執(zhí)行第一個表達式,給循環(huán)變量賦初值,通常這是一個賦值表達式。
②利用第二個表達式判斷循環(huán)條件是否滿足,通常是關系表達式或邏輯表達式,若其值為“真”(非0),則執(zhí)行循環(huán)體“語句組”一次,再執(zhí)行下面的第③步;若為假(為0),則轉到第⑤步,結束循環(huán)。
③計算第三個表達式,修改循環(huán)控制變量,一般也是賦值語句。
④跳到上面的第②步,繼續(xù)執(zhí)行。
⑤循環(huán)結束,執(zhí)行for語句下面的貌一個語句。
這只是一個循環(huán)結構,沒有雙重循環(huán),當要做到雙循環(huán),只要往循環(huán)體中嵌
For循環(huán)語句執(zhí)行圖
套一個循環(huán)結構即可。那么怎么套?那我們看下面的雙重循環(huán)結構的表達式組成。
for(循環(huán)變量初值;循環(huán)條件;修改循環(huán)變量)
雙重循環(huán)的每一個循環(huán)(內或外循環(huán))的執(zhí)行步驟與上述圖中相同,其原理也是一樣。只是,先把內循環(huán)執(zhí)行完了之后,再去執(zhí)行外循環(huán),如此循環(huán),直到最后跳出循環(huán)為止。
下面是一段雙重循環(huán)程序。
此程序大家都知道是循環(huán)了i×255次,教師上單片機課時就會說,這是一個雙重循環(huán),先執(zhí)行內循環(huán),再執(zhí)行外循環(huán),總共執(zhí)行了i×255,每次調用循環(huán)雙重就可以了。書本也是這么寫,看似不錯,但是對于一個中職學生或者對C語言初學者來說,恐怕沒這么順利了。據(jù)了解,有部分大學生剛開始時也有些迷惑,更何況是中職類學生。他們就會問為什么會是這樣?大家回答這樣的問題,較多會趨向這樣說:先執(zhí)行內循環(huán),再執(zhí)行外循環(huán),總共執(zhí)行了i×255,其中有一個是空語句。學生們仍不懂時,又不好意思再次問老師,于是就去查書,結果書本上都是這樣寫的,最終還是無法透徹地理解它,甚至沒有信心去弄懂它了。最終,還是只知道是這么用,不知其理。
既然存在上述問題,我們總應拿出解決方案來。從上文中雙重循環(huán)的原理我們就會發(fā)現(xiàn),其實,我們的課本,編程者是站在一個對C語言相當熟練或有一定功底的一個角度進行編寫的。然而,那些中職學生是在C語言上是零基礎的,再加上,大多數(shù)是初中畢業(yè)生,本身的知識面還不夠廣、理解能力、自學能力等等因素造成他們對單片機這門學科學習起來較難。
那么怎么解決雙重循環(huán)這個問題?其實,從原理上講,答案就很明顯了。只要我們寫清楚、寫詳細問題就解決了??聪旅嫘薷暮蟮某绦颍?/p>
從這段程序可以很明顯的看出,是按文中的基本語句格式進行編寫的。不難看出,先執(zhí)行for(j=0;j<255;j++){;}完之后再執(zhí)行for(k=0;k
總之,基于中職學生的特殊性,在編寫單片機相關教材或教學中的編程語言應盡量做到詳細,有時還要把細節(jié)的東西單獨進行分析或講解。切記為了精煉程序而省略部分程序或某些字符等等,因為在教學中發(fā)現(xiàn)初學者一開始只知道其結論和運用,但其原理能說得出來的人不多,更何況是知識面還不廣、理解能力相對較薄弱、信心不是很足的中職學生。建議,在今后的式作中盡量做到細化、讓讀者、學生能夠輕松地學會、真正地學好它。
[1]李亞寧.C語言中計數(shù)循環(huán)語句幾種形式的處理方法[J].科技資訊,2007,(10).
[2]鄭小樂.C語言中循環(huán)語句的分析[J].硅谷,2010,(3).