摘 要:循環(huán)結(jié)構(gòu)是C語言程序設(shè)計課程教學(xué)的重要內(nèi)容,包括循環(huán)語句、循環(huán)嵌套等等。本文簡述了在教學(xué)實踐中如何講解C語言循環(huán)結(jié)構(gòu)的經(jīng)驗和方法,并且總結(jié)了學(xué)生在學(xué)習過程中遇到的常見問題以及解決方法。
關(guān)鍵詞:C語言;教學(xué);循環(huán);嵌套
一、引言
在目前專業(yè)課的課時普遍削減的趨勢下,C語言教學(xué)的重點應(yīng)該在于如何利用有限的課時,讓學(xué)生迅速掌握C語言的基本語法和編程技法,并學(xué)以致用。學(xué)生前期學(xué)習了順序結(jié)構(gòu)和選擇結(jié)構(gòu)之后,具備了一些基本的編程能力,但是還不足以求解類似累加、累乘等一些需要做大量重復(fù)性操作的問題。C語言提供了循環(huán)結(jié)構(gòu),它是最重要的一個控制結(jié)構(gòu),專門用于完成重復(fù)性的操作。應(yīng)注意引導(dǎo)學(xué)生盡量把復(fù)雜的求解過程轉(zhuǎn)換為一些重復(fù)性的、易于理解的簡單操作,再采用循環(huán)結(jié)構(gòu)編寫程序。
二、while語句
C語言一共有3種循環(huán)語句:while語句、do-while語句和for語句。學(xué)習循環(huán)結(jié)構(gòu)時應(yīng)該提醒學(xué)生注意,一定要掌握它的一些要素,即循環(huán)體、循環(huán)初值、循環(huán)條件和循環(huán)次數(shù)。while語句屬于“當型”循環(huán),當循環(huán)條件成立時,就不斷地執(zhí)行循環(huán)體。它的一般形式為:
while(表達式)
循環(huán)體
執(zhí)行流程是,先計算表達式即循環(huán)條件,如果為真則執(zhí)行循環(huán)體,周而復(fù)始;如果表達式的值為假,則退出此循環(huán)結(jié)構(gòu)。舉例求1+2+3+4+5+…+100,部分程序代碼如下:
int sum=0,i=1;
while(ilt;=100)" /*使用while語句,當ilt;=100時,重復(fù)執(zhí)行如下語句*/
{sum=sum+i;" /*累加*/
i++;" /*當前相加的數(shù)+1*/
}
printf(\"sum is %d\n\",sum);
引導(dǎo)學(xué)生在程序中分析循環(huán)體、循環(huán)初值、循環(huán)條件和循環(huán)次數(shù)這幾個要素,提醒他們在循環(huán)語句中一定要設(shè)置使循環(huán)最終結(jié)束的語句,避免出現(xiàn)死循環(huán)(即永不停止地循環(huán))。
三、do-while語句
do-while語句屬于“直到型”循環(huán),不斷地執(zhí)行循環(huán)體,直到循環(huán)條件不成立為止。它的一般形式為:
do
循環(huán)體
while(表達式);
執(zhí)行流程是:先執(zhí)行循環(huán)體,再計算表達式,如果為真則周而復(fù)始;如果表達式的值為假,則退出此循環(huán)結(jié)構(gòu)。再次舉例求1+2+3+4+5+…+100,部分程序代碼如下:
int sum=0,i=1;
do
{sum=sum+i;" /*累加*/
i++;" /*當前相加的數(shù)+1*/
}while(ilt;=100);
printf(\"sum is %d\n\",sum);
提醒學(xué)生注意do-while語句與while語句的區(qū)別,由于do-while是先執(zhí)行循環(huán)體后判斷循環(huán)條件,所以它的循環(huán)體至少執(zhí)行一次,而while語句的循環(huán)體有可能一次也不執(zhí)行。如果需要先執(zhí)行再判斷循環(huán)條件,例如登錄系統(tǒng)時需要先輸入用戶名和密碼,再進行身份校驗,則采用do-while語句較為合適。
四、for語句
for語句屬于“計數(shù)”循環(huán),不斷地執(zhí)行循環(huán)體,當循環(huán)次數(shù)達到上限后就退出循環(huán)。它的語法簡潔而又靈活,建議學(xué)生合理地使用for語句,寫出精練、高質(zhì)量的程序。for語句的一般形式為:
for(表達式1;表達式2;表達式3)
循環(huán)體
執(zhí)行流程是:(1)計算表達式1,(2)計算表達式2,若其值為真,轉(zhuǎn)到步驟(3);若其值為假,則結(jié)束循環(huán)。(3)執(zhí)行循環(huán)體。(4)計算表達式3,然后轉(zhuǎn)到步驟(2)。再次舉例求1+2+3+4+5+…+100,部分程序代碼如下:
int sum,i;
for(i=1,sum=0;ilt;=100;i++)
sum=sum+i;" /*累加*/
printf(\"sum is %d\n\",sum);
表達式1稱為初值表達式,只計算一次,用于設(shè)置初值。表達式2是循環(huán)條件,表達式3稱為修正表達式,用于修正循環(huán)條件,使得程序的執(zhí)行能夠最終退出循環(huán)。引導(dǎo)學(xué)生分析for語句的適用場合,如果事先知道循環(huán)次數(shù),則采用for語句較為合適,這時一般有一個計數(shù)器,用于記錄循環(huán)次數(shù)。
五、循環(huán)嵌套
循環(huán)嵌套又稱為多重循環(huán),是指在循環(huán)體中又包含另一個完整的循環(huán)結(jié)構(gòu)。通常把嵌套在循環(huán)體內(nèi)的循環(huán)結(jié)構(gòu)稱為內(nèi)循環(huán),把外層的循環(huán)結(jié)構(gòu)稱為外循環(huán)。while、do-while和for三種循環(huán)語句都可以相互嵌套,大多數(shù)情況下最多使用二重循環(huán)就可以解決問題。應(yīng)提醒學(xué)生注意,掌握循環(huán)嵌套的關(guān)鍵在于理解其循環(huán)執(zhí)行的特點,二重循環(huán)執(zhí)行時并不是外循環(huán)和內(nèi)循環(huán)輪流執(zhí)行一次,而是外循環(huán)每循環(huán)一次,內(nèi)循環(huán)都要反復(fù)循環(huán)直到結(jié)束,再回到外循環(huán)。舉例打印九九乘法口訣表,部分程序代碼如下:
for(i=1;ilt;=9;i++) /*控制輸出行*/
{for(j=1;jlt;=i;j++)/*輸出該行的內(nèi)容*/
printf(\"%2d*%2d=%2d\",j,i,i*j);
printf(\"\n\");/*每行結(jié)束后,輸出換行*/
}
引導(dǎo)學(xué)生重點分析兩個循環(huán)變量i和j的變化情況,i控制外層for語句的循環(huán)次數(shù),總共循環(huán)輸出9行。j控制內(nèi)層for語句的循環(huán)次數(shù),對于第i行,內(nèi)層for語句應(yīng)循環(huán)i次。
六、結(jié)語
循環(huán)結(jié)構(gòu)是C語言最重要的一種控制結(jié)構(gòu),用于實現(xiàn)需要重復(fù)執(zhí)行某些操作的程序。以上闡述了三種循環(huán)語句教學(xué)的實施方法,分析了這些語句各自的特點及適用場合。通過三種循環(huán)語句的運用對比,推薦學(xué)生多使用for語句,它的結(jié)構(gòu)較為緊湊、規(guī)范,有助于學(xué)生養(yǎng)成良好的編寫循環(huán)程序的習慣。在教學(xué)中應(yīng)該注意選取合適的案例,引導(dǎo)學(xué)生了解C語言循環(huán)結(jié)構(gòu)的特點,在程序設(shè)計中正確運用。
參考文獻:
[1] 王曉東. C程序設(shè)計簡明教程(第二版)[M].北京:中國水利水電出版社, 2008.