摘要:C語(yǔ)言是中職校計(jì)算機(jī)專業(yè)的必修課,也是一門核心課程。C語(yǔ)言中循環(huán)結(jié)構(gòu)程序設(shè)計(jì),是C程序設(shè)計(jì)教學(xué)中的重點(diǎn)與難點(diǎn)。本文主要重點(diǎn)研究了循環(huán)結(jié)構(gòu)程序重點(diǎn)及難點(diǎn),包括重點(diǎn)分析與難點(diǎn)突破;運(yùn)用實(shí)例探討如何分析循環(huán)結(jié)構(gòu)程序的方法,以及運(yùn)用實(shí)例講解編寫循環(huán)結(jié)構(gòu)程序的方法。
關(guān)鍵詞:C語(yǔ)言;循環(huán)結(jié)構(gòu);學(xué)習(xí)
一、牢記C語(yǔ)言循環(huán)結(jié)構(gòu)的內(nèi)容
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)所涉及的知識(shí)點(diǎn)為三種類型的循環(huán)。即:while循環(huán)、do…while循環(huán)和for循環(huán)。這三個(gè)語(yǔ)句是循環(huán)結(jié)構(gòu)程序的重點(diǎn)內(nèi)容。
(一)while循環(huán)語(yǔ)句
1.while循環(huán)的一般形式
while(表達(dá)式)
循環(huán)體
2.學(xué)習(xí)while循環(huán)語(yǔ)句的重點(diǎn)
循環(huán)如果超過一條語(yǔ)句,應(yīng)該用“{}”括起來,構(gòu)成復(fù)合語(yǔ)句,否則循環(huán)體是while后的第一個(gè)分號(hào)前的那一條語(yǔ)句。
3.循環(huán)體結(jié)構(gòu)程序四要素
(1)循環(huán)初始化
給循環(huán)變量賦初始值。
(2)循環(huán)條件
一般情況下是條件表達(dá)式、邏輯表達(dá)式或數(shù)值。
(3)循環(huán)體
需要反復(fù)執(zhí)行的、處理問題的程序段。
(4)循環(huán)控制變量的調(diào)整
控制循環(huán)的條件。
(二)do …while循環(huán)語(yǔ)句
1. do…while循環(huán)語(yǔ)句形式
do
循環(huán)體
while(表達(dá)式)。
2. do…while 語(yǔ)句注意要點(diǎn)
要能區(qū)分do…while語(yǔ)句和while語(yǔ)句的不同。前者先執(zhí)行循環(huán)體,后判斷循環(huán)條件,后者是先判斷后執(zhí)行循環(huán)體。
(三)for循環(huán)語(yǔ)句
1.一般形式
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體
2. for循環(huán)語(yǔ)句要點(diǎn)
表達(dá)式1是初始值,表達(dá)式2是控制條件,表達(dá)式3是循環(huán)變量的修改部分。
C循環(huán)結(jié)構(gòu)程序中的break語(yǔ)句與continue語(yǔ)句是循環(huán)結(jié)構(gòu)程序教學(xué)中的難點(diǎn)。
break語(yǔ)句是終止當(dāng)前所在循環(huán),continue語(yǔ)句是暫停本次循環(huán),轉(zhuǎn)而繼續(xù)執(zhí)行下次循環(huán)。
二、熟悉C語(yǔ)言循環(huán)結(jié)構(gòu)的分類方法
(一)按名稱可分為while循環(huán)、do…while循環(huán)和for循環(huán)。
(二)按是否嵌套可分為單重循環(huán)與多重循環(huán)。
三、學(xué)會(huì)分析C語(yǔ)言循環(huán)結(jié)構(gòu)程序流程
(一)在for循環(huán)中包含break,continue語(yǔ)句程序段
執(zhí)行以下語(yǔ)句后的x值為__,y的值為___。
for(y=1,x=1;y<=50;y++)
{
if(x>=10)break;
if(x%2==1)
{x+=5;
continue;
}
x-=3;
}
依循環(huán)次數(shù),程序流程分析:
第1次循環(huán),因?yàn)槌跏贾祔=1,y<=50成立,x>=10不成立,x%2==1為真,執(zhí)行語(yǔ)句x+=5;x=6;執(zhí)行continue語(yǔ)句,轉(zhuǎn)向首行執(zhí)行y++;y=2,y<=50為真,程序進(jìn)入第2次循環(huán)。
第2次循環(huán),因?yàn)閤=6,(x>=10)為假,(x%2= =1)為假;執(zhí)行x-=3;x=3;執(zhí)行y++;y=3;(y<=50)為真,程序進(jìn)入第3次循環(huán)。
第3次循環(huán),因?yàn)閤=3,(x>=10)為假,(x%2==1)為真,執(zhí)行x+=5;x=8;執(zhí)行continue;語(yǔ)句,返回首行,執(zhí)行y++;y=4;(y<=50)為真,程序進(jìn)入第4次循環(huán)。
第4次循環(huán),因?yàn)閤=8,(x>=10)為假,(x%2==1)為假,執(zhí)行語(yǔ)句x-=3;x=5;
返回首行for語(yǔ)句y++;y=5,y<=50為真;程序進(jìn)入第5次循環(huán)。
第5次循環(huán),因?yàn)閤=5,(x>=10)為假,(x%2==1)為真,執(zhí)行x+=5;x=10;執(zhí)行continue;行后,返回首行,執(zhí)行y++; y=6,y<=50為真;程序進(jìn)入第6次循環(huán)。
第6次循環(huán),(x>=10)為真,執(zhí)行break語(yǔ)句,跳出循環(huán),此時(shí)x=10,
y=6。
此程序?yàn)閒or循環(huán)程序 ,總循環(huán)次數(shù)為6次,展示了for循環(huán)語(yǔ)句中continue語(yǔ)句和break語(yǔ)句的用法特點(diǎn)。
(二)讀程序,寫出輸出結(jié)果
#include
int main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if(i%10==0)break;
else i--;
}
i+=11;a+=i;
}
printf("%d\n",a);
return 0;
}
流程分析:
本程序?yàn)殡p重循環(huán),外循環(huán)是while循環(huán)語(yǔ)句,內(nèi)循環(huán)是for循環(huán)語(yǔ)句。
外循環(huán)執(zhí)行前,i=0,a=0。
外循環(huán)第1次:
i=0,i<20,進(jìn)入外循環(huán),進(jìn)入內(nèi)循環(huán)。因?yàn)閕=0,(i%10==0)為真,所以執(zhí)行break;語(yǔ)句。跳出for循環(huán)(內(nèi)循環(huán))。執(zhí)行i+=11;i=11;a+=i;a=11;返回外循環(huán),因?yàn)閕=11,i<20,外循環(huán)進(jìn)入第2次循環(huán)。
外循環(huán)第2 次:
在for循環(huán)第1次循環(huán),(i=11,i%10==0)為假,執(zhí)行else后語(yǔ)句i--;即i=10,for循環(huán)第2次循環(huán),i=10,(i%10==0)為真,執(zhí)行break;語(yǔ)句,跳出本次for循環(huán),執(zhí)行i+=11;i=21。執(zhí)行a+=i;a=a+i=11+21=32。
此時(shí),i=21,i<20不成立,故外循環(huán)終止。雙重循環(huán)終止,輸出32。
程序盤點(diǎn):
本程序?yàn)殡p重循環(huán),程序中包含break語(yǔ)句,外循環(huán)執(zhí)行2次,內(nèi)循環(huán)共循環(huán)3次。
以上兩個(gè)例子分別列舉了單重循環(huán)、多重循環(huán),并使用了break語(yǔ)句和continue語(yǔ)句來控制程序的流程。通過對(duì)程序的詳細(xì)分析,詳解了循環(huán)結(jié)構(gòu)程序的執(zhí)行過程和分析方法。
四、積極探究C語(yǔ)言循環(huán)結(jié)構(gòu)程序編程實(shí)踐方法
(一)學(xué)會(huì)使用算法:編寫程序前先設(shè)計(jì)好程序的算法
算法是編寫程序的靈魂,一個(gè)編程問題的算法設(shè)計(jì)好了,那么編程過程就可以按照算法,按部就班地完成。所以編寫比較復(fù)雜的程序,使用流算法來設(shè)計(jì)算法是非常必要和可行的手段。
實(shí)踐操作:求1!+2!+3!+……+10!的和,并輸出計(jì)算結(jié)果。
根據(jù)編程任務(wù),編寫流程如下 :
程序的功能主要通過內(nèi)循環(huán)的循環(huán)體來實(shí)現(xiàn),用fact*=語(yǔ)句作為累乘器來求階乘,用s+=fact作為累加器來求階乘的和。
根據(jù)流程圖,編寫程序如下:
#include
int main()
{
int i,j,fact,s=0;
for(i=1;i<=10;i++)
{
fact=1;
for(j=1;j<=i;j++)
fact*=j;
s+=fact;
}
printf("%d",s);
return 0;
}
(二)一題多解,開闊思路
實(shí)踐操作:使用循環(huán)語(yǔ)句編寫一段程序生成下面的輸出。
0 1
1 2
2 4
3 8
4 16
5 32
6 64
算法一:
分析可知,輸出各行的第1列數(shù)是一個(gè)等差數(shù)列,首項(xiàng)是0,等差是1,共7項(xiàng)可用自增運(yùn)算符來表示。各行第2項(xiàng)數(shù)組成一個(gè)指數(shù)函數(shù),指數(shù)是2,指數(shù)是各行第一個(gè)數(shù),故可使用數(shù)學(xué)函數(shù)pow()函數(shù)來求,所以在程序中需要使用一個(gè)#include
程序如下:
#include
#include
int main()
{
int i,m;
for(i=0;i<=6;i++)
{
m=pow(2,i);
printf("%d %d\n",i,m);
}
return 0;
}
滿足一個(gè)通項(xiàng),即以2為底,前一個(gè)數(shù)是指數(shù),后一個(gè)數(shù)是指數(shù)函數(shù)的值。
算法二:
巧用自增運(yùn)算符來設(shè)置循環(huán)程序。
#include
int main()
{
int i,a,f;
a=0;
f=1;
for(i=1;i<=7;i++){
printf("%d %d",a++,f);
f*=2;
printf("\n");
}
return 0;
}
分析可以發(fā)現(xiàn)兩種算法的各自特色,第一種方法使用函數(shù),編寫程序較容易;第二種方法沒有使用函數(shù),技巧性和思維能力考查要求比較高。
以上2個(gè)編程例子,第一個(gè)例子介紹了編寫循環(huán)結(jié)構(gòu)程序的方法與過程,利用流程圖作為工具,來輔助編程, 就會(huì)讓編程具有了目標(biāo)和方向,編程變得有規(guī)可循。第二個(gè)例子,主要強(qiáng)調(diào)了在C循環(huán)結(jié)構(gòu)編程時(shí),要嘗試多種算法來編寫程序,通過不同算法進(jìn)行比較,優(yōu)化編程策略,開闊了編程的視野,讓學(xué)生在算法設(shè)計(jì)上會(huì)具有更加靈活選擇路徑。
五、結(jié)束語(yǔ)
本文主要講述了C循環(huán)結(jié)構(gòu)程序所需掌握的內(nèi)容,學(xué)會(huì)如何分類,熟練掌握單重循環(huán)、多重循環(huán),while循環(huán)、do…while循環(huán)和for循環(huán)重點(diǎn)內(nèi)容,并能靈活使用break語(yǔ)句和continue語(yǔ)句來控制程序的流程的語(yǔ)法規(guī)則。
通過讀C循環(huán)結(jié)構(gòu)程序,寫出結(jié)果的三個(gè)案例,詳細(xì)分析,講解了循環(huán)結(jié)構(gòu)程序的具體執(zhí)行過程和細(xì)節(jié)處理技巧,讓學(xué)生對(duì)讀程序過程有了具體的認(rèn)識(shí),逐步建立了讀循環(huán)結(jié)構(gòu)程序的解題思路。
通過C循環(huán)程序編程實(shí)踐第一個(gè)案例,要求學(xué)生能夠?qū)W會(huì)使用算法來輔助編寫程序的方法技巧,有了算法在編程時(shí)就具有了“靈魂”。通過第二個(gè)C循環(huán)編程實(shí)踐,開拓了學(xué)生的編程算法視野,能用多種算法分析問題,解決問題,提高了學(xué)生的編程素養(yǎng),培養(yǎng)了學(xué)生全面學(xué)習(xí)的核心素養(yǎng)。了解了循環(huán)結(jié)構(gòu)程序的內(nèi)容和種類,通過分析程序結(jié)構(gòu)和程序執(zhí)行過程,
經(jīng)過不斷地思考、實(shí)踐和循序漸進(jìn)學(xué)習(xí)過程, C語(yǔ)言學(xué)習(xí)者會(huì)逐步掌握循環(huán)結(jié)構(gòu)程序的使用技巧,從而為學(xué)好C語(yǔ)言程序設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ)。
作者單位:白宗輝? ? 江蘇省車輻中等專業(yè)學(xué)校
參? 考? 文? 獻(xiàn)
[1]李紅衛(wèi).C程序設(shè)計(jì)與訓(xùn)練[M].大連理工大學(xué)出版社,2018.
[2]譚浩強(qiáng).《C程序設(shè)計(jì)》第五版[M].清化大學(xué)出版社,2017.
[3]黃婷.淺談《C語(yǔ)言程序設(shè)計(jì)》實(shí)踐教學(xué)[J].北京電力高等專科學(xué)校學(xué)報(bào):社會(huì)科學(xué)版,2010,27(10):434-435.
[4]盧玲,劉恒洋.以計(jì)算思維為導(dǎo)引的程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)模式研究[J].福建電腦,2012,28(5):164-166.
[5]馮玉芬,馮寧.C程序設(shè)計(jì)教學(xué)方法研究[J].教育探索, 2009(12):62-63.