焦莉莉 張麗麗
摘 要 循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)之一,它既是程序設(shè)計(jì)的重點(diǎn),也是難點(diǎn)。本文從實(shí)際出發(fā),提出了問題驅(qū)動的滲透式漸進(jìn)案例驅(qū)動引導(dǎo)教學(xué)法,幫助學(xué)員系統(tǒng)的理解和掌握循環(huán)結(jié)構(gòu)。
關(guān)鍵詞 C語言 問題驅(qū)動 案例驅(qū)動
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
0引言
C語言程序設(shè)計(jì)是一門語法靈活、功能齊全、應(yīng)用廣泛的高級程序設(shè)計(jì)語言之一,它是后繼程序設(shè)計(jì)課程的基礎(chǔ)。而順序、選擇、循環(huán)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),任何一個(gè)能用計(jì)算機(jī)解決的問題,都能應(yīng)用這三種基本結(jié)構(gòu)寫出程序解決。其中,循環(huán)結(jié)構(gòu)是C語言程序設(shè)計(jì)中最為重要,也是最難掌握的一種結(jié)構(gòu)。
在實(shí)際教學(xué)過程中,教員講課多采用傳統(tǒng)的授課方式,即先給出某個(gè)知識點(diǎn),再闡述該知識點(diǎn)的語法形式及定義,最后舉例說明。該方法忽視了學(xué)習(xí)C語言的關(guān)鍵是讓學(xué)員掌握程序設(shè)計(jì)的思路并解決實(shí)際問題,從而導(dǎo)致教出來的學(xué)員只能看懂程序而不能使用C語言編寫程序解決實(shí)際問題。
1循環(huán)結(jié)構(gòu)的教學(xué)方法
針對C程序設(shè)計(jì)的循環(huán)結(jié)構(gòu)教學(xué),教員可根據(jù)知識點(diǎn)的特點(diǎn),采用問題驅(qū)動的滲透式的漸進(jìn)案例驅(qū)動引導(dǎo)教學(xué)法,使得學(xué)員掌握用所學(xué)知識解決實(shí)際問題的方法。該教學(xué)方法具有如下特點(diǎn):(1)以問題為驅(qū)動激發(fā)學(xué)員的好奇心和學(xué)習(xí)興趣;(2)通過案例講解滲透到基本概念及執(zhí)行過程,從而達(dá)到讓學(xué)員潛移默化吸收知識的效果;(3)案例驅(qū)動教學(xué)法的關(guān)鍵在于選擇包含對應(yīng)知識點(diǎn)的經(jīng)典案例,并采用由淺入深、由易到難、循序漸進(jìn)的教學(xué)方法,引導(dǎo)學(xué)員發(fā)現(xiàn)和總結(jié)規(guī)律,再由教員對理論知識進(jìn)行歸納總結(jié),從而使學(xué)員進(jìn)一步提高認(rèn)識、加深理解,達(dá)到舉一反三的目的;(4)語法規(guī)則和案例講解完畢后,及時(shí)讓學(xué)員進(jìn)行課堂練習(xí),既能鞏固所學(xué)知識,又能提高解決實(shí)際問題的能力,從而達(dá)到學(xué)以致用的效果。
2教學(xué)過程的設(shè)計(jì)與實(shí)踐
2.1提出問題,引入新課
從自然界中循環(huán)切入,再到學(xué)員生活中的循環(huán)——一日生活制度,圖文并茂的引出循環(huán)的概念并拋出問題:如何編程實(shí)現(xiàn)輸出大學(xué)四年生活的一日生活制度?
2.2 案例講解,循序漸進(jìn)
案例設(shè)計(jì)的基本原則是讓學(xué)員理解循環(huán)結(jié)構(gòu)的四要素:循環(huán)變量初始化、循環(huán)控制條件、循環(huán)體和循環(huán)變量的更新,并掌握各要素的功能及作用。具體案例如下:
案例1:求1+2+3+...+100的值。
分析:
S100 =100+S99;
S99 =99+S98;
…………
S2 =2+S1;
S1=1+S0;
S0 =0;
得出結(jié)論:
完成該題需重復(fù)執(zhí)行100次操作,每次做:
(1) s=i+s
(2) i+=1
通過分析,給出如下程序:
s=0;i=1;
while( i<=100)
{ s=s+i
i+=1 }
2.3引導(dǎo)學(xué)員,歸納總結(jié)
根據(jù)上述程序總結(jié)出while循環(huán)的一般形式并歸納總結(jié)出循環(huán)結(jié)構(gòu)四要素的功能及作用。
案例2:求100!.
分析:首先讓學(xué)員直接在案例1的程序上進(jìn)行修改,調(diào)試。很多學(xué)員只修改循環(huán)體,未修改初值,得到了錯(cuò)誤結(jié)果,再對問題進(jìn)行分析改正,從而加深對循環(huán)變量初值的理解。
根據(jù)while循環(huán)的一般形式及各部分功能,把程序推廣到do while 和for 循環(huán)。一方面讓學(xué)員進(jìn)一步理解循環(huán)結(jié)構(gòu)的四要素可以靈活變化,出現(xiàn)在不同的地方;另一方面讓學(xué)員理解這三種循環(huán)語句可以相互轉(zhuǎn)換。
s=1;
for(i=1;i<=100;i++)
s=s*i;
2.4師生合作,解決問題
案例3:輸出大學(xué)四年生活的一日生活制度。
for(i=1; i<=365*4;i++)
{printf("6:20早操。\n")
printf("7:00早飯。\n ")
printf("8:10上課。\n ")
printf("12:00午飯。\n ")
printf("14:30上課或自習(xí)。\n ")
printf("16:30體能訓(xùn)練。\n ")
printf("19:00新聞聯(lián)播。"\n)
printf("21:00晚點(diǎn)名。\n ")}
2.5拔高層次,拓展新知
案例4:求1!+2!+…+100!
講解案例前,先讓學(xué)員分析,借助案例2的結(jié)論分別求出1!、2!、100!,再累加。完成該程序需要雙重循(下轉(zhuǎn)第124頁)(上接第88頁)環(huán),內(nèi)層循環(huán)求n!,外層循環(huán)求累加和。具體程序如下:
sum=0;
for(i=1;i<=100;i++)
{ s=1;
for(j=1;j<=i;j++)
{ s=s*j;
sum=sum+s;}
}
案例5:求sum=1!+2!+…+n!,當(dāng)累加和大于20000時(shí)就結(jié)束循環(huán),并給出sum和n的值。
借助案例4的結(jié)論求累加和。完成該程序需要使用break語句結(jié)束循環(huán),避免陷入死循環(huán)。具體程序如下:
sum=0;
for(i=1;;i++)
{ s=1;
for(j=1;j<=i;j++)
{ s=s*j;
sum=sum+s;
if(sum>20000) break;}
}
printf("sum=%d,n=%d",sum,n);
2.6闖關(guān)練習(xí),鞏固知識
語法規(guī)則和案例講解完畢后,及時(shí)讓學(xué)員進(jìn)行課堂練習(xí),教員對學(xué)員掌握知識的情況及解決問題的能力進(jìn)行總結(jié)。這樣既能鞏固所學(xué)知識,又能提高解決實(shí)際問題的能力,從而達(dá)到學(xué)以致用的效果。
3結(jié)語
程序設(shè)計(jì)語言邏輯性較強(qiáng),對非計(jì)算機(jī)專業(yè)的學(xué)員來說是最乏味的一門課程。本次課教員從如何編程解決學(xué)員日常的生活問題入手,很快就激發(fā)了學(xué)員的求知欲,調(diào)動了學(xué)習(xí)的積極性。后繼通過滲透式的漸進(jìn)案例驅(qū)動引導(dǎo)教學(xué)法,培養(yǎng)學(xué)員建立良好的邏輯思維能力和演繹推理能力。
實(shí)踐表明,該教學(xué)方法符合學(xué)員的認(rèn)知特點(diǎn),由淺入深、由易到難、逐步分解、環(huán)環(huán)相扣,提高了學(xué)員學(xué)習(xí)的主動性,取得了較好的學(xué)習(xí)效果。
參考文獻(xiàn)
[1] 曹海英,元元,郝兵.C語言中的循環(huán)嵌套結(jié)構(gòu)程序設(shè)計(jì)[J].軟件研發(fā)與應(yīng)用,2017(27):17-19+22.
[2] 李娟,張燕.C語言循環(huán)結(jié)構(gòu)教學(xué)的設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)教育:2018(03):89-91.
[3] 黃金國.基于項(xiàng)目化教學(xué)的“C語言程序設(shè)計(jì)”課程改革研究[J].吉林工程技術(shù)師范學(xué)院學(xué)報(bào):2018,34(02):79-81.