許桂平
摘 要: C語言是一種廣泛使用的高級程序設計語言,文章對C語言中三種循環(huán)結(jié)構(gòu)語句進行了分析和比較,使學生更容易理解和掌握。
關(guān)鍵詞: C語言 for循環(huán) while循環(huán) do-while循環(huán)
一、引言
C語言是一種廣泛使用的程序設計語言,它具有功能豐富、表達能力強、使用靈活方便、目標程序效率高等特點。像許多計算機語言一樣,C語言有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。在這三種基本結(jié)構(gòu)中,循環(huán)結(jié)構(gòu)是最難理解的。
C語言中循環(huán)結(jié)構(gòu)分為三種語句for,while,do-while。這三種語句都可以完成循環(huán)結(jié)構(gòu)的功能,但在語法、程序流程等方面存在異同點。本文對這三種語句進行了分析和比較。
一般來講,循環(huán)結(jié)構(gòu)程序設計要考慮兩個方面的問題:①循環(huán)條件:循環(huán)條件是循環(huán)結(jié)構(gòu)設計的關(guān)鍵,它決定循環(huán)體重復執(zhí)行的次數(shù)。循環(huán)條件常常由關(guān)系表達式或邏輯表達式表示;②循環(huán)體:需要重復執(zhí)行的工作。它可以是一組順序結(jié)構(gòu)的語句,也可以是一組具有選擇結(jié)構(gòu)的語句,甚至還可以是一組具有循環(huán)結(jié)構(gòu)的語句。
循環(huán)結(jié)構(gòu)程序設計就是要正確描述循環(huán)條件,并分析問題的規(guī)律性,利用C語言提供的循環(huán)控制語句發(fā)揮具體的功能。
二、while循環(huán)和do-while循環(huán)的比較
從while循環(huán)的流程圖(圖1)和do-while循環(huán)的流程圖(圖2)可以看出while語句用于構(gòu)成“當型”循環(huán)結(jié)構(gòu),do-while語句用于構(gòu)成“直到型”循環(huán)。
2.循環(huán)的執(zhí)行過程
while循環(huán)的執(zhí)行過程為:首先計算條件表達式(循環(huán)條件)的值,若結(jié)果為“真”(非零),則執(zhí)行循環(huán)體語句;然后再次計算表達式的值,重復上述過程,直到表達式的值為“假”(零)時結(jié)束循環(huán),流程控制轉(zhuǎn)到循環(huán)結(jié)構(gòu)的下一語句。
do-while循環(huán)的執(zhí)行過程為:首先執(zhí)行一次循環(huán)體語句,然后計算條件表達式(循環(huán)條件)的值。若結(jié)果為“真”(非零),則再次執(zhí)行循環(huán)體,再計算表達式的值,如此重復下去,直到表達式的值為“假”(零)時,循環(huán)結(jié)束,流程控制轉(zhuǎn)到循環(huán)結(jié)構(gòu)的下一語句。
3.兩種循環(huán)的相同點
循環(huán)體內(nèi)一定要有改變循環(huán)繼續(xù)條件的語句,使得循環(huán)趨向于結(jié)束,否則循環(huán)將無休止地進行下去,即形成“死循環(huán)”。
為使循環(huán)正確運行,還要做好循環(huán)前的準備工作,在循環(huán)語句開始前要給循環(huán)控制變量和相關(guān)的變量賦初值。
4.兩種循環(huán)的不同點
while循環(huán)結(jié)構(gòu)的特點是“先判斷,后執(zhí)行”,如果條件表達式的值一開始就為“假”,則循環(huán)體一次也不執(zhí)行;do-while循環(huán)結(jié)構(gòu)的特點是“先執(zhí)行,后判斷”,如果條件表達式的值一開始就為“假”,則循環(huán)體仍要執(zhí)行一次。
三、for循環(huán)和while循環(huán)的比較
for語句是C語言提供的另一種應用靈活、功能強大的構(gòu)成“當型”循環(huán)結(jié)構(gòu)的循環(huán)語句。
1.循環(huán)格式
for(<表達式1>;<表達式2>;<表達式3>)
<循環(huán)體語句>;
2.功能
首先進行表達式1的運算,然后計算表達式2的值,若結(jié)果為真(非零),則執(zhí)行循環(huán)體語句,最后進行表達式3的運算。然后回頭再次計算表達式2的值,若結(jié)果為“真”(非零),再執(zhí)行循環(huán)體語句,最后進行表達式3的運算,然后再回頭,如此循環(huán)重復下去,直到計算表達式2的結(jié)果為“假”(零)時,循環(huán)結(jié)束,流程控制轉(zhuǎn)到循環(huán)結(jié)構(gòu)的下一語句,其流程如圖3所示。
表達式1和表達式3通常是賦值表達式,一般用來實現(xiàn)對循環(huán)控制變量初始化和循環(huán)控制變量增(減)值。表達式2常常是關(guān)系表達式或邏輯表達式,但可以是其他類型的表達式,它表示循環(huán)繼續(xù)的條件,只要其值為非零,就可執(zhí)行循環(huán)體,否則退出循環(huán)。
3.for循環(huán)和while循環(huán)的比較
for循環(huán)結(jié)構(gòu)和while循環(huán)結(jié)構(gòu)一樣,也具有“先判斷,后執(zhí)行”的特點。for循環(huán)結(jié)構(gòu)相當于如下形式的while結(jié)構(gòu):
四、三種循環(huán)結(jié)構(gòu)的比較
實際應用中用到的大多數(shù)循環(huán)通常分為兩類:次數(shù)確定的循環(huán)和次數(shù)不確定的循環(huán)。
次數(shù)確定的循環(huán),又稱計數(shù)型循環(huán),通常采用計數(shù)的方式控制循環(huán)。循環(huán)控制變量用來控制循環(huán)的次數(shù),循環(huán)控制變量要有:初始值、每次變化的增量及控制循環(huán)是否終止的終值和測試條件。這類循環(huán)通常采用for循環(huán)結(jié)構(gòu)實現(xiàn),當然也可以采用while和do-while循環(huán)結(jié)構(gòu)。
次數(shù)不確定的循環(huán),又稱條件型循環(huán),通常采用標記值的方式控制循環(huán)。標記值表示繼續(xù)循環(huán)的條件。標記值必須不同于正常的數(shù)據(jù)項,以免發(fā)生混淆。這類循環(huán)通常采用while循環(huán)結(jié)構(gòu)和do-while循環(huán)結(jié)構(gòu)實現(xiàn),當然也可以采用for循環(huán)結(jié)構(gòu)實現(xiàn)。
三種循環(huán)結(jié)構(gòu)是可以相互轉(zhuǎn)換的,for循環(huán)比while循環(huán)和do-while循環(huán)更為簡潔而高效,因而應用得更為廣泛。
五、結(jié)語
C語言循環(huán)結(jié)構(gòu)是用C語言編程的基石,通過比較學習,學生可以提高學習效率,為以后編寫出緊湊、高效程序打下堅實基礎。
參考文獻:
[1]朱榮娟.淺析C語言循環(huán)結(jié)構(gòu)教學思路.高中生學習師者,2013.12.
[2]袁國偉.C語言循環(huán)結(jié)構(gòu)中for語句與while語句辨析.科技信息,200612.
[3]譚浩強.C語言程序設計教程.高等教育出版社,2002.