王 俐
(貴州理工學(xué)院,貴州 貴陽 550003)
在大學(xué)高等教育中,《C語言程序設(shè)計》課程是程序教學(xué)的基礎(chǔ),它不僅能培養(yǎng)學(xué)生的計算機語言能力,也能幫助學(xué)生提高邏輯思維能力和解決問題的能力。到目前為止,《C語言程序設(shè)計》課程的教學(xué)一般通過講授為主,老師通過PPT或者和黑板上演示實例或語法結(jié)構(gòu)來幫助學(xué)生學(xué)習(xí)C語言,學(xué)習(xí)內(nèi)容相對來說比較枯燥,學(xué)生無法真正體會到語言學(xué)習(xí)的樂趣和熟練運用C語言后的成就感。因此,急需對現(xiàn)在的教學(xué)模式進行改革,提高學(xué)生學(xué)習(xí)C語言的興趣。
基于項目化的學(xué)習(xí)方式是現(xiàn)在新興的一種教學(xué)方式,老師通過給定一定難度的項目,讓學(xué)生結(jié)合課上的理論知識,完成挑戰(zhàn)。成熟的項目訓(xùn)練,包括有趣的教學(xué)案例,靈活的實施手段。通過項目訓(xùn)練,一方面可以鍛煉學(xué)生的動手動腦能力,另一方面可以培養(yǎng)學(xué)生的學(xué)習(xí)能力,學(xué)生在項目訓(xùn)練中,可以與其他同學(xué)進行溝通交流,找到自己的長處短處,取長補短,同時也培養(yǎng)了學(xué)生的溝通能力,進一步幫助提高學(xué)生的求知欲,這對學(xué)生以后的發(fā)展很重要。因此,將項目化的訓(xùn)練方式運用到C語言程序教育中,可以有效改善C語言教學(xué)模式,使枯燥的學(xué)習(xí)有趣化、靈活化。
目前,大學(xué)基礎(chǔ)課程中的《C語言程序設(shè)計》課程存在如下幾個問題:
《C語言程序設(shè)計》一般設(shè)在大學(xué)一年級或二年級,此時,學(xué)生剛從高中邁入大學(xué),和高中監(jiān)督性較強的學(xué)習(xí)不同,大學(xué)主要靠自覺學(xué)習(xí),因此學(xué)生會存在一定的惰性。而《C語言程序設(shè)計》中包含大量的運算符、邏輯語句,且數(shù)據(jù)類型較多,和以往高中的知識有很大的區(qū)別,因此學(xué)生會對其產(chǎn)生一定的畏懼心理,不愿意花時間去學(xué)習(xí),加上沒有一定的監(jiān)督,學(xué)生更加容易放松自己。大學(xué)課程一般都是由易到難,前期簡單的程序設(shè)計已經(jīng)讓學(xué)生望而卻步,到后期復(fù)雜的數(shù)組、函數(shù)部分,學(xué)生更加不愿意動腦筋去學(xué)習(xí)。這樣形成了負反饋,使C語言教學(xué)變得極其困難。
C語言是一門功能性語言,學(xué)習(xí)C語言相對來說需要一定的邏輯思維和解決問題的能力。C語言的學(xué)習(xí)和一般計算機語言的學(xué)習(xí)一樣,由簡單到復(fù)雜。首先是基本的語法學(xué)習(xí),包括基礎(chǔ)知識和順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種基本的控制結(jié)構(gòu),而C語言的數(shù)據(jù)類型和運算符也多種多樣。通過語法學(xué)習(xí)后,進而對基礎(chǔ)知識加以運用,包括數(shù)組應(yīng)用、函數(shù)應(yīng)用。最后是指針和結(jié)構(gòu)體的學(xué)習(xí),指針、結(jié)構(gòu)體具有非常復(fù)雜的邏輯關(guān)系,一般學(xué)生難以理解。由于C語言本身的復(fù)雜性,需要老師通過靈活的語言將其簡化,使其通俗易懂,這一般要求老師有良好的溝通能力和演講能力,而這往往一般老師達不到要求,因此C語言本身的復(fù)雜性也進一步阻礙了教學(xué)質(zhì)量的提升。
大學(xué)教育與以往的高中教育不同,一般為大班教學(xué),特別是《C語言程序設(shè)計》,一般一個老師會管理100到200個學(xué)生,因此上課起來具有一定難度,再加上傳統(tǒng)大學(xué)教育模式以及C語言本身的復(fù)雜性,學(xué)生很容易對上課內(nèi)容感到厭倦,無法集中精神聽課。而老師看到?jīng)]有興趣聽課的學(xué)生,也會產(chǎn)生不良情緒。老師和學(xué)生之間相互影響,缺乏溝通,進一步影響了上課的效率。而后老師雖然完成了教學(xué)任務(wù),但并沒有達到很好的教學(xué)效果。這種負反饋在現(xiàn)今的大學(xué)教育中是很常見的,師生之間缺乏溝通,老師不知道學(xué)生的需求和學(xué)生對C語言課程的適應(yīng)程度,大大影響了教學(xué)質(zhì)量。因此對《C語言程序設(shè)計》課程的教學(xué)模式的改革是必然要求。
模塊化教學(xué)模式指的是將知識點分散,把同類型的知識點結(jié)合起來,形成一個個模塊,每個模塊中,特定的知識點對應(yīng)特定的訓(xùn)練項目。學(xué)生在學(xué)習(xí)的過程中,從簡單模塊到復(fù)雜模塊,一步一步提升自己的能力。這有點像通關(guān)游戲,學(xué)生一步一步通關(guān),一步一步突破障礙。現(xiàn)今很多科目的教學(xué)都用到了模塊化教學(xué),例如:英語、高等數(shù)學(xué)等等。通過模塊化的教學(xué)模式,可以培養(yǎng)學(xué)生學(xué)習(xí)的興趣,這不僅僅能讓學(xué)生真正學(xué)習(xí)到知識,也不會讓學(xué)生感覺厭倦,從而形成反抗心理。一般《C語言程序設(shè)計》課程的教學(xué)模塊如下所示:

圖1 《C語言程序設(shè)計》課程教學(xué)模塊
在C語言模塊化教學(xué)中,一般會根據(jù)每個模塊的特點加入項目訓(xùn)練。這種項目訓(xùn)練往往是分階段的。前期,一般給予學(xué)生較簡單的項目訓(xùn)練,通過此項目訓(xùn)練之后,進入下一步的模塊化學(xué)習(xí)中,再給予學(xué)生稍難的項目訓(xùn)練,一步一步,最后的大作業(yè)會讓學(xué)生結(jié)合所有學(xué)過的知識點,完成一個項目。這樣,學(xué)生在學(xué)習(xí)中,會感到成就感,激勵學(xué)生主動學(xué)習(xí),而不是讓學(xué)生感到枯燥乏味,以致不愿學(xué)習(xí)、放棄學(xué)習(xí)。一般來說,《C語言程序設(shè)計》課程中的分階段項目訓(xùn)練主要分成如下幾個方面:
3.2.1 剪刀、石頭、布
(1)項目設(shè)計說明:通過利用C語言中三種基本控制結(jié)構(gòu)的循環(huán)結(jié)構(gòu),實現(xiàn)用戶與計算機之間的剪刀、石頭、布的游戲,在此游戲中,用戶和計算機的選擇都具有隨機性,用戶可以多次與計算機之間進行游戲,且每次比賽都會有比賽結(jié)果。
(2)訓(xùn)練目的:在C語言三種基本控制結(jié)構(gòu)的學(xué)習(xí)中,學(xué)生往往對其復(fù)雜的邏輯性望而卻步,老師雖然通過實例講述了這三種基本控制結(jié)構(gòu)的特點和邏輯結(jié)構(gòu),但學(xué)生往往會學(xué)但不會用。如果將這些結(jié)構(gòu)用在小游戲的編寫中,會讓這三種基本控制結(jié)構(gòu)通俗易懂,學(xué)生更能接受。特別是幫助學(xué)生如何避免死循環(huán),如何排除和應(yīng)對程序漏洞。這可以訓(xùn)練學(xué)生分析問題和解決問題的能力,并且培養(yǎng)學(xué)生的耐心和細致。
(3)訓(xùn)練知識點:三種循環(huán)結(jié)構(gòu):do-while語句、while語句和for語句。
3.2.2 某年某月有多少天
(1)項目設(shè)計說明:通過利用C語言中三種基本控制結(jié)構(gòu)的選擇,實現(xiàn)用戶計算某年某月有多少天的問題,但是不同年份的2月天數(shù)不同,閏年的2月有29天,而非閏年的2月有28天,因此程序中還要運用到嵌套來判斷這年是不是閏年,如果某年能被4整除,但不能被100整除,則這一年是閏年,如果這年能被400整除,則這一年也是閏年。
(2)訓(xùn)練目的:選擇結(jié)構(gòu)是C語言中最常用的基本控制結(jié)構(gòu),而這個問題有多種解法,通過這個項目的訓(xùn)練,可以讓學(xué)生靈活掌握循環(huán)結(jié)構(gòu)的應(yīng)用,為后續(xù)更復(fù)雜的學(xué)習(xí)奠定良好的基礎(chǔ)。同時,這可以進一步訓(xùn)練學(xué)生分析問題和解決問題的能力,并且培養(yǎng)學(xué)生的靈活性。
(3)訓(xùn)練知識點:選擇結(jié)構(gòu)else...if語句、if...else語句的嵌套和switch語句。
3.2.3 學(xué)生成績統(tǒng)計系統(tǒng)
(1)項目設(shè)計說明:通過利用C語言數(shù)組、函數(shù)和指針的相關(guān)知識,實現(xiàn)學(xué)生成績統(tǒng)計系統(tǒng)的編寫,在此項目訓(xùn)練中,其功能包括輸入和顯示學(xué)生的多項成績,統(tǒng)計每個學(xué)生多項成績的平均分以及全班某項課程的平均分、最高分以及最低分,這要求學(xué)生靈活運用相對復(fù)雜的C語言結(jié)構(gòu)。
(2)訓(xùn)練目的:這個項目相對來說較難,這是在學(xué)生進入數(shù)組、函數(shù)和指針的學(xué)習(xí)后需要訓(xùn)練的項目,這個項目完成之后,相信會使學(xué)生產(chǎn)生一定的成就感,并且這個項目訓(xùn)練更能結(jié)合實際,一般可作為大作業(yè)放在《C語言程序設(shè)計》課程學(xué)習(xí)的最后階段,可以進一步幫助學(xué)生提高應(yīng)用能力和分析問題、解決問題的能力。當然,通過一系列的學(xué)習(xí),可以大大提高學(xué)生對計算機語言的學(xué)習(xí)興趣,為后續(xù)復(fù)雜的算法學(xué)習(xí)打下良好的基礎(chǔ)。
(3)訓(xùn)練知識點:數(shù)組、函數(shù)以及指針的相關(guān)知識。通過項目訓(xùn)練,可以教會學(xué)生從不同角度思考問題,例如將大問題分成小問題,一步一步解決,最重要的是,項目訓(xùn)練可以培養(yǎng)學(xué)生分析問題、解決問題的能力,這是學(xué)生今后不管在生活中還是學(xué)習(xí)工作上必備的能力。
基于項目訓(xùn)練的C語言程序教學(xué),是一種C語言教學(xué)中的行為導(dǎo)向教學(xué)法。在項目訓(xùn)練中,允許學(xué)生相互討論,廣泛查閱資料,并且允許學(xué)生制定任務(wù)實施計劃,將大的項目問題分成若干個簡單的小問題,慢慢解決。通過解決問題,學(xué)生容易靈活地掌握所學(xué)的知識。跟以往的教學(xué)模式不同,項目訓(xùn)練不單單是讓學(xué)生熟記書本上的知識點,而是在知識點的基礎(chǔ)上靈活運用。這個過程幫助學(xué)生開拓了思路,也鼓勵了學(xué)生的創(chuàng)新精神。C語言程序教學(xué)項目訓(xùn)練有如下幾個優(yōu)點:
運用C語言解決問題,和實際生活中的問題不同,它具有一定的抽象性,學(xué)生需要通過不斷思考才能解決問題,另外學(xué)習(xí)C語言也需要一定的邏輯思維,它需要學(xué)生利用數(shù)學(xué)的思維去描繪一些問題。因此C語言的教學(xué)具有一定的復(fù)雜性。C語言程序教學(xué)中的項目訓(xùn)練講究學(xué)生與計算機的互動,首先,在C語言程序教學(xué)項目訓(xùn)練中,要考慮數(shù)據(jù)的處理,哪些數(shù)據(jù)是輸入的,哪些數(shù)據(jù)是輸出的,數(shù)據(jù)的類型是什么;其次,需要考慮問題的難點和關(guān)鍵點,學(xué)生需要知道這個項目考察的是什么,需要用到哪些知識點,怎么合理運用這些知識點解決相應(yīng)的問題。通過思考這些問題,學(xué)生就可以開始設(shè)計解題思路了,進而通過解題思路,來編寫源代碼。
在C語言的學(xué)習(xí)中,很多算法之間都是相通的。一個算法往往可以運用到多個項目中,發(fā)散至不同的問題的解決,而一個問題往往也可以有多個解題思路。例如:C語言程序教學(xué)項目訓(xùn)練中剪刀、石頭、布的項目,學(xué)生既可以用if...else語句解決,也可以用switch語句解決。因此,基于項目訓(xùn)練的C語言程序教學(xué)是非常有必要的,通過完成一個個小項目,學(xué)生可以更加靈活地解決問題,而對于更加復(fù)雜的問題,學(xué)生也不至于無從下手。通過項目訓(xùn)練,不僅提高了學(xué)生的學(xué)習(xí)積極性,也有利于培養(yǎng)學(xué)生的發(fā)散思維。
和以往傳統(tǒng)的教學(xué)模式不同,基于項目訓(xùn)練的C語言程序教學(xué)不再通過紙質(zhì)試卷來考察學(xué)生對知識的掌握能力,而是通過實際的訓(xùn)練,通過學(xué)生在計算機上的演練過程來考察學(xué)生對知識的掌握能力。在基于項目訓(xùn)練的C語言程序教學(xué)中,老師可以通過學(xué)生完成項目的程度以及完成項目的創(chuàng)新程度來考察學(xué)生,這在一定程度上鼓勵學(xué)生積極學(xué)習(xí),學(xué)會與其他同學(xué)溝通以及提高自己查閱資料的能力和自學(xué)能力,這點在大學(xué)教育中是非常重要的。在項目中,老師可以設(shè)定一系列的拓展訓(xùn)練,鼓勵學(xué)生學(xué)習(xí)書本以外的知識,通過這種考核方程,提高學(xué)生的學(xué)習(xí)興趣。
本文從培養(yǎng)學(xué)生的實踐能力和解決問題的能力出發(fā),提出基于項目訓(xùn)練的C語言程序教學(xué)模式,首先分析了現(xiàn)今大學(xué)基礎(chǔ)課程中的《C語言程序設(shè)計》課程存在的幾個問題,其次提出C語言學(xué)習(xí)中的模塊化教學(xué)模式和分階段項目訓(xùn)練對傳統(tǒng)的教學(xué)模式加以改革,最后提出C語言教學(xué)項目訓(xùn)練的優(yōu)點,以達到幫助學(xué)生提高分析問題解決問題的能力,培養(yǎng)學(xué)生學(xué)習(xí)積極性的目的。
[1]孫婷.項目教學(xué)法在高職院校《C語言程序設(shè)計》課程中的應(yīng)用研究[J].遼寧師專學(xué)報(自然科學(xué)版),2014,16(02):40-42.
[2]蘭麗,胡曉輝.面向工程實踐能力培養(yǎng)的C語言實踐教學(xué)改革[J].計算機時代,2017(11):80-82.
[3]張紅玲,高艷,祁春霞.C語言實踐教學(xué)的探索與實施[J].遼寧科技學(xué)院學(xué)報,2012,14(02):61-63.
[4]郭曉慧.嵌入計算思維的C語言實踐教學(xué)改革[J].信息通信,2016(04):265-266.
[5]馬艷,王浩.C語言實踐教學(xué)方法探究[J].長江大學(xué)學(xué)報(自然科學(xué)版)理工卷,2009,6(02):381-382.