程妮,景運(yùn)革
(運(yùn)城學(xué)院數(shù)學(xué)與信息技術(shù)學(xué)院,運(yùn)城 044000)
《C語(yǔ)言程序設(shè)計(jì)》課程是一門(mén)應(yīng)用性極強(qiáng)的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,是全院非計(jì)算機(jī)專業(yè)理工科學(xué)生的通識(shí)教育課程。結(jié)構(gòu)化程序設(shè)計(jì)主要使用三種基本結(jié)構(gòu)來(lái)構(gòu)造程序,其中循環(huán)結(jié)構(gòu)是最為重要且最難掌握的一種,尤其是其中的循環(huán)嵌套,一些學(xué)生就會(huì)出現(xiàn)“上課聽(tīng)不懂,實(shí)驗(yàn)不會(huì)做”的情況,所以常規(guī)的講授法學(xué)生很難理解、掌握和消化。基于此,根據(jù)筆者多年的教學(xué)實(shí)踐經(jīng)驗(yàn),在精選教學(xué)案例的基礎(chǔ)上,以問(wèn)題為引導(dǎo),層層深入地分析講解案例,一步步引導(dǎo)學(xué)生理解循環(huán)嵌套的執(zhí)行過(guò)程,并靈活應(yīng)用循環(huán)嵌套解決實(shí)際問(wèn)題。教學(xué)實(shí)踐表明,案例教學(xué)法的實(shí)施,調(diào)動(dòng)了學(xué)生學(xué)習(xí)的積極性,培養(yǎng)學(xué)生分析和解決問(wèn)題的能力,從而達(dá)到教學(xué)目標(biāo)和效果。
案例教學(xué)法是教師根據(jù)學(xué)生的理解程度和教學(xué)需要,將知識(shí)點(diǎn)加工成一些典型的案例,并引導(dǎo)學(xué)生一起思考、分析、討論案例[1],并最終掌握所學(xué)知識(shí)和技能的一種開(kāi)放式、互動(dòng)式的教學(xué)模式。
在C語(yǔ)言的循環(huán)嵌套教學(xué)中實(shí)施案例教學(xué)法,從教學(xué)內(nèi)容和教學(xué)目標(biāo)來(lái)看都是可行的。循環(huán)嵌套是C語(yǔ)言循環(huán)結(jié)構(gòu)章節(jié)中的難點(diǎn)內(nèi)容,所以本節(jié)內(nèi)容的知識(shí)性、邏輯性、抽象性較強(qiáng),內(nèi)容相對(duì)枯燥,學(xué)生很難理解。教師通過(guò)選取生動(dòng)有趣的典型案例,吸取了學(xué)生的注意力,提高學(xué)生學(xué)習(xí)的積極性,讓學(xué)生參與到案例學(xué)習(xí)的各個(gè)環(huán)節(jié)中,從而讓學(xué)生在完成實(shí)例的過(guò)程加強(qiáng)對(duì)循環(huán)嵌套的概念、結(jié)構(gòu)和執(zhí)行過(guò)程的理解,掌握類(lèi)似案例的編程規(guī)律,使學(xué)生能夠舉一反三,提高學(xué)生的動(dòng)手操作能力和編程能力,以及解決實(shí)際問(wèn)題的能力。
在案例教學(xué)法中,案例的選取十分關(guān)鍵,教師要根據(jù)學(xué)生的實(shí)際情況以及教學(xué)目標(biāo)、內(nèi)容的需要,選擇有針對(duì)性的典型案例。而且案例既要突出本節(jié)課的重難點(diǎn),還要和學(xué)生的日常生活相適應(yīng)[2]。同時(shí),教學(xué)中使用的案例要由易到難、層層深入,這樣可以循序漸漸地啟發(fā)學(xué)生,培養(yǎng)學(xué)生的邏輯思維能力,達(dá)到教學(xué)目標(biāo)和效果。
在C語(yǔ)言的三種基本結(jié)構(gòu)中,循環(huán)結(jié)構(gòu)最為重要,而且應(yīng)用也最為廣泛。其中循環(huán)嵌套是循環(huán)結(jié)構(gòu)章節(jié)中的難點(diǎn)內(nèi)容,是本門(mén)課程的難點(diǎn)與核心。循環(huán)嵌套的內(nèi)容難度高且相對(duì)抽象,學(xué)生接受起來(lái)有些困難,所以教師要綜合考慮學(xué)生的實(shí)際情況、教學(xué)內(nèi)容和需要等,運(yùn)用各種教學(xué)方法來(lái)調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性。
循環(huán)嵌套結(jié)構(gòu)的教學(xué)目標(biāo)是:①理解循環(huán)嵌套的含義、基本結(jié)構(gòu)和語(yǔ)句格式;②掌握循環(huán)嵌套的執(zhí)行過(guò)程;③應(yīng)用循環(huán)嵌套結(jié)構(gòu)設(shè)計(jì)程序的方法;④培養(yǎng)學(xué)生分析、解決問(wèn)題的能力以及解決實(shí)際問(wèn)題的能力。
循環(huán)嵌套結(jié)構(gòu)的教學(xué)重點(diǎn):①循環(huán)嵌套的含義、基本結(jié)構(gòu);②平面圖形的輸出;③循環(huán)嵌套結(jié)構(gòu)的應(yīng)用。
循環(huán)嵌套結(jié)構(gòu)的教學(xué)難點(diǎn):應(yīng)用for循環(huán)嵌套,編寫(xiě)程序解決實(shí)際問(wèn)題。
大二的理工科學(xué)生已具備一定的邏輯思維能力和學(xué)習(xí)能力,而且上一節(jié)課已經(jīng)學(xué)習(xí)了循環(huán)的概念,實(shí)現(xiàn)循環(huán)的三種語(yǔ)句以及使用循環(huán)編寫(xiě)簡(jiǎn)單的程序,這些為本節(jié)課內(nèi)容的學(xué)習(xí)奠定一定的基礎(chǔ)。但是,由于內(nèi)容的抽象性和應(yīng)用性較強(qiáng),受學(xué)習(xí)和思維能力等因素的影響,學(xué)生在學(xué)習(xí)過(guò)程中很難完全理解和掌握循環(huán)嵌套的相關(guān)概念和執(zhí)行過(guò)程,因此激發(fā)學(xué)生興趣,增強(qiáng)學(xué)生學(xué)習(xí)的積極性十分重要。
循環(huán)嵌套的教學(xué)主要采用案例教學(xué)法,通過(guò)問(wèn)題的方式引入案例,進(jìn)而引導(dǎo)學(xué)生分析案例,將知識(shí)分解,然后通過(guò)具體案例分析、掌握循環(huán)嵌套的執(zhí)行過(guò)程和應(yīng)用,最后編程解決案例中的問(wèn)題。
教師活動(dòng):
提出問(wèn)題1:當(dāng)循環(huán)次數(shù)確定時(shí),使用哪種循環(huán)結(jié)構(gòu)更方便?其基本格式如何?
提出問(wèn)題2:如何輸出一行*?
學(xué)生活動(dòng):
學(xué)生口述for循環(huán)的語(yǔ)句格式和循環(huán)的三要素等。師生共同分析輸出一行*時(shí),循環(huán)變量的初值、終值和步長(zhǎng),然后教師板書(shū)程序。
通過(guò)問(wèn)題引導(dǎo)是學(xué)生回顧已學(xué)知識(shí),熟悉for循環(huán)的三要素及語(yǔ)句格式;教師通過(guò)板書(shū)for循環(huán)基本格式可以進(jìn)一步加深學(xué)生的直觀印象,為引入for循環(huán)嵌套做鋪墊。
教師活動(dòng):
提出問(wèn)題:使用for循環(huán)可以輸出一行*,那如果要打印4行7列的*,該如何解決?那如果要打印一百行*呢?
學(xué)生活動(dòng):
學(xué)生能回答出上面輸出一行*的程序段將要被執(zhí)行4次。
在此基礎(chǔ)上,教師進(jìn)一步引導(dǎo),展開(kāi)對(duì)該實(shí)例的講解。
課件展示:循環(huán)嵌套的應(yīng)用——平面圖形的輸出(板書(shū))
【實(shí)例1】輸出4行7列的*。
算法分析過(guò)程:
(1)對(duì)行的輸入:平面圖形的每一行輸出7個(gè)*,需要重復(fù)進(jìn)行4次。輸出一行*將作為循環(huán)結(jié)構(gòu)的循環(huán)體,而行數(shù)則是循環(huán)結(jié)構(gòu)的循環(huán)控制變量。
(2)對(duì)列的輸入:每一行需要重復(fù)輸出7個(gè)*,也用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
(3)循環(huán)嵌套:for循環(huán)的循環(huán)體又被另一個(gè)for循環(huán)語(yǔ)句替代,則形成了循環(huán)的嵌套結(jié)構(gòu)。
C程序代碼如下:
教師提問(wèn):
語(yǔ)句printf(“ ”);能否不寫(xiě)?
在輸出平面圖形時(shí),在每一行符號(hào)輸入完成后,要加一條換行顯示語(yǔ)句,否則所有的符號(hào)會(huì)在一行中顯示。
結(jié)論:
有規(guī)律的平面圖形,一般使用雙重循環(huán),逐行輸出。
外循環(huán)控制行,內(nèi)循環(huán)控制列。
(1)循環(huán)嵌套的含義和結(jié)構(gòu)
在一個(gè)循環(huán)體內(nèi)完整地包含另一個(gè)循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。
其中外層的循環(huán)稱為外循環(huán),嵌套在循環(huán)體內(nèi)的循環(huán)稱為內(nèi)循環(huán)。嵌套可以有很多層,一般使用雙重或三重循環(huán)。
(2)實(shí)現(xiàn)循環(huán)嵌套的方式
三種循環(huán)結(jié)構(gòu)while、do-while、for可以互相嵌套,這節(jié)課我們主講for循環(huán)的嵌套結(jié)構(gòu)。而且循環(huán)語(yǔ)句之間只存在并列和嵌套兩種關(guān)系。
循環(huán)嵌套的設(shè)計(jì)要點(diǎn):在使用循環(huán)嵌套結(jié)構(gòu)實(shí)現(xiàn)行列輸出時(shí),首先要找出循環(huán)體,其次要確定控制循環(huán)的次數(shù)。其中,循環(huán)體的次數(shù)一般由循環(huán)控制變量來(lái)實(shí)現(xiàn),需要明確三要素[3]。
(3)循環(huán)嵌套的執(zhí)行過(guò)程
循環(huán)嵌套的執(zhí)行規(guī)律是外循環(huán)執(zhí)行一次,內(nèi)循環(huán)要執(zhí)行多次。即在每次執(zhí)行外循環(huán)的循環(huán)體時(shí)若遇到內(nèi)循環(huán),應(yīng)將內(nèi)循環(huán)體的全部循環(huán)結(jié)束后再執(zhí)行下一次的外循環(huán),直到外循環(huán)也全部結(jié)束為止[4]。
結(jié)合課件上的流程圖,教師引導(dǎo)學(xué)生分析循環(huán)嵌套的執(zhí)行過(guò)程。
圖1 循環(huán)嵌套的執(zhí)行流程
【實(shí)例2】輸出右圖的平面圖形。
教師提問(wèn):
共輸出幾行*?每一行輸出幾個(gè)*?
教師引導(dǎo)學(xué)生分析規(guī)律,共4行*,所以外循環(huán)執(zhí)行4次,循環(huán)體的次數(shù)用i表示,三要素分別為i=1;i<=4;i++;外循環(huán)的循環(huán)體是輸出*,通過(guò)觀察,可得出每一行輸出*個(gè)數(shù)不同,第i行輸出i個(gè)*,如果內(nèi)循環(huán)由j來(lái)控制,j的變化應(yīng)為1到i;另外注意,每一行符號(hào)輸完后要換行[5]。
通過(guò)實(shí)例1的學(xué)習(xí),學(xué)生在理解循環(huán)嵌套后都能完成實(shí)例2的這個(gè)平面圖形的輸出,教師及時(shí)給于鼓勵(lì)和反饋,可以大大提高學(xué)生的自信心。
【實(shí)例3】輸出右圖的平面圖形。
●教師提問(wèn):行和列的關(guān)系是什么?
●學(xué)生回答,教師分析并板書(shū)行和列的規(guī)律,課件呈現(xiàn)程序代碼。
【拓展實(shí)例】輸出右圖的平面圖形。教師提問(wèn):
●每行輸出的空格數(shù)有什么特點(diǎn)?
●外循環(huán)的循環(huán)體是什么?
●如何輸出空格?
結(jié)合課件,教師引導(dǎo)學(xué)生一起分析平面圖形的規(guī)律,得出答案:
●學(xué)生討論分析每行空格數(shù)的特點(diǎn)。
●外循環(huán)的循環(huán)體應(yīng)包括兩部分:即每一行先輸出空格,再輸出*并換行。
●觀察平面圖形,分析得出第i行要先輸出4-i個(gè)空格,再輸出2*i-1個(gè)*。
C程序代碼如下:
教師提問(wèn):
●外循環(huán)的循環(huán)體包括了兩個(gè)for語(yǔ)句,這兩個(gè)for語(yǔ)句的關(guān)系是什么?
通過(guò)以上案例的學(xué)習(xí),學(xué)生進(jìn)一步了理解for循環(huán)嵌套的語(yǔ)句格式和執(zhí)行過(guò)程,并通過(guò)幾個(gè)案例的逐層深入,可以做到舉一反三,從而利用循環(huán)嵌套解決實(shí)際問(wèn)題。
通過(guò)上面幾個(gè)實(shí)例的學(xué)習(xí),學(xué)生基本上掌握了循環(huán)的嵌套結(jié)構(gòu)了,對(duì)循環(huán)嵌套的概念和執(zhí)行過(guò)程也有了深入的理解。為了更好地掌握和應(yīng)用for循環(huán)嵌套,利用循環(huán)嵌套解決實(shí)際問(wèn)題,教師進(jìn)一步講解幾個(gè)應(yīng)用實(shí)例。
【應(yīng)用實(shí)例1】利用循環(huán)嵌套結(jié)構(gòu)編程,輸出九九乘法表。
圖2 九九乘法表
教師活動(dòng):
●提出問(wèn)題1:參考課件上的九九乘法表,思考如何輸出?
●提出問(wèn)題2:每行輸出幾個(gè)式子?行與列有什么關(guān)系?
教師引導(dǎo)學(xué)生分析,這個(gè)例子與實(shí)例2比較相似,一共要打印9行,所有外循環(huán)變量i的值應(yīng)為1到9,第i行打印出i個(gè)式子,所以內(nèi)循環(huán)變量j的取值應(yīng)為1到i[6]。另外,第i行第j列要輸出的式子為:printf("%d*%d=%2d",j,i,i*j);有了上面幾個(gè)實(shí)例的基礎(chǔ),學(xué)生可以寫(xiě)出如下程序:
強(qiáng)調(diào):
●講解行和列的規(guī)律,強(qiáng)調(diào)j<=i
●式子的表示和輸出
●%2d的用意
【應(yīng)用實(shí)例2】求1!+2!+….+10!
結(jié)合課件,教師引導(dǎo)學(xué)生分析:
(1)外循環(huán):累加求和 循環(huán)變量i1~10
根據(jù)以上分析,學(xué)生對(duì)于該實(shí)例的求解過(guò)程很清晰了。學(xué)生可以在紙上編寫(xiě)程序。教師適時(shí)地給以引導(dǎo),最后通過(guò)課件程序該程序的完整代碼,并做總結(jié)。
完整C程序代碼為:
【思考】輸出100以內(nèi)所有的素?cái)?shù)。
提示:循環(huán)嵌套程序設(shè)計(jì)還常出現(xiàn)在使用枚舉法解決實(shí)際問(wèn)題的程序中,例如,該題和“尋找水仙花數(shù)”等問(wèn)題。
實(shí)例結(jié)束后,給學(xué)生留下思考題,學(xué)生可以在課下,利用所學(xué)知識(shí)編程實(shí)現(xiàn)。
本節(jié)課我們通過(guò)平面圖形的輸出的一個(gè)案例,引出循環(huán)嵌套,講解了循環(huán)嵌套的概念,分析了其結(jié)構(gòu)和執(zhí)行過(guò)程;并通過(guò)多個(gè)案例的講解,進(jìn)一步鞏固了循環(huán)嵌套的相關(guān)知識(shí),主要是for循環(huán)嵌套的應(yīng)用;最后結(jié)合總結(jié)的規(guī)律,在屏幕上輸出九九乘法表等,并給學(xué)生留下思考題目以供學(xué)生課下學(xué)習(xí),鞏固新知。
針對(duì)學(xué)生的實(shí)際情況和教學(xué)需要,結(jié)合多年的教學(xué)經(jīng)驗(yàn),在C語(yǔ)言循環(huán)嵌套教學(xué)實(shí)踐摸索出一套適合學(xué)生的案例教學(xué)法,教學(xué)實(shí)踐表明,案例教學(xué)改變了傳統(tǒng)以理論知識(shí)為中心的教學(xué)模式,將復(fù)雜抽象的知識(shí)貫穿于一些典型案例中,并通過(guò)問(wèn)題引導(dǎo)層層深入地分析、講解案例,調(diào)動(dòng)了學(xué)生學(xué)習(xí)的積極主動(dòng)性,學(xué)生的邏輯思維能力和編程能力也得到了明顯提高,取得了良好的教學(xué)效果。