重慶工商職業(yè)學(xué)院 龔 衛(wèi)
《C語言程序設(shè)計(jì)》課程是國內(nèi)高職計(jì)算機(jī)軟件技術(shù)專業(yè)的必修課,該門課程是程序設(shè)計(jì)的入門學(xué)科,是學(xué)生學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)語言的基礎(chǔ)。在多年的C語言程序設(shè)計(jì)的教學(xué)中,筆者發(fā)現(xiàn),教師多采取傳統(tǒng)教學(xué)模式,在教學(xué)中占主導(dǎo),學(xué)生被動(dòng)吸收,這種教學(xué)方式,學(xué)生目的不明確,學(xué)習(xí)主動(dòng)性不高,對(duì)下一步軟件設(shè)計(jì)的深入學(xué)習(xí)產(chǎn)生極大的影響。
高職教育,重在培養(yǎng)“有一定理論基礎(chǔ)、善于動(dòng)手”的應(yīng)用型人才。在教學(xué)中,重點(diǎn)突出學(xué)生主體地位,教師應(yīng)引導(dǎo)學(xué)生主動(dòng)學(xué)習(xí),主動(dòng)思考。在《C語言程序設(shè)計(jì)》教學(xué)中采用“任務(wù)驅(qū)動(dòng)教學(xué)法”,緊緊圍繞教學(xué)目標(biāo),聯(lián)系實(shí)際,設(shè)計(jì)學(xué)生感興趣的任務(wù),在任務(wù)驅(qū)動(dòng)下開展教學(xué),引導(dǎo)學(xué)生主動(dòng)思考,逐步深入,分析問題,解決問題,促使學(xué)生積累程序設(shè)計(jì)的經(jīng)驗(yàn),產(chǎn)生對(duì)后續(xù)課程學(xué)習(xí)的興趣。
“任務(wù)驅(qū)動(dòng)教學(xué)法”在教學(xué)中主要包括“任務(wù)描述”、“任務(wù)咨詢”、“任務(wù)實(shí)施”、“任務(wù)拓展”四個(gè)過程?!叭蝿?wù)描述”是提出任務(wù),分析任務(wù)?!叭蝿?wù)咨詢”是給出基本理論,從易到難分解任務(wù)?!叭蝿?wù)實(shí)施”是解決任務(wù)?!叭蝿?wù)拓展”是任務(wù)升級(jí)和拓展。本文以“雙重循環(huán)”教學(xué)為例,闡述“任務(wù)驅(qū)動(dòng)教學(xué)法”在教學(xué)過程中的具體應(yīng)用。
“雙重循環(huán)”的教學(xué),建立在學(xué)生熟練掌握了“順序結(jié)構(gòu)”、“選擇結(jié)構(gòu)”、“基本循環(huán)結(jié)構(gòu)”內(nèi)容的基礎(chǔ)上,而“雙重循環(huán)”又是學(xué)習(xí)后續(xù)內(nèi)容二維數(shù)組的基礎(chǔ)。教學(xué)中,任務(wù)的選擇相當(dāng)重要,任務(wù)既要貫穿整個(gè)教學(xué)設(shè)計(jì)過程,又要考慮循序漸進(jìn)的學(xué)習(xí)原則。筆者在教學(xué)中,以如圖1所示圖形作為“雙重循環(huán)”學(xué)習(xí)的任務(wù)。該任務(wù)具有系統(tǒng)性,可以由易到難的安排教學(xué)。
任務(wù)提出后,學(xué)生結(jié)合當(dāng)前所學(xué)習(xí)的內(nèi)容,進(jìn)行分析??梢岳庙樞蚪Y(jié)構(gòu),通過多條printf(“******* ”)語句來解決問題。也可以對(duì)其中一行進(jìn)行分析,根據(jù)星號(hào)的個(gè)數(shù),用for循環(huán)語句for(i=1;i<=n;i++)printf(“*”);printf(“ ”);來解決。如果有N行,那么就需要N條類似的語句,顯然上面的兩種方法都不是解決這個(gè)問題的最好方法。這樣自然的引入“雙重循環(huán)”的學(xué)習(xí)。
解決任務(wù),需要了解掌握一定的理論知識(shí)。這是任務(wù)咨詢階段首先要做的事情。讓學(xué)生了解“雙重循環(huán)”的一般結(jié)構(gòu):for(循環(huán)初值;循環(huán)終值;步長值){for(循環(huán)初值;循環(huán)終值;步長值) {內(nèi)循環(huán)語句;} 外循環(huán)語句;},以及“雙重循環(huán)”對(duì)于二維圖形的輸出控制方式,外循環(huán)一般控制行,內(nèi)循環(huán)控制每行具體輸出等相關(guān)知識(shí)點(diǎn)。
圖1
圖2
圖3
圖4
然后從易到難,對(duì)任務(wù)進(jìn)行分解。先來討論,如何輸出如圖2所示圖形。該圖形是一個(gè)長方形,每行的輸出使由相同個(gè)數(shù)的星號(hào)字符和回車換行符兩部分組成。外循環(huán)語句控制行for(i=1;i<=4;i++),內(nèi)循環(huán)語句控制每行具體輸出{for(j=1;j<=4;j++)printf(“*”);printf(“ ”);},這里特別提醒學(xué)生注意內(nèi)循環(huán)星號(hào)和回車換行是兩個(gè)同級(jí)的輸出,需要用{}把上面語句括起來。完成該案例后,提出思考,外循環(huán)變量和內(nèi)循環(huán)變量是否可以同名。行數(shù)和列數(shù)如果不確定,需要從鍵盤獲得取值,應(yīng)該如何修改程序。
在解決了圖2的基礎(chǔ)上,進(jìn)一步討論如何輸出圖3(1)所示圖形。該圖形是一個(gè)直角三角形,每行的輸出由星號(hào)字符和回車換行符兩部分組成,而該案例與圖2所示案例的不同在于,星號(hào)的個(gè)數(shù)隨著行數(shù)的增加有規(guī)律的遞增,解決問題還需要尋找內(nèi)循環(huán)每行循環(huán)次數(shù)(星號(hào)個(gè)數(shù))和外循環(huán)行號(hào)變量的關(guān)系。不難看出,第一行,輸出一個(gè)星號(hào),內(nèi)循環(huán)循環(huán)一次;第二行,輸出兩個(gè)星號(hào),內(nèi)循環(huán)循環(huán)二次;第N行,輸出N個(gè)星號(hào),內(nèi)循環(huán)循環(huán)N次。于是得到內(nèi)循環(huán)語句為{for(j=1;j<=i;i++)printf(“*”);printf(“ ”);}。完成該案例后,再一次提出思考,如果圖形上下翻轉(zhuǎn)為如圖3(2)所示圖形,又應(yīng)該怎樣考慮內(nèi)循環(huán)每行循環(huán)次數(shù)(星號(hào)個(gè)數(shù))和外循環(huán)行號(hào)變量的關(guān)系。
進(jìn)一步深入,提出輸出如圖4所示圖形的案例。該圖形仍然是一個(gè)三角形,但每行的輸出有了一定的變化,它是由空格字符、星號(hào)、回車換行符三部分組成??崭褡址?、星號(hào)字符個(gè)數(shù)隨著行數(shù)的變化而變化,變化規(guī)律不同。由于每行先輸出的是空格字符,先考慮空格字符和行數(shù)的關(guān)系。第一行,輸出三個(gè)空格字符;第二行,輸出二個(gè)空格字符;第三行,輸出一個(gè)空格字符;第四行,不輸出空格。于是得到行號(hào)和列號(hào)的關(guān)系j<=4-i。星號(hào)的輸出與圖3(1)的規(guī)律相同。所以內(nèi)循環(huán)語句為{for(j=1;j<=4-i;j++) printf(“”); for(k=1;k<=i;i++) printf(“*”);printf(“ ”);}。完成該案例后,提出思考,如何解決如圖4(2)所示圖形。學(xué)生很容易發(fā)現(xiàn)星號(hào)個(gè)數(shù)和外循環(huán)行號(hào)的關(guān)系,k<=2*i-1。
通過以上案例的分析和講解,由易到難,學(xué)生掌握了“雙重循環(huán)”的基本設(shè)計(jì)思想。最后把如圖1所示的任務(wù)提交給學(xué)生,要求在上機(jī)課程中完成。學(xué)生有了“雙重循環(huán)”處理二維圖形的經(jīng)驗(yàn)。就會(huì)在教師的引導(dǎo)下主動(dòng)分析圖形,任務(wù)是輸出菱形,而菱形的變化規(guī)律有遞增,又有遞減。這時(shí)需要把圖形進(jìn)行拆分,拆分為有單一遞增或遞減的規(guī)律兩個(gè)部分。然后分別對(duì)這兩個(gè)部分進(jìn)行編程。任務(wù)實(shí)施的過程是學(xué)生復(fù)習(xí)鞏固的過程,也是檢驗(yàn)學(xué)生學(xué)習(xí)效果的過程。
在學(xué)生完成了菱形圖形輸出的案例后,還可以拓展學(xué)生的知識(shí)。給出字母或者數(shù)字金字塔,讓學(xué)生課余組成興趣小組,共同協(xié)作思考完成。在掌握了“雙重循環(huán)”的特點(diǎn),理解了“雙重循環(huán)”執(zhí)行過程,學(xué)會(huì)了尋找圖形規(guī)律的基礎(chǔ)上,學(xué)生相互討論,相互促進(jìn),對(duì)下一步的學(xué)習(xí)有極大的幫助。
“任務(wù)驅(qū)動(dòng)教學(xué)法”在筆者所在的高職院?!禖語言程序設(shè)計(jì)》的課堂教學(xué)中得到了應(yīng)用,取得了不錯(cuò)的效果。在高職教學(xué)中,激發(fā)學(xué)生學(xué)習(xí)興趣,引導(dǎo)學(xué)生主動(dòng)學(xué)習(xí),領(lǐng)會(huì)程序設(shè)計(jì)的精髓,是每一個(gè)教師需要面對(duì)的問題。教師只有不斷學(xué)習(xí)新思想,進(jìn)行教學(xué)方式的新探索,才可能真正幫助學(xué)生學(xué)有所獲,學(xué)有所得。
[1]廖劍華.任務(wù)驅(qū)動(dòng)型案例教學(xué)在“C語言”課程教學(xué)中的實(shí)施[J].教育與職業(yè),2011(5).
[2]趙穎.任務(wù)驅(qū)動(dòng)法在高職計(jì)算機(jī)教學(xué)中的運(yùn)用[J].黑龍江高教研究,2009(8).
[3]朱云霞.“任務(wù)驅(qū)動(dòng)”教學(xué)法在計(jì)算機(jī)教學(xué)中的運(yùn)用[J].中國電化教育,2002(5).
[4]黃雄波.高職C語言課程中循環(huán)結(jié)構(gòu)的教學(xué)設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)時(shí)代,2012(5).
[5]譚浩強(qiáng).C語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.